为什么在状态小部件中始终使用TextEditingController?

时间:2020-01-08 19:29:29

标签: flutter dart flutter-layout

在阅读Flutter文档时,我遇到了显示how to handle changes to a text field的这篇文章。我发现有趣的是,在与TextEditingController相关的所有其他文章中,TextEditingController始终用于有状态的小部件中,无论该小部件是否需要是有状态的。

TextEditingController始终与有状态小部件一起使用的原因是什么?

1 个答案:

答案 0 :(得分:5)

答案很简短

您需要在State.dispose处置您的TextEditingController

TextEditingController textEditingController;

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

  super.dispose();
}

说明

TextEditingControllerChangeNotifier,因为TextEditingController继承自ValueNotifier,而ValueNotifier扩展了ChangeNotifier

话虽如此,{<1}}必须处置,以免泄漏任何资源。
每当您要处置时,您都想使用StatefulElement.unmount。这是通过State和该StatefulWidget公开的。有关如何实现的信息,请参见上文。


理想情况下,您将在TextEditingController中设置控制器:

initState