uploadFilesMutilImage method

Future<APIResponse> uploadFilesMutilImage(
  1. String? url,
  2. Map<String, dynamic>? bodyMap,
  3. Map<String, String>? headers,
  4. List<MutilFiles>? mapping,
)

Implementation

Future<APIResponse<dynamic>> uploadFilesMutilImage(
  String? url,
  Map<String, dynamic>? bodyMap,
  Map<String, String>? headers,
  List<MutilFiles>? mapping,
) async {
  final isInterNet = await check();
  if (!isInterNet) {
    return APIResponse<dynamic>(
        code: "-111", message: "Bạn đang không bật mạng", value: null);
  } else {
    var uri = Uri.parse(url ?? "");
    var request = http.MultipartRequest(
      "POST",
      uri,
    );
    if (headers != null) {
      request.headers.addAll(headers);
    }
    if (bodyMap != null) {
      var keys = bodyMap.keys;
      for (var i = 0; i < bodyMap.length; i++) {
        var key = keys.elementAt(i);
        request.fields[key] = bodyMap[key]!;
      }
    }

    if (mapping != null) {
      for (var key in mapping) {
        for (var image in key.files) {
          var multFile = await http.MultipartFile.fromPath(key.key, image,
              filename: "${key.key}.jpg",
              contentType: MediaType.parse("image/jpg"));
          request.files.add(multFile);
        }
      }
    }

    var response = await request.send();
    var responseData = await response.stream.toBytes();
    var responseString = String.fromCharCodes(responseData);
    //Get the response from the server
    var jsonBody = jsonDecode(responseString);
    var code = jsonBody['code'];
    var message = jsonBody['message'];
    var jsonData = jsonBody['data'];
    if (code != null) {
      return APIResponse<dynamic>(
          value: jsonData, code: code, message: message);
    } else {
      return APIResponse<String>(value: null, code: code, message: message);
    }
  }
}