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

Flutter中如何通过MultipartRequest发送数组?

在Flutter的MultipartRequest中发送数组参数

我懂你现在的困扰——Postman里传数组参数很直观,但Flutter的MultipartRequest默认的fields是键值对结构,直接把数组赋值给单个键肯定行不通。别担心,这里有两种适配不同后端的解决方案,帮你搞定这个问题:

方法1:使用key[]格式添加数组项(通用型)

绝大多数后端框架(比如Laravel、Django)都支持这种格式,你只需要把数组里的每个元素单独添加到fields中,键名统一用unit_id[]即可:

var uri = Uri.parse(Constants.BASEURL + Constants.KEYEORD_CREATE_TENANACY);
Map<String, String> headers = { "Accept": "application/json", "Authorization": token };
var request = new http.MultipartRequest("POST", uri);
request.headers.addAll(headers);
request.fields['property_usage'] = property_use;

// 假设unitlist是List<String>类型的数组
for (String unitId in unitlist) {
  request.fields['unit_id[]'] = unitId;
}

var response = await request.send();
print("Tenancy Add Result: ${response.statusCode}");
if (response.statusCode == 200) {
  print(response);
}

方法2:使用带索引的键名(适配特定后端)

如果你的后端要求数组参数带明确索引(比如unit_id[0]、unit_id[1]),可以改成带索引的键名来添加:

// 替换上述代码中的循环部分
for (int i = 0; i < unitlist.length; i++) {
  request.fields['unit_id[$i]'] = unitlist[i];
}

小提醒

  • 可以先在Postman里查看成功请求的Form Data结构,再对应复刻到Flutter代码中,确保和后端要求的格式一致。
  • 如果unitlist里的元素不是字符串类型,记得先转成字符串(比如unitId.toString())再添加到fields中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:47:30