弃用 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 'dart:async';
import 'package:fijkplayer/fijkplayer.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:video_player/video_player.dart'; import 'package:video_player/video_player.dart';
import 'dart:math';
import 'package:wakelock/wakelock.dart'; import 'package:wakelock/wakelock.dart';
@ -18,7 +16,6 @@ class CustomVideoPlayer extends StatefulWidget {
} }
class _CustomVideoPlayerState extends State<CustomVideoPlayer> { class _CustomVideoPlayerState extends State<CustomVideoPlayer> {
FijkPlayer? player;
VideoPlayerController? _controller; VideoPlayerController? _controller;
Timer? _timer; Timer? _timer;
@ -28,7 +25,8 @@ class _CustomVideoPlayerState extends State<CustomVideoPlayer> {
void initState() { void initState() {
super.initState(); super.initState();
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky, overlays: [SystemUiOverlay.bottom]); SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky,
overlays: [SystemUiOverlay.bottom]);
SystemChrome.setPreferredOrientations( SystemChrome.setPreferredOrientations(
[DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]); [DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]);
Wakelock.enable(); 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) { void onKey(RawKeyEvent event) {
if (event is RawKeyUpEvent) return; if (event is RawKeyUpEvent) return;
RawKeyEventDataAndroid e = event.data as RawKeyEventDataAndroid; 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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@ -121,8 +75,7 @@ class _CustomVideoPlayerState extends State<CustomVideoPlayer> {
// toolbarHeight: 35, // toolbarHeight: 35,
// ), // ),
backgroundColor: Colors.black, backgroundColor: Colors.black,
body: player == null body: PopScope(
? PopScope(
onPopInvoked: (val) { onPopInvoked: (val) {
if (!val) { if (!val) {
return; return;
@ -142,45 +95,15 @@ class _CustomVideoPlayerState extends State<CustomVideoPlayer> {
) )
: Container(), : 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 @override
void dispose() { void dispose() {
Wakelock.disable(); Wakelock.disable();
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky, overlays: [SystemUiOverlay.top]); SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky,
overlays: [SystemUiOverlay.top]);
SystemChrome.setPreferredOrientations([]); SystemChrome.setPreferredOrientations([]);
player?.stop().then((value) => player?.dispose());
_controller?.dispose(); _controller?.dispose();
super.dispose(); super.dispose();
} }