在 Flutter 中如何以及在何处调用 Dispose

问题描述

我正在阅读有关如何在颤振上使用 dispose 的内容,但我无法弄清楚。如果我在 Navigator.pushReplacementNamed 之后调用下面的 pagedispose 函数,我总是收到错误消息。如果我从另一个页面调用这个函数,我就会得到它不存在的错误等。

非常感谢您在转换到另一个 Flutter 页面时如何清除页面上所有正在运行的功能等方面的指导。

@override
void pagedispose(){   
    vtimer.cancel();   
    vcontroller.dispose();   
    super.dispose();   
 }

提前致谢。

解决方法

根据documentation

处理方法

当这个对象从树中永久移除时调用。

对于页面,当页面从导航堆栈中移除时调用 dispose 方法。 Here 很好地解释了 Navigation
当您的小部件(页面)扩展 StatefulWidget 时,这不是强制性的,但您可以覆盖 dispose 方法以根据您的需要执行其他指令。当页面从导航树中移除时会自动调用该方法。重写方法如下

@override
void dispose() {
  // your desired instructions here

  super.dispose(); // This will free the memory space allocated to the page
}

尽管如此,方法 void pagedispose() 不能被覆盖,因为它不是 StatefulWidget 的已知方法

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...