exec method Null safety

Future<Map> exec(
  1. String method,
  2. String name,
  3. {dynamic fields = const {},
  4. dynamic objectId = '',
  5. dynamic queries = const {},
  6. dynamic path = '',
  7. dynamic multipart = false}
)

Implementation

Future<Map> exec(String method, String name,
    {fields = const {},
    objectId = '',
    queries = const {},
    path = '',
    multipart = false}) async {
  Signature s = new Signature(NCMBRequest.ncmb!);
  DateTime time = DateTime.now();
  final newFields = Map.from(fields)
    ..removeWhere((k, v) =>
        (k == 'objectId' || k == 'createDate' || k == 'updateDate'));
  String signature = s.generate(method, name, time,
      objectId: objectId, queries: queries, definePath: path);
  String url =
      s.url(name, objectId: objectId, queries: queries, definePath: path);
  Map<String, String> headers = {
    "X-NCMB-Application-Key": NCMBRequest.ncmb!.applicationKey!,
    "X-NCMB-Timestamp": time.toIso8601String(),
    "X-NCMB-Signature": signature
  };
  if (name == 'files') {
    headers.remove('Content-Type');
  }
  var sessionToken = NCMBRequest.ncmb!.sessionToken;
  if (sessionToken != null) {
    headers['X-NCMB-Apps-Session-Token'] = sessionToken;
  }
  try {
    var response = await req(url, method, newFields, headers,
        multipart: multipart, fileName: objectId);
    if (response.data is Uint8List) {
      return {"data": response.data};
    }
    if (method == 'DELETE') return {};
    return response.data;
  } on DioError catch (e) {
    throw Exception(e.response!.data);
  }
}