import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/api_routes/http_status_manger.dart'; import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/service_request/service_request.dart'; import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/status/employee/assigned_to_mune.dart'; class ServiceRequestsUpdateDialog extends StatefulWidget { final ServiceRequest request; const ServiceRequestsUpdateDialog({ Key key, this.request, }) : super(key: key); @override State createState() => _ServiceRequestsUpdateDialogState(); } class _ServiceRequestsUpdateDialogState extends State with TickerProviderStateMixin { DateTime _dateTime; Lookup _employee; UserProvider _userProvider; SettingProvider _settingProvider; ServiceRequestsProvider _serviceRequestsProvider; final GlobalKey _formKey = GlobalKey(); _update() async { if (_dateTime == null && _employee == null) { Fluttertoast.showToast( msg: context.translation.noDateFound, ); return; } showDialog( context: context, barrierDismissible: false, builder: (BuildContext context) { return CupertinoAlertDialog( title: Text(context.translation.updatingDots), content: Center(child: CircularProgressIndicator()), ); }, ); int status = await _serviceRequestsProvider.updateDate(user: _userProvider.user, host: _settingProvider.host, request: widget.request); if (status == 200) Navigator.of(context).pop(); Navigator.of(context).pop(); Fluttertoast.showToast( msg: HttpStatusManger.getStatusMessage(status: status, subtitle: context.translation), ); } @override void initState() { super.initState(); } @override Widget build(BuildContext context) { _userProvider = Provider.of(context, listen: false); _settingProvider = Provider.of(context, listen: false); _serviceRequestsProvider = Provider.of(context, listen: false); return Column( mainAxisSize: MainAxisSize.min, children: [ SizedBox( // height: MediaQuery.of(context).size.height / 1.2, child: Form( key: _formKey, child: Padding( padding: const EdgeInsets.all(16.0), child: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ ASmallButton( text: context.translation.cancel, onPressed: () { Navigator.of(context).pop(); }, ), ASmallButton( text: context.translation.update, onPressed: _update, ) ], ), SizedBox( height: 8.0 * AppStyle.getScaleFactor(context), ), Row( children: [ Expanded( child: Text( context.translation.date, style: Theme.of(context).textTheme.subtitle1, textScaleFactor: AppStyle.getScaleFactor(context), ), ), ADatePicker( date: _dateTime, from: DateTime.now(), onDatePicker: (date) { _dateTime = date; setState(() {}); }, ), ], ), SizedBox( height: 8.0 * AppStyle.getScaleFactor(context), ), AssignedToMenu( initialValue: _employee, onSelect: (employee) { _employee = employee; }, ), SizedBox( height: 8.0 * AppStyle.getScaleFactor(context), ), ], ), ), ), ), ], ); } }