import 'package:flutter/material.dart'; import 'package:video_player/video_player.dart'; class VideoThumbnail extends StatefulWidget { final String videoUrl; VideoThumbnail({required this.videoUrl}); @override _VideoThumbnailState createState() => _VideoThumbnailState(); } class _VideoThumbnailState extends State { late VideoPlayerController _controller; late Future _initializeVideoPlayerFuture; @override void initState() { super.initState(); // 创建并初始化 VideoPlayerController _controller = VideoPlayerController.network(widget.videoUrl) ..initialize().then((_) { // 当视频控制器初始化完成后,更新UI以便显示第一帧 setState(() {}); }); } @override void dispose() { // 清理资源 _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return GestureDetector( // onTap: () { // setState(() { // if (_controller.value.isPlaying) { // _controller.pause(); // } else { // _controller.play(); // } // }); // }, child: Stack( alignment: Alignment.center, children: [ // 如果视频已经初始化,则显示视频玩家 _controller.value.isInitialized ? AspectRatio( aspectRatio: 1 / 1, // 强制正方形比例 child: FittedBox( fit: BoxFit.cover, // 确保视频封面铺满空间 child: SizedBox( width: _controller.value.size.width, height: _controller.value.size.height, child: VideoPlayer(_controller), ), ), ) : Center( child: CircularProgressIndicator(), // 加载中显示转圈 ), if (!_controller.value.isPlaying && _controller.value.isInitialized) Icon(Icons.play_arrow_rounded, size: 80, color: Colors.white.withOpacity(0.8)), ], ), ); } }