Kevin Mali
Kevin Mali

Reputation: 31

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

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,
                            ),
                      ), 

Upvotes: 3

Views: 6214

Answers (1)

rickimaru
rickimaru

Reputation: 2490

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);
        }),
  },
);
}

Upvotes: 9

Related Questions