mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
opt: anim save panel
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -286,183 +286,191 @@ class _SavePanelState extends State<SavePanel> {
|
|||||||
color: Theme.of(context).colorScheme.surface,
|
color: Theme.of(context).colorScheme.surface,
|
||||||
borderRadius: BorderRadius.circular(12),
|
borderRadius: BorderRadius.circular(12),
|
||||||
),
|
),
|
||||||
child: Column(
|
child: AnimatedSize(
|
||||||
mainAxisSize: MainAxisSize.min,
|
curve: Curves.easeInOut,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
alignment: Alignment.topCenter,
|
||||||
children: [
|
duration: const Duration(milliseconds: 255),
|
||||||
if (_item is ReplyInfo)
|
child: Column(
|
||||||
IgnorePointer(
|
mainAxisSize: MainAxisSize.min,
|
||||||
child: ReplyItemGrpc(
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
replyItem: _item,
|
children: [
|
||||||
replyLevel: '',
|
if (_item is ReplyInfo)
|
||||||
needDivider: false,
|
IgnorePointer(
|
||||||
upMid: widget.upMid,
|
child: ReplyItemGrpc(
|
||||||
|
replyItem: _item,
|
||||||
|
replyLevel: '',
|
||||||
|
needDivider: false,
|
||||||
|
upMid: widget.upMid,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
else if (_item is DynamicItemModel)
|
||||||
|
IgnorePointer(
|
||||||
|
child: DynamicPanel(
|
||||||
|
item: _item,
|
||||||
|
source: 'detail',
|
||||||
|
isSave: true,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
)
|
if (cover?.isNotEmpty == true &&
|
||||||
else if (_item is DynamicItemModel)
|
title?.isNotEmpty == true)
|
||||||
IgnorePointer(
|
Container(
|
||||||
child: DynamicPanel(
|
height: 81,
|
||||||
item: _item,
|
clipBehavior: Clip.hardEdge,
|
||||||
source: 'detail',
|
margin:
|
||||||
isSave: true,
|
const EdgeInsets.symmetric(horizontal: 12),
|
||||||
),
|
padding: const EdgeInsets.all(8),
|
||||||
),
|
decoration: BoxDecoration(
|
||||||
if (cover?.isNotEmpty == true &&
|
color: Theme.of(context)
|
||||||
title?.isNotEmpty == true)
|
.colorScheme
|
||||||
Container(
|
.onInverseSurface,
|
||||||
height: 81,
|
borderRadius: BorderRadius.circular(8),
|
||||||
clipBehavior: Clip.hardEdge,
|
),
|
||||||
margin:
|
child: Row(
|
||||||
const EdgeInsets.symmetric(horizontal: 12),
|
|
||||||
padding: const EdgeInsets.all(8),
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: Theme.of(context)
|
|
||||||
.colorScheme
|
|
||||||
.onInverseSurface,
|
|
||||||
borderRadius: BorderRadius.circular(8),
|
|
||||||
),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
NetworkImgLayer(
|
|
||||||
radius: 6,
|
|
||||||
src: cover!,
|
|
||||||
height: MediaQuery.textScalerOf(context)
|
|
||||||
.scale(65),
|
|
||||||
width: MediaQuery.textScalerOf(context)
|
|
||||||
.scale(65) *
|
|
||||||
16 /
|
|
||||||
9,
|
|
||||||
quality: 100,
|
|
||||||
),
|
|
||||||
const SizedBox(width: 10),
|
|
||||||
Expanded(
|
|
||||||
child: Column(
|
|
||||||
crossAxisAlignment:
|
|
||||||
CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'$title\n',
|
|
||||||
maxLines: 2,
|
|
||||||
overflow: TextOverflow.ellipsis,
|
|
||||||
),
|
|
||||||
if (pubdate != null) ...[
|
|
||||||
const Spacer(),
|
|
||||||
Text(
|
|
||||||
DateTime.fromMillisecondsSinceEpoch(
|
|
||||||
pubdate! * 1000)
|
|
||||||
.toString()
|
|
||||||
.substring(0, 19),
|
|
||||||
style: TextStyle(
|
|
||||||
color: Theme.of(context)
|
|
||||||
.colorScheme
|
|
||||||
.outline,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
showBottom
|
|
||||||
? Stack(
|
|
||||||
clipBehavior: Clip.none,
|
|
||||||
children: [
|
children: [
|
||||||
if (uri.isNotEmpty)
|
NetworkImgLayer(
|
||||||
Align(
|
radius: 6,
|
||||||
alignment: Alignment.centerRight,
|
src: cover!,
|
||||||
child: Row(
|
height: MediaQuery.textScalerOf(context)
|
||||||
children: [
|
.scale(65),
|
||||||
Expanded(
|
width: MediaQuery.textScalerOf(context)
|
||||||
child: Column(
|
.scale(65) *
|
||||||
mainAxisSize: MainAxisSize.min,
|
16 /
|
||||||
crossAxisAlignment:
|
9,
|
||||||
CrossAxisAlignment.end,
|
quality: 100,
|
||||||
children: [
|
),
|
||||||
if (uname?.isNotEmpty ==
|
const SizedBox(width: 10),
|
||||||
true) ...[
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'$title\n',
|
||||||
|
maxLines: 2,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
),
|
||||||
|
if (pubdate != null) ...[
|
||||||
|
const Spacer(),
|
||||||
|
Text(
|
||||||
|
DateTime.fromMillisecondsSinceEpoch(
|
||||||
|
pubdate! * 1000)
|
||||||
|
.toString()
|
||||||
|
.substring(0, 19),
|
||||||
|
style: TextStyle(
|
||||||
|
color: Theme.of(context)
|
||||||
|
.colorScheme
|
||||||
|
.outline,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
showBottom
|
||||||
|
? Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
|
children: [
|
||||||
|
if (uri.isNotEmpty)
|
||||||
|
Align(
|
||||||
|
alignment: Alignment.centerRight,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize:
|
||||||
|
MainAxisSize.min,
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.end,
|
||||||
|
children: [
|
||||||
|
if (uname?.isNotEmpty ==
|
||||||
|
true) ...[
|
||||||
|
Text(
|
||||||
|
'@$uname',
|
||||||
|
maxLines: 1,
|
||||||
|
overflow: TextOverflow
|
||||||
|
.ellipsis,
|
||||||
|
style: TextStyle(
|
||||||
|
color:
|
||||||
|
Theme.of(context)
|
||||||
|
.colorScheme
|
||||||
|
.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 4),
|
||||||
|
],
|
||||||
Text(
|
Text(
|
||||||
'@$uname',
|
'识别二维码,$viewType$itemType',
|
||||||
maxLines: 1,
|
textAlign: TextAlign.end,
|
||||||
overflow:
|
|
||||||
TextOverflow.ellipsis,
|
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Theme.of(context)
|
color: Theme.of(context)
|
||||||
.colorScheme
|
.colorScheme
|
||||||
.primary,
|
.onSurfaceVariant,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 4),
|
const SizedBox(height: 4),
|
||||||
|
Text(
|
||||||
|
DateTime.now()
|
||||||
|
.toString()
|
||||||
|
.split('.')
|
||||||
|
.first,
|
||||||
|
textAlign: TextAlign.end,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 13,
|
||||||
|
color: Theme.of(context)
|
||||||
|
.colorScheme
|
||||||
|
.outline,
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
Text(
|
),
|
||||||
'识别二维码,$viewType$itemType',
|
|
||||||
textAlign: TextAlign.end,
|
|
||||||
style: TextStyle(
|
|
||||||
color: Theme.of(context)
|
|
||||||
.colorScheme
|
|
||||||
.onSurfaceVariant,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(height: 4),
|
|
||||||
Text(
|
|
||||||
DateTime.now()
|
|
||||||
.toString()
|
|
||||||
.split('.')
|
|
||||||
.first,
|
|
||||||
textAlign: TextAlign.end,
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 13,
|
|
||||||
color: Theme.of(context)
|
|
||||||
.colorScheme
|
|
||||||
.outline,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
Container(
|
||||||
Container(
|
width: 100,
|
||||||
width: 100,
|
height: 100,
|
||||||
height: 100,
|
|
||||||
padding: const EdgeInsets.all(12),
|
|
||||||
child: Container(
|
|
||||||
color: Get.isDarkMode
|
|
||||||
? Colors.white
|
|
||||||
: Theme.of(context)
|
|
||||||
.colorScheme
|
|
||||||
.surface,
|
|
||||||
padding:
|
padding:
|
||||||
const EdgeInsets.all(3),
|
const EdgeInsets.all(12),
|
||||||
child: PrettyQrView.data(
|
child: Container(
|
||||||
data: uri,
|
color: Get.isDarkMode
|
||||||
decoration:
|
? Colors.white
|
||||||
const PrettyQrDecoration(
|
: Theme.of(context)
|
||||||
shape:
|
.colorScheme
|
||||||
PrettyQrRoundedSymbol(
|
.surface,
|
||||||
borderRadius:
|
padding:
|
||||||
BorderRadius.zero,
|
const EdgeInsets.all(3),
|
||||||
|
child: PrettyQrView.data(
|
||||||
|
data: uri,
|
||||||
|
decoration:
|
||||||
|
const PrettyQrDecoration(
|
||||||
|
shape:
|
||||||
|
PrettyQrRoundedSymbol(
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.zero,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
],
|
||||||
],
|
),
|
||||||
|
),
|
||||||
|
Align(
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Image.asset(
|
||||||
|
'assets/images/logo/logo_2.png',
|
||||||
|
width: 100,
|
||||||
|
color: Theme.of(context)
|
||||||
|
.colorScheme
|
||||||
|
.onSurfaceVariant,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Align(
|
],
|
||||||
alignment: Alignment.centerLeft,
|
)
|
||||||
child: Image.asset(
|
: const SizedBox(height: 12),
|
||||||
'assets/images/logo/logo_2.png',
|
],
|
||||||
width: 100,
|
),
|
||||||
color: Theme.of(context)
|
|
||||||
.colorScheme
|
|
||||||
.onSurfaceVariant,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
: const SizedBox(height: 12),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user