2
我想使用枚舉來使用按鈕(在Flutter SDK中)在主題之間切換。我有一個名爲ThemeMode的枚舉,裏面有兩個變量(「one」和「two」)。我將ThemeMode初始化爲themeMode作爲ThemeMode.one。變量不能用作setter,因爲它是最終的(枚舉)
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;
}
然後,當我嘗試使用按鈕更改主題時,出現錯誤:「'主題'不能用作setter,因爲它是最終的」。
theme = newTheme;
我應該如何初始化主題,或嘗試改變它,以便它的工作?
您必須留下一些東西的代碼。我看到的主要問題是你只有'getter'for'theme',並且沒有setter。但在這種情況下的錯誤將是「沒有setter爲'主題'定義」。你有沒有其他的代碼可以解釋這個問題? –
@HarryTerkelsen這是整個文件的要點:https://gist.github.com/g0bbl3z/233f23790c146036b076e002e35adae5 註釋的方法是發生錯誤的地方。 – ZekeZeke
爲什麼要將主題設置爲函數名稱? 無論哪種方式,如果你希望孩子改變themedata 你應該看看這裏的股票應用例子 https://github.com/flutter/flutter/blob/master/examples/stocks/lib /stock_settings.dart 編輯:nvm,你應該創建一個setter函數 https://www.dartlang.org/resources/dart-tips/dart-tips-ep-10 – user1462442