inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

WebView 초기화하기

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

254

DI

작성한 질문수 9

0

안녕하세요!

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

 

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

 

class HomeScreen extends StatelessWidget {

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

flutter 클론코딩

답변 2

0

코드팩토리

안녕하세요!

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

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

감사합니다!

0

인프런 AI 인턴

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

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

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

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

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

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

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

198강 (){onTap(e);}의 이해 돕기

0

27

1

video_call 플러그인 설치후 에러 발생

0

45

1

SDK 안드로이드 설치 질문!

0

60

1

코드팩토리 디스코드 링크 다시 부탁드려요~

0

92

1

Webview를 이용해서 URL 상의 페이지 출력 불가

0

70

1

홈스크린 함수를 함축해서 main.dart에 옮기는 문제

0

55

1

플레이스토어

0

59

1

아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?

0

55

1

가이드라인 질문

0

57

0

emulator 에러 환경설정 뭐가 문제 일까요??

0

76

1

emulator 실행 오류

0

93

3

Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련

0

71

1

pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의

0

43

1

setState()를 호출하지 않으면 build가 실행 안되는 건가요?

0

53

1

video_call 플러그인 설치시 에러문제

0

64

1

children 안의 if 문에서 { } 못쓰는 이유?

0

48

1

이렇게 오류가 떠요

0

64

1

AppBar 사용했는데

0

61

2

[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다

0

56

1

StatefulWidget 실습 에러가 발생합니다.[해결완료]

0

63

1

Video Player 프로젝트에 대한 추가 질문

0

53

0

Row위젯이나 column위젯의 위치는 누가 정하나요??

0

42

1

geolocator 오류때문에 개발진행이 불가능입니다

0

63

1

API 관련 이슈

0

86

2