flutter - 路由回送后,iOS上的Flutter Youtube Native Player会播放

标签 flutter youtube native video-player

我想使用此插件(https://pub.dev/packages/youtube_native_player),因为它具有最少的按钮,但是如果按后退按钮,它将在后台连续播放。我可以返回,但是视频从背景中的上一个声音重新开始,等等。
我不知道如何到达它的 Controller 。我可以帮忙吗?

我的代码:

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))
        ],
      ),
    ));
 }
}

最佳答案

您需要取消注释您的处置代码,并关闭(或处置)您的视频 Controller :

void dispose() {
  // This pauses video while navigating to next page.
  super.dispose();
  _controller.close(); // or _controller.dispose();
}

关于flutter - 路由回送后,iOS上的Flutter Youtube Native Player会播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58064201/

相关文章:

android - 在 webview 中显示谷歌地图而不是使用通常的 mapView 是否有性能损失

c - 将大型数组从 java 传递到 c 时出现 jni 错误

google-maps - Flutter map_view未显示标记

jquery - 使用jQuery重新格式化YouTube URL

android - 从 firebase 数据库 flutter 中的 uid 获取用户数据

iphone - 用于播放视频文件的 UIWebView loadHTMLString

css - 如何更改 YouTube iframe 的 CSS 样式

c# - 为什么原生Win32难拆,.NET app拆容易?

android - 我如何在不同方向上创建两个彼此滚动的可滚动列表

dart - 向 Material 文本字段添加芯片