Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
Flutter 如何在具有共享首选项的颤振中保留自定义对象列表?_Flutter_Dart_Sharedpreferences - Fatal编程技术网

Flutter 如何在具有共享首选项的颤振中保留自定义对象列表?

Flutter 如何在具有共享首选项的颤振中保留自定义对象列表?,flutter,dart,sharedpreferences,Flutter,Dart,Sharedpreferences,我想持久化一个具有自定义对象的列表,我甚至编写了序列化和反序列化的方法,但我不知道如何将它与SharedReferences和FutureBuilder 以下是自定义对象: class Fact { String factText; Color factColor; Fact(this.factText, this.factColor); Map<String, dynamic> toJson() => {'factText': factTex

我想持久化一个具有自定义对象的列表,我甚至编写了序列化和反序列化的方法,但我不知道如何将它与
SharedReferences
FutureBuilder

以下是自定义对象:

 class Fact {
  String factText;
  Color factColor;

  Fact(this.factText, this.factColor);

  Map<String, dynamic> toJson() =>
      {'factText': factText, 'factColor': factColor};

  Fact.fromJson(Map<String, dynamic> json)
      : factText = json['factText'],
        factColor = json['factColor'];
}
类事实{
字符串文本;
颜色;
事实(this.factText,this.factColor);
映射到JSON()=>
{'factText':factText,'factColor':factColor};
Fact.fromJson(映射json)
:factText=json['factText'],
factColor=json['factColor'];
}

如果要在共享首选项中存储列表,则可以使用以下方法:

///将字符串[value]列表保存到后台的持久存储中。
///
///如果[value]为null,则相当于对[key]调用[remove()]。
Future setStringList(字符串键,列表值)=>
_setValue('StringList',键,值);

与相同,为什么不使用简单的平面文件?@pskink共享首选项还不够?共享首选项作为xml文件实现(至少在android上)-因此,我不认为这是储存大量data@pskink但是我仍然需要进行序列化,对吗?所以我不需要序列化我的对象?您仍然需要使用
fromjson
  /// Saves a list of strings [value] to persistent storage in the background.
  ///
  /// If [value] is null, this is equivalent to calling [remove()] on the [key].
  Future<bool> setStringList(String key, List<String> value) =>
      _setValue('StringList', key, value);