Flutter/Dart URI 没有转义参数中的冒号或斜杠 "https://"

Flutter/Dart Uri not escaping colon or slash "https://" in params

有没有办法在参数中转义冒号和正斜杠?

Uri.https('example.com', '/api', {
          'response_type': 'code',
          'client_id': 'id',
          'redirect_uri': 'https://www.google.com',
        })

上面变成这样:https%3A%2F%2Fwww.google.com

编码不起作用

final redirect = Uri.encodeFull('https://www.google.com');
final uri = Uri.https('example.com', '/api', {'redirect_uri': redirect});

print(redirect); // https://www.google.com
print(uri.query); // redirect_uri=https%3A%2F%2Fwww.google.com

您提供给该函数的任何内容都是经过 urlencode 编码的,因为 HTTP. 在您的场景中使用它之前,您似乎需要对其进行 urldecode。这应该有助于

解码 URLEncoded 字符串的方法如下

print(Uri.decodeFull(uri.query));