opt: save panel

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-04-07 18:20:45 +08:00
parent af289c533f
commit 4de180c23a
6 changed files with 132 additions and 79 deletions

View File

@@ -131,7 +131,7 @@ class _SavePanelState extends State<SavePanel> {
late final rootId = hasRoot ? _item.root : _item.id;
late final anchor = hasRoot ? 'anchor=${_item.id}&' : '';
late final enterUri =
'bilibili://following/detail/${Get.parameters['id']}';
'bilibili://following/detail/${Get.parameters['id'] ?? Get.arguments?['id']}';
uri =
'bilibili://comment/detail/$type/$oid/$rootId/?${anchor}enterUri=$enterUri';
} catch (_) {}
@@ -360,20 +360,19 @@ class _SavePanelState extends State<SavePanel> {
],
),
),
Row(
Stack(
clipBehavior: Clip.none,
children: [
if (uri.isNotEmpty)
Align(
alignment: Alignment.centerRight,
child: Row(
children: [
Image.asset(
'assets/images/logo/logo_2.png',
width: 100,
color: Theme.of(context)
.colorScheme
.onSurfaceVariant,
),
if (uri.isNotEmpty) ...[
Expanded(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.end,
crossAxisAlignment:
CrossAxisAlignment.end,
children: [
if (uname?.isNotEmpty == true) ...[
Text(
@@ -390,6 +389,7 @@ class _SavePanelState extends State<SavePanel> {
],
Text(
'识别二维码,$viewType$itemType',
textAlign: TextAlign.end,
style: TextStyle(
color: Theme.of(context)
.colorScheme
@@ -402,6 +402,7 @@ class _SavePanelState extends State<SavePanel> {
.toString()
.split('.')
.first,
textAlign: TextAlign.end,
style: TextStyle(
fontSize: 13,
color: Theme.of(context)
@@ -419,11 +420,14 @@ class _SavePanelState extends State<SavePanel> {
child: Container(
color: Get.isDarkMode
? Colors.white
: Theme.of(context).colorScheme.surface,
: Theme.of(context)
.colorScheme
.surface,
padding: const EdgeInsets.all(3),
child: PrettyQrView.data(
data: uri,
decoration: const PrettyQrDecoration(
decoration:
const PrettyQrDecoration(
shape: PrettyQrRoundedSymbol(
borderRadius: BorderRadius.zero,
),
@@ -432,6 +436,18 @@ class _SavePanelState extends State<SavePanel> {
),
),
],
),
),
Align(
alignment: Alignment.centerLeft,
child: Image.asset(
'assets/images/logo/logo_2.png',
width: 100,
color: Theme.of(context)
.colorScheme
.onSurfaceVariant,
),
),
],
),
],

View File

@@ -190,7 +190,13 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
),
);
if (this.context.orientation == Orientation.portrait) {
Get.to(replyReplyPage);
Get.to(
replyReplyPage,
routeName: 'dynamicDetail-Copy',
arguments: {
'item': _dynamicDetailController.item,
},
);
} else {
ScaffoldState? scaffoldState = Scaffold.maybeOf(context);
if (scaffoldState != null) {
@@ -214,7 +220,13 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
),
);
} else {
Get.to(replyReplyPage);
Get.to(
replyReplyPage,
routeName: 'dynamicDetail-Copy',
arguments: {
'item': _dynamicDetailController.item,
},
);
}
}
});

View File

@@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
import 'rich_node_panel.dart';
Widget content(context, item, source, callback) {
Widget content(isSave, context, item, source, callback) {
InlineSpan picsNodes() {
return WidgetSpan(
child: LayoutBuilder(
@@ -55,7 +55,7 @@ Widget content(context, item, source, callback) {
child: Text.rich(
/// fix 默认20px高度
style: TextStyle(
fontSize: source == 'detail' ? 16 : 15,
fontSize: source == 'detail' && isSave != true ? 16 : 15,
),
richNodes,
maxLines: source == 'detail' ? null : 6,

View File

@@ -137,8 +137,8 @@ class DynamicPanel extends StatelessWidget {
),
if (item!.modules!.moduleDynamic!.desc != null ||
item!.modules!.moduleDynamic!.major != null)
content(context, item, source, callback),
forWard(item, context, source, callback),
content(isSave, context, item, source, callback),
forWard(isSave, item, context, source, callback),
const SizedBox(height: 2),
if (source == null) ActionPanel(item: item),
if (source == 'detail' && isSave != true) const SizedBox(height: 12),

View File

@@ -68,7 +68,8 @@ Widget _blockedItem(BuildContext context, item, source) {
);
}
Widget forWard(item, BuildContext context, source, callback, {floor = 1}) {
Widget forWard(isSave, item, BuildContext context, source, callback,
{floor = 1}) {
switch (item.type) {
// 图文
case 'DYNAMIC_TYPE_DRAW':
@@ -124,8 +125,14 @@ Widget forWard(item, BuildContext context, source, callback, {floor = 1}) {
Text.rich(
richNodes,
// 被转发状态(floor=2) 隐藏
maxLines: source == 'detail' && floor != 2 ? null : 4,
overflow: source == 'detail' && floor != 2
maxLines: isSave == true
? null
: source == 'detail' && floor != 2
? null
: 4,
overflow: isSave == true
? null
: source == 'detail' && floor != 2
? null
: TextOverflow.ellipsis,
),
@@ -254,8 +261,8 @@ Widget forWard(item, BuildContext context, source, callback, {floor = 1}) {
child: Container(
padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 8),
color: Theme.of(context).dividerColor.withOpacity(0.08),
child:
forWard(item.orig, context, source, callback, floor: floor + 1),
child: forWard(isSave, item.orig, context, source, callback,
floor: floor + 1),
),
);
// 直播
@@ -300,8 +307,14 @@ Widget forWard(item, BuildContext context, source, callback, {floor = 1}) {
Text.rich(
richNodes,
// 被转发状态(floor=2) 隐藏
maxLines: source == 'detail' && floor != 2 ? null : 4,
overflow: source == 'detail' && floor != 2
maxLines: isSave == true
? null
: source == 'detail' && floor != 2
? null
: 4,
overflow: isSave == true
? null
: source == 'detail' && floor != 2
? null
: TextOverflow.ellipsis,
),

View File

@@ -187,7 +187,13 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
),
);
if (this.context.orientation == Orientation.portrait) {
Get.to(replyReplyPage);
Get.to(
replyReplyPage,
routeName: 'htmlRender-Copy',
arguments: {
'id': _htmlRenderCtr.id,
},
);
} else {
ScaffoldState? scaffoldState = Scaffold.maybeOf(context);
if (scaffoldState != null) {
@@ -211,7 +217,13 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
),
);
} else {
Get.to(replyReplyPage);
Get.to(
replyReplyPage,
routeName: 'htmlRender-Copy',
arguments: {
'id': _htmlRenderCtr.id,
},
);
}
}
});