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

Flutter中使用GetX捕获路由参数失败,请求技术协助

问题解决:Flutter GetX路由参数无法传递的问题

你的问题出在路由参数拼接的语法错误,生成的URL里参数键变成了pageId?,而非预期的pageId,导致Get.parameters['pageId']取不到值,进而int.parse(pageId!)报错。

具体修正步骤:

  1. 修复路由参数拼接
    把getPopularFood方法里的参数拼接代码,去掉多余的问号:

    static String getPopularFood(int pageId) => '$popularFood?pageId=$pageId';
    

    之前的pageId?=是错误格式,URL参数的正确格式是?key=value,多余的问号会让参数键变成pageId?,GetX自然找不到pageId这个键。

  2. 增加空值安全处理(可选但推荐)
    为了避免参数为空时崩溃,不要直接用!强制非空,改用int.tryParse或者设置默认值:

    page: () {
      var pageId = Get.parameters['pageId'];
      // 用tryParse处理空值或非数字的情况
      return PopularFoodPage(pageId: int.tryParse(pageId ?? '') ?? 0);
    },
    

修正后的完整代码:

import 'package:flutter_application_shop/pages/home/food/popular_food.dart';
import 'package:flutter_application_shop/pages/home/main_food_page.dart';
import 'package:get/get.dart';


class RouteHelper {
  static const String popularFood = "/popular-food";

  // 修复参数拼接的问号问题
  static String getPopularFood(int pageId) => '$popularFood?pageId=$pageId';

  static List<GetPage> routes = [
    GetPage(
        name: popularFood,
        page: () {
          var pageId = Get.parameters['pageId'];
          // 安全解析参数,避免空值崩溃
          return PopularFoodPage(pageId: int.tryParse(pageId ?? '') ?? 0);
        },
        transition: Transition.circularReveal),
  ];
}

这样修改后,生成的路由会是正确的/popular-food?pageId=1,参数能正常传递到目标页面,同时也避免了空值强制解析的崩溃风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:27:38