Flutter中使用GetX捕获路由参数失败,请求技术协助
问题解决:Flutter GetX路由参数无法传递的问题
你的问题出在路由参数拼接的语法错误,生成的URL里参数键变成了pageId?,而非预期的pageId,导致Get.parameters['pageId']取不到值,进而int.parse(pageId!)报错。
具体修正步骤:
修复路由参数拼接
把getPopularFood方法里的参数拼接代码,去掉多余的问号:static String getPopularFood(int pageId) => '$popularFood?pageId=$pageId';之前的
pageId?=是错误格式,URL参数的正确格式是?key=value,多余的问号会让参数键变成pageId?,GetX自然找不到pageId这个键。增加空值安全处理(可选但推荐)
为了避免参数为空时崩溃,不要直接用!强制非空,改用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
相关产品推荐
相关产品推荐

