我正在尝试使用枚举来使用按钮(在Flutter SDK中)之间切换主题。我有一个名为ThemeMode的枚举,里面有两个变量("一个"和"两个")。我将名为themeMode的ThemeMode初始化为ThemeMode.one。
enum ThemeMode {one,two}
ThemeMode themeMode = ThemeMode.one;
然后我尝试创建一个主题变量,表示应用程序应该基于themeMode使用的ThemeData。
ThemeData get theme {
switch(themeMode) {
case ThemeMode.one : return new ThemeData(
brightness: Brightness.light,
primarySwatch: Colors.blue,
);
case ThemeMode.two : return new ThemeData(
brightness: Brightness.dark,
primaryColor: Colors.green,
);
}
return null;
}
然后,当我尝试使用按钮更改主题时,我收到错误:"'主题'不能用作制定者,因为它是最终的"。
theme = newTheme;
我应该如何初始化主题,或尝试更改主题以使其有效?
答案 0 :(得分:3)
问题是theme
没有设置器。只有你定义的吸气剂。目前还不清楚你在做什么。仅当theme
没有明确的值时,您是否想使用从themeMode
导出theme
的逻辑?
你可以添加一个setter并修改getter就可以这样工作:
ThemeData _theme;
ThemeData get theme {
if (_theme != null) return _theme;
switch(themeMode) {
case ThemeMode.one : return new ThemeData(
brightness: Brightness.light,
primarySwatch: Colors.blue,
);
case ThemeMode.two : return new ThemeData(
brightness: Brightness.dark,
primaryColor: Colors.green,
);
}
return null;
}
set theme(ThemeData newTheme) {
_theme = newTheme;
}