feat: live photo

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-01-28 14:19:59 +08:00
parent b761c35d10
commit f5d7dc6b6a
15 changed files with 227 additions and 73 deletions

View File

@@ -1,6 +1,8 @@
import 'dart:async';
import 'package:PiliPlus/common/widgets/http_error.dart';
import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart'
show SourceModel;
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:flutter/material.dart';
@@ -224,9 +226,11 @@ class _BangumiInfoState extends State<BangumiInfo>
videoDetailCtr.onViewImage();
context.imageView(
imgList: [
!widget.isLoading
? widget.bangumiDetail!.cover!
: bangumiItem!.cover!
SourceModel(
url: !widget.isLoading
? widget.bangumiDetail!.cover!
: bangumiItem!.cover!,
)
],
onDismissed: videoDetailCtr.onDismissed,
);

View File

@@ -4,6 +4,8 @@ import 'dart:math';
import 'package:PiliPlus/common/constants.dart';
import 'package:PiliPlus/common/widgets/icon_button.dart';
import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart'
show SourceModel, SourceType;
import 'package:PiliPlus/http/msg.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:chat_bottom_container/chat_bottom_container.dart';
@@ -274,8 +276,12 @@ abstract class CommonPublishPageState<T extends CommonPublishPage>
onTap: () {
controller.keepChatPanel();
context.imageView(
isFile: true,
imgList: pathList,
imgList: pathList
.map((path) => SourceModel(
url: path,
sourceType: SourceType.fileImage,
))
.toList(),
initialPage: index,
);
},

View File

@@ -16,6 +16,7 @@ Widget content(context, item, source, callback) {
width: item.width,
height: item.height,
url: item.url ?? '',
liveUrl: item.liveUrl,
),
)
.toList(),

View File

@@ -27,6 +27,7 @@ InlineSpan picsNodes(List<OpusPicsModel> pics, callback) {
width: item.width,
height: item.height,
url: item.url ?? '',
liveUrl: item.liveUrl,
),
)
.toList(),

View File

@@ -17,6 +17,7 @@ Widget picWidget(item, context, callback) {
width: item.width,
height: item.height,
url: item.url ?? '',
liveUrl: item.liveUrl,
),
)
.toList(),

View File

@@ -1,3 +1,5 @@
import 'package:PiliPlus/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart'
show SourceModel;
import 'package:PiliPlus/common/widgets/network_img_layer.dart';
import 'package:PiliPlus/models/dynamics/result.dart';
import 'package:PiliPlus/models/space/card.dart' as space;
@@ -81,7 +83,7 @@ class UserInfoCard extends StatelessWidget {
child: GestureDetector(
onTap: () {
context.imageView(
imgList: [imgUrl ?? 'bgTag'],
imgList: [SourceModel(url: imgUrl ?? 'bgTag')],
);
},
child: CachedNetworkImage(
@@ -458,7 +460,7 @@ class UserInfoCard extends StatelessWidget {
child: GestureDetector(
onTap: () {
context.imageView(
imgList: [card.face ?? 'avatarTag'],
imgList: [SourceModel(url: card.face ?? 'avatarTag')],
);
},
child: NetworkImgLayer(

View File

@@ -1914,6 +1914,14 @@ List<SettingsModel> get extraSettings => [
defaultVal: true,
onChanged: (value) => ModuleAuthorModel.showDynDecorate = value,
),
SettingsModel(
settingsType: SettingsType.sw1tch,
title: '预览 Live Photo',
subtitle: '开启则以视频形式预览Live Photo否则预览静态图片',
leading: Icon(Icons.image_outlined),
setKey: SettingBoxKey.enableLivePhoto,
defaultVal: true,
),
SettingsModel(
settingsType: SettingsType.sw1tch,
enableFeedback: true,