diff --git a/lib/pages/article/controller.dart b/lib/pages/article/controller.dart index c2e1470d9..5a1c8da3c 100644 --- a/lib/pages/article/controller.dart +++ b/lib/pages/article/controller.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/http/dynamics.dart'; import 'package:PiliPlus/http/fav.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/video.dart'; +import 'package:PiliPlus/models/common/image_preview_type.dart'; import 'package:PiliPlus/models/dynamics/article_content_model.dart' show ArticleContentModel; import 'package:PiliPlus/models/dynamics/result.dart'; @@ -43,6 +44,12 @@ class ArticleController extends CommonDynController { List? get opus => opusData?.modules.moduleContent ?? articleData?.opus?.content; + List? _images; + List images() => _images ??= opus! + .where((e) => e.paraType == 2 && e.pic != null) + .map((e) => SourceModel(url: e.pic!.pics!.first.url!)) + .toList(); + @override void onInit() { super.onInit(); diff --git a/lib/pages/article/view.dart b/lib/pages/article/view.dart index f593587e5..a5b16b122 100644 --- a/lib/pages/article/view.dart +++ b/lib/pages/article/view.dart @@ -171,6 +171,7 @@ class _ArticlePageState extends CommonDynPageState { // if (kDebugMode) debugPrint('json page'); content = OpusContent( opus: controller.opus!, + images: controller.images, maxWidth: maxWidth, ); } else if (controller.opusData?.modules.moduleBlocked != null) { diff --git a/lib/pages/article/widgets/opus_content.dart b/lib/pages/article/widgets/opus_content.dart index 29f3aa6bb..048353462 100644 --- a/lib/pages/article/widgets/opus_content.dart +++ b/lib/pages/article/widgets/opus_content.dart @@ -33,11 +33,13 @@ import 'package:re_highlight/styles/github.dart'; class OpusContent extends StatelessWidget { final List opus; + final ValueGetter> images; final double maxWidth; const OpusContent({ super.key, required this.opus, + required this.images, required this.maxWidth, }); @@ -240,9 +242,11 @@ class OpusContent extends StatelessWidget { child: child, ); } + final images = this.images(); return GestureDetector( onTap: () => PageUtils.imageView( - imgList: [SourceModel(url: pic.url!)], + imgList: images, + initialPage: images.indexWhere((e) => e.url == pic.url), quality: 60, ), child: child,