0

例如,我调用controller.dispose()when page dispose,我还必须调用controller.removeListener?

  TextEditingController _controller = TextEditingController();

  @override
  void initState() {
    super.initState();
    _controller.addListener(_listener);
  }

  void _listener() {
    print(_controller.text);
  }

  @override
  void dispose() {
    // _controller.removeListener(_listener); //It is a must?
    _controller.dispose();
    super.dispose();
  }

我看到ChangeNotify有关 dispose 的源代码

  @mustCallSuper
  void dispose() {
    assert(_debugAssertNotDisposed());
    _listeners = null;
  }

我认为是清除监听器,我不需要调用 removeListener 方法。但是有人告诉我我需要在 dispose 方法之前调用 reamoveListener 方法。我感到困惑,希望有人告诉我我是对还是错。提前致谢!

4

1 回答 1

0

刚打电话

_controller.dispose();

你不需要调用 _controller.removeListener(_listener);

于 2021-05-23T10:35:25.307 回答