我有一个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中收听这些消息?
答案 0 :(得分:0)
您可以使用WebView
class的javascriptChannels
属性。
扑朔迷离-您需要创建一个新的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');