«   2025/03   »
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
Archives
Today
Total
관리 메뉴

올해는 머신러닝이다.

Flutter cached_network_image 만료 기간 설정 본문

스터디/Flutter

Flutter cached_network_image 만료 기간 설정

행복한 수지아빠 2025. 3. 18. 17:55

Flutter에서 cached_network_image 패키지를 사용할 때 이미지의 **만료 기간(Cache Expiration)**을 설정하는 방법은 여러 가지가 있습니다. 주요 방법은 다음과 같습니다.


1. CacheManager를 직접 사용하여 만료 기간 설정

기본적으로 cached_network_image는 내부적으로 flutter_cache_manager를 사용합니다. 따라서 CacheManager를 커스텀하여 만료 기간을 설정할 수 있습니다.

Custom CacheManager 만들기

import 'package:flutter_cache_manager/flutter_cache_manager.dart';

class CustomCacheManager extends CacheManager {
  static const key = 'customCacheKey';

  static CustomCacheManager _instance = CustomCacheManager._();
  factory CustomCacheManager() => _instance;

  CustomCacheManager._()
      : super(
          Config(
            key,
            stalePeriod: const Duration(days: 3),  // 만료 기간 설정 (예: 3일)
            maxNrOfCacheObjects: 100,  // 최대 캐시 개수 설정
          ),
        );
}

2. cached_network_image에서 cacheManager 옵션 사용

위에서 만든 CustomCacheManager를 cached_network_image에서 사용할 수 있습니다.

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

class CachedImageExample extends StatelessWidget {
  final String imageUrl = 'https://example.com/image.jpg';

  @override
  Widget build(BuildContext context) {
    return CachedNetworkImage(
      imageUrl: imageUrl,
      cacheManager: CustomCacheManager(),  // 커스텀 캐시 매니저 적용
      placeholder: (context, url) => CircularProgressIndicator(),
      errorWidget: (context, url, error) => Icon(Icons.error),
    );
  }
}

3. 캐시 삭제 (수동으로 만료)

만약 특정 조건에서 캐시를 제거해야 한다면 removeFile() 또는 emptyCache() 메서드를 사용할 수 있습니다.

특정 이미지 캐시 삭제

await CustomCacheManager().removeFile(imageUrl);

전체 캐시 삭제

await CustomCacheManager().emptyCache();

4. imageCache.clear()로 Flutter의 메모리 캐시 삭제

flutter_cache_manager는 디스크 캐시를 관리하지만, Flutter 자체도 메모리에 이미지를 캐싱합니다. 따라서 메모리 캐시까지 삭제하려면 아래 방법을 사용할 수 있습니다.

imageCache.clear();
imageCache.clearLiveImages();

📌 결론

  • 자동 만료 설정: CustomCacheManager에서 stalePeriod를 설정
  • 캐시된 이미지 강제 삭제: removeFile() 또는 emptyCache()
  • 메모리 캐시 삭제: imageCache.clear()

이 방법을 활용하면 Flutter에서 cached_network_image의 만료 기간을 조절할 수 있습니다. 🚀