diff --git a/example/lib/pages/nested/webview.dart b/example/lib/pages/nested/webview.dart index 4846522..24b9889 100644 --- a/example/lib/pages/nested/webview.dart +++ b/example/lib/pages/nested/webview.dart @@ -98,21 +98,7 @@ class NestedWebviewDemo extends StatelessWidget { child: child, ); }, - child: WebView( - initialUrl: nestedWebviewController.initialUrl, - onPageStarted: nestedWebviewController.onPageStarted, - onPageFinished: nestedWebviewController.onPageFinished, - onWebResourceError: - nestedWebviewController.onWebResourceError, - onWebViewCreated: - nestedWebviewController.onWebViewCreated, - onProgress: nestedWebviewController.onProgress, - javascriptChannels: { - nestedWebviewController - .scrollHeightNotifierJavascriptChannel - }, - javascriptMode: JavascriptMode.unrestricted, - ), + child: WebViewWidget(controller:nestedWebviewController._webviewController), ), if (webViewStatus == WebViewStatus.completed) SliverToBoxAdapter( @@ -189,59 +175,55 @@ class NestedWebviewDemo extends StatelessWidget { } class NestedWebviewController { - NestedWebviewController(this.initialUrl); + NestedWebviewController(this.initialUrl){ + _webviewController = + WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate( + NavigationDelegate( + onProgress: (int progress) { + progressNotifier.value = progress; + }, + onPageFinished: (String url) { + if (webViewStatusNotifier.value != WebViewStatus.failed) { + _webviewController?.runJavaScript(scrollHeightJs); + } + webViewStatusNotifier.value = WebViewStatus.completed; + }, + onWebResourceError: (WebResourceError error) { + //webViewStatusNotifier.value = WebViewStatus.failed; + }, + onPageStarted: (String url) { + if (url == initialUrl || + webViewStatusNotifier.value == WebViewStatus.failed) { + webViewStatusNotifier.value = WebViewStatus.loading; + } + } + ) + ) + ..addJavaScriptChannel('ScrollHeightNotifier', onMessageReceived: (JavaScriptMessage message) { + final String msg = message.message; + final double? height = double.tryParse(msg); + if (height != null) { + scrollHeightNotifier.value = height; + + webViewStatusNotifier.value = WebViewStatus.completed; + } + }) + ..loadRequest(Uri.parse(initialUrl)); + } final String initialUrl; - WebViewController? _webviewController; + late WebViewController _webviewController; - WebViewController? get webviewController => _webviewController; + WebViewController get webviewController => _webviewController; ValueNotifier scrollHeightNotifier = ValueNotifier(1); ValueNotifier webViewStatusNotifier = ValueNotifier(WebViewStatus.loading); ValueNotifier progressNotifier = ValueNotifier(0); - - void onWebViewCreated(WebViewController controller) { - _webviewController = controller; - } - - void onPageStarted(String url) { - if (url == initialUrl || - webViewStatusNotifier.value == WebViewStatus.failed) { - webViewStatusNotifier.value = WebViewStatus.loading; - } - } - - void onPageFinished(String url) { - if (webViewStatusNotifier.value != WebViewStatus.failed) { - //webViewStatusNotifier.value = WebViewStatus.completed; - _webviewController?.runJavascript(scrollHeightJs); - } - } - - void onWebResourceError(WebResourceError error) { - webViewStatusNotifier.value = WebViewStatus.failed; - } - - void onProgress(int progress) { - progressNotifier.value = progress; - } - - JavascriptChannel get scrollHeightNotifierJavascriptChannel => - JavascriptChannel( - name: 'ScrollHeightNotifier', - onMessageReceived: (JavascriptMessage message) { - final String msg = message.message; - final double? height = double.tryParse(msg); - if (height != null) { - scrollHeightNotifier.value = height; - - webViewStatusNotifier.value = WebViewStatus.completed; - } - }, - ); } enum WebViewStatus {