首页 > 解决方案 > Chewie 视频播放器:未处理的异常:错误状态:未来已经完成

问题描述

播放视频时,我只在 iPhone 中遇到错误。但在 Android 中它可以完美运行。

`+0200 Runner[326:18470] [VERBOSE-2:ui_dart_state.cc(199)] 未处理的异常:错误状态:Future 已经完成 #0 _AsyncCompleter.complete (dart:async/future_impl.dart:45:31) #1 VideoPlayerController.initialize (包:video_player/video_player.dart:310:25)

 child: GestureDetector(
                          onTap: () async {
                            await Navigator.push(
                                context,
                                MaterialPageRoute(
                                    builder: (_) => VideoPlayerScreen(att)));
                          },
class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
                 final Attachment attachment;

                _VideoPlayerScreenState(this.attachment);

                VideoPlayerController _controller;
                ChewieController chewieController;
                Future<void> futureController;

               @override
               void initState() {
               _controller = Service().getAttachmentVideo(attachment.id);
     
                futureController = _controller.initialize();

             chewieController = ChewieController(
             videoPlayerController: _controller,
                 autoPlay: true,
                 looping: false,
                showControlsOnInitialize: false);
                super.initState();
          }

        @override
        void dispose() {
          // Ensure disposing of the VideoPlayerController to free up resources.
             chewieController.dispose();
           _controller.dispose();

           super.dispose();
           }

           @override
           Widget build(BuildContext context) {
          return Scaffold(
             body: FutureBuilder(
                  future: futureController,
                     builder: (context, snapshot) {
                       if (snapshot.connectionState == ConnectionState.done) {
       
       // If the VideoPlayerController has finished initialization, use
        // the data it provides to limit the aspect ratio of the video.
        final Size size = _controller.value.size;
        return Chewie(
          controller: chewieController,
        );
      } else {
        // If the VideoPlayerController is still initializing, show a
        // loading spinner.
        return Center(child: CircularProgressIndicator());
       }
     },
     ),
  );
 }
}

标签: flutter

解决方案


推荐阅读