首页 > 解决方案 > Flutter:使用 SharedPreferences 将项目 ID 保存到字符串列表

问题描述

我想使用 SharedPreferences 将项目的 Id 存储到 favId(字符串列表)中。我创建了这样的 saveData 和 getData 方法:

  static List<String> favId = [];

  void saveData() async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    pref.setStringList("id", favId);
  }

  getList() async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    return pref.getStringList("id");
  }

但是,即使在收藏按钮中调用 saveData() 后,该项目的 Id 也没有保存到 favId 中。

这个 SharedPreferences 将在用户单击收藏图标后调用,因此项目的 Id 将添加到 favId 中。如何使用 SharedPreferences 实现它?这是我最喜欢的图标的 IconButton :

IconButton(
                icon: Icon(
                  doa.fav ? Icons.favorite : Icons.favorite_border,
                  color: doa.fav ? Colors.red : Colors.grey,
                ),
                onPressed: () => setState(() {
                  doa.fav = !doa.fav;
                  if (favId.contains(doa.id)) {
                    favId.removeWhere(
                        (element) => element == doa.id.toString());
                  } else {
                    favId.add(doa.id.toString());
                    saveData();
                  }
                }),
              ),

标签: flutterdart

解决方案


推荐阅读