import '../../models/video_item.dart'; /// 开发期播放地址钩子: /// 服务端 /hls 转码产物未就绪前,用 --dart-define=TEST_VIDEO_URL=xxx 注入公网 /// 测试 m3u8,把 video_url 为空或相对路径的条目替换为测试流以验证播放器。 /// 生产构建不传该 define,零开销;服务端 /hls 就绪后此钩子可保留作降级兜底。 const String _testStreamUrl = String.fromEnvironment('TEST_VIDEO_URL'); /// 解析实际播放地址。 /// - 注入了测试流且原始地址不可用(空/非 http 绝对地址)→ 返回测试流 /// - 否则返回原始 video_url /// /// [testUrl] 可选参数便于单元测试(fromEnvironment 在测试中恒为空)。 String resolvePlayUrl(VideoItem item, {String? testUrl}) { final injected = testUrl ?? _testStreamUrl; final raw = item.videoUrl.trim(); final playable = raw.startsWith('http://') || raw.startsWith('https://'); if (!playable && injected.isNotEmpty) return injected; return raw; }