我有一个开关,我在灯光主题和黑暗主题之间切换。切换值true =黑暗主题。切换值false = light。默认值为false。 如果我从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);
}),
如何重新启动应用并且交换机具有正确的值?
答案 0 :(得分:1)
您需要使用shared_preferences之类的内容将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);
}
}
保存在磁盘中
有关更多信息,请参阅
Storing key-value data on disk
更改时保存值:
pastebin.com/raw/TJkCEd1T