getAllMatches method

Future<List<SoccerMatch>> getAllMatches(
  1. Map<String, dynamic> queryMatches
)

Implementation

Future<List<SoccerMatch>> getAllMatches(
    Map<String, dynamic> queryMatches) async {
  var body;
  String tempMatches = category.toString() +
      "_" +
      queryMatches['date'].toString() +
      'matches.json';
  var tempDir = await getApplicationDocumentsDirectory();
  File fileMatches = File(tempDir.path + "/football" + tempMatches);
  try {
    Uri uri = Uri.https(
        'elastad.com/web/api', '/football/$category.php', queryMatches);
    Response res = await get(uri, headers: headers);
    if (res.body.isNotEmpty && res.body[0].isNotEmpty) {
      if (res.statusCode == 200) {
        fileMatches.writeAsStringSync(res.body,
            flush: true, mode: FileMode.write);
        body = jsonDecode(res.body);
        List<dynamic> matchesList = body['response'];
        List<SoccerMatch> matches = matchesList
            .map((dynamic item) => SoccerMatch.fromJson(item))
            .toList();
        return matches;
      } else {
        if (fileMatches.existsSync()) {
          final data = fileMatches.readAsStringSync();
          body = jsonDecode(data);
          List<dynamic> matchesList = body['response'];
          List<SoccerMatch> matches = matchesList
              .map((dynamic item) => SoccerMatch.fromJson(item))
              .toList();
          return matches;
        } else {
          Uri uri = Uri.https(
              'btcdoller.co', '/football/$category.php', queryMatches);
          Response res = await get(uri, headers: headers);
          if (res.statusCode == 200) {
            fileMatches.writeAsStringSync(res.body,
                flush: true, mode: FileMode.write);
            body = jsonDecode(res.body);
            List<dynamic> matchesList = body['response'];
            List<SoccerMatch> matches = matchesList
                .map((dynamic item) => SoccerMatch.fromJson(item))
                .toList();
            return matches;
          } else {
            List<SoccerMatch> mat = [];
            return mat;
          }
        }
      }
    } else {
      if (fileMatches.existsSync()) {
        final data = fileMatches.readAsStringSync();
        body = jsonDecode(data);
        List<dynamic> matchesList = body['response'];
        List<SoccerMatch> matches = matchesList
            .map((dynamic item) => SoccerMatch.fromJson(item))
            .toList();
        return matches;
      } else {
        Uri uri = Uri.https(
            'btcdoller.co', '/football/$category.php', queryMatches);
        Response res = await get(uri, headers: headers);
        if (res.statusCode == 200) {
          fileMatches.writeAsStringSync(res.body,
              flush: true, mode: FileMode.write);
          body = jsonDecode(res.body);
          List<dynamic> matchesList = body['response'];
          List<SoccerMatch> matches = matchesList
              .map((dynamic item) => SoccerMatch.fromJson(item))
              .toList();
          return matches;
        } else {
          List<SoccerMatch> mat = [];
          return mat;
        }
      }
    }
  } on SocketException catch (_) {
    if (fileMatches.existsSync()) {
      final data = fileMatches.readAsStringSync();
      body = jsonDecode(data);
      List<dynamic> matchesList = body['response'];
      List<SoccerMatch> matches = matchesList
          .map((dynamic item) => SoccerMatch.fromJson(item))
          .toList();
      return matches;
    } else {
      Uri uri =
          Uri.https('btcdoller.co', '/football/$category.php', queryMatches);
      Response res = await get(uri, headers: headers);
      if (res.statusCode == 200) {
        fileMatches.writeAsStringSync(res.body,
            flush: true, mode: FileMode.write);
        body = jsonDecode(res.body);
        List<dynamic> matchesList = body['response'];
        List<SoccerMatch> matches = matchesList
            .map((dynamic item) => SoccerMatch.fromJson(item))
            .toList();
        return matches;
      } else {
        List<SoccerMatch> mat = [];
        return mat;
      }
    }
  }
}