我试图改变 accentColor
复制 ThemeData.light()
后,然后我有一个带有 FloatingActionButton
的示例屏幕
class Sample extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: () {},
child: Icon(Icons.add),
),
)}}
然后在
main.dart
的主小部件中调用 runApp
,如果我设置了 ThemeData
为 MaterialApp
像这样的小部件,FloatingActionButton
将具有橙色。theme: ThemeData(
accentColor: Colors.orange
)
但是如果我试图从
Themedata.light().copyWith
继承颜色, FloatingActionButton
仍将具有浅色主题中的蓝色。theme: ThemeData.light().copyWith(
accentColor: Colors.orange
)
我期待着
FloatingActionButton
应该是橙色,因为它继承了 light
主题并覆盖 accentColor
.
最佳答案
这是 Flutter 中的常见问题,但您现在可以通过执行以下操作来解决它:
theme: ThemeData.light().copyWith(
floatingActionButtonTheme:
ThemeData.light().floatingActionButtonTheme.copyWith(
backgroundColor: Colors.orange,
),
),
如果您使用任何其他按钮,您应该这样做并覆盖它的主题,您可以在此处阅读有关此问题的更多信息 Updating the Material Buttons and their Themes
和 buttonColor not honored when using ThemeData.light().copyWith()
关于flutter - 在 flutter MaterialApp 小部件中使用 ThemeData copyWith 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61907450/