gpt4 book ai didi

javascript - Flutter - 如何在 WebView 中获取 Javascript 回调?

转载 作者:行者123 更新时间:2023-12-03 20:51:12 26 4
gpt4 key购买 nike

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

function onReward(data){
console.log("onReward: " + data.earnedThisSession);
Survey.postMessage(data.earnedThisSession);
}
当用户完成一个 Action 时触发这个回调,我目前面临两个问题
  • 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.")');
    }
    });

    关于javascript - Flutter - 如何在 WebView 中获取 Javascript 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62717940/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com