mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-04-20 11:08:03 +08:00
mod: dynamic panel (#738)
This commit is contained in:
committed by
GitHub
parent
7bb0307e6a
commit
e0fe16fd14
@@ -1,4 +1,5 @@
|
||||
import 'package:PiliPlus/common/widgets/image_save.dart';
|
||||
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||
import 'package:PiliPlus/utils/extension.dart';
|
||||
import 'package:PiliPlus/utils/page_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -9,7 +10,7 @@ import 'content_panel.dart';
|
||||
import 'forward_panel.dart';
|
||||
|
||||
class DynamicPanel extends StatelessWidget {
|
||||
final dynamic item;
|
||||
final DynamicItemModel item;
|
||||
final String? source;
|
||||
final Function? onRemove;
|
||||
final Function(List<String>, int)? callback;
|
||||
@@ -28,6 +29,13 @@ class DynamicPanel extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final authorWidget = AuthorPanel(
|
||||
item: item,
|
||||
source: source,
|
||||
onRemove: onRemove,
|
||||
isSave: isSave,
|
||||
onSetTop: onSetTop,
|
||||
);
|
||||
return Container(
|
||||
decoration: isSave ||
|
||||
(source == 'detail' &&
|
||||
@@ -46,7 +54,7 @@ class DynamicPanel extends StatelessWidget {
|
||||
color: Colors.transparent,
|
||||
child: InkWell(
|
||||
onTap: source == 'detail' &&
|
||||
[
|
||||
const {
|
||||
'DYNAMIC_TYPE_AV',
|
||||
'DYNAMIC_TYPE_UGC_SEASON',
|
||||
'DYNAMIC_TYPE_PGC_UNION',
|
||||
@@ -54,59 +62,20 @@ class DynamicPanel extends StatelessWidget {
|
||||
'DYNAMIC_TYPE_LIVE',
|
||||
'DYNAMIC_TYPE_LIVE_RCMD',
|
||||
'DYNAMIC_TYPE_MEDIALIST',
|
||||
].contains(item.type).not
|
||||
}.contains(item.type).not
|
||||
? null
|
||||
: () => PageUtils.pushDynDetail(item, 1),
|
||||
onLongPress: () {
|
||||
if (item.type == 'DYNAMIC_TYPE_AV') {
|
||||
imageSaveDialog(
|
||||
context: context,
|
||||
title: item.modules.moduleDynamic.major.archive.title,
|
||||
cover: item.modules.moduleDynamic.major.archive.cover,
|
||||
);
|
||||
} else if (item.type == 'DYNAMIC_TYPE_UGC_SEASON') {
|
||||
imageSaveDialog(
|
||||
context: context,
|
||||
title: item.modules.moduleDynamic.major.ugcSeason.title,
|
||||
cover: item.modules.moduleDynamic.major.ugcSeason.cover,
|
||||
);
|
||||
} else if (item.type == 'DYNAMIC_TYPE_PGC' ||
|
||||
item.type == 'DYNAMIC_TYPE_PGC_UNION') {
|
||||
imageSaveDialog(
|
||||
context: context,
|
||||
title: item.modules.moduleDynamic.major.pgc.title,
|
||||
cover: item.modules.moduleDynamic.major.pgc.cover,
|
||||
);
|
||||
} else if (item.type == 'DYNAMIC_TYPE_LIVE_RCMD') {
|
||||
imageSaveDialog(
|
||||
context: context,
|
||||
title: item.modules.moduleDynamic.major.liveRcmd.title,
|
||||
cover: item.modules.moduleDynamic.major.liveRcmd.cover,
|
||||
);
|
||||
} else if (item.type == 'DYNAMIC_TYPE_LIVE') {
|
||||
imageSaveDialog(
|
||||
context: context,
|
||||
title: item.modules.moduleDynamic.major.live.title,
|
||||
cover: item.modules.moduleDynamic.major.live.cover,
|
||||
);
|
||||
}
|
||||
},
|
||||
onLongPress: () => _imageSaveDialog(context, authorWidget.morePanel),
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.fromLTRB(12, 12, 12, 6),
|
||||
child: AuthorPanel(
|
||||
item: item,
|
||||
source: source,
|
||||
onRemove: onRemove,
|
||||
isSave: isSave,
|
||||
onSetTop: onSetTop,
|
||||
),
|
||||
child: authorWidget,
|
||||
),
|
||||
if (item!.modules!.moduleDynamic!.desc != null ||
|
||||
item!.modules!.moduleDynamic!.major != null)
|
||||
if (item.modules!.moduleDynamic!.desc != null ||
|
||||
item.modules!.moduleDynamic!.major != null)
|
||||
content(isSave, context, item, source, callback),
|
||||
forWard(isSave, item, context, source, callback),
|
||||
const SizedBox(height: 2),
|
||||
@@ -118,4 +87,43 @@ class DynamicPanel extends StatelessWidget {
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void _imageSaveDialog(
|
||||
BuildContext context,
|
||||
Function(BuildContext) morePanel,
|
||||
) {
|
||||
late String? title;
|
||||
late String? cover;
|
||||
late final major = item.modules?.moduleDynamic?.major;
|
||||
switch (item.type) {
|
||||
case 'DYNAMIC_TYPE_AV':
|
||||
title = major?.archive?.title;
|
||||
cover = major?.archive?.cover;
|
||||
break;
|
||||
case 'DYNAMIC_TYPE_UGC_SEASON':
|
||||
title = major?.ugcSeason?.title;
|
||||
cover = major?.ugcSeason?.cover;
|
||||
break;
|
||||
case 'DYNAMIC_TYPE_PGC' || 'DYNAMIC_TYPE_PGC_UNION':
|
||||
title = major?.pgc?.title;
|
||||
cover = major?.pgc?.cover;
|
||||
break;
|
||||
case 'DYNAMIC_TYPE_LIVE_RCMD':
|
||||
title = major?.liveRcmd?.title;
|
||||
cover = major?.liveRcmd?.cover;
|
||||
break;
|
||||
case 'DYNAMIC_TYPE_LIVE':
|
||||
title = major?.live?.title;
|
||||
cover = major?.live?.cover;
|
||||
break;
|
||||
default:
|
||||
morePanel(context);
|
||||
return;
|
||||
}
|
||||
imageSaveDialog(
|
||||
context: context,
|
||||
title: title,
|
||||
cover: cover,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user