繁体   English   中英

如何将列表保存到共享首选项

[英]How to save a list to shared preferences

我想将列表保存到共享首选项,但它不起作用......目标是将数据添加到变量并保存。

这是我要保存的变量:

    var savedData = [
      {'date': 0, 'testNumber': 0},
    ];

这是我尝试保存和接收变量的代码:

 Future<void> saveDataTest() async {
    final prefs = await SharedPreferences.getInstance();
    await prefs.setStringList(
        'dataTest', savedData.map((i) => i.toString()).toList());
  }
    
 Future<String> getDataStringTest() async {
    final prefs = await SharedPreferences.getInstance();
    savedData =
     prefs.getStringList('dataTest').map((i) => int.parse(i)).toList();
    setState(() {});
  }

这是我得到的错误:

A value of type 'List<int>' can't be assigned to a variable of type 'List<Map<String, int>>'.
Try changing the type of the variable, or casting the right-hand type to 'List<Map<String, int>>'.

当您在列表中使用具有原始类型的 Map object 时,您可以使用jsonEncode并转换为可以保存在 sharedPreferences 中的字符串,并在想要还原时使用jsonDecoder

像这样:

String toBeSaved = jsonEncode(savedData);
prefs.setString('dataTest', toBeSaved);

尝试使用jsonEncodejsonDecode from import 'dart:convert';

像这样:


 Future<void> saveDataTest() async {
    final prefs = await SharedPreferences.getInstance();
    await prefs.setString("dataTest ", jsonEncode(savedData));
  }
    
 Future<String> getDataStringTest() async {
    final prefs = await SharedPreferences.getInstance();
    savedData = List.from(jsonDecode(prefs.getString("dataTest")));
    setState(() {});
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM