Видеоплеер Flutter 0.10.9 + 2 не может быть инициализирован в реальном проекте Android - PullRequest
0 голосов
/ 07 мая 2020

Следуя последней инструкции 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(() {});
      }
    });
}

Screenshot

Я дважды проверил, конфигурации обоих проектов одинаковы, включая Настройки 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!

1 Ответ

0 голосов
/ 10 мая 2020

Решено удалением flutter_facebook_login: ^3.0.0 из pubspe c .yaml .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...