我需要在我的应用程序中保存切换开关的状态并在开始时加载它。为此,我使用SharedPreferences:
Future<bool> saveSwitchState(bool value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool("switchState", value);
return prefs.setBool("switchState", value);
}
Future<bool> getSwitchState() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
isSwitchedFT = prefs.getBool("switchState");
print(isSwitchedFT);
return isSwitchedFT;
}
Run Code Online (Sandbox Code Playgroud)
每次更改切换值时都会运行 saveSwitchState() 。
问题出在应用程序的启动处。我创建了一个 bool 值:bool isSwitchedFT = false;
我用 false 初始化,因为 null 会给我错误。我如何isSwitchedFT = getSwitchState;
为 isSwitchedFT 设置 On 空值,它可以编译,但我的模拟器上出现红色错误:
'package:flutter/src/material/toggleable.dart': Failed assertion: line 45 pos 15: 'tristate || value
!= null': is not true.
Run Code Online (Sandbox Code Playgroud)
当使用值进行编译时,开关可以正常工作并保存更改的值。
Switch(
value: isSwitchedFT,
onChanged: (bool value) …Run Code Online (Sandbox Code Playgroud)