searchResponse function Null safety

Future<Response> searchResponse(
  1. {String? query,
  2. int? limit,
  3. int? offset,
  4. List<String>? authors,
  5. List<String>? artists,
  6. int? year,
  7. List<String>? includedTags,
  8. TagsMode? includedTagsMode,
  9. List<String>? excludedTags,
  10. TagsMode? excludedTagsMode,
  11. List<MangaStatus>? status,
  12. List<LanguageCodes>? originalLanguage,
  13. List<LanguageCodes>? excludedOriginalLanguages,
  14. List<LanguageCodes>? availableTranslatedLanguage,
  15. List<PublicDemographic>? publicationDemographic,
  16. List<String>? ids,
  17. List<ContentRating>? contentRating,
  18. String? createdAtSince,
  19. String? updatedAtSince,
  20. List<String>? includes,
  21. String? group,
  22. Map<String, dynamic>? order}
)

Implementation

Future<http.Response> searchResponse({
  String? query,
  int? limit,
  int? offset,
  List<String>? authors,
  List<String>? artists,
  int? year,
  List<String>? includedTags,
  TagsMode? includedTagsMode,
  List<String>? excludedTags,
  TagsMode? excludedTagsMode,
  List<MangaStatus>? status,
  List<LanguageCodes>? originalLanguage,
  List<LanguageCodes>? excludedOriginalLanguages,
  List<LanguageCodes>? availableTranslatedLanguage,
  List<PublicDemographic>? publicationDemographic,
  List<String>? ids,
  List<ContentRating>? contentRating,
  String? createdAtSince,
  String? updatedAtSince,
  List<String>? includes,
  String? group,
  Map<String, dynamic>? order,
}) async {
  var unencodedPath = '/manga';
  var Title = query != null ? '&title=$query' : '';
  var Authors = '';
  if (authors != null) {
    authors.forEach((element) {
      Authors = Authors + '&authors[]=$element';
    });
  }
  var Limit = limit != null ? '&limit=$limit' : '';
  var Offset = offset != null ? '&offset=$offset' : '';
  var Artists = '';
  if (artists != null) {
    artists.forEach((element) {
      Artists = Artists + '&artists[]=$element';
    });
  }
  var Year = year != null ? '&year=$year' : '';
  var IncludedTags = '';
  if (includedTags != null) {
    includedTags.forEach((element) {
      IncludedTags = IncludedTags + '&includedTages[]=$element';
    });
  }
  var PublicationDemographic = '';
  if (publicationDemographic != null) {
    publicationDemographic.forEach((element) {
      PublicationDemographic = PublicationDemographic +
          '&publicationDemographic[]=${EnumUtils.parsePublicDemographicFromEnum(element)}';
    });
  }
  var IncludedTagsMode = '';
  if (includedTagsMode != null) {
    IncludedTagsMode = EnumUtils.parseTagModeFromEnum(includedTagsMode);
  }
  var ExcludedTags = '';
  if (excludedTags != null) {
    excludedTags.forEach((element) {
      ExcludedTags = ExcludedTags + '&excludedTags[]=$element';
    });
  }
  var ExcludedTagsMode = '';
  if (excludedTagsMode != null) {
    ExcludedTagsMode = EnumUtils.parseTagModeFromEnum(excludedTagsMode);
  }
  var Status = '';
  if (status != null) {
    status.forEach((element) {
      Status =
          Status + '&status[]=${EnumUtils.parseMangaStatusFromEnum(element)}';
    });
  }

  var OriginalLanguage = '';
  if (originalLanguage != null) {
    originalLanguage.forEach((element) {
      OriginalLanguage = OriginalLanguage +
          '&originalLanguage[]=${EnumUtils.parseLanguageCodeFromEnum(element)}';
    });
  }
  var ExcludedOriginalLanguage = '';
  if (excludedOriginalLanguages != null) {
    excludedOriginalLanguages.forEach((element) {
      ExcludedOriginalLanguage = ExcludedOriginalLanguage +
          '&excludedOriginalLanguage[]=${EnumUtils.parseLanguageCodeFromEnum(element)}';
    });
  }
  var AvailableTranslatedLanguage = '';
  if (availableTranslatedLanguage != null) {
    availableTranslatedLanguage.forEach((element) {
      AvailableTranslatedLanguage = AvailableTranslatedLanguage +
          '&availableTranslatedLanguage[]=${EnumUtils.parseLanguageCodeFromEnum(element)}';
    });
  }

  var Ids = '';
  if (ids != null) {
    ids.forEach((element) {
      Ids = Ids + '&ids[]=$element';
    });
  }
  var contentrating = '';
  if (contentRating != null) {
    contentRating.forEach((element) {
      contentrating = contentrating +
          '&contentRating[]=${EnumUtils.parseContentRatingFromEnum(element)}';
    });
  }
  var Includes = '';
  if (includes != null) {
    includes.forEach((element) {
      Includes = Includes + '&included[]=$element';
    });
  }
  var CreatedAtSince =
      createdAtSince != null ? '&createdAtSince=$createdAtSince' : '';
  var UpdatedAtSince =
      updatedAtSince != null ? '&updatedAtSince=$updatedAtSince' : '';
  var Group = group != null ? '&group=$group' : '';
  var Order = order != null
      ? '&order[${order.entries.first}]=${order[order.entries.first]}'
      : '&order[recentlyUpdated]=desc';
  final url =
      'https://$authority$unencodedPath?$Title$Limit$Offset$Authors$Artists$Year$IncludedTags$IncludedTagsMode$ExcludedTags$ExcludedTagsMode$Status$OriginalLanguage$ExcludedOriginalLanguage$AvailableTranslatedLanguage$PublicationDemographic$Ids$contentrating$CreatedAtSince$UpdatedAtSince$Includes$Group$Order';
  var response = await http.get(Uri.parse(url),
      headers: {HttpHeaders.contentTypeHeader: 'application/json'});
  return response;
}