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

问题描述 投票:0回答:1

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

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

所以有这个例子:

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

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

flutter flutter-dependencies
1个回答
0
投票

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'));
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.