在阅读 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 = ..;
}

10-08 16:35