弃用 fijkplayer

This commit is contained in:
shikong 2023-11-26 20:08:56 +08:00
parent b08fa90fc1
commit 931df661df

View File

@ -1,10 +1,8 @@
import 'dart:async';
import 'package:fijkplayer/fijkplayer.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:video_player/video_player.dart';
import 'dart:math';
import 'package:wakelock/wakelock.dart';
@ -18,7 +16,6 @@ class CustomVideoPlayer extends StatefulWidget {
}
class _CustomVideoPlayerState extends State<CustomVideoPlayer> {
FijkPlayer? player;
VideoPlayerController? _controller;
Timer? _timer;
@ -28,7 +25,8 @@ class _CustomVideoPlayerState extends State<CustomVideoPlayer> {
void initState() {
super.initState();
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky, overlays: [SystemUiOverlay.bottom]);
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky,
overlays: [SystemUiOverlay.bottom]);
SystemChrome.setPreferredOrientations(
[DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]);
Wakelock.enable();
@ -46,18 +44,6 @@ class _CustomVideoPlayerState extends State<CustomVideoPlayer> {
});
}
Future<void> initFijkPlayer() async {
player = FijkPlayer();
await player!.setDataSource(widget.url, autoPlay: true);
bool init = false;
player?.addListener(() {
if (player!.value.videoRenderStart && !init) {
init = true;
player!.enterFullScreen();
}
});
}
void onKey(RawKeyEvent event) {
if (event is RawKeyUpEvent) return;
RawKeyEventDataAndroid e = event.data as RawKeyEventDataAndroid;
@ -82,38 +68,6 @@ class _CustomVideoPlayerState extends State<CustomVideoPlayer> {
}
}
void fijkOnKey(RawKeyEvent event) {
if (event is RawKeyUpEvent) return;
switch (event.character) {
case ' ':
if (player?.state == FijkState.paused) {
player?.start();
} else {
player?.pause();
}
break;
default:
switch ((event.data as RawKeyEventDataAndroid).keyCode) {
case 22:
// player!.pause().then((value) {
int pos = min(player!.value.duration.inMilliseconds,
player!.currentPos.inMilliseconds + 30000);
player!.seekTo(pos).then((value) {
if (_timer != null) {
_timer!.cancel();
}
_timer = Timer(const Duration(milliseconds: 500), () {
player!.start();
_timer = null;
});
});
// });
break;
}
return;
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
@ -121,8 +75,7 @@ class _CustomVideoPlayerState extends State<CustomVideoPlayer> {
// toolbarHeight: 35,
// ),
backgroundColor: Colors.black,
body: player == null
? PopScope(
body: PopScope(
onPopInvoked: (val) {
if (!val) {
return;
@ -142,45 +95,15 @@ class _CustomVideoPlayerState extends State<CustomVideoPlayer> {
)
: Container(),
),
)
: Container(
alignment: Alignment.center,
child: RawKeyboardListener(
onKey: fijkOnKey,
focusNode: FocusNode(),
autofocus: true,
child: FijkView(
player: player!,
panelBuilder: (FijkPlayer player, FijkData data,
BuildContext context, Size viewSize, Rect texturePos) {
return RawKeyboardListener(
onKey: fijkOnKey,
focusNode: FocusNode(),
autofocus: true,
child: PopScope(
onPopInvoked: (val) {
if (!val) {
return;
}
this.player?.exitFullScreen();
},
child: Stack(children: [
defaultFijkPanelBuilder(
player, data, context, viewSize, texturePos),
]),
));
},
),
)),
);
}
@override
void dispose() {
Wakelock.disable();
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky, overlays: [SystemUiOverlay.top]);
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky,
overlays: [SystemUiOverlay.top]);
SystemChrome.setPreferredOrientations([]);
player?.stop().then((value) => player?.dispose());
_controller?.dispose();
super.dispose();
}