import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; import '../../../controllers/http_status_manger/http_status_manger.dart'; import '../../../controllers/localization/localization.dart'; import '../../../controllers/providers/api/device_transfer_provider.dart'; import '../../../controllers/providers/api/user_provider.dart'; import '../../../controllers/providers/settings/setting_provider.dart'; import '../../../extensions/int_extensions.dart'; import '../../../models/device/device_transfer.dart'; import '../../../models/device/device_transfer_info.dart'; import '../../../models/subtitle.dart'; import '../../app_style/sizing.dart'; import '../../widgets/buttons/app_button.dart'; import '../../widgets/departments/department_button.dart'; import '../../widgets/equipment/device_button.dart'; import '../../widgets/hospitals/hospital_button.dart'; import '../../widgets/loaders/loading_manager.dart'; import '../../widgets/titles/app_sub_title.dart'; class RequestDeviceTransfer extends StatefulWidget { static const String id = "/request-device-transfer"; const RequestDeviceTransfer({Key? key}) : super(key: key); @override State createState() => _RequestDeviceTransferState(); } class _RequestDeviceTransferState extends State { bool _isLoading = false; bool _validate = false; Subtitle? _subtitle; UserProvider? _userProvider; SettingProvider? _settingProvider; DeviceTransferProvider? _deviceTransferProvider; final TextEditingController _requestedQuantityController = TextEditingController(); final DeviceTransfer _formModel = DeviceTransfer(receiver: DeviceTransferInfo()); final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); @override void setState(VoidCallback fn) { if (mounted) super.setState(() {}); } _onSubmit() async { _validate = true; if ((_formKey.currentState?.validate()??false)) { setState(() {}); return false; } _formKey.currentState?.save(); if (!_formModel.validate()) { setState(() {}); return false; } _isLoading = true; setState(() {}); int? status = await _deviceTransferProvider?.createRequest( user: _userProvider?.user, host: _settingProvider?.host??"", model: _formModel, ); _isLoading = false; setState(() {}); if (status!=null && status >= 200 && status < 300) { Fluttertoast.showToast( msg: _subtitle?.requestCompleteSuccessfully??"", ); Navigator.of(context).pop(); } else { String errorMessage = HttpStatusManger.getStatusMessage(status: status, subtitle: _subtitle); ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text(errorMessage), )); } } @override void dispose() { _requestedQuantityController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { _subtitle = AppLocalization.of(context)?.subtitle; _userProvider = Provider.of(context); _settingProvider = Provider.of(context); _deviceTransferProvider = Provider.of(context, listen: false); return Scaffold( key: _scaffoldKey, body: Form( key: _formKey, child: SafeArea( child: LoadingManager( isLoading: _isLoading, isFailedLoading: false, stateCode: 200, onRefresh: () async {}, child: SingleChildScrollView( padding: EdgeInsets.all(12 * AppStyle.getScaleFactor(context)), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Center( child: Padding( padding: const EdgeInsets.all(8.0), child: Text( "Transfer Device", style: Theme.of(context).textTheme.headline5?.copyWith(color: Theme.of(context).primaryColor, fontSize: 28, fontWeight: FontWeight.bold), ), ), ), // const SizedBox(height: 8,), // ASubTitle(_subtitle.title), // if(_validate && _formModel.title == null || _formModel.title?.isEmpty == true) // ASubTitle(_subtitle.requiredWord,color: Colors.red,), // const SizedBox(height: 4,), // ATextFormField( // initialValue: _formModel?.title, // textAlign: TextAlign.center, // style: Theme.of(context).textTheme.subtitle1, // textInputType: TextInputType.text, // onSaved: (value){ // _formModel.title = value; // }, // ), 12.height, const ASubTitle("Device"), if (_validate && _formModel.device == null) ASubTitle( _subtitle?.requiredWord??"", color: Colors.red, ), 6.height, DeviceButton( device: _formModel.device!, onDevicePick: (device) { _formModel.device = device; setState(() {}); }, ), // const SizedBox(height: 8,), // const ASubTitle("Sender Department"), // if(_validate && _formModel.senderDepartment == null) // ASubTitle(_subtitle.requiredWord,color: Colors.red,), // const SizedBox(height: 4,), // DepartmentButton( // department: _formModel.senderDepartment, // onDepartmentPick: (department){ // _formModel.senderDepartment = department; // setState(() {}); // }, // ), 12.height, const ASubTitle("Destination Client"), if (_validate && _formModel.receiver?.client == null) ASubTitle( _subtitle?.requiredWord??"", color: Colors.red, ), 6.height, HospitalButton( hospital: _formModel.receiver!.client!, onHospitalPick: (hospital) { _formModel.receiver?.client = hospital; setState(() {}); }, ), 12.height, const ASubTitle("Destination Department"), if (_validate && _formModel.receiver?.department == null) ASubTitle( _subtitle?.requiredWord??"", color: Colors.red, ), 6.height, DepartmentButton( department: _formModel.receiver?.department, onDepartmentPick: (department) { _formModel.receiver?.department = department; setState(() {}); }, ), 12.height, AButton( text: _subtitle?.submit??"", onPressed: _onSubmit, ), const SizedBox( height: 100, ) ], ), ), ), ), ), ); } }