Flutter - 如何在 GetStorage 中存储列表?

Posted

技术标签:

【中文标题】Flutter - 如何在 GetStorage 中存储列表?【英文标题】:Flutter - how to store a list in GetStorage? 【发布时间】:2021-12-29 03:45:27 【问题描述】:

对于用户浏览的每篇文章,我都想保存 ID 信息。 我正在使用getstorage,我的代码示例如下。

我也找不到真正的方法,我正在寻找保存 id 列表的最佳方法。

    final box = GetStorage();
  List<String> myFavoriteList = [];

  saveFav(String id) 
    myFavoriteList.add(id);
    box.write('favoriteArticles', myFavoriteList.cast<String>());
  

  ifExistInFav(String id) async 
    bool ifExists = false;
    List<String> my = (box.read('favoriteArticles').cast<String>() ?? []);
    ifExists = my.contains(id) ? true : false;
    return ifExists;
  

【问题讨论】:

【参考方案1】:

首先,您需要定义您的列表并将其转换为字符串。

** 请注意,如果您使用自定义数据类型,请确保将模型转换为字符串。

那么您可以使用以下内容将 List 存储为 String 对象

final box = GetStorage('AppNameStorage');
/// write a storage key's value
saveListWithGetStorage(String storageKey, List<dynamic> storageValue) async => await box.write(key: storageKey, value: jsonEncode(storageValue));
/// read from storage
readWithGetStorage(String storageKey) => box.read(storageKey);

保存过程的实现:

saveList(List<dynamic> listNeedToSave) 
    /// getting all saved data
    String oldSavedData = GetStorageServices().readWithGetStorage('saveList');

/// in case there is saved data
if(oldSavedData != null)
  /// create a holder list for the old data
  List<dynamic> oldSavedList = jsonDecode(oldSavedData);
  
  /// append the new list to saved one
  oldSavedList.addAll(listNeedToSave);
  /// save the new collection
  return GetStorageServices().saveListWithGetStorage('saveList', oldSavedList);
 else
  /// in case of there is no saved data -- add the new list to storage
  return GetStorageServices().saveListWithGetStorage('saveList', listNeedToSave);




/// read from the storage
readList() => GetStorageServices().readWithGetStorage('saveList');

然后是用法:

onTap: () async => print('\n\n\n read list items $jsonDecode(await readList())\n\n\n'),

【讨论】:

你好,我想使用getstorage而不是flutter_secure_storage 糟糕,我的错,我用正确的 sn-p 更新 方法 readWithGetStorage 没有定义。这是什么方法? 请重新检查我已经更新了答案 readWithGetStorage() 这个方法返回最后添加的字符串。

以上是关于Flutter - 如何在 GetStorage 中存储列表?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 从 GetStorage 列表中获取数据值

如何使用 Get Storage 保存和检索 List<Map>

无法从 firebase/storage 导入 getStorage 以与 React Native Expo 图像选择器一起使用

小程序 数据缓存 wx.getStorage等等

如何获取手机通讯录

缓存问题之异步处理(微信小程序)