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

Flutter命名路由中如何传递多个参数?

Flutter路由传参:同时传递多个数值类型参数的实现方法

方法一:使用Map传递参数(快速实现)

直接把需要传递的参数打包成Map,作为arguments传入:

修改Navigator调用代码:

Navigator.of(context).pushNamed(
  AppRoutes.digitalBusinessGuideInstructions,
  arguments: {
    'selectedAmount': selectedAmount,
    'selectedIndexes': selectedIndexes, // 按实际类型传入,比如int或List<int>
  },
);

修改路由处理代码:

case AppRoutes.digitalBusinessGuideInstructions:
  final params = settings.arguments as Map<String, dynamic>;
  final int selectedAmount = params['selectedAmount'] as int;
  // 若selectedIndexes是列表类型,改为List<int> selectedIndexes = params['selectedIndexes'] as List<int>
  final int selectedIndexes = params['selectedIndexes'] as int;
  return AppPageRoute(
    builder: (context) => DigitalBusinessGuideInstructions(
      selectedAmount: selectedAmount,
      selectedIndexes: selectedIndexes,
    ),
  );

方法二:使用自定义类封装参数(类型安全,推荐)

如果想避免Map类型转换的潜在风险,可定义专门的参数类实现类型安全传递:

1. 定义参数类:

class DigitalBusinessParams {
  final int selectedAmount;
  final int selectedIndexes; // 或List<int>,根据实际需求调整类型

  DigitalBusinessParams({
    required this.selectedAmount,
    required this.selectedIndexes,
  });
}

2. 修改Navigator调用代码:

Navigator.of(context).pushNamed(
  AppRoutes.digitalBusinessGuideInstructions,
  arguments: DigitalBusinessParams(
    selectedAmount: selectedAmount,
    selectedIndexes: selectedIndexes,
  ),
);

3. 修改路由处理代码:

case AppRoutes.digitalBusinessGuideInstructions:
  final params = settings.arguments as DigitalBusinessParams;
  return AppPageRoute(
    builder: (context) => DigitalBusinessGuideInstructions(
      selectedAmount: params.selectedAmount,
      selectedIndexes: params.selectedIndexes,
    ),
  );

注意:如果selectedIndexes是列表类型(如List<int>),只需将参数类和类型转换部分的类型对应修改即可,两种方法均适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:30:51