在flutter http.get GET请求中将参数作为Map传递

问题描述

有什么方法可以方便地将两个参数/查询作为 Map 本身连同标头一起传递到 Flutter.get 请求中。截至目前,我正在使用 http 包,并且只能使用 url 字符串操作来完成,如下所示:

var headers={
    'accept': 'application/json','Accept-Language': 'en_US','user-agent': 'Mozilla/5....'
    };
final response = await http.get(Uri.parse(url+'?district_id=$district_id'+'&date=$date'),headers:headers);

http.get 只接受 url 和 headers,不像在 python get 中有效载荷字典可以用作参数。 我想简单地实现它,例如:

final response = await http.get(Uri.parse(url),params:params,headers:headers);

或任何其他没有字符串操作的方法

更新: 我尝试使用 Uri 构造函数。但它抛出错误。我需要通过的地图是

{'district_id':298,'date':'10-06-2021'}; \\has int and String as values.

错误

“int”类型不是“Iterable”类型的子类型

到目前为止,我只能通过将 int 298 更改为 String '298' 来使其工作。

解决方法

您可以使用 dio.request,它接受​​一个名为 Map<String,dynamic>queryParameters 对象。

dio.request(path,options: Options(method: 'GET',headers: headers),queryParameters: {'district_id': districtId},)