앱 내에 웹 콘텐츠를 간단히 표시할 수 있게 해주는 패키지이다.
PlatformException
오류 발생 시: Terminal에 flutter clean
명령어를 입력하는 방법으로 해결할 수 있다.WebView 3.x.x
Scaffold(
body: WebView(
initialUrl: '홈페이지 URL',
javascriptMode: JavascriptMode.unrestricted,
)
);
initialUrl
: 최초 실행 될 URL 링크javascriptMode
: WebView에서 자바스크립트를 허용하게 하는 코드WebView 4.x.x
메인 함수 안에 WidgetsFlutterBinding.ensureInitialized();
코드를 작성한다.
AppBar
- appBar: AppBar(
title: Text('텍스트'),
centerTitle: true,
),
최초 설정은 안드로이드는 왼쪽 정렬, 아이폰은 가운데 정렬이다. 따라서 centerTitle
파라미터를 통해 두 기기 모두에서 가운데 정렬로 타이틀을 보여주도록 설정해주었다.
WebView 3.x.x
class HomeScreen extends StatelessWidget {
WebViewController? controller;
HomeScreen({super.key});
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('텍스트'),
actions: [
IconButton(
onPressed: (){
if(controller == null) {
return;
}
controller!.loadUrl('홈페이지 URL');
},
icon: Icon(
Icons.home,
),
),
],
),
body: WebView(
onWebViewCreated: (WebViewController controller){
this.controller = controller;
},
initialUrl: '홈페이지 URL',
javascriptMode: JavascriptMode.unrestricted,
)
);
}
}
WebViewController
를 선언IconButton
을 통해 AppBar에 아이콘으로 된 버튼을 추가해 주었다.onPressed
: 버튼을 눌렀을 때 어떤 동작을 할 것인지 선언.icon
: 어떤 아이콘을 버튼으로 만들 것인지 선언. Icon()
함수를 이용해 선언해주었다. Icons.home
을 통해 플러터에서 기본으로 제공하는 아이콘을 사용하였다.WebView 4.x.x
final homeUrl = Uri.parse('홈페이지 URL');
class HomeScreen extends StatelessWidget {
WebViewController controller = WebViewController()
..setJavaScriptMode(JavaScriptMode.unrestricted)
..loadRequest(homeUrl);
HomeScreen({super.key});
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('텍스트'),
actions: [
IconButton(
onPressed: (){
controller.loadRequest(homeUrl);
},
icon: Icon(
Icons.home,
),
),
],
),
body: WebViewWidget(
controller: controller,
),
);
}
}
WebView
가 WebViewWidget
으로 변경WebViewWidget
에는 controller
만 선언controller
를 선언하면서 선언