You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击AppBar返回按钮无法返回上一页,抛出MaterialPageRoute已释放异常

Flutter返回按钮失效及路由报错解决
  • 报错Cannot install a MaterialPageRoute<dynamic> after disposing it的核心原因是重复使用了已被销毁的路由实例。Flutter路由在被弹出(pop)后会自动触发dispose,如果后续代码尝试再次push这个已销毁的路由对象,就会抛出该异常。
  • 针对性解决方法:
    1. 不要复用路由实例:每次跳转时都创建新的MaterialPageRoute对象,示例代码:
      Navigator.push(
        context,
        MaterialPageRoute(builder: (context) => YourTargetPage()),
      );
      
      避免提前创建路由实例并缓存(比如存在全局变量、页面状态中),反复调用同一个实例会触发销毁后复用的问题。
    2. 检查自定义返回按钮逻辑:如果自定义了AppBar的返回按钮,确保点击逻辑是调用Navigator.pop(context),而不是尝试重新push旧路由。正确的自定义返回按钮示例:
      AppBar(
        leading: IconButton(
          icon: const Icon(Icons.arrow_back),
          onPressed: () => Navigator.pop(context),
        ),
      )
      
    3. 排查路由替换逻辑:如果使用了Navigator.pushReplacement等替换路由的方法,旧路由会被销毁,此时要确保没有代码还持有该旧路由的引用并尝试复用。

内容的提问来源于stack exchange,提问作者Usman Abubakar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:15:55