import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:media_kit_video/media_kit_video.dart'; /// media_kit Video 包装:封面兜底、缓冲转圈、暂停态大播放图标 class VideoPlayerView extends StatelessWidget { const VideoPlayerView({ super.key, required this.controller, required this.coverUrl, required this.playing, }); final VideoController controller; final String coverUrl; final bool playing; @override Widget build(BuildContext context) { return Stack( fit: StackFit.expand, children: [ // 播放器(无控制条,纯画面) Video( controller: controller, controls: NoVideoControls, fit: BoxFit.contain, ), // 封面兜底:加载/无地址时可见(HLS 起播后被画面覆盖) if (coverUrl.isNotEmpty) CachedNetworkImage( imageUrl: coverUrl, fit: BoxFit.cover, errorWidget: (_, __, ___) => const SizedBox.shrink(), ), // 暂停态大播放图标 if (!playing) const IgnorePointer( child: Center( child: Icon( Icons.play_arrow_rounded, size: 88, color: Colors.white70, ), ), ), ], ); } }