Inflearn brand logo image

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

anwjr41님의 프로필 이미지
anwjr41

작성한 질문수

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

Pagination Params 추가하기

내부 코드를 작성하지 않은 CursorPaginationLoading가 어떻게 로딩상태를 갖는지 잘 모르겠습니다...

작성

·

35

0

abstract class CursorPaginationBase {}

//에러
class CursorPaginationError extends CursorPaginationBase {
  final String message;

  CursorPaginationError({
    required this.message,
  });
}

//로딩
class CursorPaginationLoading extends CursorPaginationBase {}

여기까지 커서페이지네이션모델 파일을 만들었고

if (data is CursorPaginationLoading) {
      return Center(
        child: CircularProgressIndicator(),
      );
    }

로 로딩상태이면 인디케이터를 보여주고 있는 것 까지 완료했습니다.

그리고 CursorPaginationBase는 여러 상태의 부모로 로딩,정상,에러 등을 받을 수 있다는 것은 알겠는데, 아직 로딩은 무엇이다라는 것이 없이 단지 CursorPaginationBase를 상속받았을 뿐인데 어떻게 screen에서 로딩중인 것을 확정하고 코드가 작동하는지 잘 모르겠습니다...

 

답변 2

0

anwjr41님의 프로필 이미지
anwjr41
질문자

RestaurantStateNotifier가 super에서 CursorPaginationLoading 기본값인 로딩을 갖고있고 paginate()가 완료되면 CursorPagination타입으로 변경되기 때문에 원래 질문의 동작이 가능한걸까요?

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

CursorPaginationLoading 상태를 반환하게되면 타입 체크를 통해서 로딩상태를 보여줄 수 있습니다.

제가 질문을 잘 이해 못하겠는데 조금 더 상세히 질문해주시면 한번 더 답변 드리겠습니다.

감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. anwjr41님.

CursorPaginationLoading 클래스를 정의하고 이를 화면에서 사용하면서 CircularProgressIndicator를 표시하고 계신 것에 대해 궁금해 하셨네요.

여기서 핵심은 상태 패턴과 인터페이스를 어떻게 사용하는지가 중요합니다. 아래에 그 이유에 대해 설명드리겠습니다:

  • 상태 관리의 본질: 상태 관리에서 중요한 것은 상태 자체의 조사 및 구분입니다. 현재 CursorPaginationLoading은 특별한 동작을 수행하지 않지만 그럼에도 불구하고 유용한 이유는 ‘로딩 중’ 상태를 표현하는 식별자로서의 역할을 하기 때문입니다. 이 클래스를 구현할 때, 주로 다른 상태와의 구분을 위해 상속과 클래스 구분을 이용합니다.

  • 상태 식별자의 역할: CursorPaginationLoading 클래스가 CursorPaginationBase에서 파생되어 있다 하더라도, 이 자체로 “로딩 중”이라는 상태를 나타낼 수 있습니다. 즉, data is CursorPaginationLoading 조건은 해당 데이터가 로딩 중임을 식별하는 방법입니다.

  • 상태 전환 로직: 화면에 CircularProgressIndicator를 표시하는 로직은 if (data is CursorPaginationLoading)로 로딩 상태를 확인하고 사용자에게 로딩 중인 UI를 보여줍니다. 이는 일반적으로, 비동기 작업이 진행되는 동안 사용자에게 로딩 중임을 알리기 위해 자주 사용됩니다.

이와 관련된 다른 질문과 답변도 참고하시면 도움이 될 것입니다. 다음의 유사한 질문 링크에서 추가적인 설명을 확인하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

anwjr41님의 프로필 이미지
anwjr41

작성한 질문수

질문하기