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: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 &&
|
||||||
|
|||||||
@@ -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: [
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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},请截图反馈给开发者');
|
||||||
|
|||||||
Reference in New Issue
Block a user