Flutter прослушивает js сообщений - PullRequest
0 голосов
/ 11 июля 2020

У меня есть приложение Flutter с простым плагином webvew. В моем файле логина. js у меня есть простая функция, которая возвращает имя пользователя и пароль.

function saveUserPass(credentials){
        if (typeof Android !== 'undefined') {
            if (Android.saveValues !== 'undefined') {
                Android.saveValues(credentials.username, credentials.password);
            }
        }
    var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;    
    if (iOS) { 
    window.webkit.messageHandlers.saveValeus.postMessage({"name": credentials.username,"pwd": credentials.password}); 
    } 
    }

}

Есть ли способ прослушать эти сообщения во Flutter?

1 Ответ

0 голосов
/ 11 июля 2020

Вы можете использовать свойство javascriptChannels класса WebView .

Для флаттера - вам нужно создать новый JavascriptChannel и передать его в ваш WebView конструктор:

JavascriptChannel channel = JavascriptChannel(name: 'Print', onMessageReceived: (JavascriptMessage message) { print(message.message); });

WebView(
  javascriptChannels: {channel},
  ...
)

Свойство onMessageReceived канала можно использовать для обработки сообщения любым нужным вам способом.

Для JS - В любое время, когда вы хотите отправить сообщение с номера JS, звоните name (в данном случае «Печать») .postMessage(message):

Print.postMessage('Hello');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...