본문 바로가기
Flutter/Flutter Programming

플러터에서 네트워크 이미지 캐싱하기: Cached Network Image 패키지 사용 방법과 옵션 설명

by Maccrey 2024. 7. 9.
반응형

플러터에서 이미지를 네트워크에서 캐싱하여 관리하는 CachedNetworkImage 패키지의 사용 방법과 주요 옵션에 대해 설명해드리겠습니다.

 

 

cached_network_image score | Flutter package

Flutter library to load and cache network images. Can also be used with placeholder and error widgets.

pub.dev

 

** 캐싱이란?

캐싱은 데이터나 값을 빠르게 액세스하기 위해 임시적으로 저장하는 기술입니다. 컴퓨터 과학에서 자주 사용되는 용어이며, 웹 개발, 데이터베이스, 컴퓨터 시스템 등 다양한 분야에서 활용됩니다.

1. CachedNetworkImage 패키지 설치

먼저 CachedNetworkImage 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에 다음과 같이 추가해 주세요

dependencies:
  flutter:
    sdk: flutter
  cached_network_image: ^3.1.0

그리고 터미널에서 flutter pub get 명령어를 실행하여 패키지를 다운로드합니다.

2. 기본 사용법

CachedNetworkImage를 사용하여 네트워크에서 이미지를 로드하고 캐싱하는 방법을 보여드리겠습니다.

import 'package:flutter/material.dart';
import 'package:cached_network_image/cached_network_image.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('CachedNetworkImage 예제'),
        ),
        body: Center(
          child: CachedNetworkImage(
            imageUrl: 'https://via.placeholder.com/200', // 이미지 URL
            placeholder: (context, url) => CircularProgressIndicator(), // 로딩 중에 보일 위젯
            errorWidget: (context, url, error) => Icon(Icons.error), // 에러 발생 시 보일 위젯
          ),
        ),
      ),
    );
  }
}

위 코드는 CachedNetworkImage를 사용하여 네트워크에서 이미지를 로드하고 로딩 중과 에러 상태일 때 각각 다른 위젯을 보여주는 간단한 예제입니다.

3. CachedNetworkImage 패키지의 주요 옵션들

CachedNetworkImage

  • imageUrl: 로드할 이미지의 URL을 지정합니다.
  • placeholder: 이미지가 로딩 중일 때 보여줄 위젯을 지정합니다.
  • errorWidget: 이미지 로딩 중에 에러가 발생했을 때 보여줄 위젯을 지정합니다.
  • fit: 이미지의 적합성을 설정합니다. BoxFit.contain, BoxFit.cover, BoxFit.fill 등을 사용할 수 있습니다.
  • width와 height: 이미지의 크기를 지정합니다.
  • alignment: 이미지의 정렬을 설정합니다.

4. 고급 사용법

CachedNetworkImage는 다양한 상황에 따라 필요한 설정을 할 수 있습니다. 예를 들어, 이미지를 페이드 인/아웃 애니메이션과 함께 로드하거나, 캐시 제어를 세밀하게 조정할 수 있습니다.

CachedNetworkImage(
  imageUrl: 'https://via.placeholder.com/400',
  imageBuilder: (context, imageProvider) => Container(
    decoration: BoxDecoration(
      image: DecorationImage(
        image: imageProvider,
        fit: BoxFit.cover,
        colorFilter: ColorFilter.mode(
          Colors.red.withOpacity(0.5),
          BlendMode.dstATop,
        ),
      ),
    ),
  ),
  placeholderFadeInDuration: Duration(milliseconds: 500),
  fadeOutDuration: Duration(milliseconds: 500),
  fadeInCurve: Curves.easeIn,
  fadeOutCurve: Curves.easeOut,
  width: 300,
  height: 300,
);

위 코드에서는 이미지를 페이드 인/아웃 애니메이션과 함께 로드하며, 이미지에 대한 추가적인 데코레이션 및 애니메이션 설정을 지정했습니다.

결론

CachedNetworkImage 패키지는 플러터 애플리케이션에서 네트워크에서 이미지를 효율적으로 로드하고 캐싱하여 관리하는 데 매우 유용한 도구입니다.

다양한 옵션을 사용하여 원하는 스타일과 동작을 정의할 수 있어, 사용자 경험을 개선하는 데 큰 도움이 됩니다.

프로젝트에서 이미지 관리에 필요한 경우 CachedNetworkImage를 적극적으로 활용해 보세요.

 

 

 

 

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

나비일기장 [수발일기장] - Google Play 앱

수형자 수발가족및 수발인을 위한 일기장으로 수형생활시기에 따른 정보를 얻을 수 있습니다.

play.google.com

 

반응형