• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    해결됨

riverpod 에서 상태가 여러개일 때

24.03.20 10:50 작성 조회수 60

1

Riverpod을 이용해서 MVVM 구조로 변경중인데 하나의 뷰모델에서 여러개의 상태관리가 필요한 경우에는 어떻게 해야되나요?

올려주신 riverpod을 이용한 mvvm 코드를 참고해봤는데 각 뷰 별로 상태가 한개라 어려움이 있습니다.

여러개 상태를 하나의 객체로 만들어서 관리를 해야될까요?

답변 1

답변을 작성해보세요.

2

안녕하세요.

Riverpod 버전 코드에 product_view_state.dart 파일을 보시면, isBusy, count, colorIndex 3가지 상태를 하나의 상태 클래스로 관리하고 있습니다. 말씀해 주신 여러개 상태를 하나의 객체로 만들어 관리하는 방법이라고 이해하시면 될 것 같습니다.

class ProductViewState extends BaseViewState {
  const ProductViewState({
    required this.isBusy,
    required this.count,
    required this.colorIndex,
  });

  @override
  final bool isBusy;

  /// 선택한 수량
  final int count;

  /// 선택한 색상
  final int colorIndex;

  ProductViewState copyWith({
    bool? isBusy,
    int? count,
    int? colorIndex,
  }) {
    return ProductViewState(
      isBusy: isBusy ?? this.isBusy,
      count: count ?? this.count,
      colorIndex: colorIndex ?? this.colorIndex,
    );
  }
}

위와 같이 하나의 상태 객체를 만들어 진행해 보시고, 만약 여러 Notifier에서 동기화가 필요한 상태가 있다면 별도 Notifier를 만들어 builder 함수에서 동기화 시키는 방향으로 진행하시면 될 것 같습니다. (상태 관리 강의 Riverpod → Riverpod 상호 작용 챕터 참고)

감사합니다 🙂