为什么 TextEditingController 总是在 Stateful 小部件中使用?

alb*_*ech 4 dart flutter flutter-layout

在阅读 Flutter 文档时,我看到了这篇文章,它展示了如何处理对文本字段的更改。我发现有趣的是,在这篇文章和所有其他关于TextEditingController的文章中,无论该小部件是否需要有状态,TextEditingController总是在有状态小部件中使用。

TextEditingController总是与 Stateful 小部件一起使用的原因是什么?

cre*_*not 7

长回答短

您需要处理您的TextEditingControllerin State.dispose

TextEditingController textEditingController;

@override
void dispose() {
  textEditingController.dispose(); // You need to do this.

  super.dispose();
}
Run Code Online (Sandbox Code Playgroud)

解释

TextEditingControllerChangeNotifier作为TextEditingController从继承ValueNotifierValueNotifier延伸ChangeNotifier

话虽如此,为了不泄漏任何资源,TextEditingController需要对 s 进行处理
任何时候你想要处理一些东西,你都会想要使用StatefulElement.unmount. 这是通过State和公开的StatefulWidget。有关如何实现这一点,请参见上文。


理想情况下,您将在initState以下位置设置控制器:

@override
void initState() {
  super.initState();

  textEditingController = ..;
}
Run Code Online (Sandbox Code Playgroud)