列表视图中的收藏按钮问题 Flutter/Dart

Posted

技术标签:

【中文标题】列表视图中的收藏按钮问题 Flutter/Dart【英文标题】:problem with favorite button in list view Flutter/Dart 【发布时间】:2021-06-01 07:04:05 【问题描述】:

伙计们,我在这里有这段代码,问题是当我点击我最喜欢的图标时,列表中的所有图标都是真的!! 这是代码:

static const likedKey = 'liked_key';

  bool liked;

  @override
  void initState() 
    super.initState();
    _restorePersistedPreference();
  

  void _restorePersistedPreference() async 
    var preferences = await SharedPreferences.getInstance();
    var liked = preferences.getBool(likedKey) ?? false;
    setState(() => this.liked = liked);
  

  void _persistPreference() async 
    setState(() => liked = !liked);
    var preferences = await SharedPreferences.getInstance();
    preferences.setBool(likedKey, liked);
  

还有我最喜欢的按钮:

IconButton(
                icon: Icon(
                  liked ? Icons.favorite : Icons.favorite_border,
                  color: liked ? Colors.red : Colors.grey,
                ),
                onPressed: _persistPreference,
              ),

【问题讨论】:

能否提供所有图标的列表代码? 我的列表已连接到api,如果你愿意,我会放我的代码 您可以使用一个列表来为每个按钮存储喜欢的标志。但更好的方法是创建一个自定义小部件,该小部件具有内置逻辑 li​​ke 。 你能提供我的代码示例吗? 【参考方案1】:

发生这种情况是因为您的所有收藏按钮都依赖于一个喜欢的变量状态,因此一旦喜欢的变量的状态发生变化,它就会影响所有收藏按钮。您应该使用 SQLite 来存储每个按钮的状态(推荐)或每个按钮的单独键(不推荐)。

【讨论】:

那你有什么推荐的? SQLite 不适合小程序。我推荐蜂巢

以上是关于列表视图中的收藏按钮问题 Flutter/Dart的主要内容,如果未能解决你的问题,请参考以下文章

单击收藏夹按钮时更新列表视图

在 Flutter/Dart 中的列表内创建地图

(Flutter/Dart) 如何修复使用 [ ] 显示列表中的数字

Flutter / Dart / Firebase - 流返回空列表

如何从 Flutter(Dart) 中的另一个类调用方法?

在列表视图中添加收藏按钮