앞서 이미지를 캐시 저장소에 저장하고 빠르게 불러오는 방법을 포스팅했다.
이번에는 파일을 캐시 저장소에 저장하는 방법을 포스팅하겠다.
Cache 저장소 (파일)
앞선 포스팅에서 이미지를 캐시 저장소에 저장할 때 사용했던 패키지는 'cached_network_image' 로
오늘 소개할 패키지의 일부분으로 이미지만을 위해 편리하게 사용하게끔 분리시켜놓은 패키지이다.
따라서, 이 포스팅의 패키지로 이미지의 캐시 저장도 가능하다.
pubspec.yaml
dependencies:
flutter_cache_manager: ^2.1.0
파일을 cache에 저장
DefaultCacheManager().getSingleFile(fileURL,
key: 'file1');
위의 함수로 간단하게 file을 캐시에 저장할 수 있다. 캐시에 이미 파일이 존재하면 불러오지 않는다.
fileURL은 http형식으로 가능하다.
key 값을 지정해주면 key 값으로 캐시에 저장된 해당 파일의 캐시 경로를 얻을 수 있으며, key를 지정해주지 않으면 파일 경로가 key가 된다.
파일이 저장된 캐시 저장소의 경로 획득
DefaultCacheManager()
.getFileFromCache('file1') //지정한 key값
.then((cacheLocate) {
//cacheLocate가 캐시 저장소내의 해당 파일 경로
});
앞서 지정한 key 값으로, 혹은 지정하지 않았다면 파일 경로로 위의 함수를 실행한다. Future이므로 then으로 파일이 저장된 경로를 반환 받을 수 있다.
사용
AudioPlayer player = AudioPlayer();
player.setFilePath(cacheLocate);
player.play();
반환받은 캐시 저장소의 경로로 오디오를 재생하는 예시이다. 이렇게 캐시를 사용하면 서버에서 매번 불러오지 않아 경제적이고 훨씬 빠른 재생이 가능하다.
사용자 지정
class CustomCacheManager {
static const key = 'customCacheKey';
static CacheManager instance = CacheManager(
Config(
key,
stalePeriod: const Duration(days: 7),
maxNrOfCacheObjects: 20,
repo: JsonCacheInfoRepository(databaseName: key),
fileSystem: IOFileSystem(key),
fileService: HttpFileService(),
),
);
}
위는 패키지의 예제 코드 중 일부이다.
클래스를 별도로 생성하여 앞서 사용한 DefaultCacheManager() 대신 사용할 수 있다.
이와 같이 사용자 지정시 캐시 보관 날짜 등의 세부적인 설정이 가능하다.
'Flutter > Flutter Tech' 카테고리의 다른 글
[플러터] Splash 화면 변경하기 (로딩 화면) (0) | 2021.01.20 |
---|---|
[플러터] Stateful Class 내부에 접근하기 (0) | 2021.01.10 |
[플러터] 이미지를 cache 저장소에 저장하기 (0) | 2020.12.22 |
[플러터] 위젯의 크기&위치를 반환받는 법 (0) | 2020.12.15 |
[플러터] 자식 클래스에서 부모 클래스에 데이터 전달 (0) | 2020.11.19 |