flutter有些情况下调用context中属性或方法时报错如下:

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: Looking up a deactivated widget's ancestor is unsafe.
    At this point the state of the widget's element tree is no longer stable.
    To safely refer to a widget's ancestor in its dispose() method, save a reference to the ancestor by calling dependOnInheritedWidgetOfExactType() in the widget's didChangeDependencies() method.

上面说的意思是不是安全的引用小部件,就是已经销毁的界面然后重复销毁,会爆上面错误。

解决办法:只需在报错代码行外层加个判断,关键代码如下所示:

当mounted为true时才可以调用context的属性或方法
if (context.mounted) {
   // 报错的代码
}


 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐