familyGrid<T, Param> static method
Widget
familyGrid<T, Param>({
- required FutureProvider<
List< provider(T> >- Param
- required Param param,
- required Widget itemBuilder(
- T item,
- int index
- required int crossAxisCount,
- double crossAxisSpacing = 8.0,
- double mainAxisSpacing = 8.0,
- double childAspectRatio = 1.0,
- Widget? loading,
- Widget error(
- Object error,
- StackTrace? stackTrace
- EdgeInsets? padding,
- bool shrinkWrap = false,
- ScrollPhysics? physics,
- VoidCallback? onRetry,
- Future<
void> onRefresh()?,
Creates a refreshable grid widget with family support
Implementation
static Widget familyGrid<T, Param>({
required FutureProvider<List<T>> Function(Param) provider,
required Param param,
required Widget Function(T item, int index) itemBuilder,
required int crossAxisCount,
// Grid customization
double crossAxisSpacing = 8.0,
double mainAxisSpacing = 8.0,
double childAspectRatio = 1.0,
// General customization
Widget? loading,
Widget Function(Object error, StackTrace? stackTrace)? error,
EdgeInsets? padding,
bool shrinkWrap = false,
ScrollPhysics? physics,
// Callbacks
VoidCallback? onRetry,
Future<void> Function()? onRefresh,
}) {
return _StateFamilyWidget<List<T>, Param>(
provider: provider,
param: param,
onRefresh: onRefresh,
onRetry: onRetry,
loading: loading,
error: error,
builder: (items, ref) {
return GridView.builder(
padding: padding,
shrinkWrap: shrinkWrap,
physics: physics,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: crossAxisCount,
crossAxisSpacing: crossAxisSpacing,
mainAxisSpacing: mainAxisSpacing,
childAspectRatio: childAspectRatio,
),
itemCount: items.length,
itemBuilder: (context, index) => itemBuilder(items[index], index),
);
},
);
}