web_flutter_connect
TypeScript icon, indicating that this package has built-in type declarations

1.0.3 • Public • Published

Web-Flutter connect package

Flutter

  1. Call Flutter
  • await Flutter.call(hanlderName: string, ...params: any[])
  1. Send message to Flutter
  • await Flutter.send(data: any) --> await Flutter.call("onMessage", data)
  • In Flutter code:
        ///Listen message from web
        this.controller?.addJavaScriptHandler(
            handlerName: WebviewModuleKeys.onMessage,
            callback: (List<dynamic> params) async {
              if (widget.onMessage != null) {
                widget.onMessage!(params[0]);
              }
            });
  1. Close webview
  • await Flutter.close() --> await Flutter.call("closeWebview", data)
  1. Notify Web content did load
  • await Flutter.setDidLoad() --> await Flutter.call("onContentDidLoad", data)
  1. Print to Flutter console
  • await Flutter.print(data) --> await Flutter.call("onWebViewPrint", data)
  • In Flutter code:
        ///Listen print from web
        this.controller?.addJavaScriptHandler(
            handlerName: WebviewModuleKeys.onPrint,
            callback: (List<dynamic> params) async {
              print("*** PRINT FROM WEBVIEW: ***");
              if (params.isNotEmpty) {
                print("${params.first}");
              }
              print("*** END PRINT FROM WEBVIEW ***");
            });

WebView

  1. WebView.listenFromFlutter: Listen message from Flutter
const subscription = WebView.listenFromFlutter((message: any) => {
    Flutter.print({
        "title": "Receive message from Flutter",
        "data": message,
    });
})
....
//Unsubscribe
subscription.unsubscribe();
  1. WebView.send(message: any)
  • Call in Flutter to send a message to WEB
        try {
                final strMessage = jsonEncode(message);
                this.controller?.evaluateJavascript(source: """
                  window.WebView.send('$strMessage');
                """);
              } catch (e) {
                throw {
                  "error": "Cannot send unencodable message to WebView",
                  "message": message,
                };
              }

Package Sidebar

Install

npm i web_flutter_connect

Weekly Downloads

0

Version

1.0.3

License

ISC

Unpacked Size

24.4 kB

Total Files

30

Last publish

Collaborators

  • mrbaobao