From 95b8351ede9194282dff748e7b1dd0b8a2dc67b6 Mon Sep 17 00:00:00 2001 From: zaid_daoud Date: Wed, 15 Nov 2023 14:41:56 +0300 Subject: [PATCH] First Action Bottom sheet fixed --- .../requests/first_action_bottom_sheet.dart | 180 ++++++++++-------- 1 file changed, 102 insertions(+), 78 deletions(-) diff --git a/lib/views/pages/user/requests/first_action_bottom_sheet.dart b/lib/views/pages/user/requests/first_action_bottom_sheet.dart index fcccef91..f8346092 100644 --- a/lib/views/pages/user/requests/first_action_bottom_sheet.dart +++ b/lib/views/pages/user/requests/first_action_bottom_sheet.dart @@ -5,7 +5,9 @@ import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/service_request/service_request.dart'; +import 'package:test_sa/views/widgets/equipment/pick_asset.dart'; import '../../../../controllers/providers/api/service_requests_provider.dart'; import '../../../../models/lookup.dart'; @@ -27,6 +29,7 @@ class FirstActionBottomSheet extends StatefulWidget { class _FirstActionBottomSheetState extends State { ServiceRequest _serviceRequest; + Asset asset; final GlobalKey _formKey = GlobalKey(); @override void initState() { @@ -37,86 +40,107 @@ class _FirstActionBottomSheetState extends State { @override Widget build(BuildContext context) { final userProvider = Provider.of(context, listen: false); - return Container( - height: MediaQuery.of(context).size.height * 0.55, - clipBehavior: Clip.antiAlias, - margin: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), - decoration: BoxDecoration( - color: Theme.of(context).scaffoldBackgroundColor, - borderRadius: const BorderRadius.only(topRight: Radius.circular(20), topLeft: Radius.circular(20)), - ), - padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight), - child: Form( - key: _formKey, - child: Column( - children: [ - Container( - width: 40.toScreenWidth, - height: 5.toScreenHeight, - decoration: BoxDecoration(color: AppColor.neutral40, borderRadius: BorderRadius.circular(30)), - ), - Align( - alignment: AlignmentDirectional.centerStart, - child: context.translation.firstAction.heading3(context).custom(fontWeight: FontWeight.w600).paddingOnly(top: 16, bottom: 16), - ), - SingleItemDropDownMenu( - context: context, - title: context.translation.firstActionStatus, - initialValue: _serviceRequest.firstAction, - onSelect: (value) { - setState(() { - _serviceRequest.firstAction = value; - if (_serviceRequest?.firstAction?.value != 2) { - _serviceRequest.visitDate = null; - } - }); - }, - ), - if (_serviceRequest?.firstAction?.value == 2) 8.height, - if (_serviceRequest?.firstAction?.value == 2) - ADatePicker( - label: context.translation.visitDate, - date: DateTime.tryParse(_serviceRequest.visitDate ?? ""), - onDatePicker: (date) { - setState(() { - _serviceRequest.visitDate = date?.toIso8601String(); - }); - }, - ), - 8.height, - SingleItemDropDownMenu( - context: context, - title: context.translation.loanAvailability, - initialValue: _serviceRequest.loanAvailability, - onSelect: (value) { - _serviceRequest.loanAvailability = value; - }, - ), - 8.height, - AppTextFormField( - labelText: context.translation.comments, - textInputType: TextInputType.multiline, - alignLabelWithHint: true, - onSaved: (text) { - _serviceRequest.comments = text; - }, - ), - 16.height, - Consumer( - builder: (context, snapshot, _) => AppFilledButton( - label: context.translation.save, - loading: snapshot.isLoading, - onPressed: () async { - _formKey.currentState.save(); - await snapshot.updateRequest(user: userProvider.user, request: _serviceRequest); - Navigator.pop(context); - }, + return Wrap( + children: [ + Container( + clipBehavior: Clip.antiAlias, + margin: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), + decoration: BoxDecoration( + color: Theme.of(context).scaffoldBackgroundColor, + borderRadius: const BorderRadius.only(topRight: Radius.circular(20), topLeft: Radius.circular(20)), + ), + padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight), + child: Form( + key: _formKey, + child: SingleChildScrollView( + child: Column( + children: [ + Container( + width: 40.toScreenWidth, + height: 5.toScreenHeight, + decoration: BoxDecoration(color: AppColor.neutral40, borderRadius: BorderRadius.circular(30)), + ), + Align( + alignment: AlignmentDirectional.centerStart, + child: context.translation.firstAction.heading3(context).custom(fontWeight: FontWeight.w600).paddingOnly(top: 16, bottom: 16), + ), + SingleItemDropDownMenu( + context: context, + title: context.translation.firstActionStatus, + initialValue: _serviceRequest.firstAction, + onSelect: (value) { + setState(() { + _serviceRequest.firstAction = value; + if (_serviceRequest?.firstAction?.value != 2) { + _serviceRequest.visitDate = null; + } + }); + }, + ), + if (_serviceRequest?.firstAction?.value == 2) 8.height, + if (_serviceRequest?.firstAction?.value == 2) + ADatePicker( + label: context.translation.visitDate, + date: DateTime.tryParse(_serviceRequest.visitDate ?? ""), + onDatePicker: (date) { + setState(() { + _serviceRequest.visitDate = date?.toIso8601String(); + }); + }, + ), + 8.height, + SingleItemDropDownMenu( + context: context, + title: context.translation.loanAvailability, + initialValue: _serviceRequest.loanAvailability, + onSelect: (status) { + setState(() { + _serviceRequest.loanAvailability = status; + if (_serviceRequest.loanAvailability.value != 1) { + asset = null; + } + }); + }, + ), + if (_serviceRequest?.loanAvailability?.value == 1) 8.height, + if (_serviceRequest?.loanAvailability?.value == 1) + PickAsset( + device: asset ?? _serviceRequest.device, + onPickAsset: (asset) { + setState(() { + this.asset = asset; + }); + }, + ), + 8.height, + AppTextFormField( + labelText: context.translation.comments, + textInputType: TextInputType.multiline, + alignLabelWithHint: true, + onSaved: (text) { + _serviceRequest.comments = text; + }, + ), + 16.height, + Consumer( + builder: (context, snapshot, _) => AppFilledButton( + label: context.translation.save, + loading: snapshot.isLoading, + onPressed: () async { + _formKey.currentState.save(); + _serviceRequest.device = asset; + await snapshot.updateRequest(user: userProvider.user, request: _serviceRequest); + Navigator.pop(context); + }, + ), + ), + 16.height, + ], ), ), - 16.height, - ], - ), - ), + ), + ) + ], ); } }