upload method Null safety

Future<String?> upload(
  1. String path,
  2. Map<String, String> fields,
  3. Uint8List obj
)

Implementation

Future<String?> upload(
    String path, Map<String, String> fields, Uint8List obj) async {
  if (path.startsWith('/')) path = path.replaceFirst('/', '');
  http.MultipartRequest request = http.MultipartRequest('POST', _uploadUri);
  request.fields.addAll(fields);
  request.fields["content-md5"] = base64.encode(MD5Digest().process(obj));
  request.fields['key'] = path;
  request.files.add(http.MultipartFile.fromBytes('file', obj));
  http.StreamedResponse rsp = await request.send();
  if (rsp.statusCode == 204) {
    return rsp.headers['x-amz-version-id'];
  } else {
    String body = await rsp.stream.bytesToString();
    if (body.contains('Policy expired')) {
      throw WasabiExceptionExpired(body);
    } else {
      throw HttpException('HTTP Error ${rsp.statusCode}: $body');
    }
  }
}