如何使用 SharedPreferences 从 Flutter 中的列表中保存多个布尔值

Posted

技术标签:

【中文标题】如何使用 SharedPreferences 从 Flutter 中的列表中保存多个布尔值【英文标题】:How to save multiple bool from list in Flutter with SharedPreferences 【发布时间】:2021-04-20 23:10:15 【问题描述】:

我创建了一个 bool 列表:

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);

任何建议都会很棒,非常感谢! 如果我可以从开关上的 value 字段中检索数据,但我在任何地方都没有看到任何答案......

【问题讨论】:

你也可以添加你的 _saveBoolFromSharedPref 方法吗? @zeus 应该没问题吧? 检查我的答案@Malopieds。 【参考方案1】:

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

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


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

如果有帮助,请告诉我。

【讨论】:

首先感谢您的回复,但我不明白我应该如何使用地图,我还没有看到将 bool 存储在其中的可能性,但我必须将其转换为细绳?抱歉,我是 Flutter 新手,但非常感谢! 反编码和编码提供了将它存储在 sharedPreferences 中的可能性......也许你可以对列表做同样的事情,我不确定 我适应this 网站和evertyhting 工作谢谢!【参考方案2】:

试试这个_getBoolFromSharedPref 方法。

Future<void> _getBoolFromSharedPref() async 
final prefs = await SharedPreferences.getInstance();
switchbool.length = app.length;
for (var i = 0; i < app.length; i += 1) 
  switchbool[i] = prefs.getBool(app[i]) ?? false;

【讨论】:

我已经尝试过了,但是谢谢,看起来 List switchbool 是第一个,而 _getBoolFromSharedPref 甚至没有被监听:/ @Malopieds 抱歉,我不明白您所说的“先采取,甚至没有听 _getBoolFromSharedPref”的意思 是的,我的意思不是很清楚,就像列表对未来的虚空具有优先权,因此它始终存储为“假”。但是 rottler35 的回答就像一个魅力,但感谢您的帮助!

以上是关于如何使用 SharedPreferences 从 Flutter 中的列表中保存多个布尔值的主要内容,如果未能解决你的问题,请参考以下文章

如何正确的使用SharedPreferences

如何在改变sharedpreferences数据后自动改变android menuItem数据?

如何从SharedPreferences文件中正确地将文本附加到TextView而不是覆盖它?

注销清除 SharedPreferences

从SharedPreferences保存并检索Intent

尝试从 sharedPreferences 检索地图时出现颤振错误