@@ -2,9 +2,10 @@ import 'package:flutter/foundation.dart';
22import 'package:flutter/gestures.dart' ;
33import 'package:flutter/material.dart' ;
44import 'package:flutter_html/html_parser.dart' ;
5+ import 'package:flutter_html/src/navigation_delegate.dart' ;
56import 'package:flutter_html/src/replaced_element.dart' ;
67import 'package:flutter_html/style.dart' ;
7- import 'package:webview_flutter/webview_flutter.dart' ;
8+ import 'package:webview_flutter/webview_flutter.dart' as webview ;
89import 'package:html/dom.dart' as dom;
910
1011/// [IframeContentElement is a [ReplacedElement] with web content.
@@ -30,13 +31,23 @@ class IframeContentElement extends ReplacedElement {
3031 return Container (
3132 width: width ?? (height ?? 150 ) * 2 ,
3233 height: height ?? (width ?? 300 ) / 2 ,
33- child: WebView (
34+ child: webview. WebView (
3435 initialUrl: src,
3536 key: key,
3637 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+ },
4051 gestureRecognizers: {
4152 Factory <VerticalDragGestureRecognizer >(() => VerticalDragGestureRecognizer ())
4253 },
0 commit comments