앞서 이미지를 캐시 저장소에 저장하고 빠르게 불러오는 방법을 포스팅했다.
[플러터] 이미지를 cache 저장소에 저장하기
스마트폰을 사용하다보면 앱의 저장공간에 캐시라는 공간이 별도로 존재하는 것을 보았을 것이다. cache(캐시)라고 불리는 것에는 cache 저장소와 cache memory 2가지가 있다. cache란 데이터를 빠르게
muhly.tistory.com
이번에는 파일을 캐시 저장소에 저장하는 방법을 포스팅하겠다.
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 |