mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-04-20 03:06:59 +08:00
@@ -104,6 +104,8 @@ class DynamicItemModel {
|
||||
String? type;
|
||||
bool? visible;
|
||||
|
||||
late bool linkFolded = false;
|
||||
|
||||
// opus
|
||||
Fallback? fallback;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -221,6 +221,10 @@ abstract final class PageUtils {
|
||||
},
|
||||
);
|
||||
} else {
|
||||
if (item.linkFolded) {
|
||||
pushDynFromId(id: item.idStr);
|
||||
return;
|
||||
}
|
||||
toDupNamed(
|
||||
'/dynamicDetail',
|
||||
arguments: {
|
||||
|
||||
Reference in New Issue
Block a user