我已经从https://github.com/flutter/flutter/issues/28138转到这里。
一般来说,我的问题是,我不认为floatingActionButton背景颜色和flatButton文本颜色继承自ThemeData中定义的正确值。
创建一个应用程序,您将在其中使用主要的红色(应用程序条、按钮bg、卡片)、黄色(图标、应用程序条标题)、黑色(常规文本)、白色/浅灰色(脚手架主体等背景)。
使用主题(PrimaryColor)将AppBar背景色设置为红色
使用主题(强调颜色)将AppBar标题颜色设置为黄色
将图标的颜色设置为与AccentColor相同的颜色,因为如果使用主颜色,它们将在应用程序栏中不可见。
创建带有图标的浮动操作按钮。
浮动操作按钮中的图标不可见,因为小部件的背景颜色使用了ThemeData.AccentColor,它是黄色的,而不是ThemeData.PrimaryColor。
前景和背景都默认为AccentColor。
/// The color to use when filling the button.
///
/// Defaults to **[ThemeData.accentColor**] for the current theme.
final Color backgroundColor;
我在对话框中发现了flatbutton的类似问题,默认情况下,文本的颜色是强调色,它是黄色(在白色背景上),如果我将其重写为primary,它是红色的,但我不希望它是红色的,因为它旁边的删除按钮是红色的。所以我需要将其设置为正常,所以它是黑色的,这是正确的,但是:
平钮,省道:127
textStyle: theme.textTheme.button.copyWith(color: buttonTheme.getTextColor(this)),
我的主题:
buttonTheme: ButtonThemeData(
textTheme: ButtonTextTheme.normal,
buttonColor: primary, // Red
),
textTheme: TextTheme(
...
button: TextStyle(color: black), // Black
),
new FlatButton(
//textTheme: ButtonTextTheme.normal,
child: new Text("Ponechať"),
onPressed: () {
Navigator.of(context).pop();
onKeep();
},
)
理论上,弹出对话框中的按钮应该是黑色或红色。但它是黄色的,是强调色。
要复制,请尝试以下示例:
https://gist.github.com/erikkubica/45fc8acdce1f8a25cd5258e8b3a0e1f3
最佳答案
如果希望浮动按钮的颜色为主要颜色,请添加以下内容。
floatingActionButton: FloatingActionButton(
backgroundColor: Theme.of(context).primaryColor,
如果要将对话框中的FlatButton颜色更改为黑色,请添加以下内容。
theme: ThemeData(
colorScheme: ColorScheme.light(
primary: primary,
secondary: Colors.black,
),
最好用colorScheme()实例化它,这样它就不会影响其他小部件。