how to pass data from parent page to webview page in flutter?

2,002

I haven't tried using EasyWebView, but I tried webview_flutter and I can run a Javascript command using its controller.

In this example, I added a scroll listener which detects if page is scrolled to bottom most.

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);
        }),
  },
);
}
Share:
2,002
Kevin Mali
Author by

Kevin Mali

Updated on December 26, 2022

Comments

  • Kevin Mali
    Kevin Mali over 1 year

    i want to pass a String data to a webview page, is it possible to do it in flutter? because i know how to do it using html and javascript via contentWindow.postMessage() but i don't know how to implement it in flutter, thanks.

    This is my code in flutter to show the webview

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