[英]Flutter - How to get a Javascript callback in WebView?
我正在使用WebView
加載包含回調的本地 HTML 文件 -
function onReward(data){
console.log("onReward: " + data.earnedThisSession);
Survey.postMessage(data.earnedThisSession);
}
當用戶完成操作時觸發此回調,我目前面臨兩個問題
data.earnedThisSession
返回的 data.earnedThisSession 與每個用戶不同,我想在我的 dart 代碼中將其作為變量來獎勵我的用戶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.