首页 > 解决方案 > 如何在flutter中将数据从父页面传递到webview页面?

问题描述

我想将字符串数据传递给 webview 页面,是否可以在颤动中做到这一点?因为我知道如何通过 contentWindow.postMessage() 使用 html 和 javascript 来做到这一点,但我不知道如何在颤振中实现它,谢谢。

这是我在颤振中显示网络视图的代码

Container(
                       height:500,
                        child: EasyWebView(
                            onLoaded: () {
                              print('loaded');
                            },
                            src: webviewsrc,
                            ),
                      ), 

标签: javascripthtmlflutterdartwebview

解决方案


我没有尝试使用 EasyWebView,但我尝试了 webview_flutter,我可以使用它的控制器运行 Javascript 命令。

在此示例中,我添加了一个scroll侦听器,用于检测页面是否滚动到最底部。

Widget _buildWebview(BuildContext context) {
WebViewController controller;

return WebView(
  javascriptMode: JavascriptMode.unrestricted,
  onWebViewCreated: (WebViewController webViewController) async {
    webViewController.clearCache();
    controller = webViewController;
    await controller.loadUrl('https://pub.dev/packages/webview_flutter');
  },
  onPageFinished: (String _) async {
    controller.evaluateJavascript('''
      window.addEventListener('scroll', function(e) {
        if ((Math.ceil(window.innerHeight + window.pageYOffset)) >= document.body.offsetHeight) {
          ScrollCallback.postMessage('END OF PAGE!!!');
        }
      });
    ''');
  },
  javascriptChannels: <JavascriptChannel>{
    JavascriptChannel(
        name: 'ScrollCallback',
        onMessageReceived: (JavascriptMessage message) {
          print(message.message);
        }),
  },
);
}

推荐阅读