본문으로 바로가기

network image 캐싱하기

category 📱 Mobile/📱 (old) Flutter v 1.0 2020. 7. 6. 19:09

ListView로 네트워크 이미지를 뿌렸는데 다른 페이지에 있다가 다시 돌아오면 재로딩을 하게 된다.

 

현재 이미지를 가져오는 방식에는 캐시가 적용되지 않는다.

Image.network("https://picsum.photos/id/237/200/200"),

 

이를 해결하기 위해 플러터가 공인한 패키지를 사용해보도록 하자.

(https://pub.dev/packages/cached_network_image)

 

자세한 사용법은 공식 문서를 보는 것이 좋지만 사용법 자체각 워낙 간단해서...

CachedNetworkImage(
   imageUrl: "https://picsum.photos/id/237/200/200",
    placeholder: (context, url) => CircularProgressIndicator(),
    errorWidget: (context, url, error) => Icon(Icons.error),
),

 

 

해당 이미지를 컨트롤하기 위해서는 CachedNetworkImage 의 속성인 imageBuilder를 수정해주면 된다.

imageProvider에 우리가 imageUrl로 가져온 이미지 정보가 담겨 있습니다.

CachedNetworkImage(
  imageUrl: "https://picsum.photos/id/${index + 150}/200/200",
  placeholder: (context, url) => CircularProgressIndicator(),
  errorWidget: (context, url, error) => Icon(Icons.error),
  imageBuilder: (context, imageProvider) =>
    AspectRatio(
      aspectRatio: 1,
      child: Container(
        decoration: BoxDecoration(
        image: DecorationImage(
           image: imageProvider, fit: BoxFit.cover),
		),
     ),
  ),
)

 

 

물론 CachedNetworkImage 를 통으로 쓰는 것이 아니라 CachedNetworkImageProvider를 활용할 수도 있습니다.

 

Image(
  image: CachedNetworkImageProvider(
   'http://via.placeholder.com/350x150',
)

 

 

'📱 Mobile > 📱 (old) Flutter v 1.0' 카테고리의 다른 글

Yellow lines under Text Widgets in Flutter?  (0) 2020.07.10
Sliver  (0) 2020.07.07
BLoC (Bisuness Logic Component) 디자인 패턴  (0) 2020.07.05
stream, StreamBuilder  (0) 2020.07.05
flutter 테스트 하기  (0) 2020.07.05

darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체