1
1
import 'package:appium_testing_app/components/custom_app_bar.dart' ;
2
2
import 'package:flutter/material.dart' ;
3
3
import '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' ;
4
6
5
7
class WebViewScreen extends StatefulWidget {
6
8
final String title;
@@ -12,26 +14,54 @@ class WebViewScreen extends StatefulWidget {
12
14
}
13
15
14
16
class _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
+ }
35
65
36
66
@override
37
67
Widget build (BuildContext context) {
0 commit comments