dart - 在切换并重新启动应用程序后,如何为 Flutter 中的 Switch 提供正确的值?
问题描述
我有一个开关,可以在浅色主题和深色主题之间切换。开关值 true = 深色主题。开关值假 = 光。并且默认为假。如果我从 false 切换到 true,那么到目前为止主题会切换到黑暗。但是,如果我重新启动应用程序,则开关为 false 并显示深色主题。
bool _switchValue = false;
void _changeThemeInOpp(bool switchValue) {
setState(() {
_switchValue = switchValue;
});
if (_switchValue == true) {
DynamicTheme.of(context).setBrightness(Brightness.dark);
} else {
DynamicTheme.of(context).setBrightness(Brightness.light);
}
}
new Switch(
value: _switchValue,
onChanged: (bool switchValue) {
_changeThemeInOpp(switchValue);
}),
如何重新启动应用程序并且开关具有正确的值?
解决方案
您需要使用shared_preferences_switchValue
之类的东西将其保存在磁盘中以
获取更多信息,请参阅:
在磁盘上存储键值数据在
更改时保存值:
void _changeThemeInOpp(bool switchValue) async{
// save new value
final _switchValue= await SharedPreferences.getInstance();
_switchValue.setInt('Value', switchValue);
setState(() {
_switchValue = switchValue;
});
if (_switchValue == true) {
DynamicTheme.of(context).setBrightness(Brightness.dark);
} else {
DynamicTheme.of(context).setBrightness(Brightness.light);
}
}
推荐阅读
- python-3.x - 如果我将从 db 获取的索引号存储在变量中并在按索引从列表中选择时使用,m 得到错误作为预期字符串,int found-Robot Framework
- iteration - 赛普拉斯:检查href列表,断言它们不包含某个字符串
- python - 如何将 pytest 固定装置拆解与多次调用的函数一起使用?
- android - Android 上的 Xamarin Forms 初始图像纵横比
- json - (PowerShell) 如何从 JSON 输出中删除双引号?
- javascript - MERN:“无效的 API 密钥”Heroku 部署?
- python - requests_html + Django “线程 'Thread-1' 中没有当前事件循环。”
- python - AttributeError:模块“模型”没有属性“check_pw”
- apache-flink - Python API 是否支持 DataStream 和 Table 之间的转换
- python - 3 d 矩阵图,其中 x ad y 是 1 d 数组