import 'package:flutter/material.dart'; import 'package:grostore/configs/style_config.dart'; import 'package:grostore/configs/theme_config.dart'; import 'package:shimmer/shimmer.dart'; class Shimmers extends StatelessWidget { late double width, height; double? radius; Shimmers( {Key? key, required this.width, required this.height, this.radius = 0}) : super(key: key); @override Widget build(BuildContext context) { return Container( width: width, height: height, child: Shimmer.fromColors( baseColor: ThemeConfig.xlightGrey, highlightColor: ThemeConfig.lightGrey, child: Container( decoration: BoxDecoration( color: ThemeConfig.mediumGrey, borderRadius: radius != null ? BorderRadius.circular(radius!) : null, ), width: width, height: height), ), ); } static list(int items, double width, double height) { return ListView.separated( physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, itemBuilder: (context, index) { return Shimmers(width: width, height: height); }, separatorBuilder: (context, index) { return const SizedBox( height: 10, ); }, itemCount: items); } static horizontalList(int items, double width, double height) { return ListView.separated( padding: EdgeInsets.symmetric(horizontal: StyleConfig.padding), scrollDirection: Axis.horizontal, itemBuilder: (context, index) { return Shimmers(width: width, height: height); }, separatorBuilder: (context, index) { return const SizedBox( width: 10, ); }, itemCount: items); } static gridShimmer(int crossAxisCount, int items, {double width = 160, double height = 186, double radius = 8}) { return GridView.builder( padding: EdgeInsets.symmetric(horizontal: StyleConfig.padding), shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: crossAxisCount, crossAxisSpacing: 16, mainAxisSpacing: 16, childAspectRatio: 0.8), itemCount: items, itemBuilder: (context, index) { return Shimmers( width: double.parse(width.toString()), height: double.parse(height.toString()), radius: double.parse(radius.toString()), ); }); } }