Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-05-19 13:44:59 +08:00
parent 8fd62cf2f3
commit 25adc4face
3 changed files with 31 additions and 26 deletions

View File

@@ -30,16 +30,16 @@ class Pic {
List<Pic>? pics; List<Pic>? pics;
int? style; int? style;
String? url; String? url;
num? width; double? width;
num? height; double? height;
num? size; num? size;
String? liveUrl; String? liveUrl;
bool? isLongPic; bool? isLongPic;
Pic.fromJson(Map<String, dynamic> json) { Pic.fromJson(Map<String, dynamic> json) {
url = json['url']; url = json['url'];
width = json['width']; width = (json['width'] as num?)?.toDouble();
height = json['height']; height = (json['height'] as num?)?.toDouble();
size = json['size']; size = json['size'];
pics = (json['pics'] as List?)?.map((item) => Pic.fromJson(item)).toList(); pics = (json['pics'] as List?)?.map((item) => Pic.fromJson(item)).toList();
style = json['style']; style = json['style'];

View File

@@ -1,4 +1,3 @@
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/models/common/image_preview_type.dart';
import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/extension.dart';
import 'package:PiliPlus/utils/utils.dart'; import 'package:PiliPlus/utils/utils.dart';
@@ -46,6 +45,7 @@ Widget htmlRender({
fit: BoxFit.contain, fit: BoxFit.contain,
); );
} }
final size = isEmote ? 22.0 : null;
return Hero( return Hero(
tag: imgUrl, tag: imgUrl,
child: GestureDetector( child: GestureDetector(
@@ -58,10 +58,14 @@ Widget htmlRender({
); );
} }
}, },
child: NetworkImgLayer( child: CachedNetworkImage(
width: isEmote ? 22 : maxWidth, width: size,
height: isEmote ? 22 : null, height: size,
src: imgUrl, imageUrl: Utils.thumbnailImgUrl(imgUrl, 60),
fadeInDuration: const Duration(milliseconds: 120),
fadeOutDuration: const Duration(milliseconds: 120),
placeholder: (context, url) =>
Image.asset('assets/images/loading.png'),
), ),
), ),
); );

View File

@@ -160,29 +160,31 @@ class OpusContent extends StatelessWidget {
return widget; return widget;
case 2 when (element.pic != null): case 2 when (element.pic != null):
if (element.pic!.pics!.length == 1) { if (element.pic!.pics!.length == 1) {
final pic = element.pic!.pics!.first;
final width = pic.width == null
? null
: min(maxWidth.toDouble(), pic.width!);
final height = width == null || pic.height == null
? null
: width * pic.height! / pic.width!;
return Hero( return Hero(
tag: element.pic!.pics!.first.url!, tag: pic.url!,
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
if (callback != null) { if (callback != null) {
callback!([element.pic!.pics!.first.url!], 0); callback!([pic.url!], 0);
} else { } else {
context.imageView( context.imageView(
initialPage: 0, initialPage: 0,
imgList: [ imgList: [SourceModel(url: pic.url!)],
SourceModel(url: element.pic!.pics!.first.url!)
],
); );
} }
}, },
child: Center( child: Center(
child: ClipRRect(
borderRadius: StyleString.mdRadius,
child: CachedNetworkImage( child: CachedNetworkImage(
imageUrl: Utils.thumbnailImgUrl( width: width,
element.pic!.pics!.first.url!, height: height,
60, imageUrl: Utils.thumbnailImgUrl(pic.url!, 60),
),
fadeInDuration: const Duration(milliseconds: 120), fadeInDuration: const Duration(milliseconds: 120),
fadeOutDuration: const Duration(milliseconds: 120), fadeOutDuration: const Duration(milliseconds: 120),
placeholder: (context, url) => placeholder: (context, url) =>
@@ -190,7 +192,6 @@ class OpusContent extends StatelessWidget {
), ),
), ),
), ),
),
); );
} else { } else {
return imageView( return imageView(