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子树中,可通过以下方式解决:- 使用
GlobalKey获取导航状态:final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>(); void main() => runApp(MaterialApp(navigatorKey: navigatorKey, home: MyHomePage())); // 按钮点击时调用 navigatorKey.currentState?.push(MaterialPageRoute(builder: (context) => NextPage())); - 强制获取根导航器:
Navigator.of(context, rootNavigator: true).push(MaterialPageRoute(builder: (context) => NextPage()));
- 使用
检查widget层级
确认按钮所在widget未被脱离导航树的组件(如Dialog、OverlayEntry)包裹,这类组件需要显式指定导航器上下文。
内容的提问来源于stack exchange,提问作者muhammed nihal
相关产品推荐
相关产品推荐

