구조적인 부분에서의 질문
안녕하세요. 강의 너무 잘 듣고 있습니다.
다름이 아니라 구조적인 부분에서 질문을 한가지 드리고 싶습니다.
HomeScreen이 StatefulWidget으로 정의되어있고 선택된 날짜가 변경될때마다 _ScheduleList가 변경되며 rebuild되는 구조를 가지고 있는데 이렇게 될 경우 _ScheduleList 안에 StreamBuilder가 다시 initialize되는 것을 확인하였습니다. 따라서 print(snapshot.data) 시 에도 두번 연속적으로 값이 뜨게 됩니다. 물론 문제는 없지만, 실 앱 실행 시 stream에서 재연결을 계속 반복하게 되는데 문제가 없는지 궁금합니다.
답변 1
0
drift 2.6.0 사용
자체적으로 답변이 나왔습니다.
생각한 방식은 두가지 입니다.
_ScheduleList 위젯을 재빌드를 못하도록 하기
stream 값을 외부로 노출시키기
1번은 stateless 위젯이든 stateful 위젯이든 build 함수는 setstate 시 무조건 불리게 되어 불가
2번은 watchSchedules에 선택한 날짜에 대한 값이 전달되고 그에 따라 stream되는 값이 달라져야하기 때문에 불가
하다고 생각하였습니다.
추가적으로 watchSchedules 시에 두번 불러와 지는 이유는 snapShot의 connectionState가 Connection.waiting을 일때 과거 캐시된 데이터를 불러오고, Connection.active로 변경되기 때문입니다.
1
안녕하세요! 말씀하신 것처럼 만약에 두번 렌더링을 한번으로 변경 할 수 있다면 매우 좋지만 플러터처럼 값의 변경에 의해 reactive 하게 렌더링하는 프레임워크의 경우 어느정도 중복 렌더링이 있을거라는 가정을 깔고 가긴 합니다. 나중에 로직이 복잡해지면 로직의 완전한 분리가 렌더링 몇번 적게하는 효율보다 앱을 유지보수하는데 더욱 편리합니다. 플러터 또한 이런 요소를 예상하고 만든 프레임워크기때문에 어느정도는 감안하고 사용하셔도 괜찮습니다. (물론 줄일 수 있다면 무조건 좋습니다)
198강 (){onTap(e);}의 이해 돕기
0
25
1
video_call 플러그인 설치후 에러 발생
0
45
1
SDK 안드로이드 설치 질문!
0
59
1
코드팩토리 디스코드 링크 다시 부탁드려요~
0
92
1
Webview를 이용해서 URL 상의 페이지 출력 불가
0
69
1
홈스크린 함수를 함축해서 main.dart에 옮기는 문제
0
55
1
플레이스토어
0
59
1
아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?
0
55
1
가이드라인 질문
0
57
0
emulator 에러 환경설정 뭐가 문제 일까요??
0
76
1
emulator 실행 오류
0
93
3
Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련
0
71
1
pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의
0
43
1
setState()를 호출하지 않으면 build가 실행 안되는 건가요?
0
53
1
video_call 플러그인 설치시 에러문제
0
64
1
children 안의 if 문에서 { } 못쓰는 이유?
0
48
1
이렇게 오류가 떠요
0
63
1
AppBar 사용했는데
0
61
2
[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다
0
56
1
StatefulWidget 실습 에러가 발생합니다.[해결완료]
0
63
1
Video Player 프로젝트에 대한 추가 질문
0
53
0
Row위젯이나 column위젯의 위치는 누가 정하나요??
0
42
1
geolocator 오류때문에 개발진행이 불가능입니다
0
63
1
API 관련 이슈
0
86
2





