feat: at、赞、回复页视频路由跳转支持

This commit is contained in:
orz12
2024-07-11 17:46:14 +08:00
parent 2fd85da836
commit 815716c402
4 changed files with 54 additions and 21 deletions

View File

@@ -4,6 +4,7 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
import '../../../utils/app_scheme.dart';
import 'controller.dart'; import 'controller.dart';
class AtMePage extends StatefulWidget { class AtMePage extends StatefulWidget {
@@ -65,7 +66,9 @@ class _AtMePageState extends State<AtMePage> {
String nativeUri = _atMeController String nativeUri = _atMeController
.msgFeedAtMeList[i].item?.nativeUri ?? .msgFeedAtMeList[i].item?.nativeUri ??
""; "";
SmartDialog.showToast("跳转至:$nativeUri(暂未实现)"); PiliScheme.routePush(
PiliScheme.stringToSchemeEntity(nativeUri));
// SmartDialog.showToast("跳转至:$nativeUri暂未实现");
}, },
leading: NetworkImgLayer( leading: NetworkImgLayer(
width: 45, width: 45,
@@ -82,25 +85,25 @@ class _AtMePageState extends State<AtMePage> {
.copyWith( .copyWith(
color: Theme.of(context).colorScheme.primary, color: Theme.of(context).colorScheme.primary,
)), )),
subtitle: subtitle: Column(
Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ const SizedBox(height: 4),
const SizedBox(height: 4), Text(
Text( _atMeController
_atMeController
.msgFeedAtMeList[i].item?.sourceContent ?? .msgFeedAtMeList[i].item?.sourceContent ??
"", "",
maxLines: 3, maxLines: 3,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
style: Theme.of(context) style: Theme.of(context)
.textTheme .textTheme
.bodyMedium! .bodyMedium!
.copyWith( .copyWith(
color: color: Theme.of(context)
Theme.of(context).colorScheme.outline)) .colorScheme
], .outline))
), ],
),
trailing: _atMeController trailing: _atMeController
.msgFeedAtMeList[i].item?.image != .msgFeedAtMeList[i].item?.image !=
null && null &&

View File

@@ -5,6 +5,7 @@ import 'package:get/get.dart';
import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
import '../../../models/msg/msgfeed_like_me.dart'; import '../../../models/msg/msgfeed_like_me.dart';
import '../../../utils/app_scheme.dart';
import 'controller.dart'; import 'controller.dart';
class LikeMePage extends StatefulWidget { class LikeMePage extends StatefulWidget {
@@ -113,7 +114,8 @@ class LikeMeList extends StatelessWidget {
return ListTile( return ListTile(
onTap: () { onTap: () {
String nativeUri = msgFeedLikeMeList[i].item?.nativeUri ?? ""; String nativeUri = msgFeedLikeMeList[i].item?.nativeUri ?? "";
SmartDialog.showToast("跳转至:$nativeUri(暂未实现)"); PiliScheme.routePush(PiliScheme.stringToSchemeEntity(nativeUri));
// SmartDialog.showToast("跳转至:$nativeUri暂未实现");
}, },
leading: Column( leading: Column(
children: [ children: [

View File

@@ -4,6 +4,7 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:PiliPalaX/common/widgets/network_img_layer.dart'; import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
import '../../../utils/app_scheme.dart';
import 'controller.dart'; import 'controller.dart';
class ReplyMePage extends StatefulWidget { class ReplyMePage extends StatefulWidget {
@@ -66,7 +67,9 @@ class _ReplyMePageState extends State<ReplyMePage> {
String nativeUri = _replyMeController String nativeUri = _replyMeController
.msgFeedReplyMeList[i].item?.nativeUri ?? .msgFeedReplyMeList[i].item?.nativeUri ??
""; "";
SmartDialog.showToast("跳转至:$nativeUri(暂未实现)"); PiliScheme.routePush(
PiliScheme.stringToSchemeEntity(nativeUri));
// SmartDialog.showToast("跳转至:$nativeUri暂未实现");
}, },
leading: NetworkImgLayer( leading: NetworkImgLayer(
width: 45, width: 45,

View File

@@ -32,6 +32,21 @@ class PiliScheme {
}); });
} }
static SchemeEntity stringToSchemeEntity(String dataString) {
Uri uri = Uri.parse(dataString);
Map<String, String>? 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 { static void routePush(SchemeEntity value) async {
final String scheme = value.scheme!; final String scheme = value.scheme!;
@@ -96,6 +111,16 @@ class PiliScheme {
'dynamicType': 'read' '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 { } else {
print(value.dataString); print(value.dataString);
SmartDialog.showToast('未知路径:${value.dataString},请截图反馈给开发者'); SmartDialog.showToast('未知路径:${value.dataString},请截图反馈给开发者');