从主题更改RaisedButton的颜色不起作用

时间:2018-12-30 20:02:31

标签: dart flutter material-design

我尝试从themeData更改所有RaisedButtons的颜色,但是拒绝工作。 fontSizefontWeight之类的所有其他属性已成功更改。仅当themeData的亮度属性更改为Brightness.dark时,文本的颜色才从黑色变为白色。

我有办法解决这个问题吗?我可能做错了什么?

这是我的示例代码:

 return new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        primaryColor: Color(0XFF212845),
        scaffoldBackgroundColor: Color(0XFF212845),
        primarySwatch: Colors.yellow,
        buttonColor: Color(0XFFF8D320),
        textTheme:  TextTheme(
          button: TextStyle(
            color: Colors.green, // This is not working.
            fontSize: 30.0,
            fontWeight: FontWeight.bold
          )
        )
      ),
      home:MenuPage(),
    );

6 个答案:

答案 0 :(得分:2)

如果给color属性赋予颜色但它不显示,则可能还没有实现onPressed属性,因为在这种状态下,按钮将显示为禁用的color,这根本不是颜色。

像这样设置:

onPressed: () {},

为它提供一个匿名函数,而未实现anythig(或者您愿意的话)会为其赋予颜色

答案 1 :(得分:1)

buttonThemeaccentColor添加到您的ThemeData中,如下所示:

  ThemeData(
            primaryColor: Color(0XFF212845),
            scaffoldBackgroundColor: Color(0XFF212845),
            primarySwatch: Colors.yellow,
            buttonColor: Color(0XFFF8D320),
            buttonTheme: ButtonThemeData(textTheme: ButtonTextTheme.accent),
            accentColor: Colors.green,

答案 2 :(得分:1)

即使可能已添加primarySwatch,您仍需要添加buttonColor来向按钮添加颜色,如下所示:

child: MaterialApp(
        home: Wrapper(),
        theme: ThemeData(
          primarySwatch: Colors.blue,
          buttonColor: Colors.blue // this is needed
        ),
      ),

primarySwatch-用于配置多个字段的默认值, 包括:primaryColor,primaryColorBrightness,primaryColorLight, primaryColorDark,toggleableActiveColor,accentColor,colorScheme, secondaryHeaderColor,textSelectionColor,backgroundColor和 buttonColor。

还要确保已设置onPressed:

onPressed: () {},

答案 3 :(得分:0)

对于其他遇到此问题的人来说,按钮可能不会更改颜色的一个原因是它被禁用,这是在您未设置onPressed方法的情况下发生的。

RaisedButton(
  color: Theme.of(context).accentColor,
  onPressed: () {}, //                        <-- need to add this
  child: Text(...),
),

enter image description here

答案 4 :(得分:0)

我相信正确的方法是在buttonColor小部件中声明ThemeData属性。

MaterialApp(
        theme: ThemeData(
          fontFamily: 'Pirata',
          primaryColor: Color.fromRGBO(71, 86, 87, 1),
          accentColor: Color.fromRGBO(71, 86, 87, 1),
          buttonColor: Color.fromRGBO(238, 238, 238, 1),

        ),
        home: App()))

答案 5 :(得分:0)

确保您尚未自定义RaisedButton()本身,否则它将覆盖ThemeData。如果您在RaisedButton中自定义了color属性,它将覆盖在ThemeData中设置的属性。