我已经为列表平贴创建了一个自定义小部件,我需要将fav_outline的图标更改为favv或google,但它没有改变,虽然项目正在添加和删除正常工作,但只有图标不改变..在我为它创建自定义小部件之前,它工作得很好
我有两个屏幕的底部导航赡养费和最喜欢的电影…
当我点击所有电影屏幕的收藏图标…它添加到最喜欢的电影,,工作正常,但只有图标不改变
这是我的自定义小部件和我的所有电影屏幕的编码。都是有状态的
class MyCard extends StatefulWidget {
final Movie e;
final VoidCallback onfavtab;
MyCard({required this.e,required this.onfavtab});
@override
State<MyCard> createState() => _MyCardState();
}
class _MyCardState extends State<MyCard> {
@override
Widget build(BuildContext context) {
return Card(
child: ListTile(
title: Text(widget.e.name.toString()),
subtitle: Text(widget.e.language),
trailing: Row(
mainAxisSize: MainAxisSize.min,
children: [
IconButton(
icon: userlist[0].favmovies.contains(e)==true?Icon(Icons.favorite): Icon(Icons.favorite_outline),onPressed: widget.onfavtab),
IconButton(onPressed: (){}, icon: Icon(Icons.delete)),
],
),
leading: CircleAvatar(
backgroundImage: NetworkImage(widget.e.imageurl),
),
),
);
}
}
这里是我的allmovie screen编码这里我调用custom widget
lass _AllMoviesState extends State<AllMovies> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(children: movielist.map((e) => MyCard(e: e, onfavtab: (){
if(userlist[0].favmovies.contains(e)==true)
userlist[0].favmovies.remove(e);
else
userlist[0].favmovies.add(e);
//looks like this is not working
setState(() {
print(userlist[0].favmovies);
});
},
)).toList(),),
);
}
}
将需要编辑的图标放在provider类中当你点击它时,只要改变图标并通知它。