getChapter method Null safety

Future<Chapter?> getChapter(
  1. String uuid,
  2. {bool useLogin = false}
)

Gets the chapter specified by the UUID

Returns Null if no chapters found

Implementation

Future<Chapter?> getChapter(String uuid, {bool useLogin = false}) async {
  var res;
  if (token != '' && useLogin) {
    res = await http
        .get(Uri.parse('https://api.mangadex.org/chapter/$uuid'), headers: {
      HttpHeaders.authorizationHeader: 'Bearer $token',
      HttpHeaders.userAgentHeader: 'mangadex_dart_api/1.0'
    });
  } else {
    res = await http.get(Uri.parse('https://api.mangadex.org/chapter/$uuid'),
        headers: {HttpHeaders.userAgentHeader: 'mangadex_dart_api/1.0'});
  }

  if (res.statusCode == 404) {
    return null;
  }

  var data = jsonDecode(res.body)['data'];
  if (res.statusCode == 403 && res.headers['X-Captcha-Sitekey'] != null) {
    throw CaptchaException(res.headers['X-Captcha-Sitekey'],
        message:
            'You need to solve a captcha, check `.sitekey` for the sitekey.');
  }

  // get MD@H URL
  var md = await http.get(
      Uri.parse("https://api.mangadex.org/at-home/server/${data['id']}"),
      headers: {HttpHeaders.userAgentHeader: 'mangadex_dart_api/1.0'});
  var atHomeURL = jsonDecode(md.body)['baseUrl'];

  // create chapter URL
  // ignore: omit_local_variable_types
  List<String> normalChapter = [];
  for (var chapter in data['attributes']['data']) {
    normalChapter
        .add('$atHomeURL/data/${data["attributes"]["hash"]}/$chapter');
  }

  // create data-saver URL
  // ignore: omit_local_variable_types
  List<String> saverChapter = [];
  for (var chapter in data['attributes']['data']) {
    saverChapter
        .add('$atHomeURL/data-saver/${data["attributes"]["hash"]}/$chapter');
  }
  var chapter = Chapter(
      id: data['id'],
      title: data['attributes']['title'],
      volume: data['attributes']['volume'],
      chapter: data['attributes']['chapter'],
      translatedLanguage: data['attributes']['translatedLanguage'],
      chapterURLs: normalChapter,
      dataSaverChapterURLs: saverChapter,
      createdAt: data['attributes']['createdAt'],
      updatedAt: data['attributes']['updatedAt'],
      groupIds: data['attributes']['groups'],
      mangaId: data['attributes']['manga'],
      uploader: data['attributes']['uploader']);
  return chapter;
}