簡體   English   中英

Flutter - 如何在 WebView 中獲得 Javascript 回調?

[英]Flutter - How to get a Javascript callback in WebView?

我正在使用WebView加載包含回調的本地 HTML 文件 -

function onReward(data){
console.log("onReward: " + data.earnedThisSession);
Survey.postMessage(data.earnedThisSession);
}

當用戶完成操作時觸發此回調,我目前面臨兩個問題

  1. data.earnedThisSession返回的 data.earnedThisSession 與每個用戶不同,我想在我的 dart 代碼中將其作為變量來獎勵我的用戶
  2. 我的WebView依賴項不在我的調試控制台中打印控制台消息

這是我的JavascriptChannel -

final Set<JavascriptChannel> jsChannels = [
  JavascriptChannel(
      name: 'Survey',
      onMessageReceived: (JavascriptMessage message) {
        print(message.message);
      }),
].toSet();

這是我的WebviewScaffold -

FutureBuilder<String>(
              future: _loadLocalHTML(),
              builder: (context, snapshot) {
                if (snapshot.hasData) {
                  return Scaffold(
                    appBar: AppBar(),
                    body: WebView(
                      initialUrl: Uri.dataFromString(
                        snapshot.data,
                        mimeType: 'text/html',
                        encoding: Encoding.getByName('utf-8'),
                      ).toString(),
                      javascriptChannels: jsChannels,
                      javascriptMode: JavascriptMode.unrestricted,
                    ),
                  );
                }

我如何在其中使用evalJavascript來獲取我的獎勵數據?

Survey.postMessage()更改為window.Survey.postMessage()可能有效。 我不確定如何將 evalJavascipt 與 WebviewScaffold 一起使用,我使用的是這樣的:

final _webView = new FlutterWebviewPlugin();
final Set<JavascriptChannel> jsChannels = [
  JavascriptChannel(
      name: 'Survey',
      onMessageReceived: (JavascriptMessage message) {
        print(message.message);
      }),
].toSet();
_webView.launch(url, jsChannels);
_webView.onStateChanged.listen((event) {
  if (event.type == WebViewState.finishLoad) {
    _webView.evalJavascript('Your Js Code' + 
    'window.Survey.postMessage("Your Return Mes.")');
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM