【问题标题】:Flutter: Save and Fetching multiple value in SharedPreferencesFlutter:在 SharedPreferences 中保存和获取多个值
【发布时间】:2019-10-05 05:27:09
【问题描述】:

我正在与SharedPreferences 合作制作功能离线书签 News 。我可以使用此代码保存和获取单个值:

保存值

void _testingSavePref(String judulBerita) async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    pref.setString("tokenbookmark", judulBerita);
  }

获取值

@override
  void initState() {
    super.initState();
    setState(() {
      _testingLoadPref();
    });
  }
_testingLoadPref() async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    setState(() {
      tokenBookmark = pref.getString("tokenbookmark");
    });
  }

一切正常,但可以使用SharedPreferences 保存和获取多个值?

例如,我有 2 个或更多数据,我希望保存所有数据而不是覆盖。

谢谢

【问题讨论】:

标签: flutter dart sharedpreferences


【解决方案1】:

更新代码:

为了保存价值

void _testingSavePref(List<String> judulBerita) async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    await pref.setStringList("tokenbookmark", judulBerita); //judulBerita is a list of string now
  }

获取值

@override
  void initState() {
    super.initState();
    setState(() {
      _testingLoadPref();
    });
  }

_testingLoadPref() async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    setState(() {
       final List<String>? tokenBookmark = pref.getStringList("tokenbookmark");
    });
  }

现在,您可以通过以下代码从tokenBookmark 列表中获取数据

for(String s in tokenBookmark){
  print(s);
}

【讨论】:

    【解决方案2】:

    您不应使用 SharedPreferences 来保存此类数据。

    使用本地 sql 或 nosql 数据库 (sqflite / sembast)。

    同样不要在initState方法中调用setState是错误的和不必要的。

    【讨论】:

    • 你能详细说明一下吗?以我的经验, sqflite 在使用颤振时往往有非常模糊的错误,其他包不是轻量级的,随时可能被丢弃。此外,我在这里没有看到使用 Sharedpreferences 的任何问题,因为数据不需要保护恕我直言,并且用于编码解码的 JSON 文件应该就可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    相关资源
    最近更新 更多