From 288d554de9bd79ed52582d95517a3d2ea59e6e06 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Sun, 24 Aug 2025 09:41:37 +0800 Subject: [PATCH] opt check reply note Closes #1095 Signed-off-by: bggRGjQaUbCoE --- .../video/reply/widgets/reply_item_grpc.dart | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/lib/pages/video/reply/widgets/reply_item_grpc.dart b/lib/pages/video/reply/widgets/reply_item_grpc.dart index 88f09f37..4d29b7cd 100644 --- a/lib/pages/video/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/reply/widgets/reply_item_grpc.dart @@ -581,20 +581,7 @@ class ReplyItemGrpc extends StatelessWidget { ) { final Content content = replyItem.content; final List spanChildren = []; - - if (content.richText.hasNote()) { - spanChildren.add( - TextSpan( - text: '[笔记] ', - style: TextStyle( - color: theme.colorScheme.primary, - ), - recognizer: TapGestureRecognizer() - ..onTap = () => - PageUtils.handleWebview(content.richText.note.clickUrl), - ), - ); - } + bool hasNote = false; final urlKeys = content.urls.keys; // 构建正则表达式 @@ -626,6 +613,9 @@ class ReplyItemGrpc extends StatelessWidget { return; } final isCv = url.clickReport.startsWith('{"cvid'); + if (isCv) { + hasNote = true; + } final children = [ if (!isCv && url.hasPrefixIcon()) WidgetSpan( @@ -825,6 +815,28 @@ class ReplyItemGrpc extends StatelessWidget { } } + if (!hasNote && + (content.richText.hasNote() || + replyItem.replyControl.bizScene == 'note')) { + final hasClickUrl = content.richText.note.hasClickUrl(); + spanChildren.insert( + 0, + TextSpan( + text: '[笔记] ', + style: TextStyle( + color: hasClickUrl + ? theme.colorScheme.primary + : theme.colorScheme.secondary, + ), + recognizer: hasClickUrl + ? (TapGestureRecognizer() + ..onTap = () => + PageUtils.handleWebview(content.richText.note.clickUrl)) + : null, + ), + ); + } + return TextSpan(children: spanChildren); }