首页 > 解决方案 > 删除 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');
    }
  }

标签: listflutterdartsharedpreferences

解决方案


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

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);

推荐阅读