super.dispose() 在controller.dispose()之前还是之后?

fac*_*cio 3 dart flutter bloc

我正在使用 PageController,在最后一页之后我想更改视图,所以我应该处置控制器。如果我在 super.dispose() 之前调用controller.dispose(),我会收到此错误:

_IntroViewState failed to call super.dispose()
Run Code Online (Sandbox Code Playgroud)

如果我在 super.dispose() 之后调用controller.dispose(),则不会引发异常。哪个是正确的方法?代码在这里: https: //pastebin.com/PK1SWnsm

小智 7

方法.dispose()是当我们想要结束某些东西的使用时使用的回调。

如果我们在我们的方法中创建一个流initState,我们需要在完成后立即在 dispose 函数中处理它。如果不这样做,我们将使用不必要的资源,例如我们不需要的内存和存储,因为我们没有使用该流。我们的应用程序中可能存在内存泄漏,这会对用户体验产生负面影响。

super.dispose()处置父类,即公共类IntroView。控制器是类中的一个对象。因此,在处置该小部件之前,我们需要处置该小部件中的所有内容。

因此,要回答您的问题,请执行controller.dispose(),然后执行super.dispose()

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