使用类方法构建交互式flutter UI



我有一个项目的ListView,其中每个ListTile代表一个项目。为此,我有一个项目列表,它是用For循环写入ListView的。每个ListTile都有一个IconButton,用于将项目定义为收藏夹。为了保持代码的整洁,我在项目类中定义了方法来构建UI。这背后的原因是,可以将该项目设置为应用程序中不同位置的收藏夹。

不幸的是,我无法让应用程序根据收藏夹状态更新UI。我想这与Widgets的返回有关,因为状态在返回时会被评估一次,直到刷新才会改变。我已经用ChangeNotifier扩展了Project类,但没有任何结果。代码下方。

ListView(
children: [
for (var project in projects.projects) project.getListTile()
],
),

带有getListTile方法((的项目类:

class Project extends ChangeNotifier{
bool favorite = false;
Project({this.favorite = false});
IconButton getFavoriteButton() {
return IconButton(
icon: favorite
? Icon(Icons.favorite_outlined)
: Icon(Icons.favorite_border_outlined),
color: favorite ? Colors.yellow : Colors.white,
onPressed: () {
favorite = !favorite;
notifyListeners();
},
);
}

ListTile getListTile() {
return ListTile(
leading: getFavoriteButton(),
),
);
}
}

有没有办法刷新用户界面,以便在按下图标按钮时更新最喜欢的图标类型和颜色?

您应该使用StatefullWidget实现。

这些小部件用于存储状态,并在进行任何状态更改时自动重建:

IconButton(
icon: favorite
? Icon(Icons.favorite_outlined)
: Icon(Icons.favorite_border_outlined),
color: favorite ? Colors.yellow : Colors.white,
onPressed: () {
setState((){
favorite = !favorite;
}
},
);

最新更新