From 5b9a33c519ec1b8d8571d56f60a139515c9bd6e9 Mon Sep 17 00:00:00 2001 From: zaid_daoud Date: Fri, 17 Nov 2023 20:42:09 +0300 Subject: [PATCH] Enhancements on Assets Filter --- .../single_item_drop_down_menu.dart | 4 +++- .../device_transfer/asset_filter_screen.dart | 18 ++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/lib/new_views/common_widgets/single_item_drop_down_menu.dart b/lib/new_views/common_widgets/single_item_drop_down_menu.dart index 41f79e3b..2019ee4d 100644 --- a/lib/new_views/common_widgets/single_item_drop_down_menu.dart +++ b/lib/new_views/common_widgets/single_item_drop_down_menu.dart @@ -16,6 +16,7 @@ class SingleItemDropDownMenu exte final List staticData; final String title; final Color backgroundColor; + final bool loading; /// To use a static data (without calling API) /// just send [NullableLoadingProvider] as generic data type and fill the [staticData] @@ -28,6 +29,7 @@ class SingleItemDropDownMenu exte this.enabled = true, this.staticData, this.backgroundColor, + this.loading, }) : super(key: key); @override @@ -84,7 +86,7 @@ class _SingleItemDropDownMenuState { Department _department; String startDate, endDate; int initialValue; + bool loading = false; @override void initState() { filter = widget.data ?? AssetSearch(); - WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) { - _department = Provider.of(context, listen: false).items.firstWhere((element) => element.name == filter?.department, orElse: () => null); - _site = Provider.of(context, listen: false).items.firstWhere((element) => element.name == filter?.site, orElse: () => null); + WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) async { + loading = true; + setState(() {}); + final departmentProvider = Provider.of(context, listen: false); + final siteProvider = Provider.of(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(() {}); }); super.initState(); @@ -52,7 +60,7 @@ class _AssetFilterScreenState extends State { appBar: DefaultAppBar( title: context.translation.filter, actions: [ - if (_showResetButton()) + if (loading == false && _showResetButton()) Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -91,6 +99,7 @@ class _AssetFilterScreenState extends State { context: context, title: context.translation.byDepartment, initialValue: _department, + loading: loading == false ? null : loading, onSelect: (value) { setState(() { _department = value; @@ -102,6 +111,7 @@ class _AssetFilterScreenState extends State { context: context, title: context.translation.bySite, initialValue: _site, + loading: loading == false ? null : loading, onSelect: (value) { setState(() { _site = value;