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())},
),