Flutter收听JS消息

时间:2020-07-11 04:25:28

标签: javascript flutter dart message

我有一个Flutter应用程序,带有一个简单的webvew插件。在我的login.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 :(得分:0)

您可以使用WebView classjavascriptChannels属性。

扑朔迷离-您需要创建一个新的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');