grid<T> static method
Widget
grid<T>({
- required FutureProvider<
List< provider,T> > - 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
Perfect for displaying items in a grid layout with pull-to-refresh.
Implementation
static Widget grid<T>({
required FutureProvider<List<T>> provider,
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 _StateWidget<List<T>>(
provider: provider,
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),
);
},
);
}