mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-18 11:13: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 'dart:async';
|
||||||
|
|
||||||
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart';
|
import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart';
|
||||||
import 'package:html/dom.dart' as dom;
|
import 'package:html/dom.dart' as dom;
|
||||||
|
|
||||||
|
import '../globals.dart';
|
||||||
|
|
||||||
const _emojiSize = {'width': '20px', 'height': '20px', 'margin-left': '-3px'};
|
const _emojiSize = {'width': '20px', 'height': '20px', 'margin-left': '-3px'};
|
||||||
|
|
||||||
class HtmlTextViewerControl extends StatelessWidget {
|
class HtmlTextViewerControl extends StatelessWidget {
|
||||||
|
@ -17,6 +20,7 @@ class HtmlTextViewerControl extends StatelessWidget {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return HtmlWidget(
|
return HtmlWidget(
|
||||||
content,
|
content,
|
||||||
|
factoryBuilder: () => MyWidgetFactory(),
|
||||||
customStylesBuilder: _defaultStylesBuilder,
|
customStylesBuilder: _defaultStylesBuilder,
|
||||||
onTapUrl: onTapUrl,
|
onTapUrl: onTapUrl,
|
||||||
);
|
);
|
||||||
|
@ -30,3 +34,28 @@ class HtmlTextViewerControl extends StatelessWidget {
|
||||||
return null;
|
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"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_widget_from_html_core
|
name: flutter_widget_from_html_core
|
||||||
sha256: df7c7c9e5ea144f7ab0adfbad733b4d4f7d408ab733c94e6e9fdcb327af92aa1
|
sha256: b1048fd119a14762e2361bd057da608148a895477846d6149109b2151d2f7abf
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.15.1"
|
version: "0.15.2"
|
||||||
freezed_annotation:
|
freezed_annotation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -24,7 +24,7 @@ dependencies:
|
||||||
flutter_secure_storage: ^9.2.2
|
flutter_secure_storage: ^9.2.2
|
||||||
flutter_svg: ^2.0.10+1
|
flutter_svg: ^2.0.10+1
|
||||||
flutter_web_auth_2: ^3.1.2
|
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: ^7.7.0
|
||||||
get_it_mixin: ^4.2.2
|
get_it_mixin: ^4.2.2
|
||||||
go_router: ^14.1.2
|
go_router: ^14.1.2
|
||||||
|
|
Loading…
Reference in a new issue