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

조재우님의 프로필 이미지
조재우

작성한 질문수

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

Provider안에 Provider 사용하기

Provider 내에 Provider 2개를 이용할 때 화면 업데이트 궁금한점.

작성

·

13

0

김치,라면,삼겹살 등등의 값을 바꾼뒤에 filter 를 하면 가끔씩 필터가 안되는 아이들이 보이는 문제가 왜 발생되는지 궁금합니다! 강의 영상에서도 보였구요,

 

두 번째로는, toggleHasBought() 로 값을 변경하면 화면이 다시 그려지는데 왜 필터는 적용되지 않는지 이유도 알고싶습니다!

답변 2

0

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

안녕하세요!

코드 예제와 함께 질문 부탁드립니다. 문맥이 없으면 질문을 파악하기 어렵습니다.

감사합니다!

조재우님의 프로필 이미지
조재우
질문자

final filteredShoppingListProvider = Provider<List<ShoppingItemModel>>(
  (ref) {
    final filterState = ref.watch(filterProvider);
    final shoppingListState = ref.watch(shoppingListProvider);

    if (filterState == FilterState.all) {
      return shoppingListState;
    } else {
      return shoppingListState
          .where((element) => filterState == FilterState.spicy
              ? element.isSpicy
              : !element.isSpicy)
          .toList();
    }
  },
);
조재우님의 프로필 이미지
조재우
질문자

아래 코드에서 provider에 filterProvider 와 shoppingListProvider 두개를 등록했습니다.

질문의 요지는 filterState 든, shoppingListState 든 두 개중에 1개의 상태가 변화되도 Re build 한다고 배웠는데, shoppingListState 의 filter 되는 속성이 변경되도 UI에서는 왜 계속 보여지는 궁금합니다.

0

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

조재우님께서 질문하신 두 가지 사항에 대해 설명드릴게요.

첫 번째로, 김치, 라면, 삼겹살 같은 값을 변경한 뒤에 필터가 정상적으로 적용되지 않는 이유는 여러 가지가 있을 수 있습니다. 일반적으로 필터링 기능이 제대로 작동하지 않는 경우는 상태 관리에서 상태 변화를 제대로 반영하지 않았거나, UI가 상태 변화에 따라 올바르게 다시 그려지지 않는 경우에 발생할 수 있습니다. 강의에서 언급된 것처럼, 상태 관리 도구가 해당 상태 변화를 감지하지 못한 상황이나 의도하지 않은 side effect 때문에 이런 현상이 발생할 수 있습니다.

두 번째로는, toggleHasBought() 함수를 통해 값을 변경할 때 화면은 다시 그려지지만 필터가 적용되지 않는 문제는 필터링 로직이 상태 변화에 직접적으로 반응하지 않기 때문에 발생할 수 있습니다. 상태 변경이 있을 때 마다 필터링 로직을 호출하도록 구현되어야 올바르게 표시됩니다. 업데이트가 필요한 시점에서 명시적으로 필터링 기능을 다시 작동시키도록 구성할 필요가 있습니다.

이와 유사한 주제에 대해 더 많은 정보를 얻으시려면 다음의 질문을 참고하실 수 있습니다:
- 상태 설계 관련 질문드립니다.
- riverpod 상태관리시에 궁금한점 질문드립니다.

다양한 상태 관리 기술들(Riverpod, Provider 등)의 차이점과 각각의 장단점을 이해하는 것이 중요하며, 이를 통해 문제 해결에 대한 더 나은 접근 방식을 개발할 수 있습니다. 따라서 위의 링크들을 통해 추가 정보를 확인해 보시고, 자신의 코드에 어떻게 응용할 수 있을지 고민해 보시면 도움이 될 것입니다.

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

조재우님의 프로필 이미지
조재우

작성한 질문수

질문하기