ListView如何保存项目数据?

时间:2019-05-26 16:32:43

标签: flutter

让我有一个StatefulWidget

ListView.builder(
  itemBuilder: (ctx, i) => TextField(),
  itemCount: _count,
)
里面。当我这样做

setState(() {
  _count += 1;
});

重建ListView,但是保留在文本字段中输入的所有数据。 Complete example

它如何工作?如何在自定义小部件中实现这种行为?

1 个答案:

答案 0 :(得分:1)

TextField为自己创建默认的TextEditingController(如果最初未为其分配控制器)。

此外,didUpdateWidget方法用于维护和更新TextField的{​​{1}}。重建时,State重用其先前的TextField中的值。

我认为这是您要查找的方法,因为只要父小部件重建并请求其子树呈现新状态,就会调用它。

例如,TextEditingController使用didUpdateWidget的方式:

TextField