말랑한 하루
[Flutter] Dio 시작하기 본문
반응형
reference : https://pub.dev/packages/dio
Dio는 Dart/Flutter를 위한 강력한 HTTP Networking Package는 다음과 같은 기능을 지원합니다.
🍒 Global configuration
🍒 Interceptors
🍒 FormData
🍒 Request cancellation
🍒 File uploading/downloading
🍒 Timeout
🍒 Custom adapters
🍒 ransformers
이번 글귀에서는 가장 기본적인 dio의 get/post의 사용법과, 데이터에 따른 사용법 몇 가지를 알아보겠습니다. 추후 다른 강력한 기능은 개별적으로 포스팅 하려합니다.
🐇 Dio Install
※ reference : https://pub.dev/packages/dio/install
다음 명령문으로 설치를 시작할 때, 자신이 사용하는 Framework와 맞춰 진행하자.
dart/flutter pub add dio
이후 dart/flutter pub get 명령문을 입력하여 dio package를 사용하자.
🐇 Dio Start
사용법은 정말 쉽습니다.
🥕 Dio Create
final dio = Dio();
🥕 Dio GET
Response response;
// example 1, basic
response = await dio.get('/test?id=12&name=dio');
// example 2, using queryParameter
response = await dio.get('/test', queryParameters: {'id': 12, 'name': 'dio'});
🥕 Dio POST
response = await dio.post('/test', data: {'id': 12, 'name': 'dio'});
🥕 Dio GET+POST, 동시 실행
response = await Future.wait([dio.post('/info'), dio.get('/token')]);
🥕 Dio DOWNLOAD File
repsonse = await dio.download(
'<https://pub.dev/>',
(await getTempararyDirectory()).path + 'pub.html',
);
🥕 Dio Response Stream
final rs = await dio.get(
url,
option: Options(responseType: ResponseType.stream),
)
🥕 Dio Response for byte
final rs = await dio.get<List<int>>(
url,
options: Options(responseType: ResponseType.bytes),
)
🥕 Dio Post FormData
final formData = FormData.fromMap({
'name': 'dio',
'date': DateTime.now().toIso8601String(),
'file': await MultipartFile.fromFile('./text.txt', filename: 'upload.txt'),
'files': [
await MultipartFile.fromFile('./text.txt', filename: 'text1.txt'),
await MultipartFile.fromFile('./text.txt', filename: 'text2.txt'),
]
);
final response = await dio.post('/info', data: formData);
🥕 Dio Response Send Progress
final response = await dio.post(
url: '<https://www.dtworkroom.com/doris/1/2.0.0/test>',
data: {'aa': 'bb' * 22},
onSendProgress: (int sent, int total) {
print('$send $total');
}
)
🥕 Dio Binary Cache, Using Stream
final postData = <int>[0, 1, 2];
await dio.post(
url,
data: Stream.fromIterable(postData.map((e) => [e])), // Creates a Stream<List<int>>.
options: Options(
headers: {
Headers.contentLengthHeader: postData.length,
},
),
);
반응형
'개발 > Flutter' 카테고리의 다른 글
[Flutter] (Project) MapleApp: 1. 프로젝트 시작 (0) | 2024.01.01 |
---|---|
[Flutter] AutoDispose? (0) | 2023.12.31 |
[Flutter] (Error) requires SDK version >=3.2.3 <4.0.0, version solving failed. (0) | 2023.12.30 |
[Flutter] GoRouter 시작하기 (1) | 2023.12.29 |
[Flutter] AsyncValue? (0) | 2023.12.28 |
Comments