Show a webview window on your flutter desktop application.
Windows | ✅ | Webview2 1.0.992.28 |
Linux | ✅ | WebKitGTK-4.1 or WebKitGTK-4.0 |
macOS | ✅ | WKWebview |
-
modify your
main
method.import 'package:desktop_webview_window/desktop_webview_window.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // Add this your main method. // used to show a webview title bar. if (runWebViewTitleBarWidget(args)) { return; } runApp(MyApp()); }
-
launch WebViewWindow
final webview = await WebviewWindow.create(); webview.launch("https://example.com");
In Ubuntu/Debian:
sudo apt-get install libwebkit2gtk-4.1-0 libwebkit2gtk-4.1-dev libsoup-3.0-0 libsoup-3.0-dev
In Fedora/RPM:
sudo dnf install webkit2gtk4.1 webkit2gtk4.1-devel libsoup3 libsoup3-devel
The backend of desktop_webview_window on Windows is WebView2, which requires WebView2 Runtime installed.
WebView2 Runtime is ship in box with Windows11, but it may not installed on Windows10 devices. So you need consider how to distribute the runtime to your users.
See more: https://docs.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution
For convenience, you can use WebviewWindow.isWebviewAvailable()
check whether the WebView2 is available.
The default user data folder of WebView2 is your_exe_file\WebView2
, which is not a good place to store user data.
eg. if the application is installed in a read-only directory, the application will crash when WebView2 try to write data.
you can use WebviewWindow.create()
to create a webview with a custom user data folder.
final webview = await WebviewWindow.create(
confiruation: CreateConfiguration(
userDataFolderWindows: 'your_custom_user_data_folder',
),
);
see LICENSE