mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
feat: at、赞、回复页视频路由跳转支持
This commit is contained in:
@@ -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 &&
|
||||
|
||||
@@ -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: [
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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},请截图反馈给开发者');
|
||||
|
||||
Reference in New Issue
Block a user