From a88c9d6298d474104343903c53a3cd8dd832d72b Mon Sep 17 00:00:00 2001 From: shikong <919411476@qq.com> Date: Sat, 25 Nov 2023 17:59:42 +0800 Subject: [PATCH] =?UTF-8?q?video=5Fplayer=20=E6=8C=89=E9=94=AE=E7=9B=91?= =?UTF-8?q?=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/view/video.dart | 44 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/lib/view/video.dart b/lib/view/video.dart index 5831c19..1991db1 100644 --- a/lib/view/video.dart +++ b/lib/view/video.dart @@ -29,8 +29,8 @@ class _CustomVideoPlayerState extends State { SystemChrome.setPreferredOrientations( [DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]); - // initVideoPlayer(); - initFijkPlayer(); + initVideoPlayer(); + // initFijkPlayer(); } void initVideoPlayer() { @@ -55,7 +55,32 @@ class _CustomVideoPlayerState extends State { }); } - void onKey(RawKeyEvent event) { + void onKey(RawKeyEvent event){ + if(event is RawKeyUpEvent) return; + RawKeyEventDataAndroid e = event.data as RawKeyEventDataAndroid; + switch (e.keyCode) { + case 21: + int pos = _controller!.value.position.inMilliseconds; + _controller!.seekTo(Duration(milliseconds: pos - 30000)); + break; + case 22: + int pos = _controller!.value.position.inMilliseconds; + _controller!.seekTo(Duration(milliseconds: pos + 30000)); + break; + case 62: + if(_controller!.value.isPlaying){ + _controller!.pause(); + } else { + _controller!.play(); + } + break; + default: + debugPrint("$e"); + } + } + + void fijkOnKey(RawKeyEvent event) { + if(event is RawKeyUpEvent) return; switch (event.character) { case ' ': if (player?.state == FijkState.paused) { @@ -69,7 +94,7 @@ class _CustomVideoPlayerState extends State { case 22: // player!.pause().then((value) { int pos = min(player!.value.duration.inMilliseconds, - player!.currentPos.inMilliseconds + 10000); + player!.currentPos.inMilliseconds + 30000); player!.seekTo(pos).then((value) { if(_timer != null){ _timer!.cancel(); @@ -97,14 +122,19 @@ class _CustomVideoPlayerState extends State { child: _controller!.value.isInitialized ? AspectRatio( aspectRatio: _controller!.value.aspectRatio, - child: VideoPlayer(_controller!), + child: RawKeyboardListener( + onKey: onKey, + autofocus: true, + focusNode: FocusNode(), + child: VideoPlayer(_controller!), + ), ) : Container(), ) : Container( alignment: Alignment.center, child: RawKeyboardListener( - onKey: onKey, + onKey: fijkOnKey, focusNode: FocusNode(), autofocus: true, child: FijkView( @@ -112,7 +142,7 @@ class _CustomVideoPlayerState extends State { panelBuilder: (FijkPlayer player, FijkData data, BuildContext context, Size viewSize, Rect texturePos) { return RawKeyboardListener( - onKey: onKey, + onKey: fijkOnKey, focusNode: FocusNode(), autofocus: true, child: PopScope(