Fix D* image loading issue by adding client headers to requests for image

Fixes Issue #105
This commit is contained in:
Hank Grabowski 2024-08-31 16:17:46 -04:00
parent 487c8a04fe
commit 12e811c947
3 changed files with 32 additions and 3 deletions

View file

@ -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<String, String> 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;
},
);
}
}

View file

@ -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:

View file

@ -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