(Null Assertion): 개발자가 해당 변수가 절대 null이 아님을 보장할 때 사용합니다.2. 상태 관리와 화면 구성 (home_screen.dart)사용자의 상호작용(날짜 선택)에 따라 화면이 변해야 하므로 StatefulWidget을 사용합니다.상태 변수 (selectedDate): 현재 선택된 날짜를 저장합니다. DateTime.utc를 사용하여 시간 정보를 배제하고 날짜 비교를 정확하게 수행합니다.
로직 (onDaySelected): 사용자가 특정 날짜를 클릭하면 setState()를 호출하여 selectedDate를 업데이트하고 UI를 다시 그립니다.
레이아웃: Scaffold와 SafeArea를 사용해 기기별 UI 간섭을 방지하고, Column으로 캘린더와 이후 추가될 일정 리스트를 세로로 배치합니다.
날짜 비교: date.year == selectedDate.year ... 형식을 통해 연, 월, 일이 모두 일치하는지 확인하여 정확한 선택 표시(Decoration)를 적용합니다.
학습 포인트 정리컴포넌트화: 복잡한 TableCalendar 설정을 별도 파일로 분리하여 코드가 깔끔해졌습니다.
UI 커스텀: BoxDecoration과 TextStyle을 활용해 기본 캘린더를 앱의 브랜드 색상(PRIMARY_COLOR)에 맞춰 세밀하게 디자인하는 방법을 익혔습니다.
데이터 흐름: 위젯 간에 데이터와 함수를 주고받는 Flutter의 기본적인 데이터 흐름(Data Down, Event Up)을 실습했습니다.