From 7570985453ee4f99c9835e25d227319760e8efca Mon Sep 17 00:00:00 2001 From: orz12 Date: Wed, 6 Mar 2024 16:48:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=90=8C=E6=AD=A5=E4=B8=8A=E6=B8=B8?= =?UTF-8?q?=E8=AF=84=E8=AE=BA=E5=8C=BA=E7=82=B9=E5=87=BB=E5=AE=B9=E9=94=99?= =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../detail/reply/widgets/reply_item.dart | 12 +++++++--- lib/utils/url_utils.dart | 24 +++++++++++-------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/lib/pages/video/detail/reply/widgets/reply_item.dart b/lib/pages/video/detail/reply/widgets/reply_item.dart index df3303ec..9945b3cd 100644 --- a/lib/pages/video/detail/reply/widgets/reply_item.dart +++ b/lib/pages/video/detail/reply/widgets/reply_item.dart @@ -286,7 +286,7 @@ class ReplyItem extends StatelessWidget { value['data'] != null && addReply != null) { - addReply!(value['data']) + addReply?.call(value['data']) // replyControl.replies.add(value['data']), } }); @@ -537,8 +537,8 @@ InlineSpan buildContent( spanChilds.add(TextSpan( text: str, recognizer: TapGestureRecognizer() - ..onTap = - () => replyReply(replyItem.root == 0 ? replyItem : fReplyItem))); + ..onTap = () => + replyReply?.call(replyItem.root == 0 ? replyItem : fReplyItem))); } // 分割文本并处理每个部分 @@ -649,6 +649,11 @@ InlineSpan buildContent( } else { final String redirectUrl = await UrlUtils.parseRedirectUrl(matchStr); + if (redirectUrl == matchStr) { + Clipboard.setData(ClipboardData(text: matchStr)); + SmartDialog.showToast('地址可能有误'); + return; + } final String pathSegment = Uri.parse(redirectUrl).path; final String lastPathSegment = pathSegment.split('/').last; @@ -967,6 +972,7 @@ class MorePanel extends StatelessWidget { @override Widget build(BuildContext context) { + Color errorColor = Theme.of(context).colorScheme.error; return Container( padding: EdgeInsets.only(bottom: MediaQuery.of(context).padding.bottom), child: Column( diff --git a/lib/utils/url_utils.dart b/lib/utils/url_utils.dart index bac6cdfa..cf0ef9e2 100644 --- a/lib/utils/url_utils.dart +++ b/lib/utils/url_utils.dart @@ -14,19 +14,23 @@ class UrlUtils { dio.options.validateStatus = (status) { return status == 200 || status == 301 || status == 302; }; - final response = await dio.get(url); - if (response.statusCode == 302) { - redirectUrl = response.headers['location']?.first as String; - if (redirectUrl.endsWith('/')) { - redirectUrl = redirectUrl.substring(0, redirectUrl.length - 1); - } - } else { - if (url.endsWith('/')) { - url = url.substring(0, url.length - 1); + try { + final response = await dio.get(url); + if (response.statusCode == 302) { + redirectUrl = response.headers['location']?.first as String; + if (redirectUrl.endsWith('/')) { + redirectUrl = redirectUrl.substring(0, redirectUrl.length - 1); + } + } else { + if (url.endsWith('/')) { + url = url.substring(0, url.length - 1); + } + return url; } + return redirectUrl; + } catch (err) { return url; } - return redirectUrl; } // 匹配url路由跳转