在阅读 Flutter 文档时,我看到了这篇文章,其中显示了 how to handle changes to a text field 。我发现有趣的是,在这篇文章和所有其他关于 TextEditingController
的文章中, TextEditingController
总是在 有状态小部件 中使用,无论该小部件是否需要有状态。TextEditingController
总是与 Stateful 小部件一起使用的原因是什么?
最佳答案
长回答短
您需要在 TextEditingController
中处理您的 State.dispose
:
TextEditingController textEditingController;
@override
void dispose() {
textEditingController.dispose(); // You need to do this.
super.dispose();
}
解释
TextEditingController
是 ChangeNotifier
,因为 TextEditingController
继承自 ValueNotifier
并且 ValueNotifier
扩展 ChangeNotifier
。话虽如此,
TextEditingController
s 需要被 处理 为了不泄漏任何资源。任何时候你想要 处理 的东西,你都会想要使用
StatefulElement.unmount
。这是通过 State
和 StatefulWidget
公开的。有关如何实现这一点,请参见上文。理想情况下,您将在
initState
中设置您的 Controller :@override
void initState() {
super.initState();
textEditingController = ..;
}