gpt4 book ai didi

flutter - 在 ListView 中使用具有共享首选项的“收藏夹”按钮

转载 作者:行者123 更新时间:2023-12-03 03:50:44 27 4
gpt4 key购买 nike

当我单击它并单击列表中的所有项目时,我在列表 View 中有“收藏夹”按钮,我如何使用共享首选项修复此问题,这是我的代码:
在我的stfl状态下:

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

我的LikeButton代码:
IconButton(
icon: Icon(
liked ? Icons.favorite : Icons.favorite_border,
color: liked ? Colors.red : Colors.grey,
),
onPressed: _persistPreference,
),

最佳答案

您可以通过生成List<bool>解决问题。由于按下IconButton会更改“喜欢”的值,因此所有图标都将成为Icons.favorite,因为它们都引用了您喜欢的同一个bool。这是有关如何解决此问题的示例:

  @override
Widget build(BuildContext context) {
List<bool> likedList=[];
List<bool>.generate(yourItem.length, (i) => likedList.add(false);
return ListView.builder(
itemcount:yourItem.length,
itemBuilder:(BuildContext context,int index){
return IconButton(
icon: Icon(
likedList[index] ? Icons.favorite : Icons.favorite_border,
color: likedList[index] ? Colors.red : Colors.grey,
),
onPressed:()=> likedList[index]=!likedList[index], //toggle bool value
);
}
)

关于flutter - 在 ListView 中使用具有共享首选项的“收藏夹”按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63531761/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com