Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 是否有任何解决方案来存储和检索共享首选项中的对象列表?_List_Object_Flutter_Sharedpreferences - Fatal编程技术网

List 是否有任何解决方案来存储和检索共享首选项中的对象列表?

List 是否有任何解决方案来存储和检索共享首选项中的对象列表?,list,object,flutter,sharedpreferences,List,Object,Flutter,Sharedpreferences,我想将对象列表存储到共享首选项中,然后从中获取列表 我试图存储一个对象列表,但是我遇到了一个错误,比如不能 对对象进行编码 var list = jsonEncode(Building.getInstance().childList.toString()); pref.putString(SharedKey().CHILD_LIST,list); 我希望获得存储在共享首选项中的对象列表。您可以将复杂对象列表转换为json字符串,并使用setString保存 并使用getStringList

我想将对象列表存储到共享首选项中,然后从中获取列表

我试图存储一个对象列表,但是我遇到了一个错误,比如不能 对对象进行编码

 var list = jsonEncode(Building.getInstance().childList.toString());
 pref.putString(SharedKey().CHILD_LIST,list);

我希望获得存储在共享首选项中的对象列表。

您可以将复杂对象列表转换为json字符串,并使用setString保存
并使用getStringList获取json字符串并将其转换回您的复杂对象列表

完整代码演示使用setStringList和getStringList

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() {
  runApp(new MaterialApp(
    home: new Scaffold(
      body: new Center(
        child: new RaisedButton(
          onPressed: _save,
          child: new Text('Save my list of int'),
        ),
      ),
    ),
  ));
}

_save() async {
  List<String> myListOfStrings=  ["1","2","3","4"];

  List<String> myListOfJsonStrings=  ['{ "storeid":"123",  "storename":"jock"}',' {  "storeid":"456",  "storename":"abc"}' ];

  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.setStringList('mylist', myListOfStrings);

  List<String> myList = (prefs.getStringList('mylist') ?? List<String>()) ;
  print('Your list  $myList');

  await prefs.setStringList('myjsonlist', myListOfJsonStrings);

  List<String> myjsonList = (prefs.getStringList('myjsonlist') ?? List<String>()) ;
  print('Your list  $myjsonList');
}
导入“包装:颤振/材料.省道”;
导入“package:shared_preferences/shared_preferences.dart”;
void main(){
runApp(新材料)PP(
家:新脚手架(
正文:新中心(
孩子:新升起的按钮(
onPressed:\u保存,
子项:新文本(“保存我的int列表”),
),
),
),
));
}
_save()异步{
列出myListOfStrings=[“1”、“2”、“3”、“4”];
列出myListOfJsonStrings=['{“storeid”:“123”,“storename”:“jock”}','{“storeid”:“456”,“storename”:“abc”}'];
SharedReferences prefs=等待SharedReferences.getInstance();
等待prefs.setStringList('mylist',myListOfStrings);
List myList=(prefs.getStringList('myList')??List();
打印(“您的列表$myList”);
wait prefs.setStringList('myjsonlist',myListOfJsonStrings);
List myjsonList=(prefs.getStringList('myjsonList')??List();
打印('yourlist$myjsonList');
}

将其转换为字符串,您可以存储它

import 'dart:convert';
...
var s = json.encode(myMap);
// or var s = jsonEncode(myMap);

json.decode()/jsonDecode() makes a map from a string when you load it.

或者我希望将对象列表存储在共享首选项中,而不是映射中。没有这样的方法可以直接存储对象。这是有技术原因的。顺便说一句,pref_甜点将其存储为MapYes。我将列表存储为字符串,然后通过解码将其自身作为字符串检索,但无法获得对象的原始列表,请您帮助我。