首页 > 解决方案 > Flutter 监听 js 消息

问题描述

我有一个带有简单 webvew 插件的 Flutter 应用程序。在我的 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 中收听这些消息?

标签: javascriptflutterdartmessage

解决方案


您可以使用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');

推荐阅读