fix: 动态内容图片预览

This commit is contained in:
guozhigq
2023-09-08 18:04:13 +08:00
parent 517ca032d2
commit 22e17d437b
2 changed files with 25 additions and 14 deletions

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:pilipala/common/widgets/network_img_layer.dart'; import 'package:pilipala/common/widgets/network_img_layer.dart';
import 'package:pilipala/models/dynamics/result.dart'; import 'package:pilipala/models/dynamics/result.dart';
import 'package:pilipala/pages/preview/index.dart';
// 富文本 // 富文本
InlineSpan richNode(item, context) { InlineSpan richNode(item, context) {
@ -198,11 +199,11 @@ InlineSpan richNode(item, context) {
print('有图片'); print('有图片');
List<OpusPicsModel> pics = item.modules.moduleDynamic.major.opus.pics; List<OpusPicsModel> pics = item.modules.moduleDynamic.major.opus.pics;
int len = pics.length; int len = pics.length;
List picList = []; List<String> picList = [];
if (len == 1) { if (len == 1) {
OpusPicsModel pictureItem = pics.first; OpusPicsModel pictureItem = pics.first;
picList.add(pictureItem.url); picList.add(pictureItem.url!);
spanChilds.add(const TextSpan(text: '\n')); spanChilds.add(const TextSpan(text: '\n'));
spanChilds.add( spanChilds.add(
WidgetSpan( WidgetSpan(
@ -210,8 +211,13 @@ InlineSpan richNode(item, context) {
builder: (context, BoxConstraints box) { builder: (context, BoxConstraints box) {
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
Get.toNamed('/preview', showDialog(
arguments: {'initialPage': 0, 'imgList': picList}); useSafeArea: false,
context: context,
builder: (context) {
return ImagePreview(initialPage: 0, imgList: picList);
},
);
}, },
child: Padding( child: Padding(
padding: const EdgeInsets.only(top: 4), padding: const EdgeInsets.only(top: 4),
@ -233,14 +239,19 @@ InlineSpan richNode(item, context) {
if (len > 1) { if (len > 1) {
List<Widget> list = []; List<Widget> list = [];
for (var i = 0; i < len; i++) { for (var i = 0; i < len; i++) {
picList.add(pics[i].url); picList.add(pics[i].url!);
list.add( list.add(
LayoutBuilder( LayoutBuilder(
builder: (context, BoxConstraints box) { builder: (context, BoxConstraints box) {
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
Get.toNamed('/preview', showDialog(
arguments: {'initialPage': i, 'imgList': picList}); useSafeArea: false,
context: context,
builder: (context) {
return ImagePreview(initialPage: i, imgList: picList);
},
);
}, },
child: NetworkImgLayer( child: NetworkImgLayer(
src: pics[i].url, src: pics[i].url,

View File

@ -48,13 +48,13 @@ class Routes {
// 视频详情 // 视频详情
CustomGetPage(name: '/video', page: () => const VideoDetailPage()), CustomGetPage(name: '/video', page: () => const VideoDetailPage()),
// 图片预览 // 图片预览
GetPage( // GetPage(
name: '/preview', // name: '/preview',
page: () => const ImagePreview(), // page: () => const ImagePreview(),
transition: Transition.fade, // transition: Transition.fade,
transitionDuration: const Duration(milliseconds: 300), // transitionDuration: const Duration(milliseconds: 300),
showCupertinoParallax: false, // showCupertinoParallax: false,
), // ),
// //
CustomGetPage(name: '/webview', page: () => const WebviewPage()), CustomGetPage(name: '/webview', page: () => const WebviewPage()),
// 设置 // 设置