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: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<AtMePage> {
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<AtMePage> {
.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 &&

View File

@@ -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: [

View File

@@ -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<ReplyMePage> {
String nativeUri = _replyMeController
.msgFeedReplyMeList[i].item?.nativeUri ??
"";
SmartDialog.showToast("跳转至:$nativeUri(暂未实现)");
PiliScheme.routePush(
PiliScheme.stringToSchemeEntity(nativeUri));
// SmartDialog.showToast("跳转至:$nativeUri暂未实现");
},
leading: NetworkImgLayer(
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 {
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},请截图反馈给开发者');