在Flutter Localstorage上保存对象/列表的最佳方法

我已经阅读了保存此信息的不同方法,但是似乎没有关于此的任何适当的文字。 大多数人建议使用SharedPreferences并对列表进行编码/解码。其他人使用一个函数按属性映射列表属性,而我根本找不到这个专业人员。

默认情况下,该库可以保存不同的类型,但列表之间不存在。

有这个例子:

final _myList = [
{one: 1,two: 2},{one: 1,];

我们如何保存并从Flutter的本地存储中获取它?

zhuangmisi 回答:在Flutter Localstorage上保存对象/列表的最佳方法

main.dart

void main() {
  SharedPreferences.getInstance().then((prefs) {
    runApp(MyApp(prefs: prefs));
  });
}

class MainScreen extends StatefulWidget {
  MainScreen({Key key,this.prefs}) : super(key: key);
  final SharedPreferences prefs;
...

我从MainScreen将首选项传递到其余页面,因此一开始就将其加载到我的应用程序中。 这是另一个页面:

class MyState extends State<TeamsPage> {
  List _teams = [];
  SharedPreferences _prefs = null;

  @override
  void initState() {
    _prefs = widget.data["prefs"];
    _getTeams();
  }

  _getTeams() async {
    if (_prefs.containsKey("teams") == null || _prefs.get('teams') == null) {
      _teams = [
        {"name": "Team 1","avatar": "assets/images/draw.jpg"},{"name": "Team 2","avatar": "assets/images/draw1.jpg"},{"name": "Team 3","avatar": "assets/images/draw2.jpg"},{"name": "Team 4","avatar": "assets/images/draw3.jpg"}
      ];
      _prefs.setString("teams",json.encode(_teams));
    } else {
      _teams = json.decode(_prefs.get('teams'));
    }
  }
本文链接:https://www.f2er.com/3134515.html

大家都在问