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