캘린더 스케줄 강의 중 질문 3가지 드립니다
296
작성한 질문수 4
캘린더 스케줄 프로젝트 강의를 수강중입니다.
몇가지 여쭤보고 싶은 게 있어서 질문 드립니다.
schedule_bottom_sheet.dart 내에서 renderTextField() 함수에서 시간입력인 경우 키보드 타입을 TextInputType.number로 주셨는데, 제가 실제 기기(iPhone11 Pro Max)에서 이 부분이 실행될 때 항상 다음과 같은 로그가 뜹니다.
Can't find keyplane that supports type 4 for keyboard iPhone-PortraitTruffle-NumberPad; using 27315_PortraitTruffle_iPhone-Simple-Pad_Default구글링 해보니 시뮬레이터 사용할 때 대응방법만 있고, 실제 기기 사용할 때 해결방법은 찾을 수가 없었습니다. 실제 기기 사용할 때 해결방법을 알려주시겠습니까?
drift_database.dart 내에서 특정 날짜 조건에 맞는 스케줄만 Stream으로 가져오기 부분에서 인자로 받은 date변수는 toLocal()이 필요 없는 것이지요? (실험을 해보니 toLocal() 하고 안 하고 차이는 없는 것 같았습니다.)
home_screen.dart 내에서 ScheduleList 클래스의 build함수에서, print(snapshot.data)를 찍어보니, 특정 날짜를 선택할 때 항상 2번 빌드가 되면서 2번 snapshot.data가 print되었습니다. 가령 오늘 8월 19일에 스케줄 없고, 8월 20일에 스케줄이 2개라면, 8월 19일이 선택된 현재 상태에서 8월 20일을 선택하면 ==> 먼저 빈 리스트(8월 19일)가 하나 출력되고, 그 후에 다시 스케줄 2개 담긴 리스트가 출력되었습니다. 8월 20일이 선택된 현재 상태에서 다시 8월 19일을 선택하면 ==> 먼저 스케줄 2개 담긴 리스트가 출력되고, 다시 빈 리스트가 출력되는 식입니다. StreamBuilder가 원래 이런 것인지... 이 부분을 조금 설명해주시겠습니까?
답변 1
0
안녕하세요!
1) 실제 기기 사용할 때 해결방법을 알려주시겠습니까?
제가 검색을 해보니 시뮬레이터에서만 나오는 무시해도 되는 로그로 파악됩니다. 이유는 시뮬레이터와 연결된 키보드는 실제로 numeric numberpad가 아니기 대문입니다. 아래 링크 첨부해드립니다.
https://developer.apple.com/forums/thread/126616
2) drift_database.dart 내에서 특정 날짜 조건에 맞는 스케줄만 Stream으로 가져오기 부분에서 인자로 받은 date변수는 toLocal()이 필요 없는 것이지요?
어떤 부분을 말씀하시는 건지 모르겠습니다. 현재 selectedDate 변수는 모두 utc로 통일 돼 있습니다.
3) StreamBuilder가 원래 이런 것인지... 이 부분을 조금 설명해주시겠습니까?
플러터는 화면을 다시 렌더링 할때 build()를 실행합니다. StreamBuilder 또한 build() 가 실행되면 다시 렌더링 되고 Stream 또한 다시 연결받게 됩니다. 그리고 StreamBuilder는 기존 값을 캐싱해두기 때문에 첫 렌더링때 캐싱돼있던 값이 사용됩니다. 이후 StreamBuilder에 입력된 stream으로 부터 새로운 값이 반환되면 다시한변 StreamBuilder의 builder 함수가 실행되기 때문에 snapshot이 두번 출력됩니다. 알고있어야 하는 부분이지만 신경쓰여야 하는 부분은 아닙니다. 초기에 공부했던 위젯 라이프 사이클과 FutureBuilder, StreamBuilder 강의들을 되돌아보면 플러터에서 작성하는 로직은 렌더링 횟수와 무관해야 합니다!
감사합니다!
198강 (){onTap(e);}의 이해 돕기
0
39
1
video_call 플러그인 설치후 에러 발생
0
47
1
SDK 안드로이드 설치 질문!
0
62
1
코드팩토리 디스코드 링크 다시 부탁드려요~
0
92
1
Webview를 이용해서 URL 상의 페이지 출력 불가
0
71
1
홈스크린 함수를 함축해서 main.dart에 옮기는 문제
0
56
1
플레이스토어
0
60
1
아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?
0
56
1
가이드라인 질문
0
59
0
emulator 에러 환경설정 뭐가 문제 일까요??
0
78
1
emulator 실행 오류
0
95
3
Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련
0
73
1
pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의
0
43
1
setState()를 호출하지 않으면 build가 실행 안되는 건가요?
0
54
1
video_call 플러그인 설치시 에러문제
0
66
1
children 안의 if 문에서 { } 못쓰는 이유?
0
51
1
이렇게 오류가 떠요
0
66
1
AppBar 사용했는데
0
63
2
[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다
0
58
1
StatefulWidget 실습 에러가 발생합니다.[해결완료]
0
65
1
Video Player 프로젝트에 대한 추가 질문
0
54
0
Row위젯이나 column위젯의 위치는 누가 정하나요??
0
43
1
geolocator 오류때문에 개발진행이 불가능입니다
0
64
1
API 관련 이슈
0
89
2





