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