首页 > 解决方案 > 如何使用 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);

}

任何建议都会很棒,非常感谢!如果我可以从未来无效的交换机上的值字段中检索数据,但我在任何地方都没有看到任何答案......

标签: listfluttersharedpreferences

解决方案


也许将您的值存储在地图中,然后对其进行解码/编码。如下:

var jsn = prefs.getString('Map');
Map = json.decode(jsn);


 var jsn = json.encode(Map);
 prefs.setString('Map', jsn);

让我知道它是否有帮助。


推荐阅读