Следуя последней инструкции video_player V0.10.9 , у меня возникла очень странная ситуация, для того же URL-адреса видео , он работает в новом проекте flutter только для демонстрации, но не работает в моем реальном проекте, я имею в виду, что у меня возникла проблема с инициализацией в моем реальном Android проекте. И я уже дважды проверил конфигурации обоих проектов, все они одинаковы.
Оба проекта работают на iPhone, а демонстрационный проект работает на Android телефоне, но настоящий проект не работает. t работает на одном телефоне Android.
Я поместил следующую ссылку на оба файла pubspe c .yaml:
video_player: ">=0.10.9+2 <2.0.0"
В моем демонстрационном проекте он работает правильно :
class _MyHomePageState extends State<MyHomePage> {
final videoUrl =
'https://captnotes.com/wp-content/uploads/2020/02/demo_video_02.mp4';
VideoPlayerController videoPlayerController;
@override
void initState() {
super.initState();
print('^_^initState()');
videoPlayerController = VideoPlayerController.network(videoUrl)
..initialize().then((_) {
setState(() {
videoPlayerController.play();
print('^_^play()');
});
})
..addListener(() {
print('Is playing: ${videoPlayerController.value.isPlaying}');
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: videoPlayerController.value.initialized
? AspectRatio(
aspectRatio: videoPlayerController.value.aspectRatio,
child: VideoPlayer(videoPlayerController))
: Container(),
),
);
}
}
Но в моем реальном проекте initialize () всегда будет делать MissingPluginException дважды, один для имени метода init
на канале flutter.io/videoPlayer
и один для имени метода create
на канале flutter.io/videoPlayer
. Это исключение выбрасывается в строке 319 в файле platform_channel.dart
.
void initVideoPlayer() {
if (TextUtil.isEmpty(videoUrl)) {
logger.debug('videoUrl is EMPTY.');
return;
}
logger.debug('videoUrl: $videoUrl');
videoPlayerController?.dispose();
videoPlayerController = VideoPlayerController.network(videoUrl)
..initialize()
..addListener(() {
// logger.debug(
// 'isVideoPlaying: $isVideoPlaying, videoPlayerController.value.isPlaying: ${videoPlayerController.value.isPlaying}');
if (isVideoPreparing && videoPlayerController.value.isPlaying) {
isVideoPreparing = false;
isVideoPlaying = true;
} else if (isVideoPlaying && !videoPlayerController.value.isPlaying) {
videoPlayerController.seekTo(Duration(milliseconds: 0));
isVideoPlaying = false;
stopVideo();
setState(() {});
}
});
}
Я дважды проверил, конфигурации обоих проектов одинаковы, включая Настройки iOS и Android, обязательно следуйте всем шагам в официальной инструкции.
Я даже подумал, имеет ли multidex значение, но демонстрационный проект по-прежнему работает правильно после того, как я установил его для поддержки multidex.
Любая помощь будет очень признательна!
Кстати, моя среда флаттера находится на стабильном канале и исправна.
[✓] Flutter (Channel stable, v1.12.13+hotfix.9, on Mac OS X 10.14.6 18G103, locale en-CN)
• Flutter version 1.12.13+hotfix.9 at /Volumes/Transcend/Development/flutter
• Framework revision f139b11009 (5 weeks ago), 2020-03-30 13:57:30 -0700
• Engine revision af51afceb8
• Dart version 2.7.2
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
• Android SDK at /Volumes/Transcend/Development/AndroidSDK
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-29, build-tools 29.0.2
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 11.3.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 11.3.1, Build version 11C504
• CocoaPods version 1.9.0
[✓] Android Studio (version 3.6)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 45.1.1
• Dart plugin version 192.7761
• Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
[✓] VS Code (version 1.44.2)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.10.1
[✓] Connected device (1 available)
• SM G9500 • 988a1b474239545746 • android-arm64 • Android 9 (API 28)
• No issues found!