diff --git a/packages/flutter_html_iframe/lib/iframe_mobile.dart b/packages/flutter_html_iframe/lib/iframe_mobile.dart index 9c73e65cba..7ef80489b0 100644 --- a/packages/flutter_html_iframe/lib/iframe_mobile.dart +++ b/packages/flutter_html_iframe/lib/iframe_mobile.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; @@ -34,6 +36,18 @@ class IframeWidget extends StatelessWidget { final givenHeight = double.tryParse(extensionContext.attributes['height'] ?? ""); + Uri? srcUri; + + if (extensionContext.attributes['srcdoc'] != null) { + srcUri = Uri.dataFromString( + extensionContext.attributes['srcdoc'] ?? '', + mimeType: 'text/html', + encoding: Encoding.getByName('utf-8'), + ); + } else { + srcUri = Uri.tryParse(extensionContext.attributes['src'] ?? "") ?? Uri(); + } + return SizedBox( width: givenWidth ?? (givenHeight ?? 150) * 2, height: givenHeight ?? (givenWidth ?? 300) / 2, @@ -41,10 +55,7 @@ class IframeWidget extends StatelessWidget { style: extensionContext.styledElement!.style, childIsReplaced: true, child: WebViewWidget( - controller: controller - ..loadRequest( - Uri.tryParse(extensionContext.attributes['src'] ?? "") ?? - Uri()), + controller: controller..loadRequest(srcUri), key: key, gestureRecognizers: {Factory(() => VerticalDragGestureRecognizer())}, ),