你好,我一直在尝试在我的flutter应用程序中播放背景视频,所以我遵循了这个问题和这个教程。
我得到了以下代码:
import 'package:flutter/material.dart';
void main() => runApp(VideoWidget());
class VideoWidget extends StatefulWidget {
@override
_VideoWidgetState createState() => _VideoWidgetState();
}
class _VideoWidgetState extends State<VideoWidget> {
VideoPlayerController _controller;
@override
void initState() {
super.initState();
_controller = VideoPlayerController.asset("images/background.mov")
..initialize().then((_) {
_controller.setLooping(true);
_controller.play();
// Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
setState(() {});
});
}
@override
Widget build(BuildContext context) {
return Center(
child: _controller.value.initialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: Container(),
);
}
@override
void dispose() {
super.dispose();
_controller.dispose();
}
}
我确保视频在图像文件夹和pubspec.yaml
上都是可用的:
environment:
sdk: ">=2.7.0 <3.0.0"
dependencies:
hovering: ^1.0.2
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.1
video_player: ^0.10.5+2
dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
assets:
- images/2x/IconWithText.png
- images/IconWithText.png
- images/background.mov
但是在构建应用程序后,我遇到了以下错误:
[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)
#0 VideoPlayerApi.create (package:video_player_platform_interface/messages.dart:199:7)
<asynchronous suspension>
#1 MethodChannelVideoPlayer.create (package:video_player_platform_interface/method_channel_video_player.dart:46:31)
<asynchronous suspension>
#2 VideoPlayerController.initialize (package:video_player/video_player.dart:275:18)
<asynchronous suspension>
#3 _VideoWidgetState.initState.<anonymous closure> (package:myapp/video_widget.dart)
<asynchronous suspension>
我这样调用VideoWidget:
@override
Widget build(BuildContext context) {
var isLogged = false;
var column = Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
VideoWidget(),
Table(
我是Dart和Flutter的初学者,如果需要更多信息来帮助解决问题,请务必提出,感谢您的帮助!
flutter clean; flutter pub get
,然后再次运行该应用程序,它将开始正常工作。 - Maruf Hassan