首页 > 解决方案 > 在颤振 http.get GET 请求中将参数作为 Map 传递

问题描述

有什么方法可以方便地将参数/查询作为 Map<String,Dynamic> 本身以及标头传递到颤动的 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 中,payload 字典可以用作参数。我想简单地实现它,例如:

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' 来使其工作

标签: flutterdartgethttp-parameters

解决方案


您可以使用dio.requestwhich 接受一个Map<String, dynamic>名为queryParameters.

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

推荐阅读