我有一些有时会发生变化的简单对象的集合。我正在使用 ListView 来呈现这些对象,基本上是文本。当我的集合更改列表时,会使用新对象重建列表,因此如果列表从 1 个项目更改为 3 个项目,我会看到 3 个项目,但第一个项目保持其先前的值。
我注意到,当我创建一个新的 CustomTextField 时,并非在所有情况下都调用方法“createState”(在上面的示例中,只有在将新元素添加到列表时才会调用它)。
当我的收藏更改时,如何确保我的列表正确更新?
我的父小部件构建了一个文本字段列表:
...
@override
Widget build(BuildContext context) {
...
var list = <Widget>[];
collection.forEach((item) {
var widget = CustomTextField(
content: item,
);
list.add(widget);
...
return new ListView(
children: list,
);
});
...
Run Code Online (Sandbox Code Playgroud)
我的 CustomTextField 定义:
class CustomTextField extends StatefulWidget {
final MediaContent content;
CustomTextField({
Key key,
this.content,
}) : super(key: key);
@override
CustomTextFieldState createState() {
return CustomTextFieldState();
}
}
...
Run Code Online (Sandbox Code Playgroud)
MediaContent 是一个非常简单的对象,包含一些文本:
class MediaContent {
String textData;
ContentType type;
MediaContent(
this.type,
);
}
Run Code Online (Sandbox Code Playgroud)
Gui*_*tro 10
你必须为你的集合定义唯一的 Key,看看这里:https : //www.youtube.com/watch?v= kn0EOS-ZiIc
| 归档时间: |
|
| 查看次数: |
2016 次 |
| 最近记录: |