lib/ui/aliplayer_cover_image_widget.dart (41 lines of code) (raw):

// Copyright © 2025 Alibaba Cloud. All rights reserved. // // Author: keria // Date: 2025/2/20 // Brief: 自定义封面显示图 Widget import 'package:flutter/material.dart'; /// 自定义封面显示图 Widget class AliPlayerCoverImageWidget extends StatelessWidget { /// 图片 URL final String imageUrl; /// 宽度 final double? width; /// 高度 final double? height; /// 图片适配方式 final BoxFit? fit; /// 对齐方式 final AlignmentGeometry alignment; const AliPlayerCoverImageWidget({ super.key, required this.imageUrl, this.width, this.height, this.fit, this.alignment = Alignment.center, }); @override Widget build(BuildContext context) { return FutureBuilder( future: _loadImage(context), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done && snapshot.hasData) { return Image( image: snapshot.data as ImageProvider, width: width, height: height, fit: fit, alignment: alignment, ); } else { return const SizedBox.shrink(); } }, ); } /// 预加载图片并返回 ImageProvider Future<ImageProvider> _loadImage(BuildContext context) async { final imageProvider = NetworkImage(imageUrl); await precacheImage(imageProvider, context); // 预加载图片 return imageProvider; } }