mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
feat: seek from viewpoint
Closes #153 Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -1052,6 +1052,37 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
||||
child: Stack(
|
||||
alignment: Alignment.bottomCenter,
|
||||
children: [
|
||||
if (plPlayerController.viewPointList.isNotEmpty &&
|
||||
plPlayerController.showVP.value)
|
||||
LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
return SizedBox(
|
||||
height: 20,
|
||||
child: Listener(
|
||||
behavior: HitTestBehavior.translucent,
|
||||
onPointerDown: (event) {
|
||||
try {
|
||||
double seg = event.localPosition.dx /
|
||||
constraints.maxWidth;
|
||||
Segment item = plPlayerController
|
||||
.viewPointList
|
||||
.where((item) {
|
||||
return item.start >= seg;
|
||||
}).reduce((a, b) =>
|
||||
a.start < b.start ? a : b);
|
||||
if (item.from != null) {
|
||||
plPlayerController.seekTo(
|
||||
Duration(seconds: item.from!));
|
||||
}
|
||||
// debugPrint('${item.title},,${item.from}');
|
||||
} catch (e) {
|
||||
debugPrint('$e');
|
||||
}
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
ProgressBar(
|
||||
progress: Duration(seconds: value),
|
||||
buffered: Duration(seconds: buffer),
|
||||
|
||||
@@ -52,6 +52,37 @@ class BottomControl extends StatelessWidget implements PreferredSizeWidget {
|
||||
child: Stack(
|
||||
alignment: Alignment.bottomCenter,
|
||||
children: [
|
||||
if (controller?.viewPointList.isNotEmpty == true &&
|
||||
controller?.showVP.value == true)
|
||||
LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
return Container(
|
||||
height: 20,
|
||||
margin: const EdgeInsets.only(bottom: 5.25),
|
||||
child: Listener(
|
||||
behavior: HitTestBehavior.translucent,
|
||||
onPointerDown: (event) {
|
||||
try {
|
||||
double seg = event.localPosition.dx /
|
||||
constraints.maxWidth;
|
||||
Segment? item = controller?.viewPointList
|
||||
.where((item) {
|
||||
return item.start >= seg;
|
||||
}).reduce((a, b) =>
|
||||
a.start < b.start ? a : b);
|
||||
if (item?.from != null) {
|
||||
controller?.seekTo(
|
||||
Duration(seconds: item!.from!));
|
||||
}
|
||||
// debugPrint('${item?.title},,${item?.from}');
|
||||
} catch (e) {
|
||||
debugPrint('$e');
|
||||
}
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
ProgressBar(
|
||||
progress: Duration(seconds: value),
|
||||
buffered: Duration(seconds: buffer),
|
||||
|
||||
Reference in New Issue
Block a user