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

Flutter中Uri.https含值为0的参数时无法生成并打印URI问题

解决Flutter中Uri.https包含数字0参数时生成失败的问题

问题分析

你的代码里参数problematic_id的值是数字类型的0,而Uri.https的第三个参数要求传入Map<String, String>类型(即便你声明为Map<String, dynamic>,底层处理时会直接过滤非字符串值)。当参数值为非字符串类型的0时,会被Uri构造器忽略,进而导致Uri生成异常。

修复代码

将数字类型的参数值转为字符串即可解决问题:

Future<bool> getThatUrl(cid) async { //cid = 0, for example
  Map<String, String> parameters = {}; // 直接声明为String类型Map更规范
  String email = 'anymail@anymail.com';
  parameters['email'] = email;
  parameters['problematic_id'] = cid.toString(); // 转为字符串类型
  print(parameters); // prints: {email: anymail@anymail.com, problematic_id: 0}
  var uri = Uri.https('mywebpage.com', '/page.php', parameters);
  print(uri); // 正常输出: https://mywebpage.com/page.php?email=anymail%40anymail.com&problematic_id=0
}

补充说明

  • 若你坚持使用Map<String, dynamic>,只要确保所有参数值为字符串类型也可行,比如用parameters['problematic_id'] = '$cid';的方式转换
  • Dart的Uri构造器对query参数类型有严格限制,仅字符串值会被正确解析并添加到Uri的query部分,非字符串值会被直接忽略,这也是单独传入problematic_id=0无法正常工作的原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:54:56