A bridge for JavaScript communicate with webview_flutter.
| Android | iOS | |
|---|---|---|
| Support | SDK 19+ or 20+ | 9.0+ |
Features
- handle message from JavaScript structured.
- send message to JavaScript easier.
Usage
Before using this package, your need setup with Flutter and JavaScript.
Flutter
First of all, add webview_javascript_bridge as a dependency in your pubspec.yaml file. Just run:
flutter pub add webview_javascript_bridge
And then use the WebViewJavaScriptBridgeMixin:
class _SomeState extends State<SomePage> with WebViewJavaScriptBridgeMixin {
/// your code
}
Next, add channelForBridge to your WebView's javascriptChannels:
WebView(
javascriptChannels: {
channelForBridge,
/// your other channels
},
)
Finally, update WebViewController when WebView created:
WebView(
onWebViewCreated: (controller) {
bridge.updateWebViewController(controller);
},
)
Oh, don't forget add your message handler for JavaScript, such as Toaster:
@override
void initState() {
super.initState();
/// add handler
bridge.addMessageHandler(ClosureMessageHandler(
resolver: (message, controller) => message.action == "toaster",
handler: (message, controller) {
// TODO: show the toaster
print(message);
return null;
},
));
}
JavaScript
First of all, install the package webview-javascript-bridge. Just run:
yarn add webview-javascript-bridge
or with npm:
npm install webview-javascript-bridge
Next, import webViewJavaScriptBridge as your need:
import webViewJavaScriptBridge from "webview-javascript-bridge";
Finally, sending a message!
async function sendingMessage() {
let response = await webViewJavaScriptBridge
.sendMessage({
action: "tester",
params: 123456,
})
console.log("tester's response", response)
}
If your use TypeScript, go to example for more details.