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

Flutter函数中能否混合必选命名参数与带默认值的可选参数?

Dart函数参数混合使用的语法规则解答

Dart的函数参数定义有严格的顺序要求:位置参数(包括带默认值的可选位置参数)必须放在命名参数(包括必选命名参数)之前,你原来的代码把命名参数放在了位置参数前面,违反了语法规则,所以无法运行。

正确写法一:调整参数顺序

将可选位置参数移到前面,必选命名参数放在后面:

Future<void> getNationalRanking([String countryCode = "FR"], {required String connectedUserId}) async {
  // 业务逻辑实现
}

调用示例:

  • 仅传入必选命名参数:
    await getNationalRanking(connectedUserId: "user_123");
    
  • 同时传入位置参数和命名参数:
    await getNationalRanking("US", connectedUserId: "user_123");
    

正确写法二:统一使用命名参数(更推荐)

如果希望参数调用更清晰,也可以将可选位置参数改为带默认值的命名参数,这样所有参数都通过命名方式传递:

Future<void> getNationalRanking({required String connectedUserId, String countryCode = "FR"}) async {
  // 业务逻辑实现
}

调用示例:

  • 使用默认值调用:
    await getNationalRanking(connectedUserId: "user_123");
    
  • 指定自定义参数值调用:
    await getNationalRanking(connectedUserId: "user_123", countryCode: "US");
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:31:02