작성
·
178
0
안녕하세요. 정말 좋은강의 감사드립니다. 제가 지금 첫번째로 듣고있는중이라 정확히 모든걸 이해하면서 듣진 못하고있는데 장바구니에서 결제하기 눌러서 결제 완료하고 주문탭가면 방금 주문한 내역이 반영되지 않고 리프레쉬한번 해야 반영이 되는데 리프레쉬 안하고 바로 주문탭에 반영시키는 방법 생각해보다가 그냥
basket_screen.dart에서 결제하기 버튼을 눌렀을때
onPressed: () async {
final resp = await ref.read(orderProvider.notifier).postOrder();
if(resp){
await ref.read(orderProvider.notifier).paginate(forceRefetch:true);
context.goNamed(OrderDoneScreen.routeName);
}else{
ScaffoldMessenget.of~~
}
}
위와 같은식으로 그냥 버튼 누르고 바로 paginate(forceRefetch:true);을 통해 강제로 데이터 한번 갱신해버리는식으로 했는데 이렇게하면 안좋은게 있을까요..? 만약 안좋다면 어떤식으로 해야 주문탭에 바로 반영이 되게 할 수 있을까요 ㅜㅜ 주문탭에 옵티미스틱 리스폰스 코드를 어떻게 만들어서 어디에 적용시켜야할지 잘 모르겠습니다 ㅜㅜ
답변 2
0
안녕하세요!
상관은 없습니다.
또는 주문탭으로 이동 할때마다 refresh가 되도록 하면 됩니다.
예를들어서 Tab을 제어하는 컨트롤러에 같은 코드를 넣어주신다면 리프레시가 됩니다.
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다.
khs50851님의 질문은 Flutter 앱에서 장바구니의 “결제하기” 버튼을 누른 후, 주문이 완료되고 바로 주문 탭에서 최신 주문 내역을 반영하는 방법에 관한 것으로 보입니다. 이와 유사한 상황을 다룬 기존 질문이 있어 이를 참고해 드릴 수 있습니다.
해당 문제 해결을 위한 가이드를 다룬 질문들 중 하나는 “orderProvider 관련 질문이 있습니다.” 입니다. 이 답변에서는 주문 후 바로 주문 탭에서 최신 리스트를 볼 수 있도록 orderProvider
의 상태를 업데이트하는 방법을 설명하고 있습니다. 고민하신 방법과 유사하게 postOrder
함수를 호출한 후 paginate()
함수를 호출하여 상태를 갱신하는 예시도 제시되어 있습니다.
상세 내용으로는, 코스 강사께서는 orderProvider
의 상태를 직접 갱신하는 것이 맞다고 하며, paginate()
를 다시 실행하는 것보다는 최적의 응답 즉, optimistic response를 처리하는 것처럼 메모리에 데이터를 직접 넣어주는 방법을 제안하고 있습니다. 이는 효율적 리소스 활용 측면에서 권장된 방법이기도 합니다.
이 외에도 “주문페이지 리프레쉬 인디케이터 문제” 라는 질문에 대한 답변에서 비슷한 상황을 다루고 있으며, 이 경우 강사께서는 forcerRefetch: true
를 주입하여 새로 고침의 필요성에 대해 논의하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.