Flutter: iOS 18 flutter_inappwebview Ambiguous use of 'evaluateJavaScript' 에러 해결 방법

길위에 히피·2025년 6월 10일

Flutter

목록 보기
50/56

안녕하세요! Flutter 개발자 여러분. 최근 iOS 18 업데이트를 타겟으로 하는 Flutter 프로젝트를 빌드하면서 flutterinappwebview 플러그인을 사용하다 보면 Ambiguous use of 'evaluateJavaScript(:completionHandler)'라는 에러와 마주칠 수 있습니다. 이 문제는 iOS 18과 flutter_inappwebview 플러그인 간의 호환성 때문에 발생하는데요. 오늘은 이 문제를 해결하는 두 가지 방법을 자세히 알아보겠습니다.

문제 개요
flutter_inappwebview 플러그인을 사용하고 있고, 프로젝트의 타겟 iOS 버전이 18로 설정되어 있다면 빌드 시 다음과 유사한 에러 메시지를 보게 될 거예요.

Ambiguous use of 'evaluateJavaScript(_:completionHandler)'

이건 evaluateJavaScript 함수의 오버로드된 버전이 iOS 18 환경에서 모호하게 해석될 수 있기 때문에 발생하는 문제예요.

해결 방법 1: flutter_inappwebview 플러그인 업데이트 (권장)
가장 간단하고 권장되는 해결책은 flutter_inappwebview 플러그인을 최신 버전으로 업데이트하는 거예요. 이 문제는 이미 플러그인 개발팀에서 인지하고 해결하여 새로운 버전을 배포했습니다.

버전 6.1.0 이상으로 업데이트하시면 이 에러는 자동으로 해결됩니다. pubspec.yaml 파일에서 flutter_inappwebview 버전을 6.1.0 이상으로 변경한 후, 터미널에서 flutter pub get 명령어를 실행하여 업데이트를 완료해 주세요.

dependencies:
flutter_inappwebview: ^6.1.0 # 6.1.0 또는 그 이상 버전으로 설정

해결 방법 2: 수동으로 코드 수정 (임시 또는 대안)
만약 어떤 이유로든 플러그인 업데이트가 당장 어렵거나, 임시 방편이 필요한 경우 Xcode에서 직접 코드를 수정하여 문제를 해결할 수 있어요.

에러 발생 지점 확인:
Xcode에서 빌드 에러 메시지를 보면 evaluateJavaScript 함수에서 문제가 발생했음을 알 수 있어요.

evaluateJavaScript 정의로 이동:
에러가 발생한 evaluateJavaScript 함수 이름 위에 마우스를 올리고 우클릭한 다음, 컨텍스트 메뉴에서 Jump to Definition (정의로 이동)을 선택해 주세요.

InAppWebView 선택:
InAppWebView를 선택하라는 팝업이 나타나면 해당 항목을 선택해 주세요.

함수 원형 수정:
이제 evaluateJavaScript 함수의 원형으로 이동했을 거예요. 여기서 completionHandler 속성에 @MainActor를 추가해 주세요.

수정 전:

func evaluateJavaScript(_ javaScriptString: String,
completionHandler: ((Any?, Error?) -> Void)?)

수정 후:

func evaluateJavaScript(_ javaScriptString: String,
completionHandler: (@MainActor (Any?, Error?) -> Void)?)

저장 및 재빌드:
파일을 저장하고 프로젝트를 다시 빌드해 보세요. 에러가 해결되었음을 확인할 수 있을 거예요.

결론
iOS 18과의 호환성 문제로 발생하는 flutter_inappwebview의 Ambiguous use of 'evaluateJavaScript' 에러는 플러그인 업데이트 (버전 6.1.0 이상)를 통해 가장 쉽게 해결할 수 있습니다. 만약 업데이트가 어렵다면 @MainActor 어노테이션을 수동으로 추가하는 방법도 좋은 대안이 될 수 있어요.

두 가지 방법 중 편의에 맞는 것을 선택해서 iOS 18 환경에서도 안정적으로 flutter_inappwebview를 사용하시길 바랍니다! 혹시 이 외에 다른 Flutter 관련 문제에 부딪히셨다면 언제든지 질문해주세요!

profile
마음맘은 히피인 일꾼러

0개의 댓글