我創建了一個撰寫主題模型的類:
import 'package:flutter/material.dart';
import 'theme_preference.dart';
class ThemeModel extends ChangeNotifier {
bool _isDark;
ThemePreferences _preferences;
bool get isDark => _isDark;
ThemeModel(this._preferences, this._isDark) {
_isDark = false;
_preferences = ThemePreferences();
getPreferences();
}
set isDark(bool value) {
_isDark = value;
_preferences.setTheme(value);
notifyListeners();
}
getPreferences() async {
_isDark = await _preferences.getTheme();
notifyListeners();
}
}
要使用我必須create: (_) => ThemeModel(this._preferences, this._isDark), 在主類中添加的更改。但是當我這樣做時,我會收到這樣的錯誤:The getter '_isDark' isn't defined for the type '_ToDoState'.我無法初始化主類中的變數,所以我的問題是,是否有一種方法可以將這些想法投射到我初始化它的另一個類中?
順便說一句,我正在關注本教程: https ://www.flutterant.com/switching-themes-in-flutter-apps/
uj5u.com熱心網友回復:
這里的主要問題是ThemeModel與文章中的示例有所不同,以嘗試解決與 null-safety 相關的問題(本文是在引入 null-safety 之前撰寫的)。而不是當前ThemeModel它應該更改為:
class ThemeModel extends ChangeNotifier {
bool _isDark = _false;
ThemePreferences _preferences = ThemePreferences();
bool get isDark => _isDark;
ThemeModel() {
getPreferences();
}
set isDark(bool value) {
_isDark = value;
_preferences.setTheme(value);
notifyListeners();
}
void getPreferences() async {
_isDark = await _preferences.getTheme();
notifyListeners();
}
}
因為這個例子不是ThemeModel為了接受任何論點。
Dart 中的物件是分兩個階段創建的,所有不可為空的非后期變數必須在建構式主體執行之前有一個值。通過像我所做的那樣更改代碼,變數_isDark并_preferences在建構式主體執行之前獲取初始值getPreferences();。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/421007.html
標籤:
