앱 만들기 프로젝트/Flutter

Flutter - 6.12 ApiService

지나가는물리학부생 2024. 12. 8. 15:22
반응형

이번에는 웹툰의 썸네일과 제목만 가져오는 것을 넘어서, 웹툰의 상세정보와 최근 에피소드들을 가져오는 것들을 만들 것이다.

일단 model 파일을 만들자.

webtoon_detail_model.dart

class WebtoonDetailModel {
  final String title, about, gnere, age;

  WebtoonDetailModel.fromJson(Map<String, dynamic> json)
      : title = json['title'],
        about = json['about'],
        gnere = json['genre'],
        age = json['age'];
}

webtoon_episode_model.dart

class WebtoonEpsiodeModel {
  final String id, title, rating, date;

  WebtoonEpsiodeModel.fromJson(Map<String, dynamic> json)
      : id = json['id'],
        title = json['title'],
        rating = json['rating'],
        date = json['date'];
}

그리고 기존에 있던 api_service.dart 파일에 다음의 코드를 추가해서 데이터를 받아오는 부분을 만들 것이다.

  static Future<WebtoonDetailModel> getToonById(String id) async {
    final url = Uri.parse("$baseUrl/$id");
    final response = await http.get(url);
    if (response.statusCode == 200) {
      final webtoon = jsonDecode(response.body);
      return WebtoonDetailModel.fromJson(webtoon);
    }
    throw Error();
  }

  static Future<List<WebtoonEpsiodeModel>> getLatestEpisodesById(
      String id) async {
    List<WebtoonEpsiodeModel> episodesInstances = [];
    final url = Uri.parse("$baseUrl/$id/episodes");
    final response = await http.get(url);
    if (response.statusCode == 200) {
      final episodes = jsonDecode(response.body);
      for (var episode in episodes) {
        episodesInstances.add(WebtoonEpsiodeModel.fromJson(episode));
      }
      return episodesInstances;
    }
    throw Error();
  }

이때, 에피소드들은 여러개라서 List형태로 가져온다.
(물론, 리스트 안에 있는 것들이 WebtoonEpisodeModel의 이름의 class이다.)

사실, 예전에 배웠던 것들의 반복이다.

반응형

'앱 만들기 프로젝트 > Flutter' 카테고리의 다른 글

Flutter - 6.14 Detail Info  (0) 2024.12.08
Flutter - 6.13 Futures  (0) 2024.12.08
Flutter - 6.10 Hero  (0) 2024.12.05
Flutter - 6.9 Detail screen  (0) 2024.12.04
Flutter - github에서 프로젝트를 다운로드 받을때...  (0) 2024.12.03