shouldOverrideUrlLoading: (controller, navigationAction) async { var uri = navigationAction.request.url!; if (uri.scheme == 'http' || uri.scheme == 'https') { // 표준 웹 URL 체크 return NavigationActionPolicy.ALLOW; } else { // 그 외의 경우에는 tossPaymentsWebvew 함수로 검증 if(Platform.isAndroid) { // 마켓 넘어갈때 안드로이드에서 Err_unknown_url_scheme 해결 if (!navigationAction.isForMainFrame) { await controller.stopLoading(); } } tossPaymentsWebview(uri.rawValue); return NavigationActionPolicy.CANCEL; } },
tossPaymentsWebview(url) { final appScheme = ConvertUrl(url); // Intent URL을 앱 스킴 URL로 변환 if (appScheme.isAppLink()) { // 앱 스킴 URL인지 확인 appScheme.launchApp(mode: LaunchMode.externalApplication); // 앱 설치 상태에 따라 앱 실행 또는 마켓으로 이동 return NavigationActionPolicy.CANCEL; } }