Flutter Uri.https 没有给出任何错误

问题描述 投票:0回答:1

我的问题没什么好说的。

代码是:

Future<bool> getThatUrl(cid) async { //cid = 0, for example
  Map<String, dynamic> parameters = Map();
  String email = '[email protected]';
  parameters['email'] = email;
  parameters['problematic_id'] = cid;
  print(parameters); // prints: {email: [email protected], problematic_id: 0}
  var uri = Uri.https('mywebpage.com', '/page.php', parameters);
  print(uri); // prints: 
}

问题是,

uri
(未生成?并且)不会打印,除非我删除
parameters['problematic_id'] = 0
。如果我删除它,那么它会打印
https://mywebpage.com/page.php?email=anymail%40anymail.com
,这是正确的,但我也需要
problematic_id=0

我尝试只使用一个参数,但如果是

parameters['problematic_id'] = 0
那么它仍然不起作用。

flutter dart uri
1个回答
0
投票

我不确定这是否是

_Uri._makeQueryFromParameters
内部实现中的错误或预期行为。

我可以看到,在内部实现中,

value
的每个
queryParameters
应该是
Iterable
String
,并且您正在传递
int
(cid = 0)。

由于

queryParameters
无论如何都被视为
String
,因此您不必担心这里的类型。因此,最好只调用
toString()
或将
cid
转换为字符串来解决此问题。

这是解决方案代码:

Uri getUri(String email, int cid) {
  Map<String, dynamic> parameters = {
    'email': email,
    'problematic_id': "$cid"
  };
  print(parameters);
  var uri = Uri.https('mywebpage.com', '/page.php', parameters);
  print(uri);
  return uri;
}

void main() {
  final cid = 0;
  final email = '[email protected]';

  getUri(email, cid);
}

这里第 4 行,“$cid”会将 cid 转换为字符串,从而解决问题。

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.