【问题标题】:Flutter chewie dispose not working when video fullscreen mode was used (landscape)使用视频全屏模式(横向)时,颤振咀嚼处理不起作用
【发布时间】:2020-02-25 08:14:58
【问题描述】:

我使用chewie 包在颤动中播放视频,当我播放视频并退出页面时,dispose 工作正常,但是当我使用全屏并尝试退出页面时,音频/视频仍然会播放。它说:在 null 上调用了 dispose

这是我的代码:

    class _ChewieListItemState extends State<ChewieListItem> {
      ChewieController _chewieController;


       @override
      Widget build(BuildContext context) {
        return Padding(
          padding: const EdgeInsets.all(8.0),
          child: Chewie(
            controller:_chewieController ,
          ),
        );
      }


      @override
      void initState() {
        super.initState();
        // Wrapper on top of the videoPlayerController
        _chewieController = ChewieController(
          videoPlayerController: widget.videoPlayerController,
          aspectRatio: 16 / 9,
          // Prepare the video to be played and display the first frame
          autoInitialize: true,
          looping: widget.looping,
          autoPlay: false,
          allowFullScreen: true,
          allowedScreenSleep: false,
          // Errors can occur for example when trying to play a video
          // from a non-existent URL
          errorBuilder: (context, errorMessage) {
            return Center(
              child: Text(
                'Network Error, please try again',
                style: TextStyle(color: Colors.white),
              ),
            );
          },
        );
      }


    @override
  void dispose() {
    super.dispose();
    widget.videoPlayerController.dispose();
    _chewieController.dispose();
  }

    }

【问题讨论】:

  • 我也在寻找在flutter中使用vimeo的解决方案,因为你发现的东西还很少!
  • @karl 123 你找到解决方案了吗,在我的应用程序中遇到同样的问题

标签: android ios flutter dart video-player


【解决方案1】:

也在 initState 函数中初始化您的 videoPlayerController。

class _ChewieListItemState extends State<ChewieListItem> {
  ChewieController _chewieController;
  VideoPlayerController videoPlayerController;




@override
void initState() {
     super.initState();
     videoPlayerController = VideoPlayerController.asset(path); // init controller here
    // Wrapper on top of the videoPlayerController
    _chewieController = ChewieController(
      videoPlayerController: videoPlayerController, // remove the widget tag
    );
  }


@override
void dispose() {
    super.dispose();
    videoPlayerController.dispose(); // remove the widget tag here as well    
}

}

刚刚遇到同样的问题,搜索了大约 3 天的解决方案。

【讨论】:

    猜你喜欢
    • 2021-06-08
    • 2022-01-21
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多