在sharedPreferences中删除列表中的一个元素



我试图在这里删除favoriteList中的一个元素,但这似乎不起作用。我在网上找过,但找不到任何与此相关的内容。它们都是关于如何清除sharedPreferences或删除密钥的。

Future<void> removeFav(String articleId) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
favoriteList = prefs.getStringList('favoriteList');
if (favoriteList != null) {
await prefs.remove('${favoriteList!.where((id) => id == articleId)}'); //I'm guessing id here returns an element of this list..??
print('unfavorited');
setState(() {
isFavorite = false;
});
} else {
print('favoriteList was null');
}
}

您需要首先从列表中删除项目:

SharedPreferences prefs = await SharedPreferences.getInstance();
// get the list, if not found, return empty list.
var favoriteList = prefs.getStringList('favoriteList')?? [];
// remove by articleId
favoriteList.removeWhere((item) => item == articleId);

然后,将更改后的favoriteList保存回sharedPreferences:

prefs.setStringList('favoriteList', favoriteList);

您应该执行以下步骤将对象列表保存在SharedPreferences:中

  • 将对象转换为贴图→toMap()方法

  • 将地图编码为字符串→encode(...)方法

  • 将字符串保存到shared preferences

用于恢复您的对象:

  • 将共享首选项字符串解码为映射→decode(...)方法

  • 使用fromJson()方法获取对象

因此,在这种情况下,我认为您应该从shared preference恢复列表并修改列表,然后将新列表保存在shared preference中。

相关内容

  • 没有找到相关文章

最新更新