#flutter #dart #webview #flutter-dependencies #flutter-web
#flutter #dart #webview #flutter-зависимости #flutter-web
Вопрос:
форма платежного шлюза загружается в webview с помощью flutter. когда я нажимаю кнопку оплаты, я не могу получить успешный или неудачный ответ. если это успешно, перейдите на главный экран.
Для собственного мобильного приложения получите ответ, используя addJavascriptInterface .Для flutter где реализовать обратный вызов addJavascriptInterface?
Может кто-нибудь, пожалуйста, помогите мне? Я застрял на последние 2 дня.
WebView(
initialUrl:widget.webpageurl,
javascriptMode: JavascriptMode.unrestricted,
javascriptChannels: Set.from([
JavascriptChannel(
name: 'ReceiveIframeResponse',
onMessageReceived: (JavascriptMessage message) {
print('ReceiveIframeResponse${message.message}');
var jsonData = jsonDecode(message.message);
print('jsonData $jsonData');
if(jsonData['status'] == 'CANCELLED'){
// Your code
}else if(jsonData['status'] == 'SUCCESS'){
// Your code
}
})
]),
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
},
onProgress: (int progress) {
print("WebView is loading (progress : $progress%)");
},
onPageFinished: (finish) {
setState(() {
isLoading = false;
});
print("WebView is onPageFinished $finish");
},
onPageStarted: (data){
print("WebView is onPageStarted $data");
},
),
Ответ №1:
Вы можете использовать обратный вызов интерфейса javascript следующим образом,
WebView(
initialUrl: widget.webpageurl,
javascriptMode: JavascriptMode.unrestricted,
javascriptChannels: Set.from([
JavascriptChannel(
name: 'messageHandler',
onMessageReceived: (JavascriptMessage message) {
print(message.message);
var jsonData = jsonDecode(message.message);
if(jsonData['status'] == 'CANCELLED'){
// Your code
}else if(jsonData['status'] == 'SUCCESS'){
// Your code
}
})
]),
onWebViewCreated: (WebViewController webViewController) {
},
);
Вы можете использовать этот скрипт в своем HTML, например, который содержит функцию обратного вызова,
<script type="text/javascript">
function myCallback(status) {
var statusData = JSON.stringify(status);
console.log(statusData)
messageHandler.postMessage(statusData);
}
</script>
Комментарии:
1. спасибо, можете ли вы, пожалуйста, помочь мне I / chromium (18630): [ИНФОРМАЦИЯ: КОНСОЛЬ (1)] «Нераспознанная функция: «оплата».», источник: js.stripe.com/v3 что такое ошибка