작성
·
90
0
안녕하세요.
먼저 정말 좋은 강의를 만들어 주셔서 감사합니다.
초보자로써 많은 도움을 받고 있습니다.
schedule_bottom_sheet.dart의 onSavePressed() 함수를 통하여 값은 입력이 되었습니다.
I/flutter ( 6559): [ScheduleTableData(id: 1, startTime: 12, endTime: 14, content: Test Flutter !!!, date: 2024-07-24 00:00:00.000, color: 2196F3, createdAt: 2024-07-24 07:55:37.000), ScheduleTableData(id: 2, startTime: 15, endTime: 17, content: AAAAAAAA !!, date: 2024-07-25 00:00:00.000, color: F44336, createdAt: 2024-07-24 07:56:16.000), ScheduleTableData(id: 3, startTime: 9, endTime: 11, content: Flutter 프로그래밍, date: 2024-07-24 00:00:00.000, color: F44336, createdAt: 2024-07-24 10:34:38.000), ScheduleTableData(id: 4, startTime: 9, endTime: 11, content: Flutter 프로그래밍, date: 2024-07-24 00:00:00.000, color: F44336, createdAt: 2024-07-24 10:35:41.000), ScheduleTableData(id: 5, startTime: 12, endTime: 14, content: I want to trip in Japan !!!, date: 2024-07-23 00:00:00.000, color: F44336, createdAt: 2024-07-24 10:43:57.000)]
I/flutter ( 6559): snapshot.hasData: false
home_screen.dart의 FutureBuilder에서 builder의 snapshot에서 DB에 등록된 값을 가져오지 못하고 있습니다. snapshot.hasData -> false 이고 snapshot.connectionState은 waiting 상태입니다.
if (!snapshot.hasData &&
snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(),
);
}
위 코드에서 조건에 만족하기 때문에 if문에서 CircularProgressIndicator()가 실행 되어야 하는데, CircularProgressIndicator()가 표지되지 않습니다.
다음과 같이 수정하여 확인한 결과, 글자가 짧은 순간 표시되었다가 사라졌습니다.
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircularProgressIndicator(),
SizedBox(height: 32.0),
Text(
'Loading, Please wait.....',
style: TextStyle(
fontSize: 18,
color: Colors.red,
fontWeight: FontWeight.w700,
),
),
],
),
감사합니다.
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
codefomatter님의 질문은 Flutter 개발 과정에서 흔히 겪을 수 있는 문제와 관련이 있습니다. 여기서 주요한 포인트는 FutureBuilder
의 사용과 그 안에서의 snapshot.hasData
의 값이 false
가 반환되는 경우, 즉 데이터를 불러올 때 까지 기다리는 동안의 UI 처리에 관한 것입니다.
문제를 해결하기 위하여 검토해보았지만, codefomatter님의 특정 상황에 정확히 일치하는 기존 답변을 찾는 것은 어려웠습니다. 하지만, 비슷한 문맥에서 발생할 수 있는 문제와 해결책을 제시하는 몇 가지 자료들을 참조하면 도움이 될 것 같습니다.
비록 정확히 일치하는 경우는 아니지만, “섹션 21. 캘린더 스케쥴러 오류 문의드립니다.“와 관련된 섹션 21. 캘린더 스케쥴러 오류 문의드립니다.에서 비슷한 문맥의 문제가 논의됩니다. 여기서는 FutureBuilder
를 사용할 때 null 반환 문제와 데이터 로딩 관련 조언이 이루어집니다.
또한, “모달창이 안뜹니다.“라는 질문에서 모달창이 안뜹니다. 파트에서 snapshot.hasData
의 처리에 대한 간접적인 이야기가 나옵니다. 여기서는 데이터 로딩 시점과 UI 표시 방법에 대한 토론이 있었습니다.
스케쥴러 프로젝트를 수행하시면서 snapshot.hasData가 false 반환 문제는 데이터가 비동기적으로 로드되는 과정에서 발생할 수 있습니다. 이는 데이터가 아직 불러와지지 않았거나, 데이터 불러오는 과정에 문제가 있을 때 발생할 수 있습니다. FutureBuilder
내부에서 snapshot.hasData
값이 false를 반환하는 경우, UI에서 로딩 표시기(CircularProgressIndicator
)가 사라지지 않는 것과 관련하여, 로딩 상태를 나타내는 로직이 정확히 수행되는지, 그리고 데이터 로딩 상태(ConnectionState.waiting
) 관리가 올바르게 이루어지고 있는지 확인하는 것이 좋습니다.
정확한 해결을 위해서는 더 많은 코드와 해당 프로젝트의 구조를 이해할 필요가 있을 수 있습니다. 이처럼, 문제의 정확한 원인을 파악하고자 할 때는 간단한 코드 변경, 상태 관리 로직 확인, 그리고 필요한 경우 StreamBuilder
나 FutureBuilder
의 사용 방법을 다시 한번 확인하는 것이 유익할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.