颤振-为什么ListView没有';你不更新索引吗?
我编写了一个包含一些ListView(子视图)的ListView(父视图)。架构如下所示: 我添加了颤振-为什么ListView没有';你不更新索引吗?,listview,indexing,flutter,Listview,Indexing,Flutter,我编写了一个包含一些ListView(子视图)的ListView(父视图)。架构如下所示: 我添加了Dismissible,用于删除子listView项。但是发生了一些错误。 子ListView项目的索引在我删除一些项目后未更新。因此,错误出现如下: 父listView的代码如下所示: @override Widget build(BuildContext context) { // TODO: implement build return Consumer<Da
Dismissible
,用于删除子listView项。但是发生了一些错误。
子ListView项目的索引在我删除一些项目后未更新。因此,错误出现如下:
父listView的代码如下所示:
@override
Widget build(BuildContext context) {
// TODO: implement build
return Consumer<Data>(
builder: (context, Data dataRecord, _){
return Expanded(
child: ReorderableListView(
children: widget.dataList.map((item) =>
ChildListView(dataItem: item,),
).toList(),
onReorder: (int oldIndex, int newIndex) {
print("oldIndex: $oldIndex, newIndex: $newIndex");
setState(() {
var tmpItem = widget.dataList.remove(oldIndex);
widget.dataList.insert(newIndex, tmpItem);
});
},
),
);
}
);
@override
Widget build(BuildContext context) {
return ListView.builder(
controller: _scrollController,
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
padding: const EdgeInsets.all(10.0),
itemCount: widget.items.length,
itemBuilder: (BuildContext context, int index) {
var _actionSet = widget.items[index];
return Dismissible(
key: ValueKey(widget.items[index].id.v1()),
direction: DismissDirection.endToStart,
onDismissed: (direction) {
print("itemcount: ${widget.items.length}");
print("index is: $index");
_deleteItem(index);
},
confirmDismiss: _confirmDismiss,
background: Container(
color: Colors.red,
child: ListTile(
trailing: Icon(Icons.delete, color: Colors.white),
),
),
child: ExeRoutineDetailExeListRow(actionSet: _actionSet, index: index,),
);
});
}
void _deleteItem(int index) {
print("===>>>removeAt:$index");
widget.items.remove(index);
}
//It's items remove function
// the Class Items with the ChangeNotifier
item remove(int index) {
var tmpItem = items.removeAt(index);
notifyListeners();
return tmpItem;
}
希望您的帮助,非常感谢。问题没有问题。关键是我没有在“可驳回的中设置状态()
返回可驳回(
key:ValueKey(widget.items[index].id.v1()),
方向:DismissDirection.endToStart,
onDismissed:(方向){
打印(“itemcount:${widget.items.length}”);
打印(“索引为:$index”);
setState((){u deleteItem(index);})//
return Dismissible(
key: ValueKey(widget.items[index].id.v1()),
direction: DismissDirection.endToStart,
onDismissed: (direction) {
print("itemcount: ${widget.items.length}");
print("index is: $index");
setState((){_deleteItem(index);}); // <-- Add this line
},
confirmDismiss: _confirmDismiss,
);