Enhancements on Assets Filter

design_3.0_demo_module
zaid_daoud 2 years ago
parent 2a2142adb3
commit 5b9a33c519

@ -16,6 +16,7 @@ class SingleItemDropDownMenu<T extends Base, X extends LoadingListNotifier> exte
final List<T> staticData; final List<T> staticData;
final String title; final String title;
final Color backgroundColor; final Color backgroundColor;
final bool loading;
/// To use a static data (without calling API) /// To use a static data (without calling API)
/// just send [NullableLoadingProvider] as generic data type and fill the [staticData] /// just send [NullableLoadingProvider] as generic data type and fill the [staticData]
@ -28,6 +29,7 @@ class SingleItemDropDownMenu<T extends Base, X extends LoadingListNotifier> exte
this.enabled = true, this.enabled = true,
this.staticData, this.staticData,
this.backgroundColor, this.backgroundColor,
this.loading,
}) : super(key: key); }) : super(key: key);
@override @override
@ -84,7 +86,7 @@ class _SingleItemDropDownMenuState<T extends Base, X extends LoadingListNotifier
Widget build(BuildContext context) { Widget build(BuildContext context) {
bool isEmpty = ((X == NullableLoadingProvider ? widget.staticData : provider.items)?.isEmpty ?? true); bool isEmpty = ((X == NullableLoadingProvider ? widget.staticData : provider.items)?.isEmpty ?? true);
return AppLoadingManager( return AppLoadingManager(
isLoading: (X == NullableLoadingProvider) ? false : provider.loading, isLoading: widget.loading ?? ((X == NullableLoadingProvider) ? false : provider.loading),
isFailedLoading: (X == NullableLoadingProvider) ? false : provider.items == null, isFailedLoading: (X == NullableLoadingProvider) ? false : provider.items == null,
stateCode: (X == NullableLoadingProvider) ? 200 : provider.stateCode, stateCode: (X == NullableLoadingProvider) ? 200 : provider.stateCode,
onRefresh: () async { onRefresh: () async {

@ -34,13 +34,21 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
Department _department; Department _department;
String startDate, endDate; String startDate, endDate;
int initialValue; int initialValue;
bool loading = false;
@override @override
void initState() { void initState() {
filter = widget.data ?? AssetSearch(); filter = widget.data ?? AssetSearch();
WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) { WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) async {
_department = Provider.of<DepartmentProvider>(context, listen: false).items.firstWhere((element) => element.name == filter?.department, orElse: () => null); loading = true;
_site = Provider.of<SiteProvider>(context, listen: false).items.firstWhere((element) => element.name == filter?.site, orElse: () => null); setState(() {});
final departmentProvider = Provider.of<DepartmentProvider>(context, listen: false);
final siteProvider = Provider.of<SiteProvider>(context, listen: false);
if (departmentProvider?.items?.isEmpty ?? true) await departmentProvider.getDate();
if (siteProvider?.items?.isEmpty ?? true) await siteProvider.getDate();
_department = departmentProvider.items.firstWhere((element) => element.name == filter?.department, orElse: () => null);
_site = siteProvider.items.firstWhere((element) => element.name == filter?.site, orElse: () => null);
loading = false;
setState(() {}); setState(() {});
}); });
super.initState(); super.initState();
@ -52,7 +60,7 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
appBar: DefaultAppBar( appBar: DefaultAppBar(
title: context.translation.filter, title: context.translation.filter,
actions: [ actions: [
if (_showResetButton()) if (loading == false && _showResetButton())
Row( Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
@ -91,6 +99,7 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
context: context, context: context,
title: context.translation.byDepartment, title: context.translation.byDepartment,
initialValue: _department, initialValue: _department,
loading: loading == false ? null : loading,
onSelect: (value) { onSelect: (value) {
setState(() { setState(() {
_department = value; _department = value;
@ -102,6 +111,7 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
context: context, context: context,
title: context.translation.bySite, title: context.translation.bySite,
initialValue: _site, initialValue: _site,
loading: loading == false ? null : loading,
onSelect: (value) { onSelect: (value) {
setState(() { setState(() {
_site = value; _site = value;

Loading…
Cancel
Save