大家好,我需要您的帮助。我有个问题。我只想在横向模式下实现全屏播放器。
并将视频播放器页面保留在返回按钮上或保留为全屏显示。没有fullScreenByDefault:true,一切似乎都很好。我可以按后退按钮并返回上一屏幕。
但是,如果将其设置为true,则会出问题。按下返回按钮或最小化按钮将进入纵向模式1秒钟,然后返回横向,然后进入纵向模式。接下来,最后关闭此页面。
我希望在第一个后退按钮后关闭页面或保持全屏显示。而且我不知道出了什么问题。
预先感谢您的帮助。
VideoPlayer({this.title, this.url, this.isLive = false});
final String title;
final String url;
final bool isLive;
@override
State<StatefulWidget> createState() {
return _VideoPlayerState();
}
}
class _VideoPlayerState extends State<VideoPlayer> {
VideoPlayerController _videoPlayerController1;
ChewieController _chewieController;
@override
void initState() {
super.initState();
_videoPlayerController1 = VideoPlayerController.network(
"https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4");
_chewieController = ChewieController(
videoPlayerController: _videoPlayerController1,
aspectRatio: _videoPlayerController1.value.aspectRatio,
autoPlay: true,
looping: true,
fullScreenByDefault: true,
isLive: widget.isLive,
allowedScreenSleep: false,
deviceOrientationsAfterFullScreen: [
DeviceOrientation.landscapeRight,
DeviceOrientation.landscapeLeft,
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]
}
@override
Widget build(BuildContext context) {
SystemChrome.setPreferredOrientations([
DeviceOrientation.landscapeRight,
DeviceOrientation.landscapeLeft,
]);
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: SafeArea(
child: Expanded(
child: Chewie(
controller: _chewieController,
),
),
),
);
}
@override
void dispose() {
_chewieController.dispose();
_videoPlayerController1.dispose();
SystemChrome.setPreferredOrientations([
DeviceOrientation.landscapeRight,
DeviceOrientation.landscapeLeft,
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
super.dispose();
}
}
答案 0 :(得分:0)
已关闭 解决方案:将屏幕模式限制为仅横向模式,不设置纵横比,不设置fullScreenByDefault:false,然后将chewie放在Expanded ---- Container(高度:size.height,宽度:size.width)内