[Flutter] WebView 키보드 미노출 오류 해결

💛DabongLog·2022년 7월 13일
0

📌이슈 해결

목록 보기
1/5
post-thumbnail
post-custom-banner

오늘은 안드로이드 플랫폼에서 빈번하게 발생하는 웹뷰 하이브리드 관련 이슈에 대해 다뤄보려고 한다.


안드로이드 기기에서 휴대폰에 따라 웹뷰 내의 TextField를 터치해도 키보드가 올라오지 않는 이슈가 발생했다.

어떤 조건이 있는 것도 아니고, 같은 기종에, 같은 API 레벨인데도 어떤 기기는 뜨고 어떤 기기는 안 뜨는 혼란스러운 이슈에 애를 많이 먹었는데 결론적으로 해결책은 아주 간단하다.

1. webview_flutter 패키지 키보드 미노출 해결

해당 WebView가 있는 클래스의 initState()에서 다음의 코드로 초기화 시켜준다.

if(Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();

2. flutter_inappwebview 패키지 키보드 미노출 해결

InAppWebView 위젯의 initialOptions 속성에 다음과 같은 값을 적용시킨다.

initialOptions: InAppWebViewGroupOptions(
                  android: AndroidInAppWebViewOptions(
                    useHybridComposition: true
                  )
                ),

혹시 위의 코드로도 해결이 되지 않는다면, initState에서 아래의 코드를 실행시켜보기 ..

if (Platform.isAndroid) {

      await AndroidInAppWebViewController.setWebContentsDebuggingEnabled(true);

      var swAvailable = await AndroidWebViewFeature.isFeatureSupported(
          AndroidWebViewFeature.SERVICE_WORKER_BASIC_USAGE);
      var swInterceptAvailable = await AndroidWebViewFeature.isFeatureSupported(
          AndroidWebViewFeature.SERVICE_WORKER_SHOULD_INTERCEPT_REQUEST);

      if (swAvailable && swInterceptAvailable) {
        AndroidServiceWorkerController serviceWorkerController =
        AndroidServiceWorkerController.instance();

        await serviceWorkerController
            .setServiceWorkerClient(AndroidServiceWorkerClient(
          shouldInterceptRequest: (request) async {
            return null;
          },
        ));

      }
    }


이렇게 하면 안드로이드 웹뷰 내에서 키보드가 잘 노출한다.



오늘도 삽질중 ...

profile
모바일 어플리케이션 개발자 (Flutter, iOS, Android)
post-custom-banner

0개의 댓글