在处理 flutter 之前删除 listerer

ebg*_*g11 4 flutter

如果我在 initState() 中初始化一个观察者,例如

textController.addListener(textTypedListener);
Run Code Online (Sandbox Code Playgroud)

在处理文本控制器之前,我是否需要手动删除侦听器?或者 dispose 会自动处理这个问题。

例如。选项 1

 @override
  void dispose() {
    textController.removeListener(textTypedListener);
    textController.dispose();
    super.dispose();
  }
Run Code Online (Sandbox Code Playgroud)

选项 2

 @override
  void dispose() {
    textController.dispose();
    super.dispose();
  }
Run Code Online (Sandbox Code Playgroud)

哪个最好?

非常感谢。

Md *_*har 6

根据Handle changes to a text field的 flutter 文档中给出的Interactive Example,有人评论说调用 dispose 也会删除 listener

所以第二种选择是最好的。

  • 好的谢谢。所有控制器都是这样吗?不仅仅是 TextEditingWidget。 (4认同)