如何在按下移动后退按钮时最小化 Full Screen Flutter Youtube Player?

How to minimize Full Screen Flutter Youtube Player on mobile back button press?

当 flutter youtube 播放器全屏时,我按下手机的后退按钮,我想最小化 youtube 播放器,我该怎么做?

我的 Flutter Youtube Player 代码如下。

class _VideoPlayerState extends State<VideoPlayer> {
  late YoutubePlayerController _youtubePlayerController;
  late bool _isPlayerReady;

  @override
  void initState() {
    super.initState();
    _isPlayerReady = false;
    var url = widget.video.url;
    var videoUrl = YoutubePlayer.convertUrlToId(url!);
    _youtubePlayerController = YoutubePlayerController(
      initialVideoId: videoUrl!,
      flags: YoutubePlayerFlags(
        autoPlay: false,
        mute: false,
        disableDragSeek: false,
        loop: false,
        isLive: false,
        forceHD: false,
        hideControls: false,
      ),
    )..addListener(_listener);
  }

  void _listener() {
    if (_isPlayerReady &&
        mounted &&
        !_youtubePlayerController.value.isFullScreen) {}
  }

  @override
  void dispose() {
    _youtubePlayerController.dispose();
    SystemChrome.setPreferredOrientations([
      DeviceOrientation.portraitUp,
      DeviceOrientation.portraitDown,
      DeviceOrientation.landscapeLeft,
      DeviceOrientation.landscapeRight,
    ]);
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: YoutubePlayer(
        controller: _youtubePlayerController,
        aspectRatio: 16 / 9,
        showVideoProgressIndicator: true,
        onReady: () {
          _isPlayerReady = true;
        },
      ),
    );
  }
}

但是当我按下后退按钮时,我的应用程序屏幕如下所示。

所以我想在按下后退按钮时最小化 youtube 播放器。

首先我的应用程序方向为纵向,然后我全屏播放视频,然后按返回按钮我的应用程序方向为横向。

所以我只想在按下后退按钮时最小化 youtube 播放器。

我也遇到了和你一样的问题,当你点击全屏时,它变成了你提供的图片上的样子,但当我搜索时,我发现 一种将 youtube 播放器包装到 youtube 播放器 iframe 的方法。

然后在添加这个包后我可以自由全屏并回到原来的状态。

https://pub.dev/packages/youtube_player_iframe

我是用YoutubePlayerBuilder包裹YoutubePlayer,如下:

return Container(
      child: YoutubePlayerBuilder(
          player: YoutubePlayer(
            controller: _youtubePlayerController,
          ),
          builder: (context, player) {
            return Container(
              child: player,
            );
          }),
    );