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

Flutter/Dart中GoRoute是否有更简洁的可选路由传递方式?

更简洁的GoRoute实现方案

当然可以合并成单个GoRoute,利用可选路由参数来实现,无需定义两个路由条目。具体实现如下:

GoRoute(
  path: 'results/:levelUp?', // 问号标记参数为可选
  pageBuilder: (context, state) {
    final data = Provider.of<ResultsRouteData>(context);
    // 若levelUp参数存在则设为true,否则为false
    final levelUp = state.pathParameters.containsKey('levelUp');
    return SessionResultsScreen(data: data, levelUp: levelUp);
  },
),

补充说明:

  • 路由路径中给参数名添加?,即可标记该参数为可选,这样/results和/results/xxx(任意值)都会匹配这个路由
  • 如果你需要严格匹配参数值(比如仅当参数为true时才启用levelUp),可以调整判断逻辑:
    final levelUp = state.pathParameters['levelUp'] == 'true';
    
    这样只有访问/results/true时levelUp才为true,其他情况(包括/results或/results/其他值)都为false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:49:51