StateNotifierProvider로 생성하고 수정한 데이터를 함수 내부에서 불러오기
215
작성한 질문수 3
안녕하세요. 코드팩토리님. 강의를 참고하여 한가지 기능을 만들어보고자 했습니다. 현재까지 데이터모델을 생성하고, 데이터모델 타입으로 된 리스트들을 저장하는 프로바이더를 생성하여 read로 리스트를 추가 및 삭제하며, watch를 통해 목록을 보도록 하였습니다.
그런데 제가 추가하고자 하는 기능 중, consumerWidget과 같은 위젯을 사용하지 않고 때에 따라 함수를 부를 때에 함수 내부에서 프로바이더에 저장된 데이터목록을 불러와야 하는 상황이 되었고, 코드를 작성해보았는데 역시나 위젯이 아닌 함수에서 호출을 하려니 watch, read등 작동하지 않는 문제가 발생하였습니다.
void scheduleAlarmFishs() async {
//ref로 데이터 가져오기.
final container = ProviderContainer();
final fishs = container.read(fishListProvider); // read 사용
print('Retrieved ${fishs.length}');
}혹시 이런식으로 함수를 통한 접근은 아예 불가능한 건가요?ㅠㅠ
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
kimsuin님의 질문에 대해, 함수 내에서 Provider 관련 객체에 접근하기 위한 방법을 질문하신 것으로 이해됩니다. 특히 StateNotifierProvider를 이용해 데이터를 관리하면서, ProviderContainer를 사용하여 함수 내부에서 Provider에 저장된 데이터를 불러오는 과정에 대한 질문이신 것 같습니다.
같은 컨텍스트에서 Provider 관련 객체를 함수 내에서 사용하는 방법에 대한 유사 질문과 그에 대한 해결 방법을 제공하는 게시물이 있어 이를 공유드립니다.
- 제목: StateNotifierProvider 실습에서의 답변이 함수 내에서 상태 관리 객체를 효율적으로 사용하는 방법에 대한 내용을 포함하고 있습니다. 이 답변은
Provider의 사용법에 대해 깊이 있는 설명을 제공하며, 특히 상태 변화를 감지하고 이에 따라 함수를 트리거하는 방법에 대한 유익한 정보를 포함하고 있습니다.
- 코드팩토리님의 답변:
List에 add() 함수를 사용할 때와 달리, 변수의 메모리 주소가 변해야 watch()가 실행된다는 점을 강조하며, 모든 상태 관리 도구에서 변수의 실제 메모리 주소 변화를 감지하여 상태 변화를 트리거한다는 점을 설명합니다. 이는 함수 내에서 프로바이더를 사용할 때도 중요한 원리로 적용될 수 있습니다.
특히, 함수 내에서 Provider를 사용할 때는 ProviderContainer 객체를 직접 생성하고 접근하는 방법이 유용할 수 있으나, 이를 통해 얻어진 데이터의 변경을 감지하고 UI가 반영되기 위해서는 Flutter 위젯 라이프사이클과 함께 동작하는 watch 등의 메서드를 적절히 사용해야 합니다. 첨부된 링크의 설명을 통해, 함수 내에서 상태를 관리하고 접근하는 방법에 대한 보다 구체적인 아이디어를 얻으실 수 있을 것입니다.
질문하신 내용이 함수 내부에서 Provider 사용에 초점을 맞추고 있으므로, 주어진 링크와 설명이 직접적인 해결책을 제공하지는 않을 수 있습니다. ProviderContainer의 사용법 및 Provider의 상태 관리 방법에 대한 더 구체적인 답변을 원하신다면, 해당 강의의 Q&A 섹션을 통해 더 자세한 질문을 남기시는 것도 하나의 방법일 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
Isar 마지막 업데이트는 2년전입니다.
0
30
0
FlutterSecureStorage 질문
0
31
0
Dio onError Interceptor 만드는 부분에 질문이 있습니다.
0
79
2
관리자 기능에 대한 질문
0
100
2
part 'restaurant_model.g.dart';
0
92
1
36강. dio 인터셉터에 storage를 전달하는 코드가 이해 안되는데요. 도움 부탁드립니다.
0
56
2
2번 반환 상황 관련 질문
0
61
2
riverpod 3.0
0
139
2
Asset folder??
0
82
2
디자이너와 협업 시 프레임 크기 설정 관련 질문
0
113
2
FutureProvider, StateNotifierProvider 선택 기준
0
70
2
컴포넌트 모델화
0
64
2
쿼리 파라미터
0
84
2
화면 안보임
0
67
2
PaginationListView
0
54
1
강의중 37.Dio onErrorInterceptor 작업하기 dio 관련 질문입니다.
0
101
2
프로토타입이미지
0
62
2
여러 객체를 상태 관리하는 방법에 대한 질문
0
84
2
장바구니 결제하기 응답이 500이 옵니다.
0
105
2
removeFromBasket에서 await patchBasket()을 마지막에 하면 에러나는거 아닌가요?
0
67
2
이 두가지는 완전히 동일한 기능인가요?
0
106
3
내부 코드를 작성하지 않은 CursorPaginationLoading가 어떻게 로딩상태를 갖는지 잘 모르겠습니다...
0
77
2
_SplashScreenState에서 storage를 late로 호출해서 한번만 불러와도 되나요?
0
86
2
코딩 작성 순서 관련 질문
0
88
2





