我在一个有状态的小部件中使用了ListView.builder,并为每个项目(ImageCard)创建了一个单独的有状态小部件。
在 ImageCard 小部件中,我添加了一个“喜欢”按钮,当我点击它时,它会变成红色(喜欢),灰色(不喜欢)。
问题是,当我向下滚动并返回时,颜色始终为灰色,这意味着没有保存状态!
如何通知父级有状态小部件以保留状态?
@override
Widget build(BuildContext context) {
return _buildListView(models, _scrollController);
}
Widget _buildListView(
List<PhotoModel> models, ScrollController scrollController) {
return Container(
child: ListView.builder(
controller: scrollController,
itemCount: models.length,
itemBuilder: (context, int index) {
if (index == models.length - 1) {
return SpinKitThreeBounce(
color: Colors.purple,
size: 30.0,
);
} else {
return ImageCard(
models[index].regularPhotoUrl,
models[index].mediumProfilePhotoUrl,
models[index].name,
models[index].color);
}
}));
}
子状态组件
class ImageCard extends StatefulWidget {
final String imageUrl, userProfilePic, userName, color;
ImageCard(this.imageUrl, this.userProfilePic, this.userName, this.color);
@override
_ImageCardState createState() => _ImageCardState();
}
class _ImageCardState extends State<ImageCard> {
bool isLiked = false, isFollowing = false;
@override
Widget build(BuildContext context) {
return new Card( ....
void _onLikedBtnClicked() {
setState(() {
if (isLiked)
isLiked = false;
else {
isLiked = true;
}
});
}
isLiked
属性保存在哪里?它是指color
属性吗? - soupjake