From 815716c402e1c742c025d1a7e9f90fcb9c6e0ce4 Mon Sep 17 00:00:00 2001 From: orz12 Date: Thu, 11 Jul 2024 17:46:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20at=E3=80=81=E8=B5=9E=E3=80=81=E5=9B=9E?= =?UTF-8?q?=E5=A4=8D=E9=A1=B5=E8=A7=86=E9=A2=91=E8=B7=AF=E7=94=B1=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/msg_feed_top/at_me/view.dart | 41 ++++++++++++----------- lib/pages/msg_feed_top/like_me/view.dart | 4 ++- lib/pages/msg_feed_top/reply_me/view.dart | 5 ++- lib/utils/app_scheme.dart | 25 ++++++++++++++ 4 files changed, 54 insertions(+), 21 deletions(-) diff --git a/lib/pages/msg_feed_top/at_me/view.dart b/lib/pages/msg_feed_top/at_me/view.dart index 558ad0ca..e34b398c 100644 --- a/lib/pages/msg_feed_top/at_me/view.dart +++ b/lib/pages/msg_feed_top/at_me/view.dart @@ -4,6 +4,7 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; +import '../../../utils/app_scheme.dart'; import 'controller.dart'; class AtMePage extends StatefulWidget { @@ -65,7 +66,9 @@ class _AtMePageState extends State { String nativeUri = _atMeController .msgFeedAtMeList[i].item?.nativeUri ?? ""; - SmartDialog.showToast("跳转至:$nativeUri(暂未实现)"); + PiliScheme.routePush( + PiliScheme.stringToSchemeEntity(nativeUri)); + // SmartDialog.showToast("跳转至:$nativeUri(暂未实现)"); }, leading: NetworkImgLayer( width: 45, @@ -82,25 +85,25 @@ class _AtMePageState extends State { .copyWith( color: Theme.of(context).colorScheme.primary, )), - subtitle: - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const SizedBox(height: 4), - Text( - _atMeController + subtitle: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 4), + Text( + _atMeController .msgFeedAtMeList[i].item?.sourceContent ?? - "", - maxLines: 3, - overflow: TextOverflow.ellipsis, - style: Theme.of(context) - .textTheme - .bodyMedium! - .copyWith( - color: - Theme.of(context).colorScheme.outline)) - ], - ), + "", + maxLines: 3, + overflow: TextOverflow.ellipsis, + style: Theme.of(context) + .textTheme + .bodyMedium! + .copyWith( + color: Theme.of(context) + .colorScheme + .outline)) + ], + ), trailing: _atMeController .msgFeedAtMeList[i].item?.image != null && diff --git a/lib/pages/msg_feed_top/like_me/view.dart b/lib/pages/msg_feed_top/like_me/view.dart index 3970d48f..15689252 100644 --- a/lib/pages/msg_feed_top/like_me/view.dart +++ b/lib/pages/msg_feed_top/like_me/view.dart @@ -5,6 +5,7 @@ import 'package:get/get.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import '../../../models/msg/msgfeed_like_me.dart'; +import '../../../utils/app_scheme.dart'; import 'controller.dart'; class LikeMePage extends StatefulWidget { @@ -113,7 +114,8 @@ class LikeMeList extends StatelessWidget { return ListTile( onTap: () { String nativeUri = msgFeedLikeMeList[i].item?.nativeUri ?? ""; - SmartDialog.showToast("跳转至:$nativeUri(暂未实现)"); + PiliScheme.routePush(PiliScheme.stringToSchemeEntity(nativeUri)); + // SmartDialog.showToast("跳转至:$nativeUri(暂未实现)"); }, leading: Column( children: [ diff --git a/lib/pages/msg_feed_top/reply_me/view.dart b/lib/pages/msg_feed_top/reply_me/view.dart index 82b5f0f6..fd942c92 100644 --- a/lib/pages/msg_feed_top/reply_me/view.dart +++ b/lib/pages/msg_feed_top/reply_me/view.dart @@ -4,6 +4,7 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; +import '../../../utils/app_scheme.dart'; import 'controller.dart'; class ReplyMePage extends StatefulWidget { @@ -66,7 +67,9 @@ class _ReplyMePageState extends State { String nativeUri = _replyMeController .msgFeedReplyMeList[i].item?.nativeUri ?? ""; - SmartDialog.showToast("跳转至:$nativeUri(暂未实现)"); + PiliScheme.routePush( + PiliScheme.stringToSchemeEntity(nativeUri)); + // SmartDialog.showToast("跳转至:$nativeUri(暂未实现)"); }, leading: NetworkImgLayer( width: 45, diff --git a/lib/utils/app_scheme.dart b/lib/utils/app_scheme.dart index 27da4ac1..db8d7d08 100644 --- a/lib/utils/app_scheme.dart +++ b/lib/utils/app_scheme.dart @@ -32,6 +32,21 @@ class PiliScheme { }); } + static SchemeEntity stringToSchemeEntity(String dataString) { + Uri uri = Uri.parse(dataString); + Map? queryParams = + uri.query.isNotEmpty ? Uri.splitQueryString(uri.query) : null; + return SchemeEntity( + scheme: uri.scheme, + host: uri.host, + port: uri.hasPort ? uri.port : null, + path: uri.path, + query: queryParams, + source: dataString, + dataString: dataString, + ); + } + /// 路由跳转 static void routePush(SchemeEntity value) async { final String scheme = value.scheme!; @@ -96,6 +111,16 @@ class PiliScheme { 'dynamicType': 'read' }, ); + } else if (host == 'following' && path.startsWith("/detail/")) { + var opusId = path.split('/').last; + Get.toNamed( + '/webview', + parameters: { + 'url': 'https://www.bilibili.com/opus/$opusId', + 'type': 'url', + 'pageTitle': '', + }, + ); } else { print(value.dataString); SmartDialog.showToast('未知路径:${value.dataString},请截图反馈给开发者');