본문 바로가기

Flutter admob과 webview 사용시 엄청 느려짐

상황. 

1.사용 웹뷰 패키지 : webview_flutter

2.만일 위쪽이 웹뷰가 있고 아래쪽에 admob이 달려 있다면

 

#참고: 웹뷰와 같이 있는 화면이 아니라면 느리지 않는다.

예를들면

Scaffold(
   appBar: AppBar(),
   body: WebView(),
   bottomNavigationBar: Container(
        height: 60,
        child: AdmobWrapper(),
      ),
)

형태에서 webview와 admob이 같은 레이아웃 형태라면 webview가 엄청나게 느려진다.

사용한 패키지는 webview_flutter이다.

 

그럴 땐 안드로이드 일 때만 바꿔주자.

1.상단에 추가

import 'dart:io';

 

2.StatefulWidget이라면

State 클래스의 초기화부분에서 해준다.

 

@override

void initState() {

    super.initState();

    //여기 추가

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

}

 

StatelessWidget이라면 build부분에서 해주자

 Widget build(BuildContext context) {
    if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
    return Container( WebView( ~~~~~ ) )

 

https://stackoverflow.com/questions/67211851/flutter-webview-not-working-when-adding-admob-to-the-same-screen

 

플럭인 설명란에도 보면 같은 내용이 있다.

 

Using Virtual displays 부분을 보면 된다.

1.Set the correct minSdkVersion in android/app/build.gradle (if it was previously lower than 20):

2.Set WebView.platform = AndroidWebView(); in initState(). For example:

 

https://github.com/flutter/plugins/tree/master/packages/webview_flutter/webview_flutter

 

난 1번 minSdkVersion을 20으로 올리진 않았고 19였고 2번째만 적용을 하였다. 그리고 리빌드 후 테스트 해보면

버벅거리던 웹뷰가 다시 빨라졌다.

 

웹뷰 플러그인 설명

https://www.youtube.com/watch?v=RA-vLF_vnng&t=76s

이런 경우는 겪는 경우가 별로 없나? 이슈를 찾기가 힘든거 같다.

Using Virtual displays 설명부분이 admob 쓸때 쓰면 유용하다는걸 누가 알았으랴.

개발하다보면 구현도 당연히 어렵지만 크고 작은 생각도 못한 이슈가 많이 발생한다.

이전에 경험을 해보았다면 빠르게 고치겠지만 그게 아니라면 작은 하나로 많은 시간을 보내게 된다.

혹은 결국 해결이 안되서 이전에 짜놓은 것들을 다 갈아 엎어야 하는 시간+선택을 해야 할수도 있다.

 

언제나 뭐가 튀어나올지 두렵다.

 

만날 에러면 첫번째 두번째 프로젝트에 빨리 빨리 만났으면 좋겠다. 그래야 얼른 자라고 세번째 부턴 평온해 질테니까