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

Flutter按钮点击不跳转,触发Unexpected null value异常

Flutter点击按钮跳转报错Unexpected null value的解决方法

从堆栈信息可以看出,异常出现在Navigator.of(context)调用时,因找不到有效的NavigatorState导致空值异常,进而无法执行页面跳转。

常见原因及解决办法:

  • 根组件未包含导航容器
    页面根组件必须是MaterialApp或CupertinoApp(它们内部默认集成了Navigator),如果直接返回Scaffold或其他组件,Navigator.of(context)会找不到导航状态。
    错误示例:

    void main() => runApp(Scaffold(body: MyButton()));
    

    正确示例:

    void main() => runApp(MaterialApp(home: Scaffold(body: MyButton())));
    
  • Context无法访问导航器
    若按钮所在widget是独立封装的,且其context不在MaterialApp子树中,可通过以下方式解决:

    1. 使用GlobalKey获取导航状态:
      final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
      
      void main() => runApp(MaterialApp(navigatorKey: navigatorKey, home: MyHomePage()));
      
      // 按钮点击时调用
      navigatorKey.currentState?.push(MaterialPageRoute(builder: (context) => NextPage()));
      
    2. 强制获取根导航器:
      Navigator.of(context, rootNavigator: true).push(MaterialPageRoute(builder: (context) => NextPage()));
      
  • 检查widget层级
    确认按钮所在widget未被脱离导航树的组件(如Dialog、OverlayEntry)包裹,这类组件需要显式指定导航器上下文。

内容的提问来源于stack exchange,提问作者muhammed nihal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:24:23