From 82e3005e851ef9e45cf36388b7b383b5a7f1e8ef Mon Sep 17 00:00:00 2001 From: nextwo <1234> Date: Sun, 19 Feb 2023 10:16:23 +0300 Subject: [PATCH] support null safety 4 --- .../api/service_requests_provider.dart | 18 +-- .../models/gas_refill/gas_refill_details.dart | 4 +- .../device_transfer_details.dart | 5 +- .../request_device_transfer.dart | 4 +- old_lib/views/pages/login.dart | 8 +- old_lib/views/pages/register.dart | 21 +-- .../user/gas_refill/request_gas_refill.dart | 8 +- old_lib/views/pages/user/land_page.dart | 98 +++++++------- old_lib/views/pages/user/profile_page.dart | 69 +++++----- .../views/pages/user/report_issues_page.dart | 65 ++++----- .../pages/user/requests/create_request.dart | 86 ++++++------ .../future_request_service_details.dart | 34 ++--- .../report/create_service_report.dart | 79 ++++++----- .../requests/report/edit_service_report.dart | 128 +++++++++--------- .../report/future_service_report.dart | 34 ++--- .../pages/user/requests/request_details.dart | 75 +++++----- .../pages/user/requests/requests_page.dart | 59 ++++---- .../pages/user/visits/pantry/edit_pentry.dart | 57 ++++---- .../visits/pantry/future_edit_pently.dart | 40 +++--- .../preventive_maintenance_visits_page.dart | 72 +++++----- .../user/visits/regular_visits_page.dart | 66 ++++----- .../visits/update_visits_group_sheet.dart | 50 +++---- .../pages/user/visits/visit_details.dart | 38 +++--- .../date_and_time/from_to_date_bar.dart | 3 - .../gas_refill_update_details_item.dart | 6 +- .../requests/service_request_list.dart | 1 + .../widgets/search/visits_search_bar.dart | 8 +- old_lib/views/widgets/visits/visit_item.dart | 2 +- .../views/widgets/visits/visit_status.dart | 6 +- old_lib/views/widgets/visits/visits_list.dart | 1 + 30 files changed, 586 insertions(+), 559 deletions(-) diff --git a/old_lib/controllers/providers/api/service_requests_provider.dart b/old_lib/controllers/providers/api/service_requests_provider.dart index 53c6ecd3..a62c08ce 100644 --- a/old_lib/controllers/providers/api/service_requests_provider.dart +++ b/old_lib/controllers/providers/api/service_requests_provider.dart @@ -135,7 +135,7 @@ class ServiceRequestsProvider extends ChangeNotifier { "token": user.token ?? "", "sn_id": serviceRequest.deviceId ?? "", "date": (DateTime.now().millisecondsSinceEpoch).toString(), - "client": user.hospital.id ?? '', + "client": user.hospital?.id ?? '', "complaint": serviceRequest.maintenanceIssue, "image": json.encode(serviceRequest.devicePhotos), "priority": (serviceRequest.priority?.id).toString(), @@ -174,8 +174,8 @@ class ServiceRequestsProvider extends ChangeNotifier { }) async { Response response; Map body = issue.toMap(); - body["uid"] = user.id; - body["token"] = user.token; + body["uid"] = user.id??""; + body["token"] = user.token??""; try { response = await post( Uri.parse(host + URLs.createReport), @@ -228,8 +228,8 @@ class ServiceRequestsProvider extends ChangeNotifier { }) async { Response response; Map body = report.toMap(); - body["uid"] = user.id; - body["token"] = user.token; + body["uid"] = user.id??""; + body["token"] = user.token??""; body["job_id"] = request.id ?? ''; try { response = await post( @@ -285,8 +285,8 @@ class ServiceRequestsProvider extends ChangeNotifier { }) async { Response response; Map body = report.toMap(); - body["uid"] = user.id; - body["token"] = user.token; + body["uid"] = user.id??""; + body["token"] = user.token??""; body["job_id"] = request.id ?? ''; body["report_id"] = request.reportID ?? ''; try { @@ -314,8 +314,8 @@ class ServiceRequestsProvider extends ChangeNotifier { }) async { Response response; Map body = {}; - body["uid"] = user.id; - body["token"] = user.token; + body["uid"] = user.id??""; + body["token"] = user.token??""; body["job_id"] = request.id ?? ''; body["start_time"] = ((timer.startAt?.millisecondsSinceEpoch ?? 0) / 1000) .toStringAsFixed(0); diff --git a/old_lib/models/gas_refill/gas_refill_details.dart b/old_lib/models/gas_refill/gas_refill_details.dart index ec1e6633..7148c9da 100644 --- a/old_lib/models/gas_refill/gas_refill_details.dart +++ b/old_lib/models/gas_refill/gas_refill_details.dart @@ -29,7 +29,7 @@ class GasRefillDetails { : int.tryParse(parsedJson["requsted_qty"].toString()) ?? 0, deliveredQuantity: parsedJson["deliverd_qty"] == null ? 0 - : int.tryParse(parsedJson["deliverd_qty"].toString()) ?? 0, + : int.tryParse(parsedJson["deliverd_qty"].toString()) ?? 0, model: null, ); } @@ -40,7 +40,7 @@ class GasRefillDetails { ? Lookup.fromStatus(details.cylinderSize!) : null, requestedQuantity: details.requestedQuantity, - deliveredQuantity: details.deliveredQuantity, + deliveredQuantity: details.deliveredQuantity, model: null, ); } } diff --git a/old_lib/views/pages/device_transfer/device_transfer_details.dart b/old_lib/views/pages/device_transfer/device_transfer_details.dart index 64a519b6..20353f59 100644 --- a/old_lib/views/pages/device_transfer/device_transfer_details.dart +++ b/old_lib/views/pages/device_transfer/device_transfer_details.dart @@ -4,7 +4,6 @@ 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'; @@ -122,7 +121,7 @@ class _DeviceTransferDetailsState extends State { ), const SizedBox(height:12), DeviceTransferInfoSection( - info: widget.model.sender, + info: widget.model.sender!, ), const SizedBox(height:8), Row( @@ -148,7 +147,7 @@ class _DeviceTransferDetailsState extends State { ), const SizedBox(height:12), DeviceTransferInfoSection( - info: widget.model.receiver, + info: widget.model.receiver!, ), ], diff --git a/old_lib/views/pages/device_transfer/request_device_transfer.dart b/old_lib/views/pages/device_transfer/request_device_transfer.dart index 3788420d..0bbe80d3 100644 --- a/old_lib/views/pages/device_transfer/request_device_transfer.dart +++ b/old_lib/views/pages/device_transfer/request_device_transfer.dart @@ -139,7 +139,7 @@ class _RequestDeviceTransferState extends State { ), 6.height, DeviceButton( - device: _formModel.device, + device: _formModel.device!, onDevicePick: (device) { _formModel.device = device; setState(() {}); @@ -166,7 +166,7 @@ class _RequestDeviceTransferState extends State { ), 6.height, HospitalButton( - hospital: _formModel.receiver?.client, + hospital: _formModel.receiver!.client!, onHospitalPick: (hospital) { _formModel.receiver?.client = hospital; setState(() {}); diff --git a/old_lib/views/pages/login.dart b/old_lib/views/pages/login.dart index 00d54b68..b42a5c0b 100644 --- a/old_lib/views/pages/login.dart +++ b/old_lib/views/pages/login.dart @@ -81,10 +81,10 @@ class _LoginState extends State { textAlign: TextAlign.left, style: Theme.of(context).textTheme.bodyText1, prefixIconData: Icons.account_circle, - validator: (value) => Validator.hasValue(value) ? null : _subtitle?.nameValidateMessage, + validator: (value) => Validator.hasValue(value!) ? '' : _subtitle?.nameValidateMessage??"", textInputType: TextInputType.name, onSaved: (value) { - _user.userName = value; + _user.userName = value!; }, ), SizedBox(height: 12), @@ -95,13 +95,13 @@ class _LoginState extends State { style: Theme.of(context).textTheme.bodyText1, prefixIconData: Icons.vpn_key_sharp, textAlign: TextAlign.left, - validator: (value) => Validator.isValidPassword(value) ? null : _subtitle?.passwordValidateMessage, + validator: (value) => Validator.isValidPassword(value!) ? '' : _subtitle?.passwordValidateMessage??"", showPassword: () { _obscurePassword = !_obscurePassword; setState(() {}); }, onSaved: (value) { - _user.password = value; + _user.password = value!; }, ), SizedBox( diff --git a/old_lib/views/pages/register.dart b/old_lib/views/pages/register.dart index e6ebd7f2..aca5ff1d 100644 --- a/old_lib/views/pages/register.dart +++ b/old_lib/views/pages/register.dart @@ -8,6 +8,7 @@ import '../../controllers/localization/localization.dart'; import '../../controllers/providers/api/user_provider.dart'; import '../../controllers/providers/settings/setting_provider.dart'; import '../../controllers/validator/validator.dart'; +import '../../models/hospital.dart'; import '../../models/subtitle.dart'; import '../../models/user.dart'; import '../widgets/app_text_form_field.dart'; @@ -74,9 +75,9 @@ class _RegisterState extends State { hintText: _subtitle?.name??"", prefixIconData: Icons.account_circle, style: Theme.of(context).textTheme.headline6, - validator: (value) => Validator.hasValue(value) ? null : _subtitle?.nameValidateMessage, + validator: (value) => Validator.hasValue(value!) ? '' : _subtitle?.nameValidateMessage??"", onSaved: (value) { - _user.userName = value; + _user.userName = value!; }, ), const SizedBox(height: 12), @@ -86,9 +87,9 @@ class _RegisterState extends State { prefixIconData: Icons.email, textInputType: TextInputType.emailAddress, style: Theme.of(context).textTheme.headline6, - validator: (value) => Validator.isEmail(value) ? null : _subtitle?.emailValidateMessage, + validator: (value) => Validator.isEmail(value!) ? '' : _subtitle?.emailValidateMessage??"", onSaved: (value) { - _user.email = value; + _user.email = value!; }, ), const SizedBox(height: 12), @@ -98,13 +99,13 @@ class _RegisterState extends State { prefixIconData: Icons.vpn_key_sharp, style: Theme.of(context).textTheme.headline6, obscureText: _obscurePassword, - validator: (value) => Validator.isValidPassword(value) ? null : _subtitle?.passwordValidateMessage, + validator: (value) => Validator.isValidPassword(value!) ? '' : _subtitle?.passwordValidateMessage??'', showPassword: () { _obscurePassword = !_obscurePassword; setState(() {}); }, onSaved: (value) { - _user.password = value; + _user.password = value!; }, onChange: (value) { _user.password = value; @@ -117,7 +118,7 @@ class _RegisterState extends State { hintText: _subtitle?.confirmPassword??"", style: Theme.of(context).textTheme.headline6, obscureText: _obscurePassword, - validator: (value) => _user.password == value ? null : _subtitle?.confirmPasswordValidateMessage, + validator: (value) => _user.password == value ? '' : _subtitle?.confirmPasswordValidateMessage??"", showPassword: () { _obscurePassword = !_obscurePassword; setState(() {}); @@ -125,7 +126,7 @@ class _RegisterState extends State { ), const SizedBox(height: 12), HospitalButton( - hospital: _user.hospital, + hospital: _user.hospital??Hospital(), onHospitalPick: (hospital) { _user.hospital = hospital; setState(() {}); @@ -145,7 +146,7 @@ class _RegisterState extends State { hintText: _subtitle?.phoneNumber??"", style: Theme.of(context).textTheme.headline6, prefixIconData: Icons.phone_android, - validator: (value) => Validator.isPhoneNumber(value) ? null : _subtitle?.phoneNumberValidateMessage, + validator: (value) => Validator.isPhoneNumber(value!) ? '' : _subtitle?.phoneNumberValidateMessage??"", textInputType: TextInputType.phone, onSaved: (value) { _user.phoneNumber = value; @@ -158,7 +159,7 @@ class _RegisterState extends State { style: Theme.of(context).textTheme.headline6, prefixIconData: FontAwesomeIcons.whatsapp, prefixIconSize: 36, - validator: (value) => Validator.isPhoneNumber(value) ? null : _subtitle?.phoneNumberValidateMessage, + validator: (value) => (Validator.isPhoneNumber(value!)) ? "" : _subtitle?.phoneNumberValidateMessage??"", textInputType: TextInputType.phone, onSaved: (value) { _user.whatsApp = value; diff --git a/old_lib/views/pages/user/gas_refill/request_gas_refill.dart b/old_lib/views/pages/user/gas_refill/request_gas_refill.dart index 8eb8f75f..2e1ae890 100644 --- a/old_lib/views/pages/user/gas_refill/request_gas_refill.dart +++ b/old_lib/views/pages/user/gas_refill/request_gas_refill.dart @@ -94,7 +94,7 @@ class _RequestGasRefillState extends State { _formModel.details?.insert(0,_currentDetails); _validate = false; - Scrollable.ensureVisible(_DetailsKey.currentContext); + Scrollable.ensureVisible(_DetailsKey.currentContext!); _requestedQuantityController.clear(); _currentDetails = GasRefillDetails(model: null); setState(() {}); @@ -201,11 +201,11 @@ class _RequestGasRefillState extends State { controller: _requestedQuantityController, style: Theme.of(context).textTheme.subtitle1, validator: (value) => - Validator.isNumeric(value) - ? null : "allow numbers only", + Validator.isNumeric(value!) + ? '' : "allow numbers only", textInputType: TextInputType.number, onSaved: (value){ - _currentDetails.requestedQuantity = int.tryParse(value); + _currentDetails.requestedQuantity = int.tryParse(value!); }, ), const SizedBox(height: 16), diff --git a/old_lib/views/pages/user/land_page.dart b/old_lib/views/pages/user/land_page.dart index 6d784361..cccf3b7f 100644 --- a/old_lib/views/pages/user/land_page.dart +++ b/old_lib/views/pages/user/land_page.dart @@ -7,36 +7,36 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:package_info/package_info.dart'; import 'package:provider/provider.dart'; import 'package:share/share.dart'; -import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/controllers/notification/firebase_notification_manger.dart'; -import 'package:test_sa/controllers/providers/api/departments_provider.dart'; -import 'package:test_sa/controllers/providers/api/devices_provider.dart'; -import 'package:test_sa/controllers/providers/api/preventive_maintenance_visits_provider.dart'; -import 'package:test_sa/controllers/providers/api/regular_visits_provider.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/int_extensions.dart'; -import 'package:test_sa/extensions/widget_extensions.dart'; -import 'package:test_sa/models/enums/user_types.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/pages/device_transfer/request_device_transfer.dart'; -import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart'; -import 'package:test_sa/views/pages/user/gas_refill/request_gas_refill.dart'; -import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart'; -import 'package:test_sa/views/pages/user/notifications/notifications_page.dart'; -import 'package:test_sa/views/pages/user/requests/create_request.dart'; -import 'package:test_sa/views/pages/user/visits/regular_visits_page.dart'; -import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; -import 'package:test_sa/views/widgets/dialogs/dialog.dart'; -import 'package:test_sa/views/widgets/drawer/drawer_item.dart'; import 'package:url_launcher/url_launcher.dart'; +import '../../../controllers/localization/localization.dart'; +import '../../../controllers/notification/firebase_notification_manger.dart'; +import '../../../controllers/providers/api/departments_provider.dart'; +import '../../../controllers/providers/api/devices_provider.dart'; +import '../../../controllers/providers/api/preventive_maintenance_visits_provider.dart'; +import '../../../controllers/providers/api/regular_visits_provider.dart'; +import '../../../controllers/providers/api/service_requests_provider.dart'; +import '../../../controllers/providers/api/user_provider.dart'; +import '../../../controllers/providers/settings/setting_provider.dart'; +import '../../../extensions/int_extensions.dart'; +import '../../../extensions/widget_extensions.dart'; +import '../../../models/enums/user_types.dart'; +import '../../../models/subtitle.dart'; +import '../../app_style/colors.dart'; +import '../../app_style/sizing.dart'; +import '../../widgets/buttons/app_back_button.dart'; +import '../../widgets/buttons/app_icon_button.dart'; +import '../../widgets/dialogs/dialog.dart'; +import '../../widgets/drawer/drawer_item.dart'; import '../../widgets/land_page/land_page_item.dart'; +import '../device_transfer/request_device_transfer.dart'; +import '../device_transfer/track_device_transfer.dart'; +import 'gas_refill/request_gas_refill.dart'; +import 'gas_refill/track_gas_refill.dart'; +import 'notifications/notifications_page.dart'; +import 'requests/create_request.dart'; import 'requests/requests_page.dart'; +import 'visits/regular_visits_page.dart'; class LandPage extends StatefulWidget { static const String id = "/land-page"; @@ -48,17 +48,17 @@ class LandPage extends StatefulWidget { } class _LandPageState extends State { - double _height; - double _width; - UserProvider _userProvider; - SettingProvider _settingProvider; - DepartmentsProvider _departmentsProvider; - DevicesProvider _devicesProvider; - double _buttonHeight; - bool firstTime = true; - ServiceRequestsProvider _serviceRequestsProvider; - PreventiveMaintenanceVisitsProvider _preventiveMaintenanceVisitsProvider; - RegularVisitsProvider _regularVisitsProvider; + late double _height; + late double _width; + late UserProvider _userProvider; + late SettingProvider _settingProvider; + late DepartmentsProvider _departmentsProvider; + late DevicesProvider _devicesProvider; + late double _buttonHeight; + late bool firstTime = true; + late ServiceRequestsProvider _serviceRequestsProvider; + late PreventiveMaintenanceVisitsProvider _preventiveMaintenanceVisitsProvider; + late RegularVisitsProvider _regularVisitsProvider; final GlobalKey _scaffoldKey = GlobalKey(); @override @@ -73,7 +73,7 @@ class _LandPageState extends State { @override Widget build(BuildContext context) { - String path = ModalRoute.of(context).settings.arguments; + String path = ModalRoute.of(context)!.settings.arguments.toString(); _height = MediaQuery.of(context).size.height; _width = MediaQuery.of(context).size.width; _settingProvider = Provider.of(context); @@ -83,7 +83,7 @@ class _LandPageState extends State { _serviceRequestsProvider = Provider.of(context); _preventiveMaintenanceVisitsProvider = Provider.of(context); _regularVisitsProvider = Provider.of(context); - Subtitle _subtitle = AppLocalization.of(context).subtitle; + Subtitle _subtitle = AppLocalization.of(context)!.subtitle!; if (firstTime) { if (path != null) { Navigator.of(context).pushNamed("/" + path.split("/").first, arguments: path.split("/").last); @@ -153,7 +153,7 @@ class _LandPageState extends State { mainAxisSpacing: 12, childAspectRatio: 1, children: [ - if (_userProvider.user.type == UsersTypes.normal_user) + if (_userProvider.user!.type == UsersTypes.normal_user) LandPageItem( text: _subtitle.newServiceRequest, icon: FontAwesomeIcons.tools, @@ -184,7 +184,7 @@ class _LandPageState extends State { // Navigator.of(context).pushNamed(PreventiveMaintenanceVisitsPage.id); // }, // ), - if (_userProvider.user.type != UsersTypes.engineer) + if (_userProvider.user?.type != UsersTypes.engineer) LandPageItem( text: "Request Gas Refill", icon: FontAwesomeIcons.truckFast, @@ -250,7 +250,7 @@ class _LandPageState extends State { buttonSize: 42, backgroundColor: AColors.white, onPressed: () { - _scaffoldKey.currentState.openEndDrawer(); + _scaffoldKey.currentState?.openEndDrawer(); }, ), ), @@ -284,8 +284,8 @@ class _LandPageState extends State { ), 12.width, Text( - _userProvider.user.userName, - style: Theme.of(context).textTheme.headline6.copyWith( + _userProvider.user?.userName??"", + style: Theme.of(context).textTheme.headline6?.copyWith( fontWeight: FontWeight.w600, ), textScaleFactor: AppStyle.getScaleFactor(context), @@ -307,11 +307,11 @@ class _LandPageState extends State { focusColor: AColors.grey3A, groupValue: _settingProvider.language, onChanged: (value) { - _settingProvider.setLanguage(value); + _settingProvider.setLanguage(value!); }), Text( "English", - style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A), + style: Theme.of(context).textTheme.bodyText1?.copyWith(color: AColors.grey3A), textScaleFactor: AppStyle.getScaleFactor(context), ), Radio( @@ -320,11 +320,11 @@ class _LandPageState extends State { focusColor: AColors.grey3A, groupValue: _settingProvider.language, onChanged: (value) { - _settingProvider.setLanguage(value); + _settingProvider.setLanguage(value!); }), Text( "عربي", - style: Theme.of(context).textTheme.bodyText1.copyWith(color: AColors.grey3A), + style: Theme.of(context).textTheme.bodyText1?.copyWith(color: AColors.grey3A), textScaleFactor: AppStyle.getScaleFactor(context), ), ], @@ -381,7 +381,7 @@ class _LandPageState extends State { children: [ Text( "Powered By NewTrack", - style: Theme.of(context).textTheme.headline6.copyWith(fontWeight: FontWeight.w500, color: AColors.grey3A, fontSize: 12), + style: Theme.of(context).textTheme.headline6?.copyWith(fontWeight: FontWeight.w500, color: AColors.grey3A, fontSize: 12), textScaleFactor: AppStyle.getScaleFactor(context), ), 6.width, diff --git a/old_lib/views/pages/user/profile_page.dart b/old_lib/views/pages/user/profile_page.dart index 514655e9..4d8e18f8 100644 --- a/old_lib/views/pages/user/profile_page.dart +++ b/old_lib/views/pages/user/profile_page.dart @@ -1,21 +1,22 @@ -import 'package:test_sa/controllers/http_status_manger/http_status_manger.dart'; -import 'package:test_sa/controllers/localization/localization.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/controllers/validator/validator.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/models/user.dart'; -import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/app_text_form_field.dart'; -import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_button.dart'; -import 'package:test_sa/views/widgets/departments/department_button.dart'; -import 'package:test_sa/views/widgets/hospitals/hospital_button.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; + +import '../../../controllers/http_status_manger/http_status_manger.dart'; +import '../../../controllers/localization/localization.dart'; +import '../../../controllers/providers/api/user_provider.dart'; +import '../../../controllers/providers/settings/setting_provider.dart'; +import '../../../controllers/validator/validator.dart'; +import '../../../models/subtitle.dart'; +import '../../../models/user.dart'; +import '../../app_style/colors.dart'; +import '../../app_style/sizing.dart'; +import '../../widgets/app_text_form_field.dart'; +import '../../widgets/buttons/app_back_button.dart'; +import '../../widgets/buttons/app_button.dart'; +import '../../widgets/departments/department_button.dart'; +import '../../widgets/hospitals/hospital_button.dart'; +import '../../widgets/loaders/loading_manager.dart'; class ProfilePage extends StatefulWidget { static final String id = "/user/profile"; @override @@ -23,10 +24,10 @@ class ProfilePage extends StatefulWidget { } class _ProfilePageState extends State { - UserProvider _userProvider; - SettingProvider _settingProvider; - double _width; - double _height; + late UserProvider _userProvider; + late SettingProvider _settingProvider; + late double _width; + late double _height; User _user = User(); bool _firstTime = true; final GlobalKey _formKey = GlobalKey(); @@ -37,9 +38,9 @@ class _ProfilePageState extends State { _settingProvider = Provider.of(context); _width = MediaQuery.of(context).size.width; _height = MediaQuery.of(context).size.height; - Subtitle _subtitle = AppLocalization.of(context).subtitle; + Subtitle _subtitle = AppLocalization.of(context)!.subtitle!; if(_firstTime){ - _user = User.fromJson(_userProvider.user.toJson()); + _user = User.fromJson(_userProvider.user!.toJson()); _firstTime = false; } return Scaffold( @@ -85,10 +86,10 @@ class _ProfilePageState extends State { enable: false, prefixIconData: Icons.account_circle, style: Theme.of(context).textTheme.headline6, - validator: (value) => Validator.hasValue(value) - ? null : _subtitle.nameValidateMessage, + validator: (value) => Validator.hasValue(value!) + ? '' : _subtitle.nameValidateMessage, onSaved: (value){ - _user.userName = value; + _user.userName = value!; }, ), SizedBox(height: 8,), @@ -99,16 +100,16 @@ class _ProfilePageState extends State { prefixIconData: Icons.email, textInputType: TextInputType.emailAddress, style: Theme.of(context).textTheme.headline6, - validator: (value) => Validator.isEmail(value) - ? null : _subtitle.emailValidateMessage, + validator: (value) => Validator.isEmail(value!) + ? '' : _subtitle.emailValidateMessage, onSaved: (value){ - _user.email = value; + _user.email = value!; }, ), SizedBox(height: 8,), AbsorbPointer( child: HospitalButton( - hospital: _user.hospital, + hospital: _user.hospital!, onHospitalPick: (hospital){ _user.hospital = hospital; setState(() {}); @@ -130,7 +131,7 @@ class _ProfilePageState extends State { style: Theme.of(context).textTheme.headline6, prefixIconData: Icons.phone_android, validator: (value) => - Validator.isPhoneNumber(value) ? null : _subtitle.phoneNumberValidateMessage, + Validator.isPhoneNumber(value!) ? '' : _subtitle.phoneNumberValidateMessage, textInputType: TextInputType.phone, onSaved: (value){ _user.phoneNumber = value; @@ -144,7 +145,7 @@ class _ProfilePageState extends State { prefixIconData: FontAwesomeIcons.whatsapp, prefixIconSize: 36, validator: (value) => - Validator.isPhoneNumber(value) ? null : _subtitle.phoneNumberValidateMessage, + Validator.isPhoneNumber(value!) ? '' : _subtitle.phoneNumberValidateMessage, textInputType: TextInputType.phone, onSaved: (value){ _user.whatsApp = value; @@ -161,9 +162,9 @@ class _ProfilePageState extends State { child: AButton( text: _subtitle.update, onPressed: () async { - if(!_formKey.currentState.validate()) + if(!(_formKey.currentState?.validate()??false)) return; - _formKey.currentState.save(); + _formKey.currentState?.save(); if(_user.department?.id == null){ ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -176,10 +177,10 @@ class _ProfilePageState extends State { } int status = await _userProvider.updateProfile( user: _user, - host: _settingProvider.host, + host: _settingProvider.host!, ); if(status >= 200 && status < 300){ - _settingProvider.setUser(_userProvider.user); + _settingProvider.setUser(_userProvider.user!); ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( diff --git a/old_lib/views/pages/user/report_issues_page.dart b/old_lib/views/pages/user/report_issues_page.dart index a1641b24..64154fba 100644 --- a/old_lib/views/pages/user/report_issues_page.dart +++ b/old_lib/views/pages/user/report_issues_page.dart @@ -1,26 +1,29 @@ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.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/controllers/validator/validator.dart'; -import 'package:test_sa/models/issue.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/colors.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/app_text_form_field.dart'; -import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_button.dart'; -import 'package:test_sa/views/widgets/issues/report_issue_item.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; + +import '../../../controllers/localization/localization.dart'; +import '../../../controllers/providers/api/service_requests_provider.dart'; +import '../../../controllers/providers/api/user_provider.dart'; +import '../../../controllers/providers/settings/setting_provider.dart'; +import '../../../controllers/validator/validator.dart'; +import '../../../models/issue.dart'; +import '../../../models/service_request/service_request.dart'; +import '../../../models/subtitle.dart'; +import '../../../models/user.dart'; +import '../../app_style/colors.dart'; +import '../../app_style/sizing.dart'; +import '../../widgets/app_text_form_field.dart'; +import '../../widgets/buttons/app_back_button.dart'; +import '../../widgets/buttons/app_button.dart'; +import '../../widgets/issues/report_issue_item.dart'; +import '../../widgets/loaders/loading_manager.dart'; + class ReportIssuesPage extends StatefulWidget { static final String id = "/report-issue"; final ServiceRequest serviceRequest; - const ReportIssuesPage({Key key, this.serviceRequest}) : super(key: key); + const ReportIssuesPage({Key? key, required this.serviceRequest}) : super(key: key); @override _ReportIssuesPageState createState() => _ReportIssuesPageState(); } @@ -28,15 +31,15 @@ class ReportIssuesPage extends StatefulWidget { class _ReportIssuesPageState extends State { List _issues = []; Issue _issue = Issue(reports: []); - double _height; + late double _height; bool _isLoading = false; - ServiceRequestsProvider _serviceRequestsProvider; - UserProvider _userProvider; - SettingProvider _settingProvider; + late ServiceRequestsProvider _serviceRequestsProvider; + late UserProvider _userProvider; + late SettingProvider _settingProvider; final GlobalKey _formKey = GlobalKey(); @override Widget build(BuildContext context) { - Subtitle _subtitle = AppLocalization.of(context).subtitle; + Subtitle _subtitle = AppLocalization.of(context)!.subtitle!; _serviceRequestsProvider = Provider.of(context); _userProvider = Provider.of(context); _settingProvider = Provider.of(context); @@ -64,7 +67,7 @@ class _ReportIssuesPageState extends State { ), child: Text( _subtitle.reportIssue, - style: Theme.of(context).textTheme.headline5.copyWith( + style: Theme.of(context).textTheme.headline5?.copyWith( color: AColors.cyan, fontWeight: FontWeight.bold ), @@ -103,8 +106,8 @@ class _ReportIssuesPageState extends State { textAlign: TextAlign.center, style: Theme.of(context).textTheme.headline6, validator: (value) => - Validator.hasValue(value) - ? null : _subtitle.titleValidateMessage, + Validator.hasValue(value!) + ? '' : _subtitle.titleValidateMessage, textInputType: TextInputType.name, onSaved: (value){ _issue.title = value; @@ -115,13 +118,13 @@ class _ReportIssuesPageState extends State { children: List.generate( _issues.length, (index) => ReportIssueItem( - isSelected: _issue.reports.contains(index), + isSelected: _issue.reports?.contains(index), issueInfo: _issues[index], onChange: (info,value){ if(value){ - _issue.reports.add(index); + _issue.reports?.add(index); } else { - _issue.reports.remove(index); + _issue.reports?.remove(index); } setState(() {}); }, @@ -148,15 +151,15 @@ class _ReportIssuesPageState extends State { child: AButton( text: _subtitle.submit, onPressed: () async { - if(!_formKey.currentState.validate()) + if(!(_formKey.currentState?.validate()??false)) return; - _formKey.currentState.save(); + _formKey.currentState?.save(); _issue.serviceRequestId = widget.serviceRequest.id; _isLoading =true; setState(() {}); int status = await _serviceRequestsProvider.createIssueReport( - user: _userProvider.user, - host: _settingProvider.host, + user: _userProvider.user??User(), + host: _settingProvider.host??"", issue: _issue, ); _isLoading =false; diff --git a/old_lib/views/pages/user/requests/create_request.dart b/old_lib/views/pages/user/requests/create_request.dart index 86b819e8..b39505ee 100644 --- a/old_lib/views/pages/user/requests/create_request.dart +++ b/old_lib/views/pages/user/requests/create_request.dart @@ -5,29 +5,31 @@ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/http_status_manger/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/controllers/validator/validator.dart'; -import 'package:test_sa/extensions/int_extensions.dart'; -import 'package:test_sa/extensions/widget_extensions.dart'; -import 'package:test_sa/models/device/device.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/colors.dart'; -import 'package:test_sa/views/widgets/app_text_form_field.dart'; -import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_button.dart'; -import 'package:test_sa/views/widgets/equipment/device_button.dart'; -import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:test_sa/views/widgets/sound/record_sound.dart'; -import 'package:test_sa/views/widgets/speech_to_text/speech_to_text.dart'; -import 'package:test_sa/views/widgets/status/service_request/service_request_defect_types_mune.dart'; -import 'package:test_sa/views/widgets/status/service_request/service_request_priority_mune.dart'; -import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; + +import '../../../../controllers/http_status_manger/http_status_manger.dart'; +import '../../../../controllers/localization/localization.dart'; +import '../../../../controllers/providers/api/service_requests_provider.dart'; +import '../../../../controllers/providers/api/user_provider.dart'; +import '../../../../controllers/providers/settings/setting_provider.dart'; +import '../../../../controllers/validator/validator.dart'; +import '../../../../extensions/int_extensions.dart'; +import '../../../../extensions/widget_extensions.dart'; +import '../../../../models/device/device.dart'; +import '../../../../models/service_request/service_request.dart'; +import '../../../../models/subtitle.dart'; +import '../../../app_style/colors.dart'; +import '../../../widgets/app_text_form_field.dart'; +import '../../../widgets/buttons/app_back_button.dart'; +import '../../../widgets/buttons/app_button.dart'; +import '../../../widgets/equipment/device_button.dart'; +import '../../../widgets/images/multi_image_picker.dart'; +import '../../../widgets/loaders/loading_manager.dart'; +import '../../../widgets/sound/record_sound.dart'; +import '../../../widgets/speech_to_text/speech_to_text.dart'; +import '../../../widgets/status/service_request/service_request_defect_types_mune.dart'; +import '../../../widgets/status/service_request/service_request_priority_mune.dart'; +import '../../../widgets/titles/app_sub_title.dart'; + class CreateRequestPage extends StatefulWidget { static final String id = "/create-request"; @@ -37,18 +39,18 @@ class CreateRequestPage extends StatefulWidget { } class _CreateRequestPageState extends State { - double _height; - UserProvider _userProvider; - SettingProvider _settingProvider; - ServiceRequestsProvider _serviceRequestsProvider; + late double _height; + late UserProvider _userProvider; + late SettingProvider _settingProvider; + late ServiceRequestsProvider _serviceRequestsProvider; ServiceRequest _serviceRequest = ServiceRequest(); List _deviceImages = []; bool _isLoading = false; - Device _device; - Subtitle _subtitle; + late Device _device; + late Subtitle _subtitle; final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); - TextEditingController _controller; + late TextEditingController _controller; @override void initState() { @@ -68,7 +70,7 @@ class _CreateRequestPageState extends State { _userProvider = Provider.of(context); _settingProvider = Provider.of(context); _serviceRequestsProvider = Provider.of(context); - _subtitle = AppLocalization.of(context).subtitle; + _subtitle = AppLocalization.of(context)!.subtitle!; return Scaffold( key: _scaffoldKey, body: SafeArea( @@ -99,7 +101,7 @@ class _CreateRequestPageState extends State { padding: const EdgeInsets.all(8.0), child: Text( _subtitle.newServiceRequest, - style: Theme.of(context).textTheme.headline5.copyWith(color: AColors.cyan, fontWeight: FontWeight.w600), + style: Theme.of(context).textTheme.headline5?.copyWith(color: AColors.cyan, fontWeight: FontWeight.w600), ), ), ), @@ -107,21 +109,21 @@ class _CreateRequestPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ 12.height, - _userProvider.user.hospital == null + _userProvider.user?.hospital == null ? SizedBox.shrink() : ATextFormField( enable: false, - initialValue: _userProvider.user.hospital?.name ?? _subtitle.noHospitalFound, + initialValue: _userProvider.user?.hospital?.name ?? _subtitle.noHospitalFound, hintText: _subtitle.hospital, prefixIconData: FontAwesomeIcons.hospital, style: Theme.of(context).textTheme.subtitle1, ), 12.height, - _userProvider.user.department == null + _userProvider.user?.department == null ? SizedBox.shrink() : ATextFormField( enable: false, - initialValue: _userProvider.user.department?.name ?? _subtitle.noUniteFound, + initialValue: _userProvider.user?.department?.name ?? _subtitle.noUniteFound, hintText: _subtitle.unite, prefixIconData: FontAwesomeIcons.hospitalUser, style: Theme.of(context).textTheme.subtitle1, @@ -167,7 +169,7 @@ class _CreateRequestPageState extends State { prefixIconData: FontAwesomeIcons.triangleExclamation, style: Theme.of(context).textTheme.headline6, textInputType: TextInputType.multiline, - validator: (value) => Validator.hasValue(value) ? null : _subtitle.maintenanceIssueRequired, + validator: (value) => Validator.hasValue(value!) ? '' : _subtitle.maintenanceIssueRequired, onSaved: (value) { _serviceRequest.maintenanceIssue = value; }, @@ -184,19 +186,19 @@ class _CreateRequestPageState extends State { child: AButton( text: _subtitle.submit, onPressed: () async { - if (!_formKey.currentState.validate()) return; - _formKey.currentState.save(); + if (!(_formKey.currentState?.validate()??false)) return; + _formKey.currentState?.save(); _serviceRequest.deviceId = _device?.id ?? ""; _isLoading = true; setState(() {}); _serviceRequest.devicePhotos = _deviceImages.map((e) => base64Encode(e.readAsBytesSync())).toList(); if (_serviceRequest.audio != null) { - final file = File(_serviceRequest.audio); + final file = File(_serviceRequest.audio!); _serviceRequest.audio = base64Encode(file.readAsBytesSync()); } int status = await _serviceRequestsProvider.createRequest( - user: _userProvider.user, - host: _settingProvider.host, + user: _userProvider.user!, + host: _settingProvider.host??"", serviceRequest: _serviceRequest, ); _isLoading = false; diff --git a/old_lib/views/pages/user/requests/future_request_service_details.dart b/old_lib/views/pages/user/requests/future_request_service_details.dart index 7f56dd5f..f5688090 100644 --- a/old_lib/views/pages/user/requests/future_request_service_details.dart +++ b/old_lib/views/pages/user/requests/future_request_service_details.dart @@ -1,14 +1,16 @@ -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/models/service_request/service_request.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/pages/user/requests/request_details.dart'; -import 'package:test_sa/views/widgets/loaders/app_loading.dart'; -import 'package:test_sa/views/widgets/loaders/failed_loading.dart'; + import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; + +import '../../../../controllers/localization/localization.dart'; +import '../../../../controllers/providers/api/service_requests_provider.dart'; +import '../../../../controllers/providers/api/user_provider.dart'; +import '../../../../controllers/providers/settings/setting_provider.dart'; +import '../../../../models/service_request/service_request.dart'; +import '../../../../models/subtitle.dart'; +import '../../../widgets/loaders/app_loading.dart'; +import '../../../widgets/loaders/failed_loading.dart'; +import 'request_details.dart'; class FutureRequestServiceDetails extends StatefulWidget { static final String id = "/service-request-details"; @@ -18,20 +20,20 @@ class FutureRequestServiceDetails extends StatefulWidget { class _FutureRequestServiceDetailsState extends State { - UserProvider _userProvider; - SettingProvider _settingProvider; + late UserProvider _userProvider; + late SettingProvider _settingProvider; @override Widget build(BuildContext context) { _userProvider = Provider.of(context); _settingProvider = Provider.of(context); - String requestId = ModalRoute.of(context).settings.arguments; - Subtitle _subtitle = AppLocalization.of(context).subtitle; + String requestId = ModalRoute.of(context)!.settings.arguments.toString(); + Subtitle _subtitle = AppLocalization.of(context)!.subtitle!; return Scaffold( body: FutureBuilder( future: ServiceRequestsProvider().getSingleServiceRequest( requestId: requestId, - user: _userProvider.user, - host: _settingProvider.host, + user: _userProvider.user!, + host: _settingProvider.host??"", subtitle: _subtitle ), builder: (BuildContext context, AsyncSnapshot snapshot){ @@ -42,7 +44,7 @@ class _FutureRequestServiceDetailsState extends State with TickerPr const SizedBox.shrink(), AutoCompleteDeviceField( hospitalId: widget.request?.hospitalId??"", - initialValue: _serviceReport?.device, + initialValue: _serviceReport!.device!, onPick: (id){ _serviceReport?.device?.id = id; }, @@ -305,8 +312,8 @@ class _CreateServiceReportState extends State with TickerPr textAlign: TextAlign.center, style: Theme.of(context).textTheme.subtitle1, validator: (value) => - Validator.hasValue(value) - ? null : _subtitle?.requiredWord, + Validator.hasValue(value!) + ? '' : _subtitle?.requiredWord??"", textInputType: TextInputType.number, onSaved: (value){ _serviceReport?.invoiceNumber = value; @@ -327,8 +334,8 @@ class _CreateServiceReportState extends State with TickerPr textAlign: TextAlign.center, style: Theme.of(context).textTheme.subtitle1, validator: (value) => - Validator.hasValue(value) - ? null : _subtitle?.requiredWord, + Validator.hasValue(value!) + ? '' : _subtitle?.requiredWord??"", textInputType: TextInputType.text, onSaved: (value){ _serviceReport?.invoiceCode = value; @@ -362,8 +369,8 @@ class _CreateServiceReportState extends State with TickerPr controller: _faultController, style: Theme.of(context).textTheme.subtitle1, validator: (value) => - Validator.hasValue(value) - ? null : _subtitle?.requiredWord, + Validator.hasValue(value!) + ? '' : _subtitle?.requiredWord??"", textInputType: TextInputType.multiline, onSaved: (value){ _serviceReport?.faultDescription = value; @@ -391,8 +398,8 @@ class _CreateServiceReportState extends State with TickerPr controller: _workPreformedController, style: Theme.of(context).textTheme.subtitle1, validator: (value) => - Validator.hasValue(value) - ? null : _subtitle?.requiredWord, + Validator.hasValue(value!) + ? '' : _subtitle?.requiredWord??"", textInputType: TextInputType.multiline, onSaved: (value){ _serviceReport?.workPreformed = value; @@ -446,12 +453,12 @@ class _CreateServiceReportState extends State with TickerPr child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - ASubTitle(_subtitle.workingHours), + ASubTitle(_subtitle?.workingHours??""), const SizedBox(height: 8,), AppTimer( - timer: _serviceReport.timer, + timer: _serviceReport?.timer, onChange: (timer) async{ - _serviceReport.timer = timer; + _serviceReport?.timer = timer; return true; }, ), @@ -476,7 +483,7 @@ class _CreateServiceReportState extends State with TickerPr child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - ASubTitle(_subtitle.travelingHours), + ASubTitle(_subtitle?.travelingHours??""), const SizedBox(height: 4,), ATextFormField( initialValue: _serviceReport?.travelingHours, @@ -488,7 +495,7 @@ class _CreateServiceReportState extends State with TickerPr // ? null : _subtitle.requiredWord, textInputType: TextInputType.number, onSaved: (value){ - _serviceReport.travelingHours = value; + _serviceReport?.travelingHours = value; }, ), ], @@ -527,7 +534,7 @@ class _CreateServiceReportState extends State with TickerPr child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - ASubTitle(_subtitle.jobSheetNumber), + ASubTitle(_subtitle?.jobSheetNumber??""), const SizedBox(height: 4,), ATextFormField( initialValue: _serviceReport?.jobSheetNumber, @@ -535,7 +542,7 @@ class _CreateServiceReportState extends State with TickerPr style: Theme.of(context).textTheme.subtitle1, textInputType: TextInputType.name, onSaved: (value){ - _serviceReport.jobSheetNumber = value; + _serviceReport?.jobSheetNumber = value; }, ), ], @@ -552,14 +559,14 @@ class _CreateServiceReportState extends State with TickerPr child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - ASubTitle(_subtitle.partNumber), - _validate && _serviceReport.parts == null ? - ASubTitle(_subtitle.requiredWord,color: Colors.red,): + ASubTitle(_subtitle?.partNumber??""), + _validate && _serviceReport?.parts == null ? + ASubTitle(_subtitle?.requiredWord??"",color: Colors.red,): const SizedBox.shrink(), const SizedBox(height: 4,), AutoCompletePartsField( onPick: (part){ - _serviceReport.parts.add(part); + _serviceReport?.parts?.add(part); }, ), ], @@ -571,19 +578,19 @@ class _CreateServiceReportState extends State with TickerPr SizedBox(height: 8*AppStyle.getScaleFactor(context),), Row( children: [ - Expanded(flex:3,child: Text(_subtitle.number)), - Expanded(flex: 1,child: Text(_subtitle.quantity)), + Expanded(flex:3,child: Text(_subtitle?.number??"")), + Expanded(flex: 1,child: Text(_subtitle?.quantity??"")), ], ), Column( children: List.generate( - _serviceReport.parts.length, + _serviceReport!.parts!.length, (index) { - Part _part = _serviceReport.parts[index]; + Part _part = _serviceReport!.parts![index]; return PartItem( part: _part, onDelete: (part){ - _serviceReport.parts.remove(part); + _serviceReport!.parts!.remove(part); setState(() {}); }, ); @@ -599,30 +606,30 @@ class _CreateServiceReportState extends State with TickerPr Padding( padding: const EdgeInsets.all(16.0), child: AButton( - text: _subtitle.submit, + text: _subtitle?.submit??"", onPressed: () async { _validate = true; - if(!_formKey.currentState.validate()){ + if(!(_formKey.currentState?.validate()??false)){ setState(() {}); return; } - if(!_serviceReport.validate()) return; - _formKey.currentState.save(); + if(!(_serviceReport?.validate()??false)) return; + _formKey.currentState?.save(); _isLoading =true; setState(() {}); - int status = await _serviceRequestsProvider.createServiceReport( - user: _userProvider.user, - host: _settingProvider.host, - report: _serviceReport, - request: widget.request + int? status = await _serviceRequestsProvider?.createServiceReport( + user: _userProvider!.user!, + host: _settingProvider?.host??"", + report: _serviceReport!, + request: widget.request! ); _isLoading =false; setState(() {}); - if(status >= 200 && status < 300){ + if(status != null && status >= 200 && status < 300){ Fluttertoast.showToast( - msg: _subtitle.requestCompleteSuccessfully, + msg: _subtitle?.requestCompleteSuccessfully??"", ); Navigator.of(context).pop(); Navigator.of(context).pop(); diff --git a/old_lib/views/pages/user/requests/report/edit_service_report.dart b/old_lib/views/pages/user/requests/report/edit_service_report.dart index 0b268fc7..d4254887 100644 --- a/old_lib/views/pages/user/requests/report/edit_service_report.dart +++ b/old_lib/views/pages/user/requests/report/edit_service_report.dart @@ -5,42 +5,44 @@ import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/http_status_manger/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/status_drop_down/report/service_report_last_calls_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/controllers/validator/validator.dart'; -import 'package:test_sa/models/part.dart'; -import 'package:test_sa/models/service_report.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/colors.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/app_text_form_field.dart'; -import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_button.dart'; -import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; -import 'package:test_sa/views/widgets/equipment/auto_complete_devices_field.dart'; -import 'package:test_sa/views/widgets/images/mini_one_image_picker.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:test_sa/views/widgets/parts/auto_complete_parts_field.dart'; -import 'package:test_sa/views/widgets/parts/part_item.dart'; -import 'package:test_sa/views/widgets/speech_to_text/speech_to_text.dart'; -import 'package:test_sa/views/widgets/status/report/service_report_last_call.dart'; -import 'package:test_sa/views/widgets/status/report/service_report_reasons.dart'; -import 'package:test_sa/views/widgets/status/report/service_report_status.dart'; -import 'package:test_sa/views/widgets/status/report/service_report_type.dart'; -import 'package:test_sa/views/widgets/status/report/service_status.dart'; -import 'package:test_sa/views/widgets/timer/app_timer.dart'; -import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; + +import '../../../../../controllers/http_status_manger/http_status_manger.dart'; +import '../../../../../controllers/localization/localization.dart'; +import '../../../../../controllers/providers/api/service_requests_provider.dart'; +import '../../../../../controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart'; +import '../../../../../controllers/providers/api/user_provider.dart'; +import '../../../../../controllers/providers/settings/setting_provider.dart'; +import '../../../../../controllers/validator/validator.dart'; +import '../../../../../models/part.dart'; +import '../../../../../models/service_report.dart'; +import '../../../../../models/service_request/service_request.dart'; +import '../../../../../models/subtitle.dart'; +import '../../../../app_style/colors.dart'; +import '../../../../app_style/sizing.dart'; +import '../../../../widgets/app_text_form_field.dart'; +import '../../../../widgets/buttons/app_back_button.dart'; +import '../../../../widgets/buttons/app_button.dart'; +import '../../../../widgets/date_and_time/date_picker.dart'; +import '../../../../widgets/equipment/auto_complete_devices_field.dart'; +import '../../../../widgets/images/mini_one_image_picker.dart'; +import '../../../../widgets/loaders/loading_manager.dart'; +import '../../../../widgets/parts/auto_complete_parts_field.dart'; +import '../../../../widgets/parts/part_item.dart'; +import '../../../../widgets/speech_to_text/speech_to_text.dart'; +import '../../../../widgets/status/report/service_report_last_call.dart'; +import '../../../../widgets/status/report/service_report_reasons.dart'; +import '../../../../widgets/status/report/service_report_status.dart'; +import '../../../../widgets/status/report/service_report_type.dart'; +import '../../../../widgets/status/report/service_status.dart'; +import '../../../../widgets/timer/app_timer.dart'; +import '../../../../widgets/titles/app_sub_title.dart'; + class EditServiceReport extends StatefulWidget { static final String id = "/edit-service-report"; final ServiceRequest request ; final ServiceReport report; - const EditServiceReport({Key key, this.request, this.report}) : super(key: key); + const EditServiceReport({Key? key, required this.request, required this.report}) : super(key: key); @override _EditServiceReportState createState() => _EditServiceReportState(); } @@ -48,16 +50,16 @@ class EditServiceReport extends StatefulWidget { class _EditServiceReportState extends State with TickerProviderStateMixin{ - UserProvider _userProvider; - SettingProvider _settingProvider; - ServiceRequestsProvider _serviceRequestsProvider; + late UserProvider _userProvider; + late SettingProvider _settingProvider; + late ServiceRequestsProvider _serviceRequestsProvider; bool _validate = false; - ServiceReport _serviceReport; + late ServiceReport _serviceReport; bool _isLoading = false; - Subtitle _subtitle; - File _image; + late Subtitle _subtitle; + late File _image; final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); TextEditingController _faultController = TextEditingController(); @@ -80,7 +82,7 @@ class _EditServiceReportState extends State with TickerProvid _userProvider = Provider.of(context); _settingProvider = Provider.of(context); _serviceRequestsProvider = Provider.of(context); - _subtitle = AppLocalization.of(context).subtitle; + _subtitle = AppLocalization.of(context)!.subtitle!; return Scaffold( key: _scaffoldKey, body: SafeArea( @@ -102,7 +104,7 @@ class _EditServiceReportState extends State with TickerProvid padding: const EdgeInsets.all(8.0), child: Text( _subtitle.editServiceReport, - style: Theme.of(context).textTheme.headline5.copyWith( + style: Theme.of(context).textTheme.headline5?.copyWith( color: AColors.cyan, fontSize: 28, fontWeight: FontWeight.bold @@ -117,7 +119,7 @@ class _EditServiceReportState extends State with TickerProvid color: AColors.grey, borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), boxShadow: [ - const BoxShadow( + BoxShadow( color: AColors.grey, offset: Offset(0,-1), ) @@ -135,7 +137,7 @@ class _EditServiceReportState extends State with TickerProvid ASubTitle("${_subtitle.deviceSN}: ${widget.request.deviceSerialNumber}",font: 14,), Text( "${_subtitle.customer}: ${widget.request.hospitalName}", - style: Theme.of(context).textTheme.subtitle1.copyWith( + style: Theme.of(context).textTheme.subtitle1?.copyWith( fontWeight: FontWeight.bold, fontSize: 12, ), @@ -212,9 +214,9 @@ class _EditServiceReportState extends State with TickerProvid const SizedBox.shrink(), AutoCompleteDeviceField( hospitalId: widget.request.hospitalId, - initialValue: _serviceReport.device, + initialValue: _serviceReport.device!, onPick: (id){ - _serviceReport.device.id = id; + _serviceReport.device?.id = id; }, ), const SizedBox(height: 8,), @@ -303,8 +305,8 @@ class _EditServiceReportState extends State with TickerProvid textAlign: TextAlign.center, style: Theme.of(context).textTheme.subtitle1, validator: (value) => - Validator.hasValue(value) - ? null : _subtitle.requiredWord, + Validator.hasValue(value!) + ? '' : _subtitle.requiredWord, textInputType: TextInputType.number, onSaved: (value){ _serviceReport.invoiceNumber = value; @@ -325,8 +327,8 @@ class _EditServiceReportState extends State with TickerProvid textAlign: TextAlign.center, style: Theme.of(context).textTheme.subtitle1, validator: (value) => - Validator.hasValue(value) - ? null : _subtitle.requiredWord, + Validator.hasValue(value!) + ? '' : _subtitle.requiredWord, textInputType: TextInputType.text, onSaved: (value){ _serviceReport.invoiceCode = value; @@ -360,8 +362,8 @@ class _EditServiceReportState extends State with TickerProvid controller: _faultController, style: Theme.of(context).textTheme.subtitle1, validator: (value) => - Validator.hasValue(value) - ? null : _subtitle.requiredWord, + Validator.hasValue(value!) + ? '' : _subtitle.requiredWord, textInputType: TextInputType.multiline, onSaved: (value){ _serviceReport.faultDescription = value; @@ -389,8 +391,8 @@ class _EditServiceReportState extends State with TickerProvid controller: _workPreformedController, style: Theme.of(context).textTheme.subtitle1, validator: (value) => - Validator.hasValue(value) - ? null : _subtitle.requiredWord, + Validator.hasValue(value!) + ? '' : _subtitle.requiredWord, textInputType: TextInputType.multiline, onSaved: (value){ _serviceReport.workPreformed = value; @@ -482,8 +484,8 @@ class _EditServiceReportState extends State with TickerProvid hintText: "i.e 3, 3.5, 4", style: Theme.of(context).textTheme.subtitle1, validator: (value) => - Validator.isNumeric(value) - ? null : _subtitle.requiredWord, + Validator.isNumeric(value!) + ? '' : _subtitle.requiredWord, textInputType: TextInputType.number, onSaved: (value){ _serviceReport.travelingHours = value; @@ -510,8 +512,8 @@ class _EditServiceReportState extends State with TickerProvid hintText: "i.e 3, 3.5, 4", style: Theme.of(context).textTheme.subtitle1, validator: (value) => - Validator.isNumeric(value) - ? null : _subtitle.requiredWord, + Validator.isNumeric(value!) + ? '' : _subtitle.requiredWord, textInputType: TextInputType.number, onSaved: (value){ _serviceReport.operatingHours = value; @@ -557,7 +559,7 @@ class _EditServiceReportState extends State with TickerProvid const SizedBox(height: 4,), AutoCompletePartsField( onPick: (part){ - _serviceReport.parts.add(part); + _serviceReport.parts?.add(part); setState(() {}); }, ), @@ -576,13 +578,13 @@ class _EditServiceReportState extends State with TickerProvid ), Column( children: List.generate( - _serviceReport.parts.length, + _serviceReport.parts!.length, (index) { - Part _part = _serviceReport.parts[index]; + Part _part = _serviceReport.parts![index]; return PartItem( part: _part, onDelete: (part){ - _serviceReport.parts.remove(part); + _serviceReport.parts?.remove(part); setState(() {}); }, ); @@ -601,7 +603,7 @@ class _EditServiceReportState extends State with TickerProvid text: _subtitle.update, onPressed: () async { _validate = true; - if(!_formKey.currentState.validate()){ + if(!(_formKey.currentState?.validate()??false)){ setState(() {}); return; } @@ -609,14 +611,14 @@ class _EditServiceReportState extends State with TickerProvid setState(() {}); return; } - _formKey.currentState.save(); + _formKey.currentState?.save(); _isLoading =true; setState(() {}); int status = await _serviceRequestsProvider.updateServiceReport( - user: _userProvider.user, - host: _settingProvider.host, + user: _userProvider.user!, + host: _settingProvider.host??"", report: _serviceReport, request: widget.request ); diff --git a/old_lib/views/pages/user/requests/report/future_service_report.dart b/old_lib/views/pages/user/requests/report/future_service_report.dart index 5ee16ea2..657ffac0 100644 --- a/old_lib/views/pages/user/requests/report/future_service_report.dart +++ b/old_lib/views/pages/user/requests/report/future_service_report.dart @@ -1,20 +1,20 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.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/models/service_report.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/widgets/loaders/app_loading.dart'; -import 'package:test_sa/views/widgets/loaders/failed_loading.dart'; +import '../../../../../controllers/localization/localization.dart'; +import '../../../../../controllers/providers/api/service_requests_provider.dart'; +import '../../../../../controllers/providers/api/user_provider.dart'; +import '../../../../../controllers/providers/settings/setting_provider.dart'; +import '../../../../../models/service_report.dart'; +import '../../../../../models/service_request/service_request.dart'; +import '../../../../../models/subtitle.dart'; +import '../../../../widgets/loaders/app_loading.dart'; +import '../../../../widgets/loaders/failed_loading.dart'; import 'edit_service_report.dart'; class FutureServiceReport extends StatefulWidget { final ServiceRequest request; - const FutureServiceReport({Key key, this.request}) : super(key: key); + const FutureServiceReport({Key? key, required this.request}) : super(key: key); @override _FutureServiceReportState createState() => _FutureServiceReportState(); @@ -22,19 +22,19 @@ class FutureServiceReport extends StatefulWidget { class _FutureServiceReportState extends State { - UserProvider _userProvider; - SettingProvider _settingProvider; + late UserProvider _userProvider; + late SettingProvider _settingProvider; @override Widget build(BuildContext context) { _userProvider = Provider.of(context); _settingProvider = Provider.of(context); - Subtitle _subtitle = AppLocalization.of(context).subtitle; + Subtitle _subtitle = AppLocalization.of(context)!.subtitle!; return Scaffold( body: FutureBuilder( future: ServiceRequestsProvider().getSingleServiceReport( - reportId: widget.request.reportID, - user: _userProvider.user, - host: _settingProvider.host, + reportId: widget.request.reportID??"", + user: _userProvider.user!, + host: _settingProvider.host??"", subtitle: _subtitle ), builder: (BuildContext context, AsyncSnapshot snapshot){ @@ -45,7 +45,7 @@ class _FutureServiceReportState extends State { ); if(snapshot.hasData){ return EditServiceReport( - report: snapshot.data, + report: snapshot.data!, request: widget.request, ); } diff --git a/old_lib/views/pages/user/requests/request_details.dart b/old_lib/views/pages/user/requests/request_details.dart index 2ada571e..060b1ea3 100644 --- a/old_lib/views/pages/user/requests/request_details.dart +++ b/old_lib/views/pages/user/requests/request_details.dart @@ -2,39 +2,40 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/http_status_manger/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/models/enums/user_types.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/colors.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/pages/user/requests/report/create_service_report.dart'; -import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; -import 'package:test_sa/views/widgets/dialogs/dialog.dart'; -import 'package:test_sa/views/widgets/images/images_list.dart'; -import 'package:test_sa/views/widgets/loaders/image_loader.dart'; -import 'package:test_sa/views/widgets/requests/info_row.dart'; -import 'package:test_sa/views/widgets/requests/request_status.dart'; -import 'package:test_sa/views/widgets/requests/service_request_update_dialog.dart'; -import 'package:test_sa/views/widgets/sound/sound_player.dart'; -import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; + +import '../../../../controllers/http_status_manger/http_status_manger.dart'; +import '../../../../controllers/localization/localization.dart'; +import '../../../../controllers/providers/api/service_requests_provider.dart'; +import '../../../../controllers/providers/api/user_provider.dart'; +import '../../../../controllers/providers/settings/setting_provider.dart'; +import '../../../../models/enums/user_types.dart'; +import '../../../../models/service_request/service_request.dart'; +import '../../../../models/subtitle.dart'; +import '../../../app_style/colors.dart'; +import '../../../app_style/sizing.dart'; +import '../../../widgets/buttons/app_back_button.dart'; +import '../../../widgets/buttons/app_button.dart'; +import '../../../widgets/buttons/app_icon_button.dart'; +import '../../../widgets/dialogs/dialog.dart'; +import '../../../widgets/images/images_list.dart'; +import '../../../widgets/loaders/image_loader.dart'; +import '../../../widgets/requests/info_row.dart'; +import '../../../widgets/requests/request_status.dart'; +import '../../../widgets/requests/service_request_update_dialog.dart'; +import '../../../widgets/sound/sound_player.dart'; +import '../../../widgets/titles/app_sub_title.dart'; import '../report_issues_page.dart'; +import 'report/create_service_report.dart'; import 'report/future_service_report.dart'; class RequestDetailsPage extends StatelessWidget { static final String id = "/call-details"; final ServiceRequest serviceRequest; - const RequestDetailsPage({Key key, this.serviceRequest}) : super(key: key); + const RequestDetailsPage({Key? key, required this.serviceRequest}) : super(key: key); @override Widget build(BuildContext context) { - Subtitle _subtitle = AppLocalization.of(context).subtitle; + Subtitle _subtitle = AppLocalization.of(context)!.subtitle!; UserProvider _userProvider = Provider.of(context); SettingProvider _settingProvider = Provider.of(context); ServiceRequestsProvider _serviceRequestsProvider = Provider.of(context); @@ -54,7 +55,7 @@ class RequestDetailsPage extends StatelessWidget { child: Center( child: Text( _subtitle.details, - style: Theme.of(context).textTheme.headline6.copyWith( + style: Theme.of(context).textTheme.headline6?.copyWith( color: AColors.white, fontStyle: FontStyle.italic ), @@ -62,7 +63,7 @@ class RequestDetailsPage extends StatelessWidget { ), ), Visibility( - visible: _userProvider.user.type == UsersTypes.normal_user, + visible: _userProvider.user?.type == UsersTypes.normal_user, replacement: AIconButton( iconData: Icons.edit, color: AColors.white, @@ -122,7 +123,7 @@ class RequestDetailsPage extends StatelessWidget { ), ), - serviceRequest.devicePhotos.isEmpty ? SizedBox.shrink(): + (serviceRequest.devicePhotos?.isEmpty??false) ? SizedBox.shrink(): Column( children: [ SizedBox(height: 8,), @@ -135,7 +136,7 @@ class RequestDetailsPage extends StatelessWidget { body: InteractiveViewer( child: Center( child: ImageLoader( - url: serviceRequest.devicePhotos.first, + url: serviceRequest.devicePhotos?.first, boxFit: BoxFit.contain, ), ), @@ -148,7 +149,7 @@ class RequestDetailsPage extends StatelessWidget { height: 140 * AppStyle.getScaleFactor(context), width: MediaQuery.of(context).size.width, child: ImageLoader( - url: serviceRequest.devicePhotos.first, + url: serviceRequest.devicePhotos?.first, boxFit: BoxFit.cover, ), ), @@ -157,7 +158,7 @@ class RequestDetailsPage extends StatelessWidget { SizedBox( height: 60* AppStyle.getScaleFactor(context), child: ImagesList( - images: serviceRequest.devicePhotos, + images: serviceRequest.devicePhotos!, ), ), ], @@ -208,7 +209,7 @@ class RequestDetailsPage extends StatelessWidget { serviceRequest.nextVisitDate == null ? SizedBox.shrink() : RequestInfoRow( title: _subtitle.nextVisitDate, - info: DateFormat('EE dd/MM/yyyy').format(serviceRequest.nextVisitDate), + info: DateFormat('EE dd/MM/yyyy').format(serviceRequest.nextVisitDate!), ), Row( children: [ @@ -220,7 +221,7 @@ class RequestDetailsPage extends StatelessWidget { ), ), StatusLabel(label: serviceRequest.statusLabel, - color: AColors.getRequestStatusColor(serviceRequest.statusValue) + color: AColors.getRequestStatusColor(serviceRequest.statusValue!) ), ], ), @@ -270,8 +271,8 @@ class RequestDetailsPage extends StatelessWidget { } ); int status = await _serviceRequestsProvider.createDuplicatedReport( - host: _settingProvider.host, - user: _userProvider.user, + host: _settingProvider.host??"", + user: _userProvider.user!, request: serviceRequest ); Navigator.of(context).pop(); @@ -289,7 +290,7 @@ class RequestDetailsPage extends StatelessWidget { ) ], ), - serviceRequest.viewReport ? + serviceRequest.viewReport??false ? ListView( padding: EdgeInsets.symmetric(horizontal: 16), children: [ @@ -309,7 +310,7 @@ class RequestDetailsPage extends StatelessWidget { title: _subtitle.jobSheetNumber, info: serviceRequest.jobSheetNumber, ), - _userProvider.user.type == UsersTypes.engineer ? + _userProvider.user?.type == UsersTypes.engineer ? Padding( padding: EdgeInsets.all(32), child: AButton( @@ -327,7 +328,7 @@ class RequestDetailsPage extends StatelessWidget { ): SizedBox.shrink(), ], ): - _userProvider.user.type == UsersTypes.engineer ? + _userProvider.user?.type == UsersTypes.engineer ? Center( child: Padding( padding: EdgeInsets.all(32), diff --git a/old_lib/views/pages/user/requests/requests_page.dart b/old_lib/views/pages/user/requests/requests_page.dart index e535d03b..cc1bb294 100644 --- a/old_lib/views/pages/user/requests/requests_page.dart +++ b/old_lib/views/pages/user/requests/requests_page.dart @@ -1,17 +1,19 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.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/models/service_request/service_request_search.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:test_sa/views/widgets/requests/service_request_list.dart'; -import 'package:test_sa/views/widgets/search/service_request_search_bar.dart'; + +import '../../../../controllers/localization/localization.dart'; +import '../../../../controllers/providers/api/service_requests_provider.dart'; +import '../../../../controllers/providers/api/user_provider.dart'; +import '../../../../controllers/providers/settings/setting_provider.dart'; +import '../../../../models/service_request/service_request_search.dart'; +import '../../../../models/subtitle.dart'; +import '../../../app_style/colors.dart'; +import '../../../widgets/buttons/app_back_button.dart'; +import '../../../widgets/buttons/app_icon_button.dart'; +import '../../../widgets/loaders/loading_manager.dart'; +import '../../../widgets/requests/service_request_list.dart'; +import '../../../widgets/search/service_request_search_bar.dart'; + class ServiceRequestsPage extends StatefulWidget { static final String id = "/service-requests"; @override @@ -20,9 +22,9 @@ class ServiceRequestsPage extends StatefulWidget { class _ServiceRequestsPageState extends State with TickerProviderStateMixin{ - ServiceRequestsProvider _serviceRequestsProvider; - UserProvider _userProvider; - SettingProvider _settingProvider; + late ServiceRequestsProvider _serviceRequestsProvider; + late UserProvider _userProvider; + late SettingProvider _settingProvider; bool _expandedSearch = false; bool _firstTime = true; @override @@ -30,7 +32,7 @@ class _ServiceRequestsPageState extends State _serviceRequestsProvider = Provider.of(context); _userProvider = Provider.of(context); _settingProvider = Provider.of(context); - Subtitle _subtitle = AppLocalization.of(context).subtitle; + Subtitle _subtitle = AppLocalization.of(context)!.subtitle!; if(_firstTime){ _serviceRequestsProvider.reset(); _firstTime = false; @@ -45,9 +47,9 @@ class _ServiceRequestsPageState extends State onRefresh: () async { _serviceRequestsProvider.reset(); await _serviceRequestsProvider.getRequests( - user: _userProvider.user, - host: _settingProvider.host, - hospitalId: _userProvider.user.hospital.id, + user: _userProvider.user!, + host: _settingProvider.host??"", + hospitalId: _userProvider.user!.hospital!.id, ); }, child: Stack( @@ -66,10 +68,9 @@ class _ServiceRequestsPageState extends State child: Center( child: Text( _subtitle.serviceRequests, - style: Theme.of(context).textTheme.headline6.copyWith( + style: Theme.of(context).textTheme.headline6?.copyWith( color: AColors.white, - fontStyle: FontStyle.italic - ), + fontStyle: FontStyle.italic ), ), ), ), @@ -80,12 +81,12 @@ class _ServiceRequestsPageState extends State buttonSize: 42, backgroundColor: AColors.white, onPressed: () async { - ServiceRequestSearch _temp = await showModalBottomSheet( + ServiceRequestSearch? _temp = await showModalBottomSheet( context: context, isScrollControlled: true, builder: (context){ return ServiceRequestsSearchDialog( - initialSearchValue: _serviceRequestsProvider.search, + initialSearchValue: _serviceRequestsProvider.search!, ); }); if(_temp != null){ @@ -104,15 +105,15 @@ class _ServiceRequestsPageState extends State ), Expanded( child: ServiceRequestsList( - nextPage: _serviceRequestsProvider.nextPage, + nextPage: _serviceRequestsProvider.nextPage!, onLazyLoad: () async { await _serviceRequestsProvider.getRequests( - user: _userProvider.user, - host: _settingProvider.host, - hospitalId: _userProvider.user.hospital.id, + user: _userProvider.user!, + host: _settingProvider.host??"", + hospitalId: _userProvider.user!.hospital!.id, ); }, - requests: _serviceRequestsProvider.serviceRequests, + requests: _serviceRequestsProvider.serviceRequests!, ), ), ], diff --git a/old_lib/views/pages/user/visits/pantry/edit_pentry.dart b/old_lib/views/pages/user/visits/pantry/edit_pentry.dart index 7c9201b1..b47a889f 100644 --- a/old_lib/views/pages/user/visits/pantry/edit_pentry.dart +++ b/old_lib/views/pages/user/visits/pantry/edit_pentry.dart @@ -1,25 +1,26 @@ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/http_status_manger/http_status_manger.dart'; -import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/controllers/providers/api/regular_visits_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/models/pantry/pentry.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/models/visits/visit.dart'; -import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:test_sa/views/widgets/pentry/pentry_calibration_tool_form.dart'; -import 'package:test_sa/views/widgets/pentry/pentry_info_form.dart'; -import 'package:test_sa/views/widgets/pentry/pentry_pm_kit_form.dart'; -import 'package:test_sa/views/widgets/pentry/pentry_ppm_check_list_form.dart'; + +import '../../../../../controllers/http_status_manger/http_status_manger.dart'; +import '../../../../../controllers/localization/localization.dart'; +import '../../../../../controllers/providers/api/regular_visits_provider.dart'; +import '../../../../../controllers/providers/api/user_provider.dart'; +import '../../../../../controllers/providers/settings/setting_provider.dart'; +import '../../../../../models/pantry/pentry.dart'; +import '../../../../../models/subtitle.dart'; +import '../../../../../models/visits/visit.dart'; +import '../../../../widgets/buttons/app_small_button.dart'; +import '../../../../widgets/loaders/loading_manager.dart'; +import '../../../../widgets/pentry/pentry_calibration_tool_form.dart'; +import '../../../../widgets/pentry/pentry_info_form.dart'; +import '../../../../widgets/pentry/pentry_pm_kit_form.dart'; +import '../../../../widgets/pentry/pentry_ppm_check_list_form.dart'; class EditPentry extends StatefulWidget { - final Pentry pentry; - final Visit visit; - const EditPentry({Key key,this.pentry, this.visit}) : super(key: key); + final Pentry? pentry; + final Visit? visit; + const EditPentry({Key? key,this.pentry, this.visit}) : super(key: key); @override State createState() => _EditPentryState(); @@ -28,14 +29,14 @@ class EditPentry extends StatefulWidget { class _EditPentryState extends State with SingleTickerProviderStateMixin{ bool _isLoading = false; bool _validate = false; - Subtitle _subtitle; - UserProvider _userProvider; - SettingProvider _settingProvider; - RegularVisitsProvider _regularVisitsProvider; - Pentry _pentry; + late Subtitle _subtitle; + late UserProvider _userProvider; + late SettingProvider _settingProvider; + late RegularVisitsProvider _regularVisitsProvider; + late Pentry _pentry; final GlobalKey _scaffoldKey = GlobalKey(); - TabController _tabController; + late TabController _tabController; _onSubmit() async { _validate = true; @@ -48,10 +49,10 @@ class _EditPentryState extends State with SingleTickerProviderStateM setState(() {}); int status = await _regularVisitsProvider.updatePentry( - user: _userProvider.user, - host: _settingProvider.host, + user: _userProvider.user!, + host: _settingProvider.host??"", pentry: _pentry, - visit: widget.visit + visit: widget.visit! ); _isLoading =false; setState(() {}); @@ -71,7 +72,7 @@ class _EditPentryState extends State with SingleTickerProviderStateM @override void initState() { - _pentry = widget.pentry; + _pentry = widget.pentry!; _tabController = TabController(length: 4, vsync: this); super.initState(); } @@ -84,7 +85,7 @@ class _EditPentryState extends State with SingleTickerProviderStateM @override Widget build(BuildContext context) { - _subtitle = AppLocalization.of(context).subtitle; + _subtitle = AppLocalization.of(context)!.subtitle!; _userProvider = Provider.of(context); _settingProvider = Provider.of(context); _regularVisitsProvider = Provider.of(context); diff --git a/old_lib/views/pages/user/visits/pantry/future_edit_pently.dart b/old_lib/views/pages/user/visits/pantry/future_edit_pently.dart index 161df3ce..0bc98c69 100644 --- a/old_lib/views/pages/user/visits/pantry/future_edit_pently.dart +++ b/old_lib/views/pages/user/visits/pantry/future_edit_pently.dart @@ -1,20 +1,22 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/controllers/providers/api/regular_visits_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/models/pantry/pentry.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/models/visits/visit.dart'; -import 'package:test_sa/views/pages/user/visits/pantry/edit_pentry.dart'; -import 'package:test_sa/views/widgets/loaders/app_loading.dart'; -import 'package:test_sa/views/widgets/loaders/failed_loading.dart'; + +import '../../../../../controllers/localization/localization.dart'; +import '../../../../../controllers/providers/api/regular_visits_provider.dart'; +import '../../../../../controllers/providers/api/user_provider.dart'; +import '../../../../../controllers/providers/settings/setting_provider.dart'; +import '../../../../../models/pantry/pentry.dart'; +import '../../../../../models/subtitle.dart'; +import '../../../../../models/visits/visit.dart'; +import '../../../../widgets/loaders/app_loading.dart'; +import '../../../../widgets/loaders/failed_loading.dart'; +import 'edit_pentry.dart'; + class FutureEditPentry extends StatefulWidget { final Visit visit; - const FutureEditPentry({Key key, this.visit}) : super(key: key); + const FutureEditPentry({Key? key, required this.visit}) : super(key: key); @override State createState() => _FutureEditPentryState(); @@ -22,22 +24,22 @@ class FutureEditPentry extends StatefulWidget { class _FutureEditPentryState extends State { - UserProvider _userProvider; - SettingProvider _settingProvider; + late UserProvider _userProvider; + late SettingProvider _settingProvider; @override Widget build(BuildContext context) { _userProvider = Provider.of(context); _settingProvider = Provider.of(context); //String requestId = ModalRoute.of(context).settings.arguments; - Subtitle subtitle = AppLocalization.of(context).subtitle; + Subtitle subtitle = AppLocalization.of(context)!.subtitle!; return Scaffold( - body: FutureBuilder( + body: FutureBuilder( future: RegularVisitsProvider().getPently( - user: _userProvider.user, - host: _settingProvider.host, - id: widget.visit.id + user: _userProvider.user!, + host: _settingProvider.host??"", + id: widget.visit.id! ), - builder: (BuildContext context, AsyncSnapshot snapshot){ + builder: (BuildContext context, AsyncSnapshot snapshot){ if(snapshot.hasError) { return FailedLoading( diff --git a/old_lib/views/pages/user/visits/preventive_maintenance_visits_page.dart b/old_lib/views/pages/user/visits/preventive_maintenance_visits_page.dart index 7c1c57c2..ab1cbd2a 100644 --- a/old_lib/views/pages/user/visits/preventive_maintenance_visits_page.dart +++ b/old_lib/views/pages/user/visits/preventive_maintenance_visits_page.dart @@ -2,22 +2,24 @@ 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/http_status_manger/http_status_manger.dart'; -import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/controllers/providers/api/preventive_maintenance_visits_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/models/subtitle.dart'; -import 'package:test_sa/models/visits/visits_group.dart'; -import 'package:test_sa/models/visits/visits_search.dart'; -import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/pages/user/visits/update_visits_group_sheet.dart'; -import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:test_sa/views/widgets/search/visits_search_bar.dart'; -import 'package:test_sa/views/widgets/visits/visits_list.dart'; + +import '../../../../controllers/http_status_manger/http_status_manger.dart'; +import '../../../../controllers/localization/localization.dart'; +import '../../../../controllers/providers/api/preventive_maintenance_visits_provider.dart'; +import '../../../../controllers/providers/api/user_provider.dart'; +import '../../../../controllers/providers/settings/setting_provider.dart'; +import '../../../../models/subtitle.dart'; +import '../../../../models/visits/visits_group.dart'; +import '../../../../models/visits/visits_search.dart'; +import '../../../app_style/colors.dart'; +import '../../../widgets/buttons/app_back_button.dart'; +import '../../../widgets/buttons/app_button.dart'; +import '../../../widgets/buttons/app_icon_button.dart'; +import '../../../widgets/loaders/loading_manager.dart'; +import '../../../widgets/search/visits_search_bar.dart'; +import '../../../widgets/visits/visits_list.dart'; +import 'update_visits_group_sheet.dart'; + class PreventiveMaintenanceVisitsPage extends StatefulWidget { static final String id = "/preventive-maintenance-visits"; @override @@ -26,17 +28,17 @@ class PreventiveMaintenanceVisitsPage extends StatefulWidget { class _PreventiveMaintenanceVisitsPageState extends State with TickerProviderStateMixin{ - PreventiveMaintenanceVisitsProvider _visitsProvider; - UserProvider _userProvider; - SettingProvider _settingProvider; - Subtitle _subtitle; + late PreventiveMaintenanceVisitsProvider _visitsProvider; + late UserProvider _userProvider; + late SettingProvider _settingProvider; + late Subtitle _subtitle; @override Widget build(BuildContext context) { _visitsProvider = Provider.of(context); _userProvider = Provider.of(context); _settingProvider = Provider.of(context); - _subtitle = AppLocalization.of(context).subtitle; + _subtitle = AppLocalization.of(context)!.subtitle!; return Scaffold( body: SafeArea( child: LoadingManager( @@ -47,8 +49,8 @@ class _PreventiveMaintenanceVisitsPageState extends State with TickerProviderStateMixin{ - RegularVisitsProvider _visitsProvider; - UserProvider _userProvider; - SettingProvider _settingProvider; + late RegularVisitsProvider _visitsProvider; + late UserProvider _userProvider; + late SettingProvider _settingProvider; bool _expandedSearch = false; - Subtitle _subtitle; + late Subtitle _subtitle; @override Widget build(BuildContext context) { _visitsProvider = Provider.of(context); _settingProvider = Provider.of(context); _userProvider = Provider.of(context); - _subtitle = AppLocalization.of(context).subtitle; + _subtitle = AppLocalization.of(context)!.subtitle!; return Scaffold( body: SafeArea( child: LoadingManager( @@ -47,8 +49,8 @@ class _RegularVisitsPageState extends State _visitsProvider.reset(); //_visitsProvider.visitsSearch = VisitsSearch(); await _visitsProvider.getVisits( - user: _userProvider.user, - host: _settingProvider.host, + user: _userProvider.user!, + host: _settingProvider.host!, ); }, child: Stack( @@ -67,7 +69,7 @@ class _RegularVisitsPageState extends State child: Center( child: Text( _subtitle.preventiveMaintenance, - style: Theme.of(context).textTheme.headline6.copyWith( + style: Theme.of(context).textTheme.headline6?.copyWith( color: AColors.white, fontStyle: FontStyle.italic ), @@ -88,11 +90,11 @@ class _RegularVisitsPageState extends State isScrollControlled: true, builder: (context){ return VisitsSearchDialog( - initialSearchValue: _visitsProvider.visitsSearch, + initialSearchValue: _visitsProvider.visitsSearch!, onSearch: (VisitsSearch ) { }, ); }); if(_temp != null){ - _visitsProvider.visitsSearch.fromSearch(_temp) ; + _visitsProvider.visitsSearch?.fromSearch(_temp) ; _visitsProvider.reset(); setState(() {}); } @@ -107,7 +109,7 @@ class _RegularVisitsPageState extends State ), ), Visibility( - visible: _visitsProvider.visitsSearch.toSearchString().isNotEmpty, + visible: _visitsProvider.visitsSearch?.toSearchString().isNotEmpty??false, child: Padding( padding: const EdgeInsets.all(8.0), child: AButton( @@ -125,8 +127,8 @@ class _RegularVisitsPageState extends State nextPage: _visitsProvider.nextPage, onLazyLoad: () async { await _visitsProvider.getVisits( - user: _userProvider.user, - host: _settingProvider.host, + user: _userProvider.user!, + host: _settingProvider.host??"", ); }, onEditGroup: (visits) async { @@ -149,8 +151,8 @@ class _RegularVisitsPageState extends State }, ); int status = await _visitsProvider.updateGroupOfVisits( - user: _userProvider.user, - host: _settingProvider.host, + user: _userProvider.user!, + host: _settingProvider.host??"", group: _group ); Navigator.of(context).pop(); @@ -172,7 +174,7 @@ class _RegularVisitsPageState extends State } } }, - visits: _visitsProvider.visits, + visits: _visitsProvider.visits!, ), ), ], diff --git a/old_lib/views/pages/user/visits/update_visits_group_sheet.dart b/old_lib/views/pages/user/visits/update_visits_group_sheet.dart index 724f4657..cfc02674 100644 --- a/old_lib/views/pages/user/visits/update_visits_group_sheet.dart +++ b/old_lib/views/pages/user/visits/update_visits_group_sheet.dart @@ -2,24 +2,26 @@ import 'dart:convert'; import 'dart:io'; import 'package:flutter/material.dart'; -import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/models/visits/visit.dart'; -import 'package:test_sa/models/visits/visits_group.dart'; -import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/widgets/app_text_form_field.dart'; -import 'package:test_sa/views/widgets/buttons/app_button.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/images/one_image_picker.dart'; -import 'package:test_sa/views/widgets/search/filter_item.dart'; -import 'package:test_sa/views/widgets/visits/visit_status.dart'; + +import '../../../../controllers/localization/localization.dart'; +import '../../../../models/lookup.dart'; +import '../../../../models/subtitle.dart'; +import '../../../../models/visits/visit.dart'; +import '../../../../models/visits/visits_group.dart'; +import '../../../app_style/colors.dart'; +import '../../../app_style/sizing.dart'; +import '../../../widgets/app_text_form_field.dart'; +import '../../../widgets/buttons/app_button.dart'; +import '../../../widgets/buttons/app_small_button.dart'; +import '../../../widgets/date_and_time/date_picker.dart'; +import '../../../widgets/images/one_image_picker.dart'; +import '../../../widgets/search/filter_item.dart'; +import '../../../widgets/visits/visit_status.dart'; + class UpdateVisitsGroupSheet extends StatefulWidget { - final List visits; - final String title; - const UpdateVisitsGroupSheet({Key key, this.visits, this.title}) : super(key: key); + final List? visits; + final String? title; + const UpdateVisitsGroupSheet({Key? key, this.visits, this.title}) : super(key: key); @override _UpdateVisitsGroupSheetState createState() => _UpdateVisitsGroupSheetState(); @@ -37,8 +39,8 @@ class _UpdateVisitsGroupSheetState extends State { Lookup(label: "Failed", id: 1), ]; VisitsGroup _group = VisitsGroup(); - File _image; - Subtitle _subtitle; + late File _image; + late Subtitle _subtitle; @override void initState() { @@ -49,7 +51,7 @@ class _UpdateVisitsGroupSheetState extends State { @override Widget build(BuildContext context) { - _subtitle = AppLocalization.of(context).subtitle; + _subtitle = AppLocalization.of(context)!.subtitle!; return Container( height: MediaQuery.of(context).size.height / 1.3, padding: EdgeInsets.symmetric( @@ -198,9 +200,9 @@ class _UpdateVisitsGroupSheetState extends State { SizedBox(height: 8 * AppStyle.getScaleFactor(context),), Expanded( child: ListView.builder( - itemCount: widget.visits.length, + itemCount: widget.visits?.length, itemBuilder: (context,index){ - Visit visit = widget.visits[index]; + Visit visit = widget.visits![index]; return Container( padding: EdgeInsets.symmetric(vertical: 8,horizontal: 8), margin: EdgeInsets.symmetric(vertical: 4), @@ -217,8 +219,8 @@ class _UpdateVisitsGroupSheetState extends State { children: [ Expanded( child: Text( - "${_subtitle.sn}: "+visit.deviceSerialNumber ?? _subtitle.noSerialNumberFound, - style: Theme.of(context).textTheme.headline6.copyWith( + "${_subtitle.sn}: ${visit.deviceSerialNumber?? _subtitle.noSerialNumberFound}" , + style: Theme.of(context).textTheme.headline6?.copyWith( color: AColors.white, fontSize: 16, fontWeight: FontWeight.bold diff --git a/old_lib/views/pages/user/visits/visit_details.dart b/old_lib/views/pages/user/visits/visit_details.dart index e191cf67..ce4a049d 100644 --- a/old_lib/views/pages/user/visits/visit_details.dart +++ b/old_lib/views/pages/user/visits/visit_details.dart @@ -1,29 +1,29 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/models/visits/visit.dart'; -import 'package:test_sa/views/app_style/colors.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; -import 'package:test_sa/views/pages/user/visits/pantry/future_edit_pently.dart'; -import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; -import 'package:test_sa/views/widgets/buttons/app_icon_button.dart'; -import 'package:test_sa/views/widgets/images/images_list.dart'; -import 'package:test_sa/views/widgets/loaders/image_loader.dart'; -import 'package:test_sa/views/widgets/requests/info_row.dart'; -import 'package:test_sa/views/widgets/visits/visit_status.dart'; +import '../../../../controllers/localization/localization.dart'; import '../../../../controllers/providers/api/regular_visits_provider.dart'; +import '../../../../models/subtitle.dart'; +import '../../../../models/visits/visit.dart'; +import '../../../app_style/colors.dart'; +import '../../../app_style/sizing.dart'; +import '../../../widgets/buttons/app_back_button.dart'; +import '../../../widgets/buttons/app_icon_button.dart'; +import '../../../widgets/images/images_list.dart'; +import '../../../widgets/loaders/image_loader.dart'; +import '../../../widgets/requests/info_row.dart'; +import '../../../widgets/visits/visit_status.dart'; +import 'pantry/future_edit_pently.dart'; class VisitDetailsPage extends StatelessWidget { static final String id = "/visit-details"; final Visit visit; - const VisitDetailsPage({Key key, this.visit}) : super(key: key); + const VisitDetailsPage({Key? key, required this.visit}) : super(key: key); @override Widget build(BuildContext context) { - Subtitle _subtitle = AppLocalization.of(context).subtitle; + Subtitle _subtitle = AppLocalization.of(context)!.subtitle!; final regularVisitsProvider = Provider.of(context); return Scaffold( @@ -40,7 +40,7 @@ class VisitDetailsPage extends StatelessWidget { child: Center( child: Text( _subtitle.visitInformation, - style: Theme.of(context).textTheme.headline6.copyWith( + style: Theme.of(context).textTheme.headline6?.copyWith( color: AColors.white, fontStyle: FontStyle.italic ), @@ -76,7 +76,7 @@ class VisitDetailsPage extends StatelessWidget { body: InteractiveViewer( child: Center( child: ImageLoader( - url: visit.images.first, + url: visit.images?.first, boxFit: BoxFit.contain, ), ), @@ -89,7 +89,7 @@ class VisitDetailsPage extends StatelessWidget { height: 140 * AppStyle.getScaleFactor(context), width: MediaQuery.of(context).size.width, child: ImageLoader( - url: visit.images.isEmpty ? " ":visit.images.first, + url: (visit.images?.isEmpty??false) ? " ":visit.images?.first, boxFit: BoxFit.cover, ), ), @@ -98,7 +98,7 @@ class VisitDetailsPage extends StatelessWidget { SizedBox( height: 60* AppStyle.getScaleFactor(context), child: ImagesList( - images: visit.images, + images: visit.images!, ), ), SizedBox(height: 8,), @@ -128,7 +128,7 @@ class VisitDetailsPage extends StatelessWidget { Expanded( child: Text( "${_subtitle.status} : ", - style: Theme.of(context).textTheme.subtitle1.copyWith( + style: Theme.of(context).textTheme.subtitle1?.copyWith( fontWeight: FontWeight.bold ), textScaleFactor: AppStyle.getScaleFactor(context), diff --git a/old_lib/views/widgets/date_and_time/from_to_date_bar.dart b/old_lib/views/widgets/date_and_time/from_to_date_bar.dart index 9d760b63..13b7ca52 100644 --- a/old_lib/views/widgets/date_and_time/from_to_date_bar.dart +++ b/old_lib/views/widgets/date_and_time/from_to_date_bar.dart @@ -1,7 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:test_sa/controllers/localization/localization.dart'; -import 'package:test_sa/models/subtitle.dart'; -import 'package:test_sa/views/app_style/sizing.dart'; import '../../../controllers/localization/localization.dart'; import '../../../models/subtitle.dart'; diff --git a/old_lib/views/widgets/gas_refill/gas_refill_update_details_item.dart b/old_lib/views/widgets/gas_refill/gas_refill_update_details_item.dart index 5843cb51..1ae5959c 100644 --- a/old_lib/views/widgets/gas_refill/gas_refill_update_details_item.dart +++ b/old_lib/views/widgets/gas_refill/gas_refill_update_details_item.dart @@ -45,11 +45,11 @@ class GasRefillUpdateDetailsItem extends StatelessWidget { textAlign: TextAlign.center, style: Theme.of(context).textTheme.subtitle1, validator: (value) => - Validator.isNumeric(value) - ? null : "allow numbers only", + Validator.isNumeric(value!) + ? "" : "allow numbers only", textInputType: TextInputType.number, onSaved: (value){ - details.deliveredQuantity = int.tryParse(value); + details.deliveredQuantity = int.tryParse(value!); }, ), ], diff --git a/old_lib/views/widgets/requests/service_request_list.dart b/old_lib/views/widgets/requests/service_request_list.dart index 9829916a..c9c677f6 100644 --- a/old_lib/views/widgets/requests/service_request_list.dart +++ b/old_lib/views/widgets/requests/service_request_list.dart @@ -29,6 +29,7 @@ class ServiceRequestsList extends StatelessWidget { return LazyLoading( nextPage: nextPage, onLazyLoad: onLazyLoad, + onLoadingEnd: () { }, child: ListView.builder( //physics: BouncingScrollPhysics(), itemCount: requests.length, diff --git a/old_lib/views/widgets/search/visits_search_bar.dart b/old_lib/views/widgets/search/visits_search_bar.dart index a58a9fd2..a9d2ce72 100644 --- a/old_lib/views/widgets/search/visits_search_bar.dart +++ b/old_lib/views/widgets/search/visits_search_bar.dart @@ -15,13 +15,13 @@ import 'filter_item.dart'; class VisitsSearchDialog extends StatefulWidget { final VisitsSearch initialSearchValue; - final bool expandedSearch; + final bool? expandedSearch; final Function(VisitsSearch) onSearch; const VisitsSearchDialog({ Key? key, required this.initialSearchValue, - required this.expandedSearch, + this.expandedSearch, required this.onSearch, }) : super(key: key); @@ -220,8 +220,8 @@ class VisitsSearchDialogState extends State height: 4.0 * AppStyle.getScaleFactor(context), ), FromToDateBar( - from: _search?.actualDateFrom, - to: _search?.actualDateTo, + from: _search!.actualDateFrom!, + to: _search!.actualDateTo!, onPickFrom: (date) { _search?.actualDateFrom = date; }, diff --git a/old_lib/views/widgets/visits/visit_item.dart b/old_lib/views/widgets/visits/visit_item.dart index fb3aaf9e..f0c7afdf 100644 --- a/old_lib/views/widgets/visits/visit_item.dart +++ b/old_lib/views/widgets/visits/visit_item.dart @@ -69,7 +69,7 @@ class VisitItem extends StatelessWidget { children: [ Expanded( child: Text( - "S.N: " + visit.deviceSerialNumber ?? "No serial number", + "S.N: ${visit.deviceSerialNumber ?? "No serial number"}", style: Theme.of(context).textTheme.titleLarge?.copyWith( color: onItemColor, fontSize: 16, diff --git a/old_lib/views/widgets/visits/visit_status.dart b/old_lib/views/widgets/visits/visit_status.dart index 65e904c7..91a42cce 100644 --- a/old_lib/views/widgets/visits/visit_status.dart +++ b/old_lib/views/widgets/visits/visit_status.dart @@ -10,7 +10,7 @@ class VisitStatusLabel extends StatelessWidget { const VisitStatusLabel({Key? key, required this.visit}) : super(key: key); Color getStatusColor() { - switch (visit.status.id) { + switch (visit.status?.id) { case 0: return AColors.green; case 1: @@ -33,9 +33,9 @@ class VisitStatusLabel extends StatelessWidget { boxShadow: const [AppStyle.boxShadow], ), child: Text( - visit.status.label == null || visit.status.label.isEmpty + visit.status?.label == null || (visit.status?.label?.isEmpty??false) ? "no status" - : visit.status.label, + : visit.status?.label??"", style: Theme.of(context).textTheme.titleSmall?.copyWith( color: getStatusColor().computeLuminance() > 0.5 ? AColors.black diff --git a/old_lib/views/widgets/visits/visits_list.dart b/old_lib/views/widgets/visits/visits_list.dart index 0e55df38..f995d93f 100644 --- a/old_lib/views/widgets/visits/visits_list.dart +++ b/old_lib/views/widgets/visits/visits_list.dart @@ -47,6 +47,7 @@ class VisitsListState extends State { LazyLoading( nextPage: widget.nextPage, onLazyLoad: widget.onLazyLoad, + onLoadingEnd: () {}, child: ListView.builder( //physics: BouncingScrollPhysics(), itemCount: widget.visits.length,