hi-client/lib/app/widgets/kr_network_image.dart
2025-10-13 18:08:02 +08:00

57 lines
1.4 KiB
Dart
Executable File

import 'package:flutter/material.dart';
import 'package:extended_image/extended_image.dart';
/// 网络图片加载组件
class KRNetworkImage extends StatelessWidget {
/// 图片URL
final String kr_imageUrl;
/// 图片宽度
final double? kr_width;
/// 图片高度
final double? kr_height;
/// 图片填充方式
final BoxFit kr_fit;
/// 加载中占位组件
final Widget? kr_placeholder;
/// 加载失败占位组件
final Widget? kr_errorWidget;
/// 构造函数
const KRNetworkImage({
Key? key,
required this.kr_imageUrl,
this.kr_width,
this.kr_height,
this.kr_fit = BoxFit.cover,
this.kr_placeholder,
this.kr_errorWidget,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return ExtendedImage.network(
kr_imageUrl,
width: kr_width,
height: kr_height,
fit: kr_fit,
cache: true,
loadStateChanged: (ExtendedImageState state) {
switch (state.extendedImageLoadState) {
case LoadState.loading:
return kr_placeholder ??
const Center(child: CircularProgressIndicator());
case LoadState.completed:
return null; // 返回实际图片
case LoadState.failed:
return kr_errorWidget ??
const Icon(Icons.error);
}
},
);
}
}