Provider 被处置后使用
Provider is used after being disposed
我有一个 flutter 提供者负责像这样的应用程序设置,
class AppProvider extends ChangeNotifier {
dynamic _appSettinngs;
AppProvider() {
_loadAppSettings();
}
void _loadAppSettings() {
dynamic tempSttings = {"biometrics": false, "showBalance": false};
_localStorage.getAll('security').then((value) {
if (value == null) {
_appSettinngs = tempSttings;
notifyListeners();
_localStorage.save("security", tempSttings);
} else {
_appSettinngs = value;
notifyListeners();
}
});
}
void updateOptions(String option, bool value) {
_appSettinngs[option] = value;
_localStorage.save("security", _appSettinngs);
_loadAppSettings();
}
}
所以基本上我正在尝试使用像这样的切换器小部件来更新应用程序设置
Switch(
value: Provider.of<AppProvider>(context)
.appOptions['showBalance'],
onChanged: (value) =>
Provider.of<AppProvider>(context, listen: false)
.updateOptions("showBalance", value),
),
但是当我尝试切换设置时,出现此错误
Unhandled Exception: A AppProvider was used after being disposed.
我哪里错了?
所以问题是我在创建我的提供程序时使用了单例实例,所以我所要做的就是不使用单例,它解决了错误
我有一个 flutter 提供者负责像这样的应用程序设置,
class AppProvider extends ChangeNotifier {
dynamic _appSettinngs;
AppProvider() {
_loadAppSettings();
}
void _loadAppSettings() {
dynamic tempSttings = {"biometrics": false, "showBalance": false};
_localStorage.getAll('security').then((value) {
if (value == null) {
_appSettinngs = tempSttings;
notifyListeners();
_localStorage.save("security", tempSttings);
} else {
_appSettinngs = value;
notifyListeners();
}
});
}
void updateOptions(String option, bool value) {
_appSettinngs[option] = value;
_localStorage.save("security", _appSettinngs);
_loadAppSettings();
}
}
所以基本上我正在尝试使用像这样的切换器小部件来更新应用程序设置
Switch(
value: Provider.of<AppProvider>(context)
.appOptions['showBalance'],
onChanged: (value) =>
Provider.of<AppProvider>(context, listen: false)
.updateOptions("showBalance", value),
),
但是当我尝试切换设置时,出现此错误
Unhandled Exception: A AppProvider was used after being disposed.
我哪里错了?
所以问题是我在创建我的提供程序时使用了单例实例,所以我所要做的就是不使用单例,它解决了错误