11import 'package:appium_testing_app/components/custom_app_bar.dart' ;
22import 'package:flutter/material.dart' ;
33import 'package:webview_flutter/webview_flutter.dart' ;
4+ import 'package:webview_flutter_android/webview_flutter_android.dart' ;
5+ import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart' ;
46
57class WebViewScreen extends StatefulWidget {
68 final String title;
@@ -12,26 +14,54 @@ class WebViewScreen extends StatefulWidget {
1214}
1315
1416class _WebViewScreenState extends State <WebViewScreen > {
15- WebViewController controller = WebViewController ()
16- ..setJavaScriptMode (JavaScriptMode .unrestricted)
17- ..setBackgroundColor (const Color (0x00000000 ))
18- ..setNavigationDelegate (
19- NavigationDelegate (
20- onProgress: (int progress) {
21- // Update loading bar.
22- },
23- onPageStarted: (String url) {},
24- onPageFinished: (String url) {},
25- onWebResourceError: (WebResourceError error) {},
26- onNavigationRequest: (NavigationRequest request) {
27- if (request.url.startsWith ('https://www.hackernews.com/' )) {
28- return NavigationDecision .prevent;
29- }
30- return NavigationDecision .navigate;
31- },
32- ),
33- )
34- ..loadRequest (Uri .parse ('https://hackernews.com' ));
17+ late final WebViewController controller;
18+
19+ @override
20+ void initState () {
21+ super .initState ();
22+
23+ // Create platform-specific controller params
24+ late final PlatformWebViewControllerCreationParams params;
25+ if (WebViewPlatform .instance is WebKitWebViewPlatform ) {
26+ params = WebKitWebViewControllerCreationParams (
27+ allowsInlineMediaPlayback: true ,
28+ mediaTypesRequiringUserAction: const < PlaybackMediaTypes > {},
29+ );
30+ } else {
31+ params = const PlatformWebViewControllerCreationParams ();
32+ }
33+
34+ final WebViewController webController =
35+ WebViewController .fromPlatformCreationParams (params)
36+ ..setJavaScriptMode (JavaScriptMode .unrestricted)
37+ ..setBackgroundColor (const Color (0x00000000 ))
38+ ..setNavigationDelegate (
39+ NavigationDelegate (
40+ onProgress: (int progress) {
41+ // Update loading bar.
42+ },
43+ onPageStarted: (String url) {},
44+ onPageFinished: (String url) {},
45+ onWebResourceError: (WebResourceError error) {},
46+ onNavigationRequest: (NavigationRequest request) {
47+ if (request.url.startsWith ('https://www.hackernews.com/' )) {
48+ return NavigationDecision .prevent;
49+ }
50+ return NavigationDecision .navigate;
51+ },
52+ ),
53+ )
54+ ..loadRequest (Uri .parse ('https://hackernews.com' ));
55+
56+ // Android-specific configuration
57+ if (webController.platform is AndroidWebViewController ) {
58+ AndroidWebViewController .enableDebugging (true );
59+ (webController.platform as AndroidWebViewController )
60+ .setMediaPlaybackRequiresUserGesture (false );
61+ }
62+
63+ controller = webController;
64+ }
3565
3666 @override
3767 Widget build (BuildContext context) {
0 commit comments