[flutter] Dio를 사용하여 이미지를 다운로드하는 방법을 알려주세요.

Dio는 Flutter에서 HTTP 요청을 쉽게 처리할 수 있는 라이브러리입니다. Dio를 사용하여 이미지를 다운로드하는 방법에 대해 알아보겠습니다.

Dio 및 dio_image 다운로드 및 설치

먼저, pubspec.yaml 파일에 dio 및 dio_image 패키지를 추가해야 합니다.

dependencies:
  dio: ^4.0.0
  dio_image: ^3.0.0

그런 다음, 터미널에서 다음 명령을 사용하여 패키지를 설치합니다.

flutter pub get

이미지 다운로드 코드 작성

이제 이미지를 다운로드하는 코드를 작성해 보겠습니다.

import 'package:dio/dio.dart';
import 'package:dio_image/dio_image.dart';

void downloadImage() async {
  Dio dio = Dio();
  Response<ResponseBody> response = await dio.get<ResponseBody>(
    'https://example.com/image.jpg',
    options: Options(responseType: ResponseType.stream),
  );
  await response.data!.writeToFile('path_to_save_image.jpg');
}

위 코드에서 get 메서드를 사용하여 이미지를 다운로드하고, responseTypestream으로 설정하여 응답을 스트림으로 처리합니다. 그리고 writeToFile 메서드를 사용하여 이미지를 파일로 저장합니다.

완성된 예제

아래는 전체적인 이미지 다운로드 코드의 완성된 예제입니다.

import 'package:flutter/material.dart';
import 'package:dio/dio.dart';
import 'package:dio_image/dio_image.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Image Download'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: downloadImage,
            child: Text('Download Image'),
          ),
        ),
      ),
    );
  }
}

Future<void> downloadImage() async {
  Dio dio = Dio();
  Response<ResponseBody> response = await dio.get<ResponseBody>(
    'https://example.com/image.jpg',
    options: Options(responseType: ResponseType.stream),
  );
  await response.data!.writeToFile('path_to_save_image.jpg');
}

이제 Dio를 사용하여 Flutter 앱에서 이미지를 다운로드하는 방법을 알게 되었습니다. 만약 질문이 있거나 추가 정보가 필요하시면 기술 블로그를 참고하시기 바랍니다.