Flutter 颤振列表视图:小部件不';t更新
我有一个listview,它在StatefulWidget中显示了一些项目:Flutter 颤振列表视图:小部件不';t更新,flutter,flutter-listview,statefulwidget,flutter-state,Flutter,Flutter Listview,Statefulwidget,Flutter State,我有一个listview,它在StatefulWidget中显示了一些项目: ListView.separated( shrinkWrap: true, itemBuilder: (context, index) { return RowItem( item: rowsList[index], index: index, ); }, separato
ListView.separated(
shrinkWrap: true,
itemBuilder: (context, index) {
return RowItem(
item: rowsList[index],
index: index,
);
},
separatorBuilder: (context, index) {
return Divider(
height: 20,
color: Colors.transparent,
);
},
itemCount: rowsList.length,
),
RowItem也是一个StatefulWidget
当我从rowsList添加和删除项目时,所有这些都可以正常工作,但当我尝试更新现有的rowsList项目时,我会遇到问题。这是我的更新功能:
void updateRow(int rowIndex, MyItem item) {
setState(() {
rowsList[rowIndex] = item;
});
}
但我仍然可以在listview中看到更新项的旧值。(MyItem是扩展Equalable的对象)
怎么了?试试
RowItem
小部件试试这个
var项目
@override
void initState() {
item = widget.item;
super.initState();
}
@override
void didUpdateWidget(covariant SleepDeckStepper oldWidget) {
item = widget.item;
super.didUpdateWidget(oldWidget);
}
问题是
item
参数未更新,无法重新发布我的评论。您应该在每个行项目上使用一个
来自Emily Fortuna的更多信息。尝试使用。谢谢,我只是错过了设置RowItem的键--这能解决您的问题吗?如果是这样的话,我将把我的评论作为一个真实的答案重新发布。当然,重新发布答案,我会接受它。