- flutter

ListView - Divider / Image.network / CachedNetworkImage 라이브러리

나둥식 2022. 11. 21. 10:08

✅ ListView

ListView.separated() // 구분선 그을 때 사용
Divider(
    height: 0,
    indent: 16,
    endIndent: 16,
    color: Colors.grey,
), // ListView에서 구분선 그리는 방법
import 'package:carrot_market/models/product.dart';
import 'package:flutter/material.dart';

class ProductItem extends StatelessWidget {
  final Product product;
  const ProductItem(this.product, {Key? key}) : super(key: key); //선택적 매개변수가 있을 때 받아야하는 값은 무조건 제일 앞에 적기
itemBuilder //ListView의 디자인을 리턴
itemBuilder: (context, index) => ProductItem(productList[index])

 

 

 

✅ 이미지 적용

Image.network(
    product.urlToImage, //변수를 바로 찾음
    width: 115,
    height: 115,
    fit: BoxFit.cover,
),

➡ 내가 만든 네트워크가 아니므로 앱으로 열어야 잘 보임!

 

 

 

 

✅ CachedNetworkImage : 휴대폰에서 이미지를 다운받을 때 한 번 패싱해놓고 다음부터 다운받지 않기 위한 라이브러리

: 메모리관리를 알아서 해줌! ==> 로딩 속도가 빨라짐

dependencies:
  cached_network_image: ^3.2.1

 

➡ 코드 수정

🔎 CachedNetworkImage 라이브러리

ClipRRect(
    borderRadius: BorderRadius.circular(10),
    child: CachedNetworkImage(
    imageUrl: product.urlToImage,
    width: 115,
    height: 115,
    fit: BoxFit.cover,
    progressIndicatorBuilder: (context, url, progress) => CircularProgressIndicator(
    value: progress.progress,
    ),
 ),
🔎 Progress 자동 적용

progressIndicatorBuilder: (context, url, progress) => CircularProgressIndicator(
    value: progress.progress,
)
// 이미지 적용 전에 Progress 나타내기