sliver state handler component (beta)
This commit is contained in:
parent
1e4ae8e5db
commit
f906c1cfa2
|
|
@ -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,
|
||||
),
|
||||
);
|
||||
}
|
||||
Loading…
Reference in New Issue