Flutter:向现有主题添加自定义颜色

Jos*_*zet 2 dart flutter flutter-layout

我正在使用内置的 Flutters,themes如下所示:

 return MaterialApp(
          theme: ThemeData.light().copyWith(
            primaryColor: const Color(0xFF5E975A),
            bottomAppBarColor: const Color(0xff282828),
            // ... And so on
          ),
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我正在修改现有themecopyWith. 现在假设我希望某个按钮始终具有Color(0xFFFF0000). 有没有办法向现有主题添加新键?

像这样的东西:

ThemeData.light().copyWith(
            ...
          ).addKey(myCustomColor: const Color(0xFFFF0000))
Run Code Online (Sandbox Code Playgroud)

如果没有,定义自定义颜色的最佳实践方法是什么?我觉得仅仅声明一个全局静态变量并不是实现这个的预期方法。

Jos*_*zet 7

Flutter 3 更新:

Flutter 在最新版本的 Flutter 中回答了这个确切的问题。您现在可以创建ThemeExtensions.

这可能看起来像这样(定义你的之后ThemeExtension):

MaterialApp(
  theme: ThemeData.light().copyWith(
    extensions: <ThemeExtension<dynamic>>[
      CustomColors.light,
    ],
  ),
  darkTheme: ThemeData.dark().copyWith(
    extensions: <ThemeExtension<dynamic>>[
      CustomColors.dark,
    ],
  ),
  // other parameters...
);
Run Code Online (Sandbox Code Playgroud)

将来肯定会有更多关于此的信息,但现在请看一下这篇文章。我从那里拿了样品。

  • 感谢您的更新。我还找到了谈论它的官方视频:[ThemeExtensions | 解码Flutter](https://www.youtube.com/watch?v=8-szcYzFVao) (2认同)