Flutter не может прочитать свойство messageHandlers - PullRequest
0 голосов
/ 12 июля 2020

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

 [INFO:CONSOLE(13920)] "TypeError: Cannot read property 'messageHandlers' of undefined at saveUserPass (https://komitenti.lion-group.rs/view_login/login.js:118:17)

Мой виджет Webview:

WebView(
          initialUrl: "https://komitenti.lion-group.rs/",
          javascriptMode: JavascriptMode.unrestricted,
          debuggingEnabled: true,
          userAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
          javascriptChannels: <JavascriptChannel>[
            JavascriptChannel(name: 'saveValeus', onMessageReceived: (JavascriptMessage msg) { print(msg); }),
          ].toSet(),
          onWebViewCreated: (WebViewController controller) {
            controller = controller;
          },
        ),
      )

И функция входа 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}); 
    } 
    }

} 
...