flutter - 在 flutter MaterialApp 小部件中使用 ThemeData copyWith 的正确方法是什么?

标签 flutter dart material-design flutter-layout

我试图改变 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 ,如果我设置了 ThemeDataMaterialApp像这样的小部件,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/

相关文章:

javascript - 使用 Material Design Lite 错误确认密码验证

ScrollView 中的 Android 边距顶部负值

flutter - 如何在Flutter上集成自己的tflite模型?

dart - 在调试和生产模式之间切换

firebase - flutter 异步验证表单

json - 在 Flutter 和 Dart 中从 JSON 解析 double 值

java - 启动 vscode flutter 调试时无法确定任务 ':app:flutterBuildDebug' 的依赖关系

firebase - Flutter Firebase全局自动增量值并在文档字段中检索

flutter - 如何在Flutter中重新访问时保存页面状态

java - 指定的子级已经有一个父级 - 实现 FloatingActionMenu