반응형
이번에는 웹툰의 썸네일과 제목만 가져오는 것을 넘어서, 웹툰의 상세정보와 최근 에피소드들을 가져오는 것들을 만들 것이다.
일단 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 |