list - 删除 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);
推荐阅读
- php - 如何使用 PHP 制作 jpeg 格式的图像?
- go - 无法在标题中设置 cookie
- javascript - 对状态变化做出反应重新渲染动画
- python - 在虚拟环境中使用 Mujoco 密钥时遇到问题
- usb - iPhone记忆棒Windows格式化(填充!)Q
- javascript - 如何为“箭头”组件定义渲染()?
- python - 分块传输编码终止序列和 TCP recv()
- r - 在散点图中包含一些分类变量案例,而排除其他案例
- sql - 从 Azure 导出时,本地主机 SQL Server 数据库非常慢并且站点超时
- decentraland - 无法从 CLI 使用 SDK 部署场景