-
Flutter WebView 버전 이슈 대응flutter 2025. 2. 20. 11:33반응형
Unhandled Exception: PlatformException(error, Unknown feature SUPPRESS_ERROR_PAGE, null, java.lang.RuntimeException: Unknown feature SUPPRESS_ERROR_PAGE
원인 : 안드로이드 내장 시스템 WebView 구현 버전이 낮아 발생하는 오류
[ 개발자 옵션 → WebView 구현 ] 에서 버전 확인가능
현재 80대 버전에서 오류 발생
조치 방법
Flutter MethodChannel 을 이용해서 Kotlin 을 코드로 다비이스 WebView 버전을 가져 옵니다.
참고. 아래는 저희가 처리하는 예시 입니다.
import android.webkit.WebView import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugin.common.MethodChannel class MainActivity : FlutterActivity() { private val CHANNEL = "webview_version" override fun configureFlutterEngine(flutterEngine: FlutterEngine) { super.configureFlutterEngine(flutterEngine) MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result -> if (call.method == "getWebViewVersion") { val webViewVersion = WebView(this).settings.userAgentString result.success(webViewVersion) } else { result.notImplemented() } } } }
Flutter 에서 MethodChannel을 호출 합니다.
ExerciseList.dart
if (Platform.isAndroid) { const platform = MethodChannel("webview_version"); try { final String version = await platform.invokeMethod("getWebViewVersion"); // 정규식을 사용하여 WebView 버전만 추출 RegExp regExp = RegExp(r'Chrome/(\d+)\.'); Match? match = regExp.firstMatch(version); if (match != null) { String majorVersion = match?.group(1) ?? "Unknown"; if (int.parse(majorVersion) < 100) { // 100 이상으로 올려도 괜찮습니다. updateWebView() return; } } else { print("WebView 버전을 찾을 수 없습니다."); } } on PlatformException catch (e) { print("WebView 버전 가져오기 오류: '${e.message}'."); } void updateWebView() async { final url = "https://play.google.com/store/apps/details?id=com.google.android.webview"; if (await canLaunch(url)) { await launch(url); } } }
위 내용은 웹뷰(운동) 호출 전 페이지에서 버전을 체크 후 플레이 스토어로 이동하는 로직입니다.
스토어에 들어가서 받아야할 앱 이미지
추가 오류 대응 법
그래도 아래의 오류가 난다면?
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(error, Unknown feature SUPPRESS_ERROR_PAGE, null, java.lang.RuntimeException: Unknown feature SUPPRESS_ERROR_PAGE
pubspec.yaml 에서 [webview_flutter] 해당 패키지를 제거를 해야합니다.
flutter_inappwebview 와 webview_flutter 충돌로 인한 오류가 발생합니다.
반응형'flutter' 카테고리의 다른 글
pub.dev - flutter package publish (패키지 올리기) (1) 2025.03.06 생체 인증 추가 (0) 2025.02.25 RiverPod 배우기 (0) 2025.02.13 PlatformException(VideoError, Failed to load video: Operation Stopped, null, null) (0) 2025.02.12 Flutter - ios 인앱 결제 (1) 2025.01.09