列表视图中的收藏按钮问题 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,如果你愿意,我会放我的代码 您可以使用一个列表来为每个按钮存储喜欢的标志。但更好的方法是创建一个自定义小部件,该小部件具有内置逻辑 like 。 你能提供我的代码示例吗? 【参考方案1】:发生这种情况是因为您的所有收藏按钮都依赖于一个喜欢的变量状态,因此一旦喜欢的变量的状态发生变化,它就会影响所有收藏按钮。您应该使用 SQLite 来存储每个按钮的状态(推荐)或每个按钮的单独键(不推荐)。
【讨论】:
那你有什么推荐的? SQLite 不适合小程序。我推荐蜂巢以上是关于列表视图中的收藏按钮问题 Flutter/Dart的主要内容,如果未能解决你的问题,请参考以下文章
(Flutter/Dart) 如何修复使用 [ ] 显示列表中的数字