First Action Bottom sheet fixed

main_design2.0
zaid_daoud 2 years ago
parent 3e07513aeb
commit 95b8351ede

@ -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/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_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/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 '../../../../controllers/providers/api/service_requests_provider.dart';
import '../../../../models/lookup.dart'; import '../../../../models/lookup.dart';
@ -27,6 +29,7 @@ class FirstActionBottomSheet extends StatefulWidget {
class _FirstActionBottomSheetState extends State<FirstActionBottomSheet> { class _FirstActionBottomSheetState extends State<FirstActionBottomSheet> {
ServiceRequest _serviceRequest; ServiceRequest _serviceRequest;
Asset asset;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
@override @override
void initState() { void initState() {
@ -37,86 +40,107 @@ class _FirstActionBottomSheetState extends State<FirstActionBottomSheet> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context, listen: false); final userProvider = Provider.of<UserProvider>(context, listen: false);
return Container( return Wrap(
height: MediaQuery.of(context).size.height * 0.55, children: [
clipBehavior: Clip.antiAlias, Container(
margin: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), clipBehavior: Clip.antiAlias,
decoration: BoxDecoration( margin: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
color: Theme.of(context).scaffoldBackgroundColor, decoration: BoxDecoration(
borderRadius: const BorderRadius.only(topRight: Radius.circular(20), topLeft: Radius.circular(20)), 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( padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
key: _formKey, child: Form(
child: Column( key: _formKey,
children: [ child: SingleChildScrollView(
Container( child: Column(
width: 40.toScreenWidth, children: [
height: 5.toScreenHeight, Container(
decoration: BoxDecoration(color: AppColor.neutral40, borderRadius: BorderRadius.circular(30)), width: 40.toScreenWidth,
), height: 5.toScreenHeight,
Align( decoration: BoxDecoration(color: AppColor.neutral40, borderRadius: BorderRadius.circular(30)),
alignment: AlignmentDirectional.centerStart, ),
child: context.translation.firstAction.heading3(context).custom(fontWeight: FontWeight.w600).paddingOnly(top: 16, bottom: 16), Align(
), alignment: AlignmentDirectional.centerStart,
SingleItemDropDownMenu<Lookup, FirstActionStatusProvider>( child: context.translation.firstAction.heading3(context).custom(fontWeight: FontWeight.w600).paddingOnly(top: 16, bottom: 16),
context: context, ),
title: context.translation.firstActionStatus, SingleItemDropDownMenu<Lookup, FirstActionStatusProvider>(
initialValue: _serviceRequest.firstAction, context: context,
onSelect: (value) { title: context.translation.firstActionStatus,
setState(() { initialValue: _serviceRequest.firstAction,
_serviceRequest.firstAction = value; onSelect: (value) {
if (_serviceRequest?.firstAction?.value != 2) { setState(() {
_serviceRequest.visitDate = null; _serviceRequest.firstAction = value;
} if (_serviceRequest?.firstAction?.value != 2) {
}); _serviceRequest.visitDate = null;
}, }
), });
if (_serviceRequest?.firstAction?.value == 2) 8.height, },
if (_serviceRequest?.firstAction?.value == 2) ),
ADatePicker( if (_serviceRequest?.firstAction?.value == 2) 8.height,
label: context.translation.visitDate, if (_serviceRequest?.firstAction?.value == 2)
date: DateTime.tryParse(_serviceRequest.visitDate ?? ""), ADatePicker(
onDatePicker: (date) { label: context.translation.visitDate,
setState(() { date: DateTime.tryParse(_serviceRequest.visitDate ?? ""),
_serviceRequest.visitDate = date?.toIso8601String(); onDatePicker: (date) {
}); setState(() {
}, _serviceRequest.visitDate = date?.toIso8601String();
), });
8.height, },
SingleItemDropDownMenu<Lookup, LoanAvailabilityProvider>( ),
context: context, 8.height,
title: context.translation.loanAvailability, SingleItemDropDownMenu<Lookup, LoanAvailabilityProvider>(
initialValue: _serviceRequest.loanAvailability, context: context,
onSelect: (value) { title: context.translation.loanAvailability,
_serviceRequest.loanAvailability = value; initialValue: _serviceRequest.loanAvailability,
}, onSelect: (status) {
), setState(() {
8.height, _serviceRequest.loanAvailability = status;
AppTextFormField( if (_serviceRequest.loanAvailability.value != 1) {
labelText: context.translation.comments, asset = null;
textInputType: TextInputType.multiline, }
alignLabelWithHint: true, });
onSaved: (text) { },
_serviceRequest.comments = text; ),
}, if (_serviceRequest?.loanAvailability?.value == 1) 8.height,
), if (_serviceRequest?.loanAvailability?.value == 1)
16.height, PickAsset(
Consumer<ServiceRequestsProvider>( device: asset ?? _serviceRequest.device,
builder: (context, snapshot, _) => AppFilledButton( onPickAsset: (asset) {
label: context.translation.save, setState(() {
loading: snapshot.isLoading, this.asset = asset;
onPressed: () async { });
_formKey.currentState.save(); },
await snapshot.updateRequest(user: userProvider.user, request: _serviceRequest); ),
Navigator.pop(context); 8.height,
}, AppTextFormField(
labelText: context.translation.comments,
textInputType: TextInputType.multiline,
alignLabelWithHint: true,
onSaved: (text) {
_serviceRequest.comments = text;
},
),
16.height,
Consumer<ServiceRequestsProvider>(
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, ),
], )
), ],
),
); );
} }
} }

Loading…
Cancel
Save