createBody static method

dynamic createBody(
  1. Map<String, dynamic> headers,
  2. Map<String, dynamic>? params,
  3. String? body,
  4. BodyType? bodyType,
  5. bool encodeBodyUtf8,
)

Implementation

static dynamic createBody(
  Map<String, dynamic> headers,
  Map<String, dynamic>? params,
  String? body,
  BodyType? bodyType,
  bool encodeBodyUtf8,
) {
  String? contentType;
  dynamic postBody;
  switch (bodyType) {
    case BodyType.JSON:
      contentType = 'application/json';
      postBody = body ?? json.encode(params ?? {});
      break;
    case BodyType.TEXT:
      contentType = 'text/plain';
      postBody = body ?? json.encode(params ?? {});
      break;
    case BodyType.X_WWW_FORM_URL_ENCODED:
      contentType = 'application/x-www-form-urlencoded';
      postBody = toStringMap(params ?? {});
      break;
    case BodyType.MULTIPART:
      contentType = 'multipart/form-data';
      postBody = params;
      break;
    case BodyType.NONE:
    case null:
      break;
  }
  // Set "Content-Type" header if it was previously unset.
  if (contentType != null &&
      !headers.keys.any((h) => h.toLowerCase() == 'content-type')) {
    headers['Content-Type'] = contentType;
  }
  return encodeBodyUtf8 && postBody is String
      ? utf8.encode(postBody)
      : postBody;
}