해결된 질문
작성
·
90
0
안녕하세요.
"Restaurant Pagination 요청해보기" 09:45까지 선생님의 강의 따라서 잘 진행하고 있습니다.
restaurant_screen.dart의 FutureBuilder<List> 내부에서 snapshot.hasData를 print하면 다음과 같은 결과를 얻었습니다.
실행환경은 윈도우의 안드로이드 스튜디오를 사용하고 있습니다.
log file
I/flutter (10452): -------- in RestaurantScreen --------
I/flutter (10452): snapshot.error:: null
I/flutter (10452): snapshot.data:: null
I/flutter (10452): snapshot.hasData:: false
W/WindowOnBackDispatcher(10452): sendCancelIfRunning: isInProgress=false callback=io.flutter.embedding.android.FlutterActivity$1@a3bcdaa
D/EGL_emulation(10452): app_time_stats: avg=24.92ms min=12.78ms max=289.52ms count=40
I/flutter (10452): -------- in RestaurantScreen --------
I/flutter (10452): snapshot.error:: null
I/flutter (10452): snapshot.data:: [{id: 5ac83bfb-f2b5-55f4-be3c-564be3f01a5b, name: 불타는 떡볶이, thumbUrl: /img/떡볶이/떡볶이.jpg, tags: [떡볶이, 치즈, 매운맛], priceRange: medium, ratings: 4.53, ratingsCount: 100, deliveryTime: 15, deliveryFee: 2000}, {id: 15480ad3-892f-50ce-ab39-540c34c6fb5a, name: 매콤 멕시칸, thumbUrl: /img/멕시칸/야채타코.jpg, tags: [멕시칸, 매콤, 할라피뇨], priceRange: expensive, ratings: 4.54, ratingsCount: 100, deliveryTime: 30, deliveryFee: 0}, {id: cf11d36a-7c61-5105-8306-5c8c7ff2c140, name: 엄마손 볶음밥, thumbUrl: /img/볶음밥/새우볶음밥.jpg, tags: [분식, 볶음밥, 김치], priceRange: cheap, ratings: 4.53, ratingsCount: 100, deliveryTime: 20, deliveryFee: 3000}, {id: 4729bd37-8927-5150-b036-395da7e7bb42, name: 신선 코팩 스시, thumbUrl: /img/스시/중간모듬스시.jpg, tags: [스시, 일식, 연어], priceRange: expensive, ratings: 4.54, ratingsCount: 100, deliveryTime: 30, deliveryFee: 0}, {id: 4fcf09a5-03ee-5a2e-9806-110285030c8
I/flutter (10452): snapshot.hasData:: true
잠시,
if (!snapshot.hasData) {
return Container();
}
위 코드가 실행이 되고, 또 다시 RestaurantScreen Class가 호출되어
return ListView.separated() 로직이 실행되는 것 같습니다.
SplashScreen Class의 initState() 함수에서 RootTab Class로 호출하고,
RootTab Class에서 RestaurantScreen Class를 호출하는 로직으로 파악되데 원인을 잘 모르겠습니다.
감사합니다.
답변 1
0
안녕하세요!
어떻게 실행돼야 정상이라고 생각하시는지 추가해주시면 답변드리기 편할 것 같습니다!
지금은 실행되는 순서만 나열해두셔서 어떤게 문제라고 말씀하시는건지 정확히 파악하기 어렵습니다.
감사합니다!
안녕하세요!
데이터를 요청하고 아직 데이터를 받아오지 못한 상태에서의 로딩 상태를 말씀하시는 것 맞죠?
저희가 지금 서버를 로컬에서 실행하고 있어서 아주 잠깐 반짝하는 느낌이 드는거지만 외부에 서버를 두기 시작하면 훨씬 더 오래 로딩이 걸립니다.
첫번째 로딩은 어쩔수가 없습니다. 데이터가 없기 때문이죠.
다만 이후 로딩부터는 저희가 캐싱등을 사용하여 어느정도 페이크를 줄 수 있습니다 (강의에서 다룹니다)
감사합니다!
안녕하세요. 코드팩토리님
답변을 주셔서 정말 감사합니다.
질문내용은 RestaurantScreen Class에서 if (!snapshot.hasData) { return Container(); } 코드가 실행되는 이유에 대해서 알고 싶어서 질문을 드렸습니다. 첫번째로 !snapshot.hasData가 false가 되어서 return Container();가 실행이 되고, 다시 값을 가져와서 return ListView.separated(.....)가 실행되기 때문에 잠시 동안 화면에 로딩이 걸려서 해결책이 있는지 궁금합니다. 또한 이렇게 처리하면 좋을까요? 강의에서 언급하신 CircularProgressIndicator() 이외는 다른 방법은 없는가에 대해 궁금합니다.
바쁘신 중에 빠른 답변 정말 감사합니다.