Flutter Youtube Native Player на iOS играет после перенаправления обратно - PullRequest
0 голосов
/ 23 сентября 2019

Я хотел бы использовать этот плагин (https://pub.dev/packages/youtube_native_player), потому что он имеет минимальные кнопки, но если я нажимаю кнопку «Назад», он непрерывно играет в фоновом режиме. Я могу вернуться, но видео начинается снова с предыдущего звука вфон и т. д. Я не знаю, как связаться с его контроллером. Могу ли я получить помощь?

Мой код:

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:uhu/common/widgets/base_stateless_widget.dart';
import 'package:youtube_native_player/android/constrant.dart';
import 'package:youtube_native_player/android/video_player_controller.dart';
import 'package:youtube_native_player/youtube_native_player.dart';

class YoutubeIosWidget extends StatefulWidget {
  YoutubeIosWidget({Key key}) : super(key: key);

  @override
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<YoutubeIosWidget> {
  String position = "Get Current Position";
  String status = "Get Player Status";
  String videoDuration = "Get Video Duration";
  String _source = CommonThings.videoId;
  bool isMute = false;

  VideoPlayerController _controller;

  @override
  void initState() {
    super.initState();
  }

  @override
  void dispose() {
    // This pauses video while navigating to next page.
//   super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    CommonThings.videoId = "";
    return new WillPopScope(
    onWillPop: () async => false,
    child: new Scaffold(
      backgroundColor: Colors.black.withOpacity(0.88),
      appBar: AppBar(
          backgroundColor: Colors.transparent,
          leading: IconButton(
              icon: const Icon(Icons.arrow_back_ios),
              onPressed: () async {
                setState(() {});
                Navigator.pop(context);
              })),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: <Widget>[
          YoutubeNativePlayer(
              context: context,
              source: _source,
              quality: YoutubeQuality.HD,
              aspectRatio: 16 / 9,
              autoPlay: true,
              loop: false,
              reactToOrientationChange: true,
              startFullScreen: true,
              controlsActiveBackgroundOverlay: false,
              controlsTimeOut: Duration(seconds: 1),
              playerMode: YoutubePlayerMode.DEFAULT,
              switchFullScreenOnLongPress: true,
              callbackController: (controller) {
                _controller = controller;
              },
              onError: (error) {
                print(error);
              },
              onVideoEnded: () => Navigator.pop(context))
        ],
      ),
    ));
 }
}

1 Ответ

0 голосов
/ 23 сентября 2019

Вам необходимо раскомментировать код утилизации, а также закрыть (или утилизировать) ваш видеоконтроллер:

void dispose() {
  // This pauses video while navigating to next page.
  super.dispose();
  _controller.close(); // or _controller.dispose();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...