Dart ListView.builder未显示正确的列表

Dart ListView.builder未显示正确的列表,dart,flutter,Dart,Flutter,我创建了一个小应用程序来添加列表中的项目,但当我从列表中删除某些内容时,它会被成功删除,但ListView.builder不会显示正确的值。我知道这和给班级的钥匙有关,但我对颤振还很陌生,所以不知道怎么做 要点: 提前谢谢 将此添加到小部件的构造函数中: :super(key:new ObjectKey(_data)) 例如: class TodoTile extends StatefulWidget { String _data; int _index; ValueChanged

我创建了一个小应用程序来添加列表中的项目,但当我从列表中删除某些内容时,它会被成功删除,但ListView.builder不会显示正确的值。我知道这和给班级的钥匙有关,但我对颤振还很陌生,所以不知道怎么做

要点:


提前谢谢

将此添加到小部件的构造函数中:

:super(key:new ObjectKey(_data))
例如:

class TodoTile extends StatefulWidget {
  String _data;
  int _index;
  ValueChanged<int> onDelete;
  TodoTile(this._data,this._index,{ @required this.onDelete , Key key}):super(key:new ObjectKey(_data));
  TodoTileState createState() {return new TodoTileState(_data, _index,this.onDelete);}

}
类TodoTile扩展了StatefulWidget{
字符串数据;
int_指数;
删除更改的值;
TodoTile(this._data,this._index,{@required this.onDelete,Key}):super(Key:newobjectkey(_data));
TodoTileState createState(){返回新的TodoTileState(_数据,_索引,this.onDelete);}
}
不确定这是否也会导致问题,但我还将widget.onDelete更改为onDelete(也将函数指针传递到状态)

资料来源:

嗨,我也不太支持Flitter:)但是我把你的小部件改成了无状态,现在一切都很好,我认为这与状态不可变有关(不确定:p)现在我要试着把它弄得更糟一些:)我在github上为你发布了代码作为评论。如果没有键,当前构建中的第一个条目将始终与上一个构建中的第一个条目同步,即使从语义上讲,列表中的第一个条目刚刚从屏幕上滚下,在视口中不再可见。我想我找到了有用的东西:))