해결된 질문
작성
·
968
·
수정됨
답변 2
0
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,
),
);
}
}
0
안녕하세요!
해당 에러는 버전과 관계가 없습니다.
const 가 꼭 들어가야하는 조건으로 코드를 작성하셨는데 const 키워드를 입력하지 않아서 그런걸로 보입니다.
조금 더 정확한 문제를 파악하려면 정확한 에러 위치와 더 넓은 분량의 코드를 제공해주세요.
감사합니다!
MaterialApp 앞에 const로 값을 설정하셨는데 HomeScreen은 생성할때 const 생성자 없이 생성하셨습니다. 다트언어 강의에서 기억을 해보시면 const의 경우 빌드타임에 값을 알 수 있어야합니다. 추가로 나중에 설명을 드리는데 const는 한번 빌드되면 해당 위젯을 나중에 재사용합니다. 그렇기때문에 const로 선언이 가능한 값들만 const 키워드를 사용하셔야합니다. 제가 제공해드리는 소스코드와 코드를 비교해보시면 const 키워드의 위치가 어떤 차이가 있는지 확인 가능하실겁니다. const 위젯의 자세한 정보는 섹션 11 const constructor에서 확인해보세요!