当前位置: 首页 > news >正文

Flutter:视频预览功能

pubspec.yaml

  media_kit: ^1.2.1                 # Primary package.media_kit_video: ^1.3.1          # For video rendering.media_kit_libs_video: ^1.0.7     # Native video dependencies.

main.dart 初始化

Future<void> main() async {runZonedGuarded(() async {WidgetsFlutterBinding.ensureInitialized();// Necessary initialization for package:media_kit.MediaKit.ensureInitialized();// 添加错误捕获FlutterError.onError = (FlutterErrorDetails details) {};await Global.init();runApp(const MyApp());}, (error, stackTrace) {});
}

使用方式

onTap(() {// 这里需要播放视频Get.to(() => VideoPreview(singleVideo: item.url ?? ''));
})

封装播放器

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:media_kit/media_kit.dart';
import 'package:media_kit_video/media_kit_video.dart';/*视频预览组件使用方式:单个视频预览onTap(() {Get.to(() => VideoPreview(singleVideo: '视频url'));})注意:需要在 main() 函数中调用 MediaKit.ensureInitialized()*/class VideoPreview extends StatefulWidget {final String? singleVideo;const VideoPreview({super.key,this.singleVideo,});State<VideoPreview> createState() => _VideoPreviewState();
}class _VideoPreviewState extends State<VideoPreview> {// Create a [Player] to control playback.late final player = Player();// Create a [VideoController] to handle video output from [Player].late final controller = VideoController(player);void initState() {super.initState();// Play a [Media] or [Playlist].if (widget.singleVideo != null && widget.singleVideo!.isNotEmpty) {player.open(Media(widget.singleVideo!));}}void dispose() {player.dispose();super.dispose();}Widget build(BuildContext context) {if (widget.singleVideo == null || widget.singleVideo!.isEmpty) {return const SizedBox();}return Scaffold(backgroundColor: Colors.black,appBar: AppBar(backgroundColor: Colors.black,elevation: 0,leading: IconButton(icon: const Icon(Icons.close,color: Colors.white,size: 24,),onPressed: () => Get.back(),),),body: Center(child: Video(controller: controller,controls: MaterialVideoControls,),),);}
}
http://www.dtcms.com/a/581513.html

相关文章:

  • IPIDEA海外代理助力-Youtube视频AI领域选题数据获取实践
  • 开机视频动画
  • 智能守护校园:视频汇聚平台EasyCVR如何构建校园消防安全新防线
  • 平台类网站建设企业网站个人备案
  • python+django/flask的车辆尾气检测排放系统-可视化大屏展示
  • AI Agent设计模式 Day 2:Plan-and-Execute模式:先规划后执行的智能策略
  • 32HAL——ADC模数转换多通道功能
  • 10_10_网站建站主页网站怎么建设
  • 模型不再是一整块!Hunyuan3D-Part 实现可控组件式 3D 生成
  • 【ZeroRange WebRTC】SDP 在 WebRTC 中的角色与工作原理(深入指南)
  • 高并发下的重复记录之谜:从前端到数据库的全方位排查
  • AI搜索时代品牌护城河:从“流量争夺”到“可信度竞争”的战略跃迁
  • 【推荐系统14】数据分析:以阿里天池新闻推荐为例学习
  • 安卓进阶——OpenGL ES
  • 做app动态界面的网站有哪些网站建设从哪入手
  • RV1126 NO.41:利用OPENCV的API计算轮廓面积
  • 15 langgraph基本组件
  • 网站开发答辩ppt上海网站排名
  • LeetCode 面试经典 150_二叉树_翻转二叉树(69_226_C++_简单)(DFS)
  • 【PLM实施专家宝典】离散制造企业ECO管理优化方案:构建自动化、零错误的变更引擎
  • go tool command
  • 网站流量如何做cms网站开发流程
  • HTML ASCII 编码解析与应用
  • Javascript函数之函数的参数以及默认参数?
  • LNMP部署及应用
  • 优质做网站哪家正规wordpress附件修复
  • Java-HTTP响应以及HTTPS(下)
  • [人工智能-大模型-135]:词向量的演进,对词向量的对Transformer架构理解的前提与关键。
  • 【1Panel】1、安装1Panel
  • JAVA:Spring Boot3 新特性解析的技术指南