我尝试从
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(),
);
如果你给 color 属性赋予了一种颜色,但它没有显示,那么可能你还没有实现 onPressed 属性,因为在这种状态下,按钮将显示它的禁用颜色,也就是根本没有颜色。
这样设置:
onPressed: () {},
给它一个像这样的匿名函数而不实现任何东西(或者如果你愿意的话)会给它颜色
将
buttonTheme
和 accentColor
添加到您的 ThemeData
中,如下所示:
ThemeData(
primaryColor: Color(0XFF212845),
scaffoldBackgroundColor: Color(0XFF212845),
primarySwatch: Colors.yellow,
buttonColor: Color(0XFFF8D320),
buttonTheme: ButtonThemeData(textTheme: ButtonTextTheme.accent),
accentColor: Colors.green,
即使可能已经添加了 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 和 按钮颜色。
此外,确保设置了 RaisedButton 中的 onPressed:
onPressed: () {},
确保您没有自定义 RaisedButton() 本身,否则它将覆盖 ThemeData。如果您在 RaisedButton 中自定义了颜色属性,它将覆盖在 ThemeData 中设置的属性。
我相信正确的方法是在您的
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()))
上面的大部分答案在我发布这个的时候都被弃用了。
theme: ThemeData(
primaryColor: Color(0XFF212845),
scaffoldBackgroundColor: Color(0XFF212845),
primarySwatch: Colors.yellow,
colorScheme: ColorScheme.fromSwatch().copyWith(secondary: Colors.green),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ButtonStyle(
textStyle: MaterialStateProperty.all<TextStyle>(
TextStyle(
fontSize: 30.0,
fontWeight: FontWeight.bold,
),
),
),
),
),