问题描述
颤动
后退按钮是否与 dispose()
方法相同?
我知道没有太多相似之处,但我的意思是,当您按下后退按钮时,是否会从我们离开的页面树中释放内存?
解决方法
不,如果您在 statefulwidget 屏幕中有控制器,当 state 对象被移除时,后退按钮不会取代 dispose 功能,您需要处理它以避免内存泄漏。
flutterdartmethodscallbackdispose
,考虑到您在谈论框架的 BackButton
小部件,那么最终,为什么?
因为框架的后退按钮只是使用 IconButton
创建您自己的小部件的抽象,该小部件在按下时调用 Navigator.maybePop(context);
。
回答您的问题:是的,如果页面在按下 BackButton
时关闭,则是它会释放资源(如果您的小部件是有状态小部件,它将调用 dispose()
)。>
请记住,您仍然需要覆盖 dispose() 方法并释放任何资源(如果有),以便在按下后退按钮时释放这些资源。
总结::: BackButton
只需调用 Navigator.maybePop(context);
,它只会在您覆盖它并调用 some_class.dispose()
时释放 StatefulWidget 的资源。