我尝试从themeData
更改所有RaisedButtons的颜色,但是拒绝工作。 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(),
);
答案 0 :(得分:2)
如果给color属性赋予颜色但它不显示,则可能还没有实现onPressed属性,因为在这种状态下,按钮将显示为禁用的color,这根本不是颜色。
像这样设置:
onPressed: () {},
为它提供一个匿名函数,而未实现anythig(或者您愿意的话)会为其赋予颜色
答案 1 :(得分:1)
将buttonTheme
和accentColor
添加到您的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(...),
),
答案 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中设置的属性。