Enhancements on search and filter reset button

main_design2.0
zaid_daoud 2 years ago
parent 27fec0183f
commit cb658f0e60

@ -14,8 +14,8 @@ import 'package:test_sa/providers/gas_request_providers/site_provider.dart';
import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
import '../../../models/device/asset_search.dart';
import '../../../new_views/app_style/app_color.dart';
import '../../../new_views/common_widgets/app_lazy_loading.dart';
import '../../../new_views/common_widgets/default_app_bar.dart';
import '../../widgets/equipment/equipment_status_buttons.dart';
class AssetFilterScreen extends StatefulWidget {
@ -32,7 +32,8 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
AssetSearch filter;
Site _site;
Department _department;
int initialvalue;
String startDate, endDate;
int initialValue;
@override
void initState() {
@ -43,36 +44,26 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
automaticallyImplyLeading: false,
titleSpacing: 16,
title: Row(
children: [
const Icon(Icons.arrow_back_ios).onPress(() {
Navigator.of(context).pop();
}),
Text(
context.translation.filter,
style: AppTextStyles.heading3?.copyWith(fontWeight: FontWeight.w600, color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
).expanded,
],
),
appBar: DefaultAppBar(
title: context.translation.filter,
actions: [
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
context.translation.reset,
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
).paddingAll(8).onPress(() {
setState(() {
_department = null;
_site = null;
initialvalue = null;
});
}),
],
)
if (_showResetButton())
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
context.translation.reset,
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
).paddingAll(8).onPress(() {
setState(() {
startDate = null;
endDate = null;
_department = null;
_site = null;
});
}),
],
)
],
),
body: Column(
@ -88,7 +79,7 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
/// the selected value is [All Assets]
}
},
initialvalue: initialvalue,
initialvalue: initialValue,
),
16.height,
SingleItemDropDownMenu<Department, DepartmentProvider>(
@ -111,18 +102,28 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
16.height,
context.translation.pmDateRange.heading5(context).paddingOnly(start: 16, end: 16),
8.height,
/// todo : TBD
Row(
children: [
ADatePicker(
label: context.translation.from,
onDatePicker: (date) {},
label: context.translation.to,
from: DateTime(2000),
date: DateTime.tryParse(startDate ?? ""),
onDatePicker: (date) {
setState(() {
startDate = date?.toIso8601String();
});
},
).expanded,
8.width,
ADatePicker(
label: context.translation.to,
onDatePicker: (date) {},
from: DateTime(2000),
date: DateTime.tryParse(endDate ?? ""),
onDatePicker: (date) {
setState(() {
endDate = date?.toIso8601String();
});
},
).expanded,
],
).paddingOnly(start: 16, end: 16),
@ -138,6 +139,8 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
void _search() async {
filter.site = _site?.name;
filter.department = _department?.departmentName;
filter.supplyDateFrom = startDate;
filter.supplyDateTo = endDate;
final deviceProvider = Provider.of<AssetProvider>(context, listen: false);
deviceProvider.reset();
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
@ -145,4 +148,8 @@ class _AssetFilterScreenState extends State<AssetFilterScreen> {
Navigator.pop(context);
Navigator.of(context).pop(filter);
}
bool _showResetButton() {
return (_department != null) || (_site != null) || (startDate != null) || (endDate != null);
}
}

@ -25,17 +25,65 @@ class AssetSearchScreen extends StatefulWidget {
class _AssetSearchScreenState extends State<AssetSearchScreen> {
AssetSearch search;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
TextEditingController _assetNameController, _assetNumberController, _snController, _modelController, _supplierController, _siteController, _manufactureController, _mdController;
@override
void initState() {
search = widget.data ?? AssetSearch();
_assetNameController = TextEditingController(text: search.assetName);
_assetNumberController = TextEditingController(text: search.assetNo);
_snController = TextEditingController(text: search.assetSerialNumber);
_modelController = TextEditingController(text: search.model);
_supplierController = TextEditingController(text: search.supplier);
_siteController = TextEditingController(text: search.site);
_manufactureController = TextEditingController(text: search.manufacturer);
_mdController = TextEditingController(text: search.modelDefinition);
super.initState();
}
@override
void dispose() {
_assetNameController?.dispose();
_assetNumberController?.dispose();
_snController?.dispose();
_modelController?.dispose();
_supplierController?.dispose();
_siteController?.dispose();
_siteController?.dispose();
_manufactureController?.dispose();
_mdController?.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: DefaultAppBar(title: context.translation.search),
appBar: DefaultAppBar(
title: context.translation.search,
actions: [
if (_showResetButton())
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
context.translation.reset,
style: AppTextStyles.bodyText2.copyWith(color: const Color(0xFF4A8DB7)),
).paddingAll(8).onPress(() {
setState(() {
_assetNameController.text = "";
_assetNumberController.text = "";
_snController.text = "";
_modelController.text = "";
_supplierController.text = "";
_siteController.text = "";
_manufactureController.text = "";
_mdController.text = "";
});
}),
],
)
],
),
body: Form(
key: _formKey,
child: Column(
@ -49,16 +97,26 @@ class _AssetSearchScreenState extends State<AssetSearchScreen> {
context.translation.searchByDesc.bodyText(context),
16.height,
AppTextFormField(
controller: _assetNameController,
labelText: context.translation.assetName,
initialValue: search.assetName,
onChange: (text) {
_assetNameController.text = text;
_assetNameController.selection = TextSelection.fromPosition(TextPosition(offset: _assetNameController.text.length));
setState(() {});
},
onSaved: (value) {
search.assetName = value;
},
),
8.height,
AppTextFormField(
controller: _assetNumberController,
labelText: context.translation.assetNumber,
initialValue: search.assetNo,
onChange: (text) {
_assetNumberController.text = text;
_assetNumberController.selection = TextSelection.fromPosition(TextPosition(offset: _assetNumberController.text.length));
setState(() {});
},
onSaved: (value) {
search.assetNo = value;
},
@ -72,48 +130,78 @@ class _AssetSearchScreenState extends State<AssetSearchScreen> {
),
8.height,
AppTextFormField(
controller: _snController,
labelText: context.translation.snNumber,
initialValue: search.assetSerialNumber,
onChange: (text) {
_snController.text = text;
_snController.selection = TextSelection.fromPosition(TextPosition(offset: _snController.text.length));
setState(() {});
},
onSaved: (value) {
search.assetSerialNumber = value;
},
),
8.height,
AppTextFormField(
controller: _modelController,
labelText: context.translation.model,
initialValue: search.model,
onChange: (text) {
_modelController.text = text;
_modelController.selection = TextSelection.fromPosition(TextPosition(offset: _modelController.text.length));
setState(() {});
},
onSaved: (value) {
search.model = value;
},
),
8.height,
AppTextFormField(
controller: _supplierController,
labelText: context.translation.supplier,
initialValue: search.supplier,
onChange: (text) {
_supplierController.text = text;
_supplierController.selection = TextSelection.fromPosition(TextPosition(offset: _supplierController.text.length));
setState(() {});
},
onSaved: (value) {
search.supplier = value;
},
),
8.height,
AppTextFormField(
controller: _siteController,
labelText: context.translation.site,
initialValue: search.site,
onChange: (text) {
_siteController.text = text;
_siteController.selection = TextSelection.fromPosition(TextPosition(offset: _siteController.text.length));
setState(() {});
},
onSaved: (value) {
search.site = value;
},
),
8.height,
AppTextFormField(
controller: _manufactureController,
labelText: context.translation.manufacture,
initialValue: search.manufacturer,
onChange: (text) {
_manufactureController.text = text;
_manufactureController.selection = TextSelection.fromPosition(TextPosition(offset: _manufactureController.text.length));
setState(() {});
},
onSaved: (value) {
search.manufacturer = value;
},
),
8.height,
AppTextFormField(
controller: _mdController,
labelText: context.translation.md,
initialValue: search.modelDefinition,
onChange: (text) {
_mdController.text = text;
_mdController.selection = TextSelection.fromPosition(TextPosition(offset: _mdController.text.length));
setState(() {});
},
onSaved: (value) {
search.modelDefinition = value;
},
@ -147,4 +235,15 @@ class _AssetSearchScreenState extends State<AssetSearchScreen> {
Navigator.of(context).pop(search);
}
}
bool _showResetButton() {
return (_assetNameController?.text?.isNotEmpty ?? false) ||
(_assetNumberController?.text?.isNotEmpty ?? false) ||
(_snController?.text?.isNotEmpty ?? false) ||
(_modelController?.text?.isNotEmpty ?? false) ||
(_supplierController?.text?.isNotEmpty ?? false) ||
(_siteController?.text?.isNotEmpty ?? false) ||
(_manufactureController?.text?.isNotEmpty ?? false) ||
(_mdController?.text?.isNotEmpty ?? false);
}
}

Loading…
Cancel
Save