mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-18 10:03:31 +00:00
Fix D* image loading issue by adding client headers to requests for image
Fixes Issue #105
This commit is contained in:
parent
487c8a04fe
commit
12e811c947
3 changed files with 32 additions and 3 deletions
|
@ -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;
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue