인프런 커뮤니티 질문&답변

이주영님의 프로필 이미지

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

Restaurant Pagination의 provider 로직관련입니다.

작성

·

230

1

안녕하세요

상태관리 프로젝트에 적용하기 부분이 많이 어렵네요

여러번 강의를 보고 restaurant_provider.dart의 코드를 보며 이해를 하려 했는데 제가 이해를 한것이 맞는지 몰라 이곳에 질문을 남기게 되었습니다.


CursorPagination의 상태 관련 5개중 아래 두가지 상태를 제가 이해한게 맞나요??

두가지 모두 로딩중인데 아래 상황에서 로딩중

CursorPaginationRefetching: 데이터를 받아온 상태에서 다시 새로고침을 하여 로딩 중

CursorPaginationFetchMore: 데이터를 받아온 상태에서 새로운 데이터를 추가 하는 중


바로 반환하는 상황

바로 반환하는 상황이라는 것이 데이터를 받아 오는 중, 즉 로딩중 일때나 더이상 추가 데이터가 없을 때paginate() 함수 바로 빠져 나와야 한다는 뜻인가요??

그리고 fetchMore가 아닐때 - 새로고침의 의도가 있을 수 있다.

fetchMore가 아닐때라고 주석을 달아 주셨는데 이것은 false일때라는 뜻인가요??


그럼 감사합니다 .

답변 2

1

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

CursorPagination관련 정리하신 내용이 맞습니다!

바로 반환하는 상황도 정리하신 내용이 맞습니다!

마지막 질문은 질문을 제가 잘 이해 못한 것 같습니다. 한번만 더 정리해서 말씀해주시면 답변 드리겠습니다!

감사합니다!

0

이주영님의 프로필 이미지
이주영
질문자

image

빠른 답변 감사합니다.

마지막 질문 내용 관련하여 깃허브 스크린샷 올립니다.

강의 중에도 fetchMore가 아닐때 새로고침의 의도가 있을 수 있다고만 하셨습니다.

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요! 제가 말을 헷갈리게 했나봅니다. 2번 상황(fetchMore)은 다음 코드에서 확인 가능합니다.

// 2번 반환 상황
if (fetchMore && (isLoading || isRefetching || isFetchingMore)) {
  return;
}

보여주신 스크린샷은 1번 상황에 대한 코드입니다.

제가 캡처해드린 부분의 코드를 보면 fetchMore가 true면 로딩중이거나, 새로 가져오는 중이거나, 더 데이터를 가져오는 상황일때 즉각 반환을 합니다. 중복으로 데이터를 가져오려고 요청 할 수 있으니 그렇습니다. fetchMore가 아닐때 새로고침의 의도가 있을 수 있다는건 말 그대로 fetchMore가 아닌 상황에는 새로고침의도 (forceRefetch)가 있을 수 있으니 위 코드처럼 fetchMore = true인 상황만 조건으로 필터링 한다는 이야기입니다!

이주영님의 프로필 이미지
이주영
질문자

답변 감사합니다.

fetchMore가 true가 아닐때 새로고침의 의도가 있다는 뜻이었네요