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

View K님의 프로필 이미지
View K

작성한 질문수

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

Controller 사용해보기

const 지우고 저장하니 에러가 뜨네요

해결된 질문

작성

·

968

·

수정됨

1

lib/main.dart:7:13: Error: Cannot invoke a non-'const' constructor where a const expression is expected.

Try using a constructor or factory that is 'const'.

home: HomeScreen(),

^^^^^^^^^^

 

같은에러가 뜨네요 왜그럴까요 ㅠㅠ

영상다시 돌려서 해봐도 똑 같네요 ㅜㅜ

버전문제일까요 ... ㅜㅜ

웹뷰는 영상조연대로 3.0.0 으로설치 했습니다

플러터는 3.7.12 최신 버전이구요

 

답변 2

0

View K님의 프로필 이미지
View K
질문자

main.dart

import 'package:flutter/material.dart';
import 'package:webview/screen/home_screen.dart';

void main() {
  runApp(
    const MaterialApp(
      home: HomeScreen(),
    ),
  );
}

home_screen.dart

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

class HomeScreen extends StatelessWidget {
  WebViewController? controller;
  final homeUrl = 'https://parkjh7764.tistory.com';
  HomeScreen({super.key}); //controller 가 const가 아니기 때문에 const를 없애준다.

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('HwanE Blog'),
        centerTitle: true,
        backgroundColor: Colors.amber,
        actions: [
          IconButton(
              onPressed: () {
                if (controller != null) {
                  controller!.loadUrl(homeUrl);
                }
              },
              icon: Icon(Icons.home_filled)),
        ],
      ),
      body: WebView(
        onWebViewCreated: (WebViewController controller) {
          this.controller = controller; //받아온 컨트롤러를 변수에 넣어준다.
        },
        initialUrl: homeUrl,
        javascriptMode: JavascriptMode.unrestricted,
      ),
    );
  }
}
코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

MaterialApp 앞에 const로 값을 설정하셨는데 HomeScreen은 생성할때 const 생성자 없이 생성하셨습니다. 다트언어 강의에서 기억을 해보시면 const의 경우 빌드타임에 값을 알 수 있어야합니다. 추가로 나중에 설명을 드리는데 const는 한번 빌드되면 해당 위젯을 나중에 재사용합니다. 그렇기때문에 const로 선언이 가능한 값들만 const 키워드를 사용하셔야합니다. 제가 제공해드리는 소스코드와 코드를 비교해보시면 const 키워드의 위치가 어떤 차이가 있는지 확인 가능하실겁니다. const 위젯의 자세한 정보는 섹션 11 const constructor에서 확인해보세요!

0

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

안녕하세요!

해당 에러는 버전과 관계가 없습니다.

const 가 꼭 들어가야하는 조건으로 코드를 작성하셨는데 const 키워드를 입력하지 않아서 그런걸로 보입니다.

조금 더 정확한 문제를 파악하려면 정확한 에러 위치와 더 넓은 분량의 코드를 제공해주세요.

감사합니다!

View K님의 프로필 이미지
View K

작성한 질문수

질문하기