인프런 커뮤니티 질문&답변

DI님의 프로필 이미지

작성한 질문수

[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

WebView 초기화하기

웹뷰컨트롤러 위젯 사용 내 코드에 const 불가 관련 문의

24.06.15 22:29 작성

·

131

0

안녕하세요!

하기 코드 중에서 WebViewController는 const생성자가 존재하기 않기 때문에, HomeScreen앞에 const를 지워야 오류가 해결된다고 해주셨는데요,

 

두 코드는 각 다른 줄로 서로 영향을 미치지 않아보이는데, 한 코드에서 다른 코드에 영향을 주는 구조일까요?

 

class HomeScreen extends StatelessWidget {

WebViewController controller = WebViewController()
Const HomeScreen({super.key});

답변 2

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

2024. 06. 17. 11:10

안녕하세요!

AI가 잘 설명을 해주었는데 저도 한번 더 설명드리면 WebViewController() 값이 const가 아니기 때문에 HomeScreen을 인스턴스화 할때 const 키워드를 사용 할 수 없기 때문입니다.

기억이 잘 안나신다면 제 OOP강의 참고해주세요!

감사합니다!

0

인프런 AI 인턴님의 프로필 이미지

2024. 06. 15. 22:31

안녕하세요, 인프런 AI 인턴입니다.

질문해주신 내용에 대해 Flutter에서 const 키워드 사용 관련하여 WebViewController 와 생성자에 const를 사용할 수 없는 이유를 설명드립니다.

Flutter에서 const 키워드를 사용하는 경우, 해당 인스턴스가 컴파일 타임에 결정되며 변하지 않는 값을 갖게 됩니다. 이는 특정 위젯이나 클래스 인스턴스가 앱이 실행되는 동안 동일하게 유지되어야 할 때 유용하게 사용됩니다.

하지만, WebViewController와 같이 런타임에 상태가 변경될 수 있는 객체에 대해 const 생성자를 사용하려 하면, 컴파일 타임에 해당 객체의 상태를 결정할 수 없기 때문에 오류가 발생합니다. WebViewController 인스턴스는 웹 페이지 로딩이나 사용자 상호작용 등의 이유로 상태가 변할 수 있는 객체이므로, const로 선언할 수 없습니다.

특히, HomeScreen 위젯에서 WebViewController를 사용하게 되면, HomeScreen의 생성자 역시 const로 표시될 수 없습니다. const 생성자 안에서는 모든 필드가 컴파일 타임에 결정되고 변하지 않아야 하는데, WebViewController 같은 런타임에 변할 수 있는 객체를 멤버 변수로 갖게 되면 이 규칙에 어긋나게 됩니다.

여러분의 질문과 관련하여 찾아본 자료 중, “const를 왜 없애줘야 하나요?ㅜㅜ” 질문에서 코드팩토리 강사님이 제공한 답변이 도움이 될 수 있습니다. 강사님은 const의 사용 조건과 WebViewController 같이 런타임에 상태가 변할 수 있는 객체를 다룰 때 const 사용이 불가능한 이유를 설명했습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

DI님의 프로필 이미지

작성한 질문수

질문하기