uploadImage method

Future<APIResponse<String>> uploadImage(
  1. String url,
  2. Map<String, String> bodyMap,
  3. Map<String, String> headers,
  4. File imageFile,
  5. String fileName,
)

Implementation

Future<APIResponse<String>> uploadImage(
    String url,
    Map<String, String> bodyMap,
    Map<String, String> headers,
    File imageFile,
    String fileName) async {
  var uri = Uri.parse(url);
  var request = http.MultipartRequest(
    "POST",
    uri,
  );
  request.headers.addAll(headers);

  var keys = bodyMap.keys;
  for (var i = 0; i < bodyMap.length; i++) {
    var key = keys.elementAt(i);
    request.fields[key] = bodyMap[key]!;
  }

  var multFile = await http.MultipartFile.fromPath("image", imageFile.path);
  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'];

  if (response.statusCode == 201) {
    // If the call to the server was successful, parse the JSON
    // var jsonData = jsonBody['data'];
    var imageID = fileName;
    return APIResponse<String>(value: imageID, code: code, message: message);
  } else {
    return APIResponse<String>(value: null, code: code, message: message);
  }
}