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

non*_*hto 3 dart material-design flutter

我尝试从中更改所有RaisedButtons的颜色,themeData但拒绝工作。所有其他属性,例如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(),
    );
Run Code Online (Sandbox Code Playgroud)

Sur*_*gch 12

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

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

在此处输入图片说明

  • “按钮无法改变颜色的一个原因是它被禁用,当您没有设置 onPressed 方法时就会发生这种情况。” 这为我解决了 (2认同)

小智 10

如果您为 color 属性指定颜色但它没有显示,那么可能您还没有实现 onPressed 属性,因为在这种状态下按钮将显示它的禁用颜色,它根本没有颜色。

像这样设置:

onPressed: () {},
Run Code Online (Sandbox Code Playgroud)

给它一个匿名函数,同时不实现任何东西(或者你愿意的东西)会给它颜色


die*_*per 7

buttonTheme和添加accentColor到您的ThemeData,如下所示:

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