弃用 fijkplayer
This commit is contained in:
parent
b08fa90fc1
commit
931df661df
@ -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();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user