Flutter WebView 4.0+
3.0에서 4.0으로 마이그레이션하면서 WebView 관련 변경사항
1. WebViewController 인스턴스화:
- 이제는 WebView가 위젯 트리에 추가되기 전에도 WebViewController를 인스턴스화 및 사용 가능
- 이전에는 WebView가 위젯 트리에 추가된 후에만 WebViewController를 가져올 수 있었습니다.
2. WebView 기능 대체:
- WebView 클래스가 제거
- WebView 클래스 기능이 WebViewController 및 WebViewWidget으로 분할
- WebViewController는 각 플랫폼에서 제공되는 기본 웹 뷰와 관련된 모든 기능을 처리
(예: URL 로딩, 플랫폼 뷰의 배경색 설정, 캐시 지우기 등)
- WebViewWidget은 WebViewController를 사용하고 모든 Flutter 위젯 관련 기능을 처리
(예: 레이아웃 방향, 제스처 인식기 등)
- 버전 23 이상에서는 Texture Layer Hybrid Composition을 사용
- 버전 19-23에서는 자동으로 Hybrid Composition으로 대체
- 버전 23 이상에서 수동으로 Hybrid Composition으로 전환 가능
WebViewController 초기화 예시
Scanffold 의 body 부분에서 WebViewWidget 사용예
초기화된 controller 를 인자로 받는다
WebViewController loadRequest(Uri)
AppBar action에 메뉴버튼 추가 및 각 버튼의 value 에 따라서 페이지로드
PopScope 뒤로가기 버튼 클릭시
다음과 같은 이슈로 WillPopScope 대신 PopScope 사용
WillPopScope is deprecated and shouldn't be used, Use PopScope instead
ref)
webview_flutter 4.4.2, 23.12.23, https://pub.dev/packages/webview_flutter
WebViewController class, 23.12.23, https://pub.dev/documentation/webview_flutter/latest/webview_flutter/WebViewController-class.html
PopScope class, 23.12.23, https://api.flutter.dev/flutter/widgets/PopScope-class.html
github kevin-chela, 23.12.23, https://github.com/kevin-chela/webview-flutter-codelab/tree/main/lib/src