didvan-app/lib/widgets/skeletun_image.dart

51 lines
1.5 KiB
Dart

import 'package:cached_network_image/cached_network_image.dart';
import 'package:didvan/config/design_config.dart';
import 'package:didvan/config/theme_data.dart';
import 'package:didvan/services/network/request.dart';
import 'package:flutter/material.dart';
import 'package:skeleton_text/skeleton_text.dart';
class SkeletonImage extends StatelessWidget {
final String imageUrl;
final double width;
final double height;
final BorderRadius? borderRadius;
const SkeletonImage({
Key? key,
required this.imageUrl,
required this.width,
required this.height,
this.borderRadius,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return CachedNetworkImage(
httpHeaders: {'Authorization': 'Bearer ${RequestService.token}'},
width: width,
height: height,
imageUrl: imageUrl,
imageBuilder: (context, imageProvider) => Container(
decoration: BoxDecoration(
borderRadius: borderRadius ?? DesignConfig.lowBorderRadius,
image: DecorationImage(
image: imageProvider,
fit: BoxFit.cover,
),
),
),
progressIndicatorBuilder: (context, url, progress) => SkeletonAnimation(
shimmerColor: Theme.of(context).colorScheme.border,
borderRadius: borderRadius ?? DesignConfig.lowBorderRadius,
child: Container(
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.disabledBackground,
),
height: height,
width: width,
),
),
);
}
}