我收集了一些有时会更改的简单目标。我正在使用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,
);
});
...
我的CustomTextField定义:
class CustomTextField extends StatefulWidget {
final MediaContent content;
CustomTextField({
Key key,
this.content,
}) : super(key: key);
@override
CustomTextFieldState createState() {
return CustomTextFieldState();
}
}
...
MediaContent是一个非常简单的对象,其中包含一些文本:
class MediaContent {
String textData;
ContentType type;
MediaContent(
this.type,
);
}