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

Flutter使用GetX跨页面传参时Get.arguments始终为null如何解决

GetX 跨页面传参接收值恒为null解决方案

核心问题排查顺序(按踩坑概率从高到低)

  • 参数获取时机错误(90%新手踩坑)
    不要在页面类的成员变量声明位置、build方法外部、组件初始化构造函数执行阶段直接调用Get.arguments。此时新页面的路由上下文还未注入GetX路由栈,读取到的参数必然是null。
    正确的参数读取位置:
    1. 直接在build方法内部第一行读取
    2. 如果用了GetX控制器,在控制器的onInit生命周期里读取
      对应你写的接收页代码,修正后参考:
    class Pro extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        // 必须放在build方法内,路由挂载完成后才能拿到有效参数
        var data = Get.arguments;
        return Scaffold(
          body: Column(
            children: [
              TextButton(
                  child: Text("Move Back"),
                  onPressed: () {
                    Get.back();
                  }),
              Text(data.toString()),
            ],
          ),
        );
      }
    }
    
  • 检查根组件配置
    如果你应用的根组件用的是原生MaterialApp而不是GetMaterialApp,GetX的整套路由逻辑都不会生效,不仅传参为null,Get.to/Get.back这类方法也会出现上下文找不到的问题。根组件必须按如下方式配置:
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        // 必须用GetMaterialApp替换原生MaterialApp
        return GetMaterialApp(
          home: HomePage(),
        );
      }
    }
    
  • 检查是否混用路由方法
    跳转的时候必须统一使用Get.to/Get.off/Get.toNamed这类GetX提供的路由方法,如果你混用了Flutter原生的Navigator.push跳转,GetX无法捕获原生路由传递的参数,读取Get.arguments就会是null。

额外小提示:你跳转代码里传的字符串'somethng'存在拼写错误(正确拼写是something),这个问题不会影响参数传递,只是代码规范问题,可自行修正。


内容的提问来源于stack exchange,提问作者flutter app

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:39:16