【问题标题】:Can i put List into SharedPreferences in Flutter?我可以将 List 放入 Flutter 中的 SharedPreferences 中吗?
【发布时间】:2019-09-02 08:30:06
【问题描述】:

我可以将 ArrayListList 对象放在 Flutter 中的 SharedPreferences 吗?因为我刚刚意识到颤振在他们的飞镖中没有 gson

所以..我想通过点击星形图标来保存喜欢的书,当我点击它时,这些书将保存在 sharedPreferences 中。

我可以看到我最喜欢的书的列表。

【问题讨论】:

标签: dart flutter sharedpreferences


【解决方案1】:

保存:

prefs.setStringList('key', yourList);

检索:

var yourList = prefs.getStringList('key');

【讨论】:

  • 那么,我可以将更多的 int 变量放入一个 ID 中吗?
  • 我更新了代码,如果适合您的需要请告诉我。
  • 意思是我只能放一本喜欢的书先生?
  • 在颤振中我们没有ArrayList,我们只有List。只要是String的列表,您应该可以保存它。
  • 我收到此错误 在 null 上调用了方法“setStringList”。接收方:null 尝试调用:setStringList("list", Instance(length:9) of '_GrowableList')
【解决方案2】:
import 'package:shared_preferences/shared_preferences.dart';
 
class MySharedPreferences {
  MySharedPreferences._privateConstructor();
 
  static final MySharedPreferences instance =
      MySharedPreferences._privateConstructor();
 
  setListData(String key, List<String> value) async {
    SharedPreferences myPrefs = await SharedPreferences.getInstance();
    myPrefs.setStringList(key, value);
  }
 
  Future<List<String>> getListData(String key) async {
    SharedPreferences myPrefs = await SharedPreferences.getInstance();
    return myPrefs.getStringList(key);
  }
 
}

更多参考:Flutter Shared Preferences Tutorial

【讨论】:

    【解决方案3】:

    ArrayList 如果你是指 Flutter 的 List 数据结构,那么你可以使用这种方法只将 List 保存在 SharedPreference 中:

    Future <bool> setStringList(String key, List<String> value)
    

    您可以通过以下方式获取列表:

    List<String> getStringList(String key)
    

    有关 shared_preferences 的更多信息,请参阅this 文章。

    一些免费建议: SharedPreferences 用于保存键值对中与用户设置相关的数据。它不应该保存任何复杂的数据,如自定义对象列表。

    如果您需要存储比这更复杂的数据,请考虑使用 SQLite。

    【讨论】:

    • 为什么共享首选项不应该保存任何复杂数据,如自定义对象列表??
    • 它旨在保存用户偏好,因此它基本上旨在保存键值对,例如键:“主题”值:“暗”等。等等。对于更复杂的结构,你应该使用 sqflite、moor 等数据库或不使用 Hive 等 SQL 数据库。您始终可以序列化数据并将其存储在 SharedPreferences 中,但仅仅因为您被允许这样做并不意味着您应该这样做。如果你想保存复杂的数据,我会说去 hive。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 2013-06-27
    • 2021-10-14
    • 2023-03-19
    • 1970-01-01
    • 2023-01-19
    • 2022-06-10
    相关资源
    最近更新 更多