我试着改变我所有的RaisedButtons从themeData
的颜色,但它拒绝工作。所有其他属性(如fontSize
和fontWeight
)已成功更改。当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(),
);
7条答案
按热度按时间brjng4g31#
对于其他人来这个问题,一个按钮可能不会改变颜色的一个原因是它被禁用了,当你没有设置
onPressed
方法时就会发生这种情况。yrefmtwq2#
如果你给color属性一个颜色而它没有显示,那么可能你还没有实现onPressed属性,因为在这种状态下按钮将显示它的禁用颜色,这是没有颜色的。
设置如下:
给它一个匿名函数,而不实现任何东西(或其他东西,如果你愿意)会给予它颜色
to94eoyn3#
将
buttonTheme
和accentColor
添加到ThemeData
,如下所示:已更新
这是使用新API更新的代码
nfzehxib4#
即使已经添加了primarySwatch,您仍然需要添加buttonColor来为按钮添加颜色,如下所示:
primarySwatch -用于配置多个字段的默认值,包括:primaryColor、primaryColorBrightness、primaryColorLight、primaryColorDark、toggleableActiveColor、accentColor、colorScheme、secondaryHeaderColor、textSelectionColor、backgroundColor和buttonColor。
另外,请确保在RaisedButton中设置了onPressed:
but5z9lq5#
确保您没有自定义RaisedButton()本身,否则它将覆盖ThemeData。如果您在RaisedButton中自定义了颜色属性,它将覆盖ThemeData中设置的属性。
hiz5n14c6#
我认为正确的方法是在
ThemeData
Widget中声明一个buttonColor
属性。xv8emn3q7#
上面的大多数答案都是不赞成的时间,我已经张贴这一点。