视频播放器插件无法播放视频 - Flutter

5

我将我的Flutter更新到了1.22.0版本,现在我的video_player给了我异常错误。在我更新Flutter之前它运行得很好。

这是我的错误信息:

E/flutter ( 8545): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常: 'package:flutter/src/services/message_codec.dart': 断言失败,第111行第15个字符:'code != null'不为真。E/flutter ( 8545): #0_AssertionError._doThrowNew(dart:core-patch/errors_patch.dart:46:39) E/flutter ( 8545): #1 _AssertionError._throwNew(dart:core-patch/errors_patch.dart:36:5) E/flutter ( 8545): #2 new PlatformException(package:flutter/src/services/message_codec.dart:111:15)E/flutter ( 8545): #3 VideoPlayerApi.create(package:video_player_platform_interface/messages.dart:205:13) E/flutter ( 8545): #4 MethodChannelVideoPlayer.create(package:video_player_platform_interface/method_channel_video_player.dart:46:42)E/flutter ( 8545): #5 VideoPlayerController.initialize(package:video_player/video_player.dart:275:45) E/flutter ( 8545): #6 _ScreenBackgroundVideoState.initState(package:flow/widget/background/screen_background_video.dart:17:9)E/flutter ( 8545): #7 StatefulElement._firstBuild(package:flutter/src/widgets/framework.dart:4765:58) E/flutter ( 8545): #8 ComponentElement.mount(package:flutter/src/widgets/framework.dart:4601:5) E/flutter ( 8545): #9 Element.inflateWidget(package:flutter/src/widgets/framework.dart:3569:14)E/flutter ( 8545): #10 MultiChildRenderObjectElement.mount(package:flutter/src/widgets/framework.dart:6236:32) E/flutter ( 8545): #11 Element.inflateWidget(package:flutter/src/widgets/framework.dart:3569:14)E/flutter ( 8545): #12 Element.updateChild(package:flutter/src/widgets/framework.dart:3327:18) E/flutter ( 8545): #13 SingleChildRenderObjectElement.mount(package:flutter/src/widgets/framework.dart:6118:14)E/flutter ( 8545): #14 Element.inflateWidget(package:flutter/src/widgets/framework.dart:3569:14) E/flutter ( 8545): #15 Element.updateChild(package:flutter/src/widgets/framework.dart:3327:18)E/flutter ( 8545): #16 ComponentElement.performRebuild(package:flutter/src/widgets/framework.dart:4652:16) E/flutter ( 8545): #17 Element.rebuild(package:flutter/src/widgets/framework.dart:4343:5)E/flutter ( 8545): #18 ComponentElement._firstBuild(package:flutter/src/widgets/framework.dart:4606:5) E/flutter ( 8545): #19 ComponentElement.mount(package:flutter/src/widgets/framework.dart:4601:5)E/flutter ( 8545): #20 Element.inflateWidget(package:flutter/src/widgets/framework.dart:3569:14) E/flutter ( 8545): #21 Element.updateChild(package:flutter/src/widgets/framework.dart:3327:18)E/flutter ( 8545): #22 SingleChildRenderObjectElement.mount(package:flutter/src/widgets/framework.dart:6118:14) E/flutter ( 8545): #23 Element.inflateWidget(package:flutter/src/widgets/framework.dart:3569:14)E/flutter ( 8545): #24 Element.updateChild(package:flutter/src/widgets/framework.dart:3327:18) E/flutter ( 8545): #25 SingleChildRenderObjectElement.mount(package:flutter/src/widgets/framework.dart:6118:14)E/flutter ( 8545): #26 Element.inflateWidget(package:flutter/src/widgets/framework.dart:3569:14) E/flutter ( 8545): #27 Element.updateChild(package:flutter/src/widgets/framework.dart:3327:18)E/flutter ( 8545): #28 SingleChildRenderObjectElement.mount(package:flutter/src/widgets/framework.dart:6118:14) E/flutter ( 8545): #29 Element.inflateWidget(package:flutter/src/widgets/framework.dart:3569:14)E/flutter ( 8545): #30 Element.updateChild(package:flutter/src/widgets/framework.dart:3327:18) E/flutter ( 8545): #31 SingleChildRenderObjectElement.mount(package:flutter/src/widgets/framework.dart:6118:14)E/flutter ( 8545): #32 Element.inflateWidget(package:flutter/src/widgets/framework.dart:3569:14) E/flutter ( 8545): #33 Element.updateChild(package:flutter/src/widgets/framework.dart:3327:18)E/flutter ( 8545): #34 ComponentElement.performRebuild(package:flutter/src/widgets/framework.dart:4652:16) E/flutter ( 8545): #35 Element.rebuild(package:flutter/src/widgets

这是我的代码:

import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';

class ScreenBackgroundVideo extends StatefulWidget {
  @override
  _ScreenBackgroundVideoState createState() => _ScreenBackgroundVideoState();
}

class _ScreenBackgroundVideoState extends State<ScreenBackgroundVideo> {
  VideoPlayerController _controller;

  @override
  void initState() {
    super.initState();
    _controller = VideoPlayerController.asset('assets/vid/login.mp4')
      // set background video using assets for login screen
      ..initialize().then((_) {
        // Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
        setState(() {});
      }); // background video will play as soon as the splashscreen is closed
    _controller.play();
    _controller
        .setLooping(true); // looping set to true for the background video
    _controller.setVolume(0); // volume set to 0 for background video
  }

  @override
  void dispose() {
    super.dispose();
    // TODO: implement dispose
    _controller.dispose(); // Dispose the controller after play is done.
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: _controller.value.initialized
          ? AspectRatio(
              aspectRatio: _controller.value.aspectRatio,
              child: VideoPlayer(_controller),
            )
          : Container(),
    );
  }
}

需要帮助来解决这个问题。

3个回答

3

我不得不将我的Flutter版本降级至1.20.2才能让video_player正常工作。

如果有其他解决方案,请告诉我。


1

我遇到了同样的问题,但我升级了Flutter版本至1.22.5,问题得以解决。


我最近几天一直遇到同样的问题,然后我更新了Flutter版本到1.22.5,问题就解决了。 - Nabin Dhakal
1
感谢您指定您升级的版本。 - Yunnosch

1

如果您没有使用视频播放器插件中的任何新功能,可以将视频播放器降级到0.10.11+2,而不是降低Flutter版本。

您可以在此处找到更多详细信息:https://github.com/flutter/flutter/issues/66627


我确实尝试过这个,但问题仍然存在,所以我不得不降级Flutter。 - Jyo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接