Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프래그먼트
- DOMContentLoaded
- javascript
- ViewPager
- 생명주기
- Flutter
- putextra
- 함수 인자
- Class
- Adapter
- ActionBar
- C++
- 데이터 타입
- querySelector
- null-safety
- 부가데이터
- parcelable
- 230503
- string
- 안드로이드
- serializable
- DFS
- classList
- 인텐트
- fragment
- 230508
- textContent
- html
- intent
- 230510
Archives
- Today
- Total
나만의 개발노트
[Flutter] API로 정보 불러오기 본문
[문제]
https://webtoon-crawler.nomadcoders.workers.dev
프로그램을 실행하면, 위 링크의 API 정보를 불러와 WebtoonModel 클래스로 만들기
-> 확인을 위해 정보의 title 출력
[정답]
1. http 설치
*설치 방법 :https://pub.dev/packages/http/install
2. home_screen.dart 작성
3. api_service.dart 작성
- Uri.parse()로 Uri 변수 생성
- get()으로 정보 불러오기 - 반환타입이 Future<Response>이므로, await/async 키워드 사용
- get()의 리턴값.statusCode == 200 (정상) 이면, String 타입으로 저장되어 있는 response.body를 클래스화
4. WebtoonModel 클래스 생성
- 전달 받은 Json의 데이터인 id, title, thumb 선언
- .fromJson 생성자 선언 -> 전달 인자 타입 : Map<String, dynamic>
5. 전달 받은 json정보를 WebtoonModel 클래스 리스트로 저장
- jsonDecode()를 통해 sting으로 저장된 response.body를 JSON형식으로 저장 //import 'dart:convert';
- List<WebtoonModel> 변수를 만들어서, 데이터 WebtoonModel 클래스로 저장
#main.dart 코드
import 'package:flutter/material.dart';
import 'package:testflutter/screens/home_screen.dart';
import 'package:testflutter/service/api_service.dart';
void main() {
ApiService().getTodaytoons();
runApp(const App());
}
class App extends StatelessWidget {
const App({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return const HomeScreen();
}
}
#api_service.dart 코드
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:testflutter/model/webtoon_model.dart';
class ApiService {
final baseUrl = "https://webtoon-crawler.nomadcoders.workers.dev";
final today = "today";
List<WebtoonModel> webtoonModels = [];
void getTodaytoons() async {
final url = Uri.parse('$baseUrl/$today');
var response = await http.get(url);
if (response.statusCode == 200) {
List<dynamic> webtoons = jsonDecode(response.body);
for (var webtoon in webtoons) {
//webtoons의 모든 webtoon에 대해서
webtoonModels.add(WebtoonModel.fromJson(webtoon));
}
//확인용 코드
for (var testToon in webtoonModels) {
print(testToon.title);
}
} else {
throw Error();
}
}
}
#webtoon_model.dart
class WebtoonModel {
final String id, title, thumb;
//named constructor
WebtoonModel.fromJson(Map<String, dynamic> json)
: id = json['id'],
title = json['title'],
thumb = json['thumb'];
}
'[Flutter] > [Flutter]' 카테고리의 다른 글
[Flutter] API, HTTP, Future, async/await (1) | 2024.07.25 |
---|---|
[Flutter] flexible, alignment, expanded, Timer, Duration (1) | 2024.07.24 |
[Flutter] Widget LifeCycle - initState(), build(), dispose() (0) | 2024.07.22 |
[Flutter] BuildContext와 Theme - 스타일시트 저장하기 (0) | 2024.07.22 |
[Flutter] flutter로 UI 구성해보기 (0) | 2024.07.19 |