Merge branch 'fix' into alpha
This commit is contained in:
@ -70,20 +70,25 @@ class VideoCardV extends StatelessWidget {
|
|||||||
break;
|
break;
|
||||||
// 动态
|
// 动态
|
||||||
case 'picture':
|
case 'picture':
|
||||||
|
try {
|
||||||
String dynamicType = 'picture';
|
String dynamicType = 'picture';
|
||||||
String uri = videoItem.uri;
|
String uri = videoItem.uri;
|
||||||
if (videoItem.uri.contains('bilibili://article/')) {
|
String id = '';
|
||||||
dynamicType = 'article';
|
if (videoItem.uri.startsWith('bilibili://article/')) {
|
||||||
|
// https://www.bilibili.com/read/cv27063554
|
||||||
|
dynamicType = 'read';
|
||||||
RegExp regex = RegExp(r'\d+');
|
RegExp regex = RegExp(r'\d+');
|
||||||
Match match = regex.firstMatch(videoItem.uri)!;
|
Match match = regex.firstMatch(videoItem.uri)!;
|
||||||
String matchedNumber = match.group(0)!;
|
String matchedNumber = match.group(0)!;
|
||||||
videoItem.param = 'cv' + matchedNumber;
|
videoItem.param = int.parse(matchedNumber);
|
||||||
|
id = 'cv${videoItem.param}';
|
||||||
}
|
}
|
||||||
if (uri.startsWith('http')) {
|
if (uri.startsWith('http')) {
|
||||||
String path = Uri.parse(uri).path;
|
String path = Uri.parse(uri).path;
|
||||||
if (isStringNumeric(path.split('/')[1])) {
|
if (isStringNumeric(path.split('/')[1])) {
|
||||||
// 请求接口
|
// 请求接口
|
||||||
var res = await DynamicsHttp.dynamicDetail(id: path.split('/')[1]);
|
var res =
|
||||||
|
await DynamicsHttp.dynamicDetail(id: path.split('/')[1]);
|
||||||
if (res['status']) {
|
if (res['status']) {
|
||||||
Get.toNamed('/dynamicDetail', arguments: {
|
Get.toNamed('/dynamicDetail', arguments: {
|
||||||
'item': res['data'],
|
'item': res['data'],
|
||||||
@ -97,9 +102,12 @@ class VideoCardV extends StatelessWidget {
|
|||||||
Get.toNamed('/htmlRender', parameters: {
|
Get.toNamed('/htmlRender', parameters: {
|
||||||
'url': uri,
|
'url': uri,
|
||||||
'title': videoItem.title,
|
'title': videoItem.title,
|
||||||
'id': videoItem.param.toString(),
|
'id': id,
|
||||||
'dynamicType': dynamicType
|
'dynamicType': dynamicType
|
||||||
});
|
});
|
||||||
|
} catch (err) {
|
||||||
|
SmartDialog.showToast(err.toString());
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
SmartDialog.showToast(videoItem.goto);
|
SmartDialog.showToast(videoItem.goto);
|
||||||
|
|||||||
@ -214,6 +214,8 @@ class PlPlayerController {
|
|||||||
late double fontSizeVal;
|
late double fontSizeVal;
|
||||||
late double danmakuSpeedVal;
|
late double danmakuSpeedVal;
|
||||||
late List speedsList;
|
late List speedsList;
|
||||||
|
// 缓存
|
||||||
|
double? defaultDuration;
|
||||||
|
|
||||||
// 播放顺序相关
|
// 播放顺序相关
|
||||||
PlayRepeat playRepeat = PlayRepeat.pause;
|
PlayRepeat playRepeat = PlayRepeat.pause;
|
||||||
@ -575,8 +577,9 @@ class PlPlayerController {
|
|||||||
await _videoPlayerController?.setRate(speed);
|
await _videoPlayerController?.setRate(speed);
|
||||||
try {
|
try {
|
||||||
DanmakuOption currentOption = danmakuController!.option;
|
DanmakuOption currentOption = danmakuController!.option;
|
||||||
|
defaultDuration ??= currentOption.duration;
|
||||||
DanmakuOption updatedOption = currentOption.copyWith(
|
DanmakuOption updatedOption = currentOption.copyWith(
|
||||||
duration: (currentOption.duration / speed) * playbackSpeed);
|
duration: (defaultDuration! / speed) * playbackSpeed);
|
||||||
danmakuController!.updateOption(updatedOption);
|
danmakuController!.updateOption(updatedOption);
|
||||||
} catch (_) {}
|
} catch (_) {}
|
||||||
// fix 长按倍速后放开不恢复
|
// fix 长按倍速后放开不恢复
|
||||||
@ -584,16 +587,16 @@ class PlPlayerController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// 设置倍速
|
/// 设置倍速
|
||||||
Future<void> togglePlaybackSpeed() async {
|
// Future<void> togglePlaybackSpeed() async {
|
||||||
List<double> allowedSpeeds =
|
// List<double> allowedSpeeds =
|
||||||
PlaySpeed.values.map<double>((e) => e.value).toList();
|
// PlaySpeed.values.map<double>((e) => e.value).toList();
|
||||||
int index = allowedSpeeds.indexOf(_playbackSpeed.value);
|
// int index = allowedSpeeds.indexOf(_playbackSpeed.value);
|
||||||
if (index < allowedSpeeds.length - 1) {
|
// if (index < allowedSpeeds.length - 1) {
|
||||||
setPlaybackSpeed(allowedSpeeds[index + 1]);
|
// setPlaybackSpeed(allowedSpeeds[index + 1]);
|
||||||
} else {
|
// } else {
|
||||||
setPlaybackSpeed(allowedSpeeds[0]);
|
// setPlaybackSpeed(allowedSpeeds[0]);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
/// 播放视频
|
/// 播放视频
|
||||||
Future<void> play({bool repeat = false, bool hideControls = true}) async {
|
Future<void> play({bool repeat = false, bool hideControls = true}) async {
|
||||||
|
|||||||
Reference in New Issue
Block a user