import 'package:didvan/models/enums.dart'; import 'package:didvan/providers/core_provider.dart'; import 'package:didvan/widgets/didvan/text.dart'; import 'package:flutter/material.dart'; class SliverStateHandler extends SliverList { final T state; final Widget Function(BuildContext context, T state, int index) builder; final int childCount; final VoidCallback? onRefresh; final bool enableEmptyState; final Widget? emptyState; final Widget? placeholder; SliverStateHandler({ Key? key, required this.builder, required this.childCount, this.placeholder, this.emptyState, this.enableEmptyState = false, this.onRefresh, required this.state, }) : super( key: key, delegate: SliverChildBuilderDelegate( (context, index) { if (state.appState == AppState.failed) { return const DidvanText('مشکل اتصال'); } if (enableEmptyState) { return emptyState; } if (state.appState == AppState.busy) { return placeholder; } return builder(context, state, index); }, childCount: state.appState == AppState.idle ? childCount : state.appState == AppState.busy ? 3 : 1, ), ); }