sliver state handler component (beta)

This commit is contained in:
MohammadTaha Basiri 2022-01-05 17:08:40 +03:30
parent 1e4ae8e5db
commit f906c1cfa2
1 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,45 @@
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<T extends CoreProvier> 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,
),
);
}