mobile_skt/lib/widgets/fade_in_cache_image.dart

83 lines
2.1 KiB
Dart
Raw Normal View History

import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/cupertino.dart';
2024-03-22 17:26:57 +08:00
import 'package:flutter/material.dart';
import 'package:sk_base_mobile/app_theme.dart';
2024-03-22 17:26:57 +08:00
import 'package:sk_base_mobile/util/screen_adaper_util.dart';
class FadeInCacheImage extends StatefulWidget {
final double? width;
final double? height;
final String? url;
final BoxFit? fit;
bool compress;
bool canFullscreen;
FadeInCacheImage(
{Key? key,
this.width,
this.height,
this.url,
this.fit = BoxFit.cover,
this.compress = false,
this.canFullscreen = false})
: super(key: key);
@override
_FadeInCacheImageState createState() => _FadeInCacheImageState();
}
class _FadeInCacheImageState extends State<FadeInCacheImage> {
late BuildContext theContext;
@override
void initState() {
super.initState();
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
theContext = context;
if ((widget.url == null || widget.url == '' || widget.url == 'null')) {
2024-03-28 15:13:27 +08:00
return defaultImg();
}
return buildImg(widget.url);
}
// Future getImg() {
// return MediaUtil().generateLogoUrl(widget.url);
// }
Widget buildImg(String? url) {
return CachedNetworkImage(
alignment: Alignment.center,
imageUrl: url ?? '',
width: widget.width,
height: widget.height,
fit: widget.fit,
placeholder: (context, url) => Container(
2024-03-26 11:35:39 +08:00
decoration: const BoxDecoration(color: AppTheme.grey),
child: const CupertinoActivityIndicator(),
),
2024-03-28 15:13:27 +08:00
errorWidget: (context, error, stackTrace) => defaultImg(),
);
}
Widget defaultImg() {
return Container(
alignment: Alignment.center,
decoration: BoxDecoration(
border: Border.all(), borderRadius: BorderRadius.circular(15)),
width: widget.width,
height: widget.height,
child: Icon(Icons.image_not_supported,
2024-03-28 17:18:46 +08:00
size: ScreenAdaper.height((widget.width ?? 200) * 3 / 4),
2024-03-28 15:13:27 +08:00
color: AppTheme.grey),
);
}
}