让我有一个StatefulWidget
ListView.builder(
itemBuilder: (ctx, i) => TextField(),
itemCount: _count,
)
里面。当我这样做
setState(() {
_count += 1;
});
重建ListView,但是保留在文本字段中输入的所有数据。 Complete example
它如何工作?如何在自定义小部件中实现这种行为?
答案 0 :(得分:1)
TextField
为自己创建默认的TextEditingController
(如果最初未为其分配控制器)。
此外,didUpdateWidget
方法用于维护和更新TextField
的{{1}}。重建时,State
重用其先前的TextField
中的值。
我认为这是您要查找的方法,因为只要父小部件重建并请求其子树呈现新状态,就会调用它。
例如,TextEditingController
使用didUpdateWidget
的方式:
TextField