Flutter页面跳转后dispose调用报空指针问题咨询
解决调用null对象dispose方法的问题
错误的核心原因是:_bannerAd可能还未完成初始化(比如广告未加载就跳转页面),此时直接调用_bannerAd.dispose()就会触发null对象方法调用错误。
修改dispose方法,通过空安全判断避免调用null对象的方法:
@override void dispose() { // 仅当_bannerAd不为null时,才执行dispose操作 _bannerAd?.dispose(); super.dispose(); }
这里用到的?.是Dart的空安全操作符,它会先判断左侧对象是否非空,只有非空时才会执行右侧的方法,从根源上避免null错误。
另外补充一个页面跳转的优化建议:如果你的需求是刷新整个应用,建议使用完整的pushAndRemoveUntil写法,确保清除之前的路由栈,让旧页面能正常触发dispose:
Navigator.pushAndRemoveUntil( context, MaterialPageRoute(builder: (context) => SplashPage()), (Route<dynamic> route) => false, );
内容的提问来源于stack exchange,提问作者J L
相关产品推荐
相关产品推荐

