mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-27 04:26:58 +08:00
opt: webview to video
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -71,7 +71,7 @@ class _AboutPageState extends State<AboutPage> {
|
||||
onSubmitted: (value) {
|
||||
Get.back();
|
||||
if (value.isNotEmpty) {
|
||||
Get.toNamed('/webview', parameters: {'url': value});
|
||||
Utils.handleWebview(value, inApp: true);
|
||||
}
|
||||
},
|
||||
),
|
||||
|
||||
@@ -310,10 +310,7 @@ Widget forWard(item, context, source, callback, {floor = 1}) {
|
||||
if (url.contains('bangumi/play') && Utils.viewPgcFromUri(url)) {
|
||||
return;
|
||||
}
|
||||
Get.toNamed(
|
||||
'/webview',
|
||||
parameters: {'url': url},
|
||||
);
|
||||
Utils.handleWebview(url, inApp: true);
|
||||
} catch (_) {}
|
||||
},
|
||||
child: Container(
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/pages/common/common_controller.dart';
|
||||
import 'package:PiliPlus/pages/search_result/controller.dart';
|
||||
import 'package:PiliPlus/utils/app_scheme.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:PiliPlus/http/search.dart';
|
||||
import 'package:PiliPlus/models/common/search_type.dart';
|
||||
import 'package:PiliPlus/utils/id_utils.dart';
|
||||
import 'package:PiliPlus/utils/utils.dart';
|
||||
|
||||
class SearchPanelController extends CommonController {
|
||||
SearchPanelController({
|
||||
@@ -61,39 +61,17 @@ class SearchPanelController extends CommonController {
|
||||
void onPushDetail(resultList) async {
|
||||
// 匹配输入内容,如果是AV、BV号且有结果 直接跳转详情页
|
||||
Map matchRes = IdUtils.matchAvorBv(input: keyword);
|
||||
List matchKeys = matchRes.keys.toList();
|
||||
String? bvid;
|
||||
try {
|
||||
bvid = resultList.first.bvid;
|
||||
} catch (_) {
|
||||
bvid = null;
|
||||
if (matchRes.isNotEmpty) {
|
||||
PiliScheme.videoPush(matchRes['AV'], matchRes['BV'], false);
|
||||
return;
|
||||
}
|
||||
// keyword 可能输入纯数字
|
||||
int? aid;
|
||||
try {
|
||||
aid = resultList.first.aid;
|
||||
} catch (_) {
|
||||
aid = null;
|
||||
}
|
||||
if (matchKeys.isNotEmpty && searchType == SearchType.video ||
|
||||
aid.toString() == keyword) {
|
||||
int cid = await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
||||
if (matchKeys.isNotEmpty &&
|
||||
matchKeys.first == 'BV' &&
|
||||
matchRes[matchKeys.first] == bvid ||
|
||||
matchKeys.isNotEmpty &&
|
||||
matchKeys.first == 'AV' &&
|
||||
matchRes[matchKeys.first] == aid ||
|
||||
aid.toString() == keyword) {
|
||||
Get.toNamed(
|
||||
'/video?bvid=$bvid&cid=$cid',
|
||||
arguments: {
|
||||
'videoItem': resultList.first,
|
||||
'heroTag': Utils.makeHeroTag(bvid),
|
||||
},
|
||||
);
|
||||
int? aid = int.tryParse(keyword);
|
||||
if (aid != null && resultList.first.aid == aid) {
|
||||
PiliScheme.videoPush(aid, null, false);
|
||||
}
|
||||
}
|
||||
} catch (_) {}
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -221,7 +221,9 @@ class _WebviewPageNewState extends State<WebviewPageNew> {
|
||||
return NavigationActionPolicy.CANCEL;
|
||||
}
|
||||
} catch (_) {}
|
||||
} else if (url.startsWith('http://m.bilibili.com/playlist/')) {
|
||||
} else if (RegExp(
|
||||
r'^(https?://)?((www|m).)?(bilibili|b23).(com|tv)/playlist')
|
||||
.hasMatch(url)) {
|
||||
try {
|
||||
String? bvid =
|
||||
RegExp(r'bvid=(BV[a-zA-Z\d]+)').firstMatch(url)?.group(1);
|
||||
@@ -230,9 +232,10 @@ class _WebviewPageNewState extends State<WebviewPageNew> {
|
||||
return NavigationActionPolicy.CANCEL;
|
||||
}
|
||||
} catch (_) {}
|
||||
} else {
|
||||
} else if (url.startsWith('http').not) {
|
||||
if (url.startsWith('bilibili://video/')) {
|
||||
String? str = Uri.parse(url).pathSegments.getOrNull(0);
|
||||
String? str =
|
||||
navigationAction.request.url!.pathSegments.getOrNull(0);
|
||||
Get.offAndToNamed(
|
||||
'/searchResult',
|
||||
parameters: {'keyword': str ?? ''},
|
||||
|
||||
Reference in New Issue
Block a user