Flutter Vimeo视频播放插件vimeo_video_player的使用

发布于 1周前 作者 eggper 来自 Flutter

Flutter Vimeo视频播放插件vimeo_video_player的使用

插件概述

vimeo_video_player 是一个用于在Flutter应用中播放Vimeo视频的插件。它利用了InAppWebView来实现流畅的视频播放,支持多种自定义设置和事件回调,适用于Android、iOS、Web、Mac、Windows等平台。

vimeo_video_player

关键特性

  • 简单易用:只需提供Vimeo视频ID即可轻松播放视频。
  • 高度可定制:支持配置如自动播放、循环播放、静音、显示标题、显示作者等选项。
  • 丰富的事件回调:包括播放准备完成、播放开始、暂停、结束、进度调整等事件监听。

基本使用

导入包

首先,在pubspec.yaml文件中添加依赖:

dependencies:
  vimeo_video_player: ^latest_version

然后在Dart文件中导入:

import 'package:vimeo_video_player/vimeo_video_player.dart';

最简单的用法

最基础的用法只需要提供视频ID:

VimeoVideoPlayer(
  videoId: '12860646',
);

参数详解

必填参数

参数 描述
videoId 定义要播放的Vimeo视频ID,必填项且不能为空

可选参数(带默认值)

参数 默认值 描述
isAutoPlay false 是否自动播放
isLooping false 是否循环播放
isMuted false 是否静音播放
showTitle false 是否显示视频标题
showByline false 是否显示视频作者
showControls true 是否显示播放控制条
enableDNT true 是否启用Do Not Track模式
backgroundColor Colors.black InAppWebView的背景颜色

其他可选参数

参数 描述
onReady 当播放器准备好时触发的回调
onPlay 当视频开始播放时触发的回调
onPause 当视频暂停时触发的回调
onFinish 当视频播放结束时触发的回调
onSeek 当视频播放位置被修改时触发的回调
onInAppWebViewCreated 当WebView创建时触发的回调
onInAppWebViewLoadStart 当WebView开始加载URL时触发的回调
onInAppWebViewLoadStop 当WebView加载URL完成时触发的回调
onInAppWebViewReceivedError 当WebView加载请求出错时触发的回调

示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中使用vimeo_video_player插件播放Vimeo视频,并处理加载状态和WebView控制器。

import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:vimeo_video_player/vimeo_video_player.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MyHomePage(),
      debugShowCheckedModeBanner: false,
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  /// 用于通知视频是否已加载
  bool isVideoLoading = true;

  /// WebView控制器
  InAppWebViewController? webViewController;

  @override
  void dispose() {
    super.dispose();
    webViewController?.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.black,
      body: SafeArea(
        child: Stack(
          children: [
            VimeoVideoPlayer(
              videoId: '12860646', // 替换为你的Vimeo视频ID
              isAutoPlay: true, // 自动播放
              onInAppWebViewCreated: (controller) {
                webViewController = controller;
              },
              onInAppWebViewLoadStart: (controller, url) {
                setState(() {
                  isVideoLoading = true;
                });
              },
              onInAppWebViewLoadStop: (controller, url) {
                setState(() {
                  isVideoLoading = false;
                });
              },
            ),
            if (isVideoLoading)
              const Center(child: CircularProgressIndicator()),
          ],
        ),
      ),
    );
  }
}

依赖项

贡献指南

欢迎贡献者提交Pull Request进行开发或改进。

报告问题或功能请求

如果您遇到问题或有功能请求,请提供以下信息以帮助我们更好地理解问题:

  • 库版本
  • 代码片段
  • 相关日志
  • 设备规格(制造商、操作系统版本等)
  • 复现问题的截图或视频
  • 使用的库

许可证

vimeo_video_player遵循MIT许可证

联系我们

如果您有任何问题或建议,或者想分享使用我们开源库的项目链接,请发送邮件至sales@mindinventory.com

访问我们的网站mindinventory.com,了解更多关于我们的服务。


希望以上内容能帮助您更好地理解和使用vimeo_video_player插件!如果有任何疑问,欢迎随时提问。


更多关于Flutter Vimeo视频播放插件vimeo_video_player的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Vimeo视频播放插件vimeo_video_player的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用vimeo_video_player插件来播放Vimeo视频的示例代码。这个插件允许你直接在Flutter应用中嵌入和播放Vimeo视频。

首先,确保你已经在pubspec.yaml文件中添加了vimeo_video_player依赖:

dependencies:
  flutter:
    sdk: flutter
  vimeo_video_player: ^最新版本号  # 请替换为最新的版本号

然后,运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter项目中创建一个新的页面或组件来使用这个插件。以下是一个简单的示例,展示了如何嵌入和播放Vimeo视频:

import 'package:flutter/material.dart';
import 'package:vimeo_video_player/vimeo_video_player.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Vimeo Video Player Example'),
        ),
        body: VimeoVideoPlayerScreen(),
      ),
    );
  }
}

class VimeoVideoPlayerScreen extends StatefulWidget {
  @override
  _VimeoVideoPlayerScreenState createState() => _VimeoVideoPlayerScreenState();
}

class _VimeoVideoPlayerScreenState extends State<VimeoVideoPlayerScreen> {
  // 替换为你的Vimeo视频ID
  final String videoId = '你的Vimeo视频ID';
  VimeoPlayerController? _vimeoPlayerController;

  @override
  void initState() {
    super.initState();
    _vimeoPlayerController = VimeoPlayerController(
      videoId: videoId,
      onReady: () {
        print('Player is ready');
      },
      onError: (error) {
        print('Error occurred: $error');
      },
      onEnded: () {
        print('Video ended');
      },
    );
  }

  @override
  void dispose() {
    _vimeoPlayerController?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: _vimeoPlayerController != null
          ? AspectRatio(
              aspectRatio: 16 / 9,
              child: VimeoPlayerView(
                controller: _vimeoPlayerController!,
              ),
            )
          : Container(child: CircularProgressIndicator()),
    );
  }
}

在这个示例中:

  1. 我们首先定义了一个MyApp类,它是应用的根组件。
  2. MyApp类中,我们定义了一个Scaffold,其中包含一个AppBar和一个bodybodyVimeoVideoPlayerScreen组件。
  3. VimeoVideoPlayerScreen是一个有状态的组件,它包含一个VimeoPlayerController实例,用于控制视频的播放。
  4. initState方法中,我们初始化了VimeoPlayerController,并提供了视频ID和一些回调函数来处理视频就绪、错误和结束事件。
  5. build方法中,我们检查_vimeoPlayerController是否为null,如果不是,则显示视频播放器;如果是,则显示一个进度指示器。

确保你已经替换了videoId变量的值为你的实际Vimeo视频ID。

这个示例展示了如何使用vimeo_video_player插件在Flutter应用中嵌入和播放Vimeo视频。你可以根据需要进一步自定义和扩展这个示例。

回到顶部