【问题标题】:Best way to save objects/lists in Flutter localstorage在 Flutter localstorage 中保存对象/列表的最佳方式
【发布时间】:2019-11-09 00:14:32
【问题描述】:

我已经阅读了保存此信息的不同方法,但似乎没有任何关于此的正确写入。 大多数人建议使用SharedPreferences 并对列表进行编码/解码。别人用一个函数来逐个属性映射list属性,我完全没发现这个专业。

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

所以有这个例子:

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

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

【问题讨论】:

  • 考虑将{one: 1, two: 2} 转换为一个对象,并按照有关parsing json in Flutter 的指南进行操作。这可能是一个更好的方法
  • 对于仅将简单对象保存在内存中的信息似乎又太多了。为什么有这么多不同的方法?哪个更好?

标签: flutter flutter-dependencies


【解决方案1】:

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'));
    }
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2021-06-18
    • 1970-01-01
    • 2016-06-05
    • 2017-05-13
    • 2015-05-10
    相关资源
    最近更新 更多