【发布时间】:2020-04-14 18:54:06
【问题描述】:
我需要在我的应用中保存切换开关的状态并在开始时加载它。为此我使用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;
}
每次更改切换值时都会运行 saveSwitchState()。
问题出在应用程序的开头。
我创建了一个布尔值:bool isSwitchedFT = false;
我用 false 初始化,因为 null 给了我错误。
我将如何设置isSwitchedFT = getSwitchState;
isSwitchedFT 的值为空时,它会编译,但我的模拟器上出现红色错误:
'package:flutter/src/material/toggleable.dart': Failed assertion: line 45 pos 15: 'tristate || value
!= null': is not true.
当使用一个值编译时,开关可以正常工作并保存更改的值。
Switch(
value: isSwitchedFT,
onChanged: (bool value) {
setState(() {
isSwitchedFT = value;
saveSwitchState(value);
print('Saved state is $isSwitchedFT');
//switch works
});
print(isSwitchedFT);
},
activeTrackColor: Color(0xFF1D1F33),
activeColor: Colors.purple[500],
),
我想要的是用开关的最后一个值加载应用程序。 谢谢。
【问题讨论】:
-
您使用的是
StatefulWidget吗?如果是这样,您可以使用initState获取数据并将其设置为Switch正在使用的值。如果可能,请在DartPad 中显示您的完整代码。
标签: android flutter flutter-dependencies