flutter

[flutter] 페이지네이션(무한스크롤) 커스터마이징 - error 상황 -infinite_scroll_pagination

슈크림 붕어빵 2023. 7. 7. 15:05

지금 작업하는 서버에서는 해당 카테고리에 상품이 없는 경우 error를 날린다.

따라서 이 패키지에서는 error가 생긴 경우 아래와 같은 사진이 나온다.

 

에러 메시지와 모양을 바꾸고 싶어서 시도했다.

 

Widget build(BuildContext context) {
    return Padding(
      padding: EdgeInsets.only(top: widget.topPadding),
      child: Center(
        child: PagedListView<int, Product>(
          pagingController: _pagingController,
          builderDelegate: PagedChildBuilderDelegate<Product>(
            itemBuilder: (context, item, index) => ProductCard(
              product: item,
            ),
            newPageErrorIndicatorBuilder: (_) =>
                Center(child: Text("상품을 불러올 수 없습니다.")),
            firstPageErrorIndicatorBuilder: (_) =>
                Center(child: Text("상품을 불러올 수 없습니다.")),
            noItemsFoundIndicatorBuilder: (_) =>
                Center(child: Text("noItem - 상품을 불러올 수 없습니다.")),
            noMoreItemsIndicatorBuilder: (_) => const SizedBox(),
          ),
        ),
      ),
    );
  }

나중에는 error가 아닌 data를 null로 보낼 수도 있으므로 나눠서 error시 보일 위젯을 구분했다.

이렇게 에러가 뜬다! 

 

이 외에도

firstPageProgressIndicatorBuilder: (_) => FirstPageProgressIndicator(),
newPageProgressIndicatorBuilder: (_) => NewPageProgressIndicator(),
noItemsFoundIndicatorBuilder: (_) => NoItemsFoundIndicator(),
noMoreItemsIndicatorBuilder: (_) => NoMoreItemsIndicator(),

이렇게 네가지를 설정할 수 있다. progress일 때는 error를 나타내는 것은 아니고 로딩중일 때를 나타낸다. 원한다면 원하는 모양의 로딩 위젯을 넣을 수 있을 것이다.