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

如何在Dio库中通过表单体批量发送订单列表数据?

解决Flutter中用Dio批量发送列表数据的问题

你的代码目前存在两个核心问题:直接访问ModelOrder类的静态属性(而非列表中每个实例的属性),以及未处理列表批量传递的逻辑。以下是修改后的实现方案:

修改后的完整代码

// 建议复用Dio实例,避免每次请求新建
final dio = Dio();

Future<void> setData(List<ModelOrder> orders) async {
  try {
    // 将列表中每个订单对象转为Map,再封装成数组传入FormData
    var formData = FormData.fromMap({
      'orders': orders.map((order) => {
            'UserId': order.userId,
            'ProductId': order.productId,
            'quantity': order.quantity,
            'productPrice': order.price,
            'paymentMethod': order.paymentMethod,
          }).toList(),
    });

    const url = "example.com/api";
    final response = await dio.post(url, data: formData);

    if (response.data == "success") {
      print("批量订单插入成功");
    } else {
      print("批量订单插入失败");
    }
  } catch (e) {
    print("请求异常: ${e.toString()}");
  }
}

关键修改说明

  • 修正参数调用逻辑:给列表参数命名为orders,遍历列表中的每个ModelOrder实例获取属性,替换原代码中直接访问类静态属性的错误写法
  • 实现批量数据封装:通过map将每个订单对象转为Map结构,再用toList()转为数组,作为FormData的一个字段传递(字段名orders需根据后端接口要求调整)
  • 优化Dio实例管理:提前创建Dio实例复用,避免每次请求初始化新实例,提升请求性能

额外注意

如果后端接口要求的参数格式是orders[0][UserId]这类表单数组格式,Dio的FormData会自动完成编码转换,无需额外修改代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:05:25