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

2024-01-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;
  }

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

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

那么您可以使用以下命令将 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 => debugPrint('\n\n\n read list items ${jsonDecode(await readList())}\n\n\n', wrapWidth: 800),
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter - 如何在 GetStorage 中存储列表? 的相关文章