list - 如何使用 SharedPreferences 从 Flutter 中的列表中保存多个布尔值
问题描述
我创建了一个布尔列表:
List<bool> switchbool = [true, true, true, true];
在切换开关时,值会发生变化(非常明显......)。但我想将这些信息完全存储在列表中,因为我像这样使用它们:
Switch(
value: switchbool[index],
onChanged: (value) {
_saveBoolFromSharedPref(value, app[index]);
setState(() {
switchbool[index] = value;
});
},
)
但是这样它就不会加载存储在我保存的 sharedPreferences 中的 true 或 false ......
Future<void> _getBoolFromSharedPref() async {
final prefs = await SharedPreferences.getInstance();
switchbool.length = app.length;
for (var i = 0; i < app.length; i += 1) {
final myBool = prefs.getBool(app[i]) ?? false;
}
这里是 _saveBoolFromSharedPref
Future<bool> _saveBoolFromSharedPref(bool value, String appName) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setBool(appName, value);
//print(switchbool);
}
任何建议都会很棒,非常感谢!如果我可以从未来无效的交换机上的值字段中检索数据,但我在任何地方都没有看到任何答案......
解决方案
也许将您的值存储在地图中,然后对其进行解码/编码。如下:
var jsn = prefs.getString('Map');
Map = json.decode(jsn);
var jsn = json.encode(Map);
prefs.setString('Map', jsn);
让我知道它是否有帮助。
推荐阅读
- sql - 自联接获取比较同一表中数据的记录
- tcl - 使 Tcl/Expect 语句不那么“贪婪”
- qt - 如何在 qt web Assembly 中使用推送通知
- javascript - 在javascript中找不到变量
- javascript - 开玩笑通过 eslint 忽略 ReferenceError
- c# - Azure DevOps Pipeline 在 NuGet 还原任务中失败
- php - PHP opendir() 和 scandir() 不工作(CentOS 7)
- image - 从openshift源代码构建容器映像的正确方法是什么
- java - 如何将数组字符串值与枚举值进行比较
- android - 通过 Git Hub 秘密传递 build.gradle android 中的 local.properties