import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; 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/service_request/service_request.dart'; import '../../../../controllers/providers/api/service_requests_provider.dart'; import '../../../../models/lookup.dart'; import '../../../../new_views/app_style/app_color.dart'; import '../../../../new_views/common_widgets/app_filled_button.dart'; import '../../../../new_views/common_widgets/app_text_form_field.dart'; import '../../../../new_views/common_widgets/single_item_drop_down_menu.dart'; import '../../../../providers/service_request_providers/first_action_provider.dart'; import '../../../../providers/service_request_providers/loan_availability_provider.dart'; import '../../../widgets/date_and_time/date_picker.dart'; class FirstActionBottomSheet extends StatefulWidget { final ServiceRequest request; const FirstActionBottomSheet({Key key, @required this.request}) : super(key: key); @override State createState() => _FirstActionBottomSheetState(); } class _FirstActionBottomSheetState extends State { ServiceRequest _serviceRequest; final GlobalKey _formKey = GlobalKey(); @override void initState() { super.initState(); _serviceRequest = widget.request; } @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(context: context, user: userProvider.user, request: _serviceRequest); Navigator.pop(context); }, ), ), 16.height, ], ), ), ); } }