@@ -2,9 +2,10 @@ import 'package:flutter/foundation.dart';
2
2
import 'package:flutter/gestures.dart' ;
3
3
import 'package:flutter/material.dart' ;
4
4
import 'package:flutter_html/html_parser.dart' ;
5
+ import 'package:flutter_html/src/navigation_delegate.dart' ;
5
6
import 'package:flutter_html/src/replaced_element.dart' ;
6
7
import 'package:flutter_html/style.dart' ;
7
- import 'package:webview_flutter/webview_flutter.dart' ;
8
+ import 'package:webview_flutter/webview_flutter.dart' as webview ;
8
9
import 'package:html/dom.dart' as dom;
9
10
10
11
/// [IframeContentElement is a [ReplacedElement] with web content.
@@ -30,13 +31,23 @@ class IframeContentElement extends ReplacedElement {
30
31
return Container (
31
32
width: width ?? (height ?? 150 ) * 2 ,
32
33
height: height ?? (width ?? 300 ) / 2 ,
33
- child: WebView (
34
+ child: webview. WebView (
34
35
initialUrl: src,
35
36
key: key,
36
37
javascriptMode: sandboxMode == null || sandboxMode == "allow-scripts"
37
- ? JavascriptMode .unrestricted
38
- : JavascriptMode .disabled,
39
- navigationDelegate: navigationDelegate,
38
+ ? webview.JavascriptMode .unrestricted
39
+ : webview.JavascriptMode .disabled,
40
+ navigationDelegate: (request) async {
41
+ final result = await navigationDelegate !(NavigationRequest (
42
+ url: request.url,
43
+ isForMainFrame: request.isForMainFrame,
44
+ ));
45
+ if (result == NavigationDecision .prevent) {
46
+ return webview.NavigationDecision .prevent;
47
+ } else {
48
+ return webview.NavigationDecision .navigate;
49
+ }
50
+ },
40
51
gestureRecognizers: {
41
52
Factory <VerticalDragGestureRecognizer >(() => VerticalDragGestureRecognizer ())
42
53
},
0 commit comments