From b0c6e2f5cdc2ac47d28e7acc5a272e1d975ec5a6 Mon Sep 17 00:00:00 2001 From: dom Date: Sat, 14 Mar 2026 12:20:41 +0800 Subject: [PATCH] fix dyn folded link Signed-off-by: dom --- lib/models/dynamics/result.dart | 2 ++ lib/pages/dynamics/widgets/rich_node_panel.dart | 17 +++++++++++++---- lib/utils/page_utils.dart | 4 ++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/models/dynamics/result.dart b/lib/models/dynamics/result.dart index 34f4c5ad4..cc29abd36 100644 --- a/lib/models/dynamics/result.dart +++ b/lib/models/dynamics/result.dart @@ -104,6 +104,8 @@ class DynamicItemModel { String? type; bool? visible; + late bool linkFolded = false; + // opus Fallback? fallback; diff --git a/lib/pages/dynamics/widgets/rich_node_panel.dart b/lib/pages/dynamics/widgets/rich_node_panel.dart index ab2d2f746..e76366667 100644 --- a/lib/pages/dynamics/widgets/rich_node_panel.dart +++ b/lib/pages/dynamics/widgets/rich_node_panel.dart @@ -17,6 +17,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; +const _linkFoldedText = '网页链接'; + // 富文本 TextSpan? richNode( BuildContext context, { @@ -63,6 +65,9 @@ TextSpan? richNode( for (final i in richTextNodes) { switch (i.type) { case 'RICH_TEXT_NODE_TYPE_TEXT': + if (i.origText == _linkFoldedText) { + item.linkFolded = true; + } spanChildren.add( TextSpan( text: i.origText, @@ -102,6 +107,10 @@ TextSpan? richNode( break; // 网页链接 case 'RICH_TEXT_NODE_TYPE_WEB': + final hasLink = i.jumpUrl?.isNotEmpty ?? false; + if (!hasLink) { + item.linkFolded = true; + } spanChildren ..add( WidgetSpan( @@ -117,10 +126,10 @@ TextSpan? richNode( TextSpan( text: i.text, style: style, - recognizer: i.origText == null - ? null - : (NoDeadlineTapGestureRecognizer() - ..onTap = () => PageUtils.handleWebview(i.origText!)), + recognizer: hasLink + ? (NoDeadlineTapGestureRecognizer() + ..onTap = () => PageUtils.handleWebview(i.jumpUrl!)) + : null, ), ); break; diff --git a/lib/utils/page_utils.dart b/lib/utils/page_utils.dart index 57739e4f1..fe7b774d1 100644 --- a/lib/utils/page_utils.dart +++ b/lib/utils/page_utils.dart @@ -221,6 +221,10 @@ abstract final class PageUtils { }, ); } else { + if (item.linkFolded) { + pushDynFromId(id: item.idStr); + return; + } toDupNamed( '/dynamicDetail', arguments: {