如何使用 SharedPreferences 从 Flutter 列表中保存多个 bool

How to save multiple bool from list in Flutter with SharedPreferences

我创建了一个布尔列表:

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

}

任何建议都会很棒,非常感谢! 如果我可以从带有未来空值的开关上的值字段中重新获取数据,但我没有在任何地方看到任何答案...

也许将您的值存储在地图中,然后 decode/encode 它们。喜欢以下内容:

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


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

如果有帮助请告诉我。

为您的 _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;
}