在阅读Flutter文档时,我遇到了显示how to handle changes to a text field的这篇文章。我发现有趣的是,在与TextEditingController
相关的所有其他文章中,TextEditingController
始终用于有状态的小部件中,无论该小部件是否需要是有状态的。
TextEditingController
始终与有状态小部件一起使用的原因是什么?
答案 0 :(得分:5)
您需要在State.dispose
中处置您的TextEditingController
:
TextEditingController textEditingController;
@override
void dispose() {
textEditingController.dispose(); // You need to do this.
super.dispose();
}
TextEditingController
是ChangeNotifier
,因为TextEditingController
继承自ValueNotifier
,而ValueNotifier
扩展了ChangeNotifier
。
话虽如此,{<1}}必须处置,以免泄漏任何资源。
每当您要处置时,您都想使用StatefulElement.unmount
。这是通过State
和该StatefulWidget
公开的。有关如何实现的信息,请参见上文。
理想情况下,您将在TextEditingController
中设置控制器:
initState