diff --git a/lib/controls/html_text_viewer_control.dart b/lib/controls/html_text_viewer_control.dart
index eed9ed0..aaa64ba 100644
--- a/lib/controls/html_text_viewer_control.dart
+++ b/lib/controls/html_text_viewer_control.dart
@@ -1,9 +1,12 @@
import 'dart:async';
+import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart';
import 'package:html/dom.dart' as dom;
+import '../globals.dart';
+
const _emojiSize = {'width': '20px', 'height': '20px', 'margin-left': '-3px'};
class HtmlTextViewerControl extends StatelessWidget {
@@ -17,6 +20,7 @@ class HtmlTextViewerControl extends StatelessWidget {
Widget build(BuildContext context) {
return HtmlWidget(
content,
+ factoryBuilder: () => MyWidgetFactory(),
customStylesBuilder: _defaultStylesBuilder,
onTapUrl: onTapUrl,
);
@@ -30,3 +34,28 @@ class HtmlTextViewerControl extends StatelessWidget {
return null;
}
}
+
+class MyWidgetFactory extends WidgetFactory {
+ @override
+ Widget? buildImageWidget(BuildMetadata meta, ImageSource src) {
+ final url = src.url;
+ if (!url.startsWith(RegExp('https?://'))) {
+ return super.buildImageWidget(meta, src);
+ }
+
+ Map headers = {'user-agent': userAgent};
+
+ return CachedNetworkImage(
+ httpHeaders: headers,
+ errorWidget: (context, _, error) =>
+ onErrorBuilder(context, meta, error, src) ?? widget0,
+ fit: BoxFit.fill,
+ imageUrl: url,
+ progressIndicatorBuilder: (context, _, progress) {
+ final t = progress.totalSize;
+ final v = t != null && t > 0 ? progress.downloaded / t : null;
+ return onLoadingBuilder(context, meta, v, src) ?? widget0;
+ },
+ );
+ }
+}
diff --git a/pubspec.lock b/pubspec.lock
index 7f17bce..c37f5b5 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -556,10 +556,10 @@ packages:
dependency: "direct main"
description:
name: flutter_widget_from_html_core
- sha256: df7c7c9e5ea144f7ab0adfbad733b4d4f7d408ab733c94e6e9fdcb327af92aa1
+ sha256: b1048fd119a14762e2361bd057da608148a895477846d6149109b2151d2f7abf
url: "https://pub.dev"
source: hosted
- version: "0.15.1"
+ version: "0.15.2"
freezed_annotation:
dependency: transitive
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 9a57157..93d8bab 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -24,7 +24,7 @@ dependencies:
flutter_secure_storage: ^9.2.2
flutter_svg: ^2.0.10+1
flutter_web_auth_2: ^3.1.2
- flutter_widget_from_html_core: ^0.15.1
+ flutter_widget_from_html_core: ^0.15.2
get_it: ^7.7.0
get_it_mixin: ^4.2.2
go_router: ^14.1.2