【问题标题】:StatusBar went black after showing video with flick_video_player使用 flick_video_player 显示视频后,状态栏变黑
【发布时间】:2021-12-28 01:00:34
【问题描述】:

我使用 flick_video_player 在我的 Flutter 应用中显示视频,但是在导航到带有视频的屏幕后,我的状态栏变黑了。谁能帮我解决一下?

在导航到此屏幕之前显示状态栏,但是当视频屏幕构建时状态栏变黑并且即使在弹出后仍然保持

源代码:

class Screen extends StatelessWidget {
  const Screen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('text'),
      ),
      body: Widget(),
    );
  }
}

class Widget extends StatelessWidget {
  const Widget({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.fromLTRB(16, 0, 16, 0),
      child: ListView(
        physics: const BouncingScrollPhysics(
            parent: AlwaysScrollableScrollPhysics()),
        children: [
          SizedBox(height: 16),
          Video()
          ),
        ],
      ),
    );
  }
}
     class Video extends StatefulWidget {
      const Video({Key? key}) : super(key: key);
    
      @override
      _VideoState createState() => _VideoState();
    }
    
    class _VideoState extends State<Video> {
      late FlickManager flickManager;
      @override
      void initState() {
        super.initState();
        flickManager = FlickManager(
            videoPlayerController: VideoPlayerController.asset(
                'assets/videos/video.mp4'));
      }
    
      @override
      void dispose() {
        flickManager.dispose();
        super.dispose();
      }
    
      @override
      Widget build(BuildContext context) {
        return ClipRRect(
          borderRadius: const BorderRadius.all(Radius.circular(20)),
          child: Container(
            child: FlickVideoPlayer(
              preferredDeviceOrientation: [],
              flickManager: flickManager,
              flickVideoWithControls: FlickVideoWithControls(
                controls: FlickPortraitControls(),
              ),
              systemUIOverlay: [],
              flickVideoWithControlsFullscreen: FlickVideoWithControls(
                controls: FlickLandscapeControls(),
              ),
            ),
          ),
        );
      }
    }

【问题讨论】:

    标签: android ios flutter dart mobile


    【解决方案1】:

    只需在 FlickVideoPlayer 小部件初始化时删除 systemUIOverlay: [],,系统 ui 部分就会保持原样

    【讨论】:

      【解决方案2】:

      当我将它用于我的 Flutter Web 项目时,我也遇到了同样的问题。 然后我尝试像这样更改initState

      @override
        void initState() {
          super.initState();
          flickManager = FlickManager(
              videoPlayerController: VideoPlayerController.asset(
                  'assets/videos/video.mp4')..initialize());
        }
      

      这对我有用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-15
        • 2018-02-25
        • 1970-01-01
        • 2015-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多