【问题标题】:ListView.builder not showing correct listListView.builder 没有显示正确的列表
【发布时间】:2018-10-29 14:32:29
【问题描述】:

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

要点:https://gist.github.com/OculusMode/213052325ec725aad3ab92c73599b187

提前致谢!

【问题讨论】:

  • 嗨,我也不是真正的 Flutter 专业人士 :) 但我将您的 Widget 更改为无状态,现在一切正常,我认为这与状态不可变有关(虽然不确定:P ) 现在要尝试再搞砸一点 :) 我将代码作为评论发布在 github 上。
  • flutter.io/widgets-intro/#keys 如果没有键,当前构建中的第一个条目将始终与前一个构建中的第一个条目同步,即使从语义上讲,列表中的第一个条目刚刚滚动到屏幕之外并且是在视口中不再可见。我想我发现某事有用:))

标签: dart flutter


【解决方案1】:

将此添加到您的 Widget 的构造函数中:

: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);}

}

不确定这是否也会导致问题,但我也将 widget.onDelete 更改为 onDelete(也将函数指针传递给状态)

来源: https://flutter.io/widgets-intro/#keys

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多