작성
·
19
0
TodayBanner
위젯에서 required 파라미터를 전달하지 않았는데 오류 없이 실행됩니다.
안녕하세요. 수업 중에 위젯 간 데이터 전달 구조를 연습하면서 이상한 현상을 발견해서 질문드립니다.
제가 만든 TodayBanner
위젯은 아래와 같이 selectedDay
를 required
로 받도록 작성돼 있습니다:
class TodayBanner extends StatelessWidget {
final DateTime selectedDay;
const TodayBanner({
required this.selectedDay,
super.key,
});
@override
Widget build(BuildContext context) {
return Text('${selectedDay.year}년 ${selectedDay.month}월 ${selectedDay.day}일');
}
}
복사편집
class TodayBanner extends StatelessWidget { final DateTime selectedDay; const TodayBanner({ required this.selectedDay, super.key, }); @override Widget build(BuildContext context) { return Text('${selectedDay.year}년 ${selectedDay.month}월 ${selectedDay.day}일'); } }
그리고 HomeScreen
이나 다른 어떤 파일에서도 TodayBanner(selectedDay: ...)
처럼 값을 전달해준 기억이 없고, 전체 프로젝트 검색으로도 그런 코드가 보이지 않습니다.
그런데도 앱 실행 시 아무런 에러도 없이 정상적으로 selectedDay
관련 값이 화면에 출력됩니다.
required
키워드가 있는 생성자에서 값을 전달하지 않으면 컴파일 타임에 에러가 나야 정상 아닌가요?
혹시 이전에 required
키워드를 빼놨다가 나중에 붙이고, hot reload 상태로 캐시가 꼬여서 생기는 현상일 수도 있을까요?
전역변수로 선언된 것도 없고, 다른 클래스에서 넘겨준 흔적도 없는데 이런 경우가 실제로 발생할 수 있는 구조인지 궁금합니다.
혹시 제가 놓친 부분이 있는 걸까요?
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. lgrsust님.
required
키워드를 사용한 생성자에서 파라미터 값을 전달하지 않으면 일반적으로 컴파일 타임에 에러가 발생합니다. 하지만 말씀하신 상황에서 오류 없이 실행이 되는 이유는 몇 가지 가능성이 있을 수 있습니다.
잘못된 캐시 상태: hot reload
를 여러 번 수행하거나, 코드 변경 후에 캐시가 정확히 반영되지 않을 경우 의도치 않은 상태로 남아 있을 수 있습니다. IDE나 빌드 시스템에서 build
혹은 run
을 다시 시도하여 캐시를 재설정해 보십시오.
이전 코드 상태: hot reload
기능을 사용하다 보면 이전 상태의 코드가 남아 있을 수 있습니다. 이 경우, 전체 앱을 완전히 종료하고 새로 시작해 보세요.
default parameter initializer 사용 가능성: selectedDay
가 위젯 외부에서 초기화되거나, 디버깅 상에서는 드물게 발생할 수 있는 초기화에 따른 예외 처리가 있을 수 있습니다.
IDE 및 도구의 문제: 사용 중인 IDE 또는 Flutter 도구가 최신인지 확인하세요. 도구나 플러터의 버그일 가능성도 배제할 수 없습니다.
해당 문제의 원인을 파악하기 위해 다음을 시도해 보세요:
flutter clean
을 터미널에 입력하여 프로젝트의 빌드 캐시를 초기화합니다.아래의 유사한 질문들을 참고하면 추가적인 도움이 될 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
넵 ㅎㅎ 첫 질문인데 빠른 답변 감사드립니다. 확인해 보니 깐 강의 진행 중 아직 HomeScreen 위젯 트리에서 TodayBanner 위젯을 호출하지 않은 상황 이였고 그래서 빌드 실행 시 발생할 오류가 없어서 빨간줄이 안떴었던것 같네요 나중에 강의 끝까지 보면서 TodayBanner 호출 해줄 때 깨닳았습니다. 좋은 강의 올려주셔서 감사합니다 ~좋은 하루 되세요~