gpt4 book ai didi

dart - 创建新的 StatefulWidget 时并不总是调用 createState 方法

转载 作者:IT王子 更新时间:2023-10-29 06:38:23 24 4
gpt4 key购买 nike

我收集了一些有时会发生变化的简单对象。我正在使用 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,
);
}

最佳答案

你必须为你的集合 itens 定义唯一的键,看看这里: https://www.youtube.com/watch?v=kn0EOS-ZiIc

关于dart - 创建新的 StatefulWidget 时并不总是调用 createState 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53254525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com