From 3f7bb03fab17b5abe434dae0c1f8bc4c8bc5fa94 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Wed, 30 Oct 2024 14:46:16 -0300 Subject: [PATCH 01/33] =?UTF-8?q?Refatora=C3=A7=C3=A3o=20do=20componente?= =?UTF-8?q?=20de=20menu;=20implementa=C3=A7=C3=A3o=20do=20submenu=20de=20p?= =?UTF-8?q?ropriedades=20com=20p=C3=A1ginas=20de=20ve=C3=ADculos,=20animai?= =?UTF-8?q?s=20de=20estima=C3=A7=C3=A3o,=20moradores=20e=20visitas=20abert?= =?UTF-8?q?as?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- analysis_options.yaml | 4 +- lib/backend/api_requests/api_calls.dart | 157 +- lib/backend/schema/enums/enums.dart | 3 +- .../menu_button_item_widget.dart | 59 +- .../menu_card_item/menu_card_item.dart | 50 +- .../menu_item/menu_item.dart | 36 +- .../menu_component/menu_component_model.dart | 423 +++-- .../menu_component/menu_component_widget.dart | 613 +------ .../menu_list_view_component_model.dart | 7 +- .../menu_list_view_component_widget.dart | 14 +- .../menu_staggered_view_component_model.dart | 6 +- .../menu_staggered_view_component_widget.dart | 20 +- lib/flutter_flow/nav/nav.dart | 315 +--- lib/main.dart | 40 +- .../about_property_model.dart | 41 + .../about_property_screen.dart | 70 + lib/pages/home_page/home_page_model.dart | 51 +- lib/pages/home_page/home_page_widget.dart | 33 +- .../people_on_the_property_page_model.dart | 5 +- .../people_on_the_property_page_widget.dart | 325 ++-- .../pets_history_screen.dart | 309 ++++ lib/pages/pets_page/pets_history_screen.dart | 284 ---- lib/pages/pets_page/pets_page_model.dart | 395 +++-- lib/pages/pets_page/pets_page_widget.dart | 1438 +++++++---------- .../reception_page/reception_page_widget.dart | 114 +- .../vehicle_model.dart | 53 + .../vehicles_on_the_property.dart | 245 +++ .../visits_on_the_property_screen.dart | 248 +++ lib/shared/helpers/sqlite_storage_helper.dart | 26 +- .../authentication_service.dart | 90 +- .../localization/localization_service.dart | 42 +- lib/shared/utils/storage_util.dart | 41 +- .../widgets/drawer_widget/drawer_widget.dart | 20 +- 33 files changed, 2631 insertions(+), 2946 deletions(-) create mode 100644 lib/pages/about_property_page/about_property_model.dart create mode 100644 lib/pages/about_property_page/about_property_screen.dart create mode 100644 lib/pages/pets_on_the_property_page/pets_history_screen.dart delete mode 100644 lib/pages/pets_page/pets_history_screen.dart create mode 100644 lib/pages/vehicles_on_the_property/vehicle_model.dart create mode 100644 lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart create mode 100644 lib/pages/visits_on_the_property/visits_on_the_property_screen.dart diff --git a/analysis_options.yaml b/analysis_options.yaml index 78e77505..4934b3e6 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -28,8 +28,10 @@ linter: # Additional information about this file can be found at # https://dart.dev/guides/language/analysis-options - analyzer: + errors: + curly_braces_in_flow_control_structures: ignore + use_build_context_synchronously: ignore exclude: - lib/custom_code/** - lib/flutter_flow/custom_functions.dart diff --git a/lib/backend/api_requests/api_calls.dart b/lib/backend/api_requests/api_calls.dart index 4665a13e..7b8c30e2 100644 --- a/lib/backend/api_requests/api_calls.dart +++ b/lib/backend/api_requests/api_calls.dart @@ -24,20 +24,17 @@ class PhpGroup { static ForgotPasswordCall forgotPasswordCall = ForgotPasswordCall(); static ChangePasswordCall changePasswordCall = ChangePasswordCall(); static GetLocalsCall getLocalsCall = GetLocalsCall(); - static PostScheduleVisitorCall postScheduleVisitorCall = - PostScheduleVisitorCall(); + static PostScheduleVisitorCall postScheduleVisitorCall = PostScheduleVisitorCall(); static PostScheduleVisitCall postScheduleVisitCall = PostScheduleVisitCall(); static GetScheduleVisitCall getScheduleVisitCall = GetScheduleVisitCall(); static GetDadosCall getDadosCall = GetDadosCall(); static GetVisitorByDocCall getVisitorByDocCall = GetVisitorByDocCall(); static GetFotoVisitanteCall getFotoVisitanteCall = GetFotoVisitanteCall(); - static PostProvVisitSchedulingCall postProvVisitSchedulingCall = - PostProvVisitSchedulingCall(); + static PostProvVisitSchedulingCall postProvVisitSchedulingCall = PostProvVisitSchedulingCall(); static GetVisitsCall getVisitsCall = GetVisitsCall(); static DeleteVisitCall deleteVisitCall = DeleteVisitCall(); static GetPessoasLocalCall getPessoasLocalCall = GetPessoasLocalCall(); - static RespondeSolicitacaoCall respondeSolicitacaoCall = - RespondeSolicitacaoCall(); + static RespondeSolicitacaoCall respondeSolicitacaoCall = RespondeSolicitacaoCall(); static GetAccessCall getAccessCall = GetAccessCall(); static GetLiberationsCall getLiberationsCall = GetLiberationsCall(); static GetMessagesCall getMessagesCall = GetMessagesCall(); @@ -54,6 +51,103 @@ class PhpGroup { static GetPets getPets = GetPets(); static GetPetPhoto getPetPhoto = GetPetPhoto(); static UnregisterDevice unregisterDevice = UnregisterDevice(); + static GetVehiclesByProperty getVehiclesByProperty = GetVehiclesByProperty(); + static GetResidentsByProperty getResidentsByProperty = GetResidentsByProperty(); + static GetOpenedVisits getOpenedVisits = GetOpenedVisits(); +} + +class GetOpenedVisits { + Future call(final String page) async { + final String baseUrl = PhpGroup.getBaseUrl(); + final String devUUID = StorageUtil().devUUID; + final String userUUID = StorageUtil().userUUID; + final String cliID = StorageUtil().cliUUID; + const String atividade = 'getOpenedVisits'; + const String pageSize = '10'; + return ApiManager.instance.makeApiCall( + callName: 'getOpenedVisits', + apiUrl: '$baseUrl/processRequest.php', + callType: ApiCallType.POST, + headers: {'Content-Type': 'application/x-www-form-urlencoded'}, + params: { + 'devUUID': devUUID, + 'userUUID': userUUID, + 'cliID': cliID, + 'atividade': atividade, + 'page': page, + 'pageSize': pageSize, + }, + bodyType: BodyType.X_WWW_FORM_URL_ENCODED, + returnBody: true, + encodeBodyUtf8: false, + decodeUtf8: false, + cache: false, + isStreamingApi: false, + alwaysAllowBody: false, + ); + } +} + +class GetResidentsByProperty { + Future call(final String page) async { + final String baseUrl = PhpGroup.getBaseUrl(); + final String devUUID = StorageUtil().devUUID; + final String userUUID = StorageUtil().userUUID; + final String cliID = StorageUtil().cliUUID; + const String atividade = 'getResidentsByProperty'; + const String pageSize = '10'; + return ApiManager.instance.makeApiCall( + callName: 'getResidentsByProperty', + apiUrl: '$baseUrl/processRequest.php', + callType: ApiCallType.POST, + headers: {'Content-Type': 'application/x-www-form-urlencoded'}, + params: { + 'devUUID': devUUID, + 'userUUID': userUUID, + 'cliID': cliID, + 'atividade': atividade, + 'page': page, + 'pageSize': pageSize, + }, + bodyType: BodyType.X_WWW_FORM_URL_ENCODED, + returnBody: true, + encodeBodyUtf8: false, + decodeUtf8: false, + cache: false, + alwaysAllowBody: false, + ); + } +} + +class GetVehiclesByProperty { + Future call(final String page) async { + final String baseUrl = PhpGroup.getBaseUrl(); + final String devUUID = StorageUtil().devUUID; + final String userUUID = StorageUtil().userUUID; + final String cliID = StorageUtil().cliUUID; + const String atividade = 'getVehiclesByProperty'; + const String pageSize = '10'; + return ApiManager.instance.makeApiCall( + callName: 'getVehiclesByProperty', + apiUrl: '$baseUrl/processRequest.php', + callType: ApiCallType.POST, + headers: {'Content-Type': 'application/x-www-form-urlencoded'}, + params: { + 'devUUID': devUUID, + 'userUUID': userUUID, + 'cliID': cliID, + 'atividade': atividade, + 'page': page, + 'pageSize': pageSize, + }, + bodyType: BodyType.X_WWW_FORM_URL_ENCODED, + returnBody: true, + encodeBodyUtf8: false, + decodeUtf8: false, + cache: false, + alwaysAllowBody: false, + ); + } } class UnregisterDevice { @@ -155,9 +249,7 @@ class UpdatePet { 'species': species, 'breed': breed, if (color != '') 'color': color, - if (birthdayDate != '') - 'birthdayDate': - ValidatorUtil.toISO8601USA('dd/MM/yyyy', birthdayDate!), + if (birthdayDate != '') 'birthdayDate': ValidatorUtil.toISO8601USA('dd/MM/yyyy', birthdayDate!), 'gender': gender, 'size': size, if (notes != '') 'notes': notes, @@ -174,7 +266,10 @@ class UpdatePet { } class GetPets { - Future call({final int? page, final int? pageSize,}) async { + Future call({ + final int? page, + final int? pageSize, + }) async { final String baseUrl = PhpGroup.getBaseUrl(); final String devUUID = StorageUtil().devUUID; @@ -276,9 +371,7 @@ class RegisterPet { 'species': species, 'breed': breed, if (color != '') 'color': color, - if (birthdayDate != '') - 'birthdayDate': - ValidatorUtil.toISO8601USA('dd/MM/yyyy', birthdayDate!), + if (birthdayDate != '') 'birthdayDate': ValidatorUtil.toISO8601USA('dd/MM/yyyy', birthdayDate!), 'gender': gender, 'size': size, if (notes != '') 'notes': notes, @@ -652,7 +745,6 @@ class RegisterCall { } } - class ChangePasswordCall { Future call({ required final String email, @@ -696,7 +788,6 @@ class ForgotPasswordCall { }) async { final String baseUrl = PhpGroup.getBaseUrl(); - return ApiManager.instance.makeApiCall( callName: 'forgotPassword', apiUrl: '$baseUrl/iforgot.php', @@ -1181,8 +1272,7 @@ class GetDadosCall { response, r'''$.error_msg''', )); - String? visitedDesNomeStr(dynamic response) => - castToType(getJsonField( + String? visitedDesNomeStr(dynamic response) => castToType(getJsonField( response, r'''$.visitado.DES_NOME''', )); @@ -1190,33 +1280,27 @@ class GetDadosCall { response, r'''$.visitado.VDO_ID''', )); - String? visitedVDOTNomeStr(dynamic response) => - castToType(getJsonField( + String? visitedVDOTNomeStr(dynamic response) => castToType(getJsonField( response, r'''$.visitado.VDO_NOME''', )); - String? visitedVDOTipoStr(dynamic response) => - castToType(getJsonField( + String? visitedVDOTipoStr(dynamic response) => castToType(getJsonField( response, r'''$.visitado.VDO_TIPO''', )); - String? visitedVDOImeiStr(dynamic response) => - castToType(getJsonField( + String? visitedVDOImeiStr(dynamic response) => castToType(getJsonField( response, r'''$.visitado.VDO_IMEI''', )); - String? visitedVDODocumentoStr(dynamic response) => - castToType(getJsonField( + String? visitedVDODocumentoStr(dynamic response) => castToType(getJsonField( response, r'''$.visitado.VDO_DOCUMENTO''', )); - String? visitedVDOEmailStr(dynamic response) => - castToType(getJsonField( + String? visitedVDOEmailStr(dynamic response) => castToType(getJsonField( response, r'''$.visitado.VDO_EMAIL''', )); - String? visitedVDOStatusWebStr(dynamic response) => - castToType(getJsonField( + String? visitedVDOStatusWebStr(dynamic response) => castToType(getJsonField( response, r'''$.visitado.VDO_STATUSWEB''', )); @@ -1264,8 +1348,7 @@ class GetDadosCall { response, r'''$.visitado.DES_ID''', )); - String? visitedVDoNotTerceirosStr(dynamic response) => - castToType(getJsonField( + String? visitedVDoNotTerceirosStr(dynamic response) => castToType(getJsonField( response, r'''$.visitado.VDO_NOTTERCEIROS''', )); @@ -1334,8 +1417,7 @@ class GetDadosCall { .map((x) => castToType(x)) .withoutNulls .toList(); - List? levelNACIndPermiteReentradaStrList(dynamic response) => - (getJsonField( + List? levelNACIndPermiteReentradaStrList(dynamic response) => (getJsonField( response, r'''$.niveis[:].NAC_INDPERMITEREENTRADA''', true, @@ -1353,8 +1435,7 @@ class GetDadosCall { .map((x) => castToType(x)) .withoutNulls .toList(); - List? levelNACTempoAntiCaronaStrList(dynamic response) => - (getJsonField( + List? levelNACTempoAntiCaronaStrList(dynamic response) => (getJsonField( response, r'''$.niveis[:].NAC_TEMPOANTICARONA''', true, @@ -1944,7 +2025,6 @@ class RespondeSolicitacaoCall { )); } - class GetAccessCall { Future call({ final String? pageSize, @@ -2195,6 +2275,7 @@ class GetAccessCall { .withoutNulls .toList(); } + class GetLiberationsCall { Stream call() { final String baseUrl = PhpGroup.getBaseUrl(); @@ -2384,6 +2465,7 @@ class GetLiberationsCall { .withoutNulls .toList(); } + class GetMessagesCall { Future call({ final String? pageSize, @@ -2438,8 +2520,7 @@ class ApiPagingParams { }); @override - String toString() => - 'PagingParams(nextPageNumber: $nextPageNumber, numItems: $numItems, lastResponse: $lastResponse,)'; + String toString() => 'PagingParams(nextPageNumber: $nextPageNumber, numItems: $numItems, lastResponse: $lastResponse,)'; } String _toEncodable(dynamic item) { diff --git a/lib/backend/schema/enums/enums.dart b/lib/backend/schema/enums/enums.dart index 029e9293..3013905b 100644 --- a/lib/backend/schema/enums/enums.dart +++ b/lib/backend/schema/enums/enums.dart @@ -22,8 +22,7 @@ extension FFEnumExtensions on T { } extension FFEnumListExtensions on Iterable { - T? deserialize(String? value) => - firstWhereOrNull((e) => e.serialize() == value); + T? deserialize(String? value) => firstWhereOrNull((e) => e.serialize() == value); } T? deserializeEnum(String? value) { diff --git a/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart b/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart index 44724d64..ecdd1d31 100644 --- a/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart +++ b/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart @@ -2,27 +2,24 @@ import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hub/components/molecular_components/menu_item/menu_item.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart'; -import 'package:hub/shared/utils/dialog_util.dart'; -import 'package:hub/shared/utils/storage_util.dart'; - -import '../../../shared/extensions/dialog_extensions.dart'; -import '../../../shared/services/localization/localization_service.dart'; - +import 'package:hub/shared/extensions/dialog_extensions.dart'; +import 'package:hub/shared/services/localization/localization_service.dart'; class MenuButtonWidget extends MenuEntry { const MenuButtonWidget({ super.key, - this.action, - this.title, - this.icon, - }); + required this.action, + required this.title, + required this.icon, + required super.safeSetState, + }) : super(action: action, title: title, icon: icon); @override - final Function()? action; + final Function() action; @override - final String? title; + final String title; @override - final IconData? icon; + final IconData icon; @override _MenuButtonWidgetState createState() => _MenuButtonWidgetState(); @@ -32,7 +29,6 @@ class _MenuButtonWidgetState extends State { get action => action; bool _isProcessing = false; - @override Widget build(BuildContext context) { return InkWell( @@ -40,21 +36,23 @@ class _MenuButtonWidgetState extends State { focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, - onTap: _isProcessing ? null : () async { - setState(() { - _isProcessing = true; - }); - await LocalizationService.processLocals(context).then((value) async { - if (value) { - await widget.action?.call(); - } else { - DialogUnavailable.unavailableCredentials(context); - } - }); - setState(() { - _isProcessing = false; - }); - }, + onTap: _isProcessing + ? null + : () async { + setState(() { + _isProcessing = true; + }); + await LocalizationService.processLocals(context).then((value) async { + if (value) { + await widget.action.call(); + } else { + DialogUnavailable.unavailableCredentials(context); + } + }); + setState(() { + _isProcessing = false; + }); + }, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 0), child: Container( @@ -110,8 +108,7 @@ class _MenuButtonWidgetState extends State { fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: - GoogleFonts.asMap().containsKey('Nunito'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'), ), ), ), diff --git a/lib/components/atomic_components/menu_card_item/menu_card_item.dart b/lib/components/atomic_components/menu_card_item/menu_card_item.dart index 04398e5c..0bd0b0f3 100644 --- a/lib/components/atomic_components/menu_card_item/menu_card_item.dart +++ b/lib/components/atomic_components/menu_card_item/menu_card_item.dart @@ -9,17 +9,18 @@ import '../../../shared/services/localization/localization_service.dart'; class MenuCardItem extends MenuEntry { const MenuCardItem({ super.key, - this.action, - this.title, - this.icon, - }); + required this.action, + required this.title, + required this.icon, + required super.safeSetState, + }) : super(action: action, title: title, icon: icon); @override - final Function()? action; + final Function() action; @override - final String? title; + final String title; @override - final IconData? icon; + final IconData icon; @override _MenuCardItemState createState() => _MenuCardItemState(); @@ -36,21 +37,23 @@ class _MenuCardItemState extends State { focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, - onTap: _isProcessing ? null : () async { - setState(() { - _isProcessing = true; - }); - await LocalizationService.processLocals(context).then((value) async { - if (value) { - await widget.action?.call(); - } else { - DialogUnavailable.unavailableCredentials(context); - } - }); - setState(() { - _isProcessing = false; - }); - }, + onTap: _isProcessing + ? null + : () async { + setState(() { + _isProcessing = true; + }); + await LocalizationService.processLocals(context).then((value) async { + if (value) { + await widget.action.call(); + } else { + DialogUnavailable.unavailableCredentials(context); + } + }); + setState(() { + _isProcessing = false; + }); + }, child: Card( elevation: 0, color: FlutterFlowTheme.of(context).primaryBackground, @@ -61,8 +64,7 @@ class _MenuCardItemState extends State { Align( alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 10.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 10.0, 0.0), child: Container( width: 30.0, height: 30.0, diff --git a/lib/components/molecular_components/menu_item/menu_item.dart b/lib/components/molecular_components/menu_item/menu_item.dart index ce3aac0a..fe97affd 100644 --- a/lib/components/molecular_components/menu_item/menu_item.dart +++ b/lib/components/molecular_components/menu_item/menu_item.dart @@ -1,14 +1,38 @@ import 'package:flutter/material.dart'; +enum MenuOption { + CompleteSchedule, + DeliverySchedule, + WorkersOnTheProperty, + FastPassSchedule, + QRCodeAccessInProperty, + AccessOnTheProperty, + LiberationsOnTheProperty, + MessagesOnTheProperty, + ReservationsOnTheLocal, + PackagesOnTheProperty, + VehiclesOnTheProperty, + PetsOnTheProperty, + PetsRegister, + VisitorsRegister, + VisitsOnTheProperty, + ResidentsOnTheProperty, + SettingsOnTheApp, + AboutProperty, + LogoutOnTheApp, +} + abstract class MenuEntry extends StatefulWidget { const MenuEntry({ super.key, - this.action, - this.title, - this.icon, + required this.action, + required this.title, + required this.icon, + required this.safeSetState, }); - final Function()? action; - final String? title; - final IconData? icon; + final Function() action; + final String title; + final IconData icon; + final VoidCallback safeSetState; } diff --git a/lib/components/organism_components/menu_component/menu_component_model.dart b/lib/components/organism_components/menu_component/menu_component_model.dart index 7b4934f1..0d98e9f0 100644 --- a/lib/components/organism_components/menu_component/menu_component_model.dart +++ b/lib/components/organism_components/menu_component/menu_component_model.dart @@ -1,52 +1,195 @@ import 'package:flutter/material.dart'; +import 'package:hub/backend/schema/enums/enums.dart'; +import 'package:hub/components/atomic_components/menu_button_item/menu_button_item_widget.dart'; +import 'package:hub/components/atomic_components/menu_card_item/menu_card_item.dart'; +import 'package:hub/components/molecular_components/menu_item/menu_item.dart'; +import 'package:hub/components/molecular_components/option_selection_modal/option_selection_modal_widget.dart'; +import 'package:hub/components/organism_components/menu_component/menu_component_widget.dart'; +import 'package:hub/components/organism_components/menu_list_view_component/menu_list_view_component_model.dart'; import 'package:hub/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_model.dart'; +import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/shared/extensions/dialog_extensions.dart'; import 'package:hub/shared/services/authentication/authentication_service.dart'; import 'package:hub/shared/utils/storage_util.dart'; - -import '../../../shared/services/localization/localization_service.dart'; -import '/components/molecular_components/option_selection_modal/option_selection_modal_widget.dart'; -import '/components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart'; -import '/flutter_flow/flutter_flow_util.dart'; -import 'menu_component_widget.dart' show MenuComponentWidget; +import 'package:material_symbols_icons/symbols.dart'; class MenuComponentModel extends FlutterFlowModel { + final MenuView style; + final MenuItem item; + final bool expandable; + final List menuOptions; + + MenuComponentModel({required this.style, required this.item, required this.expandable, required this.menuOptions}); bool isGrid = false; late MenuListViewComponentModel menuListViewComponentModel; late MenuStaggeredViewComponentModel menuStaggeredViewComponentModel; + late VoidCallback safeSetState; + late List menuEntries; - @override void initState(BuildContext context) { - menuListViewComponentModel = - createModel(context, () => MenuListViewComponentModel()); - menuStaggeredViewComponentModel = - createModel(context, () => MenuStaggeredViewComponentModel()); + @override + void initState(BuildContext context) { + menuListViewComponentModel = createModel(context, () => MenuListViewComponentModel()); + menuStaggeredViewComponentModel = createModel(context, () => MenuStaggeredViewComponentModel()); } - @override void dispose() { + + @override + void dispose() { menuListViewComponentModel.dispose(); menuStaggeredViewComponentModel.dispose(); } - Future changeMenuStyle(BuildContext context) async { - isGrid = !isGrid; + List generateMenuEntries(BuildContext context, MenuItem item, List options) { + List entries = []; + MenuEntry? addMenuEntry(IconData icon, String enText, String ptText, Function() action) { + entries.add( + item == MenuItem.button + ? MenuButtonWidget(icon: icon, action: action, title: FFLocalizations.of(context).getVariableText(enText: enText, ptText: ptText), safeSetState: safeSetState) + : item == MenuItem.card + ? MenuCardItem(icon: icon, action: action, title: FFLocalizations.of(context).getVariableText(enText: enText, ptText: ptText), safeSetState: safeSetState) + : item == MenuItem.tile + ? MenuCardItem(icon: icon, action: action, title: FFLocalizations.of(context).getVariableText(enText: enText, ptText: ptText), safeSetState: safeSetState) + : null, + ); + return null; + } + + /// ABOUT THE VISITORS + if (options.contains(MenuOption.VisitorsRegister)) + addMenuEntry(Icons.person_add_alt_1_outlined, 'Register Visitor', 'Cadastrar Visitante', () async { + await open(context, '/registerVisitorPage'); + safeSetState; + }); + if (options.contains(MenuOption.WorkersOnTheProperty)) + addMenuEntry(Icons.engineering_outlined, 'Schedule Providers', 'Agendar Prestadores', () async { + if (StorageUtil().provisional) + await open(context, '/provisionalSchedule'); + else + DialogUnavailable.unavailableFeature(context); + safeSetState; + }); + if (options.contains(MenuOption.DeliverySchedule)) + addMenuEntry(Icons.sports_motorsports_outlined, 'Schedule Deliveries', 'Agendar Entregas', () async { + if (StorageUtil().provisional) + await open(context, '/deliverySchedule'); + else + DialogUnavailable.unavailableFeature(context); + safeSetState; + }); + if (options.contains(MenuOption.FastPassSchedule)) + addMenuEntry(Icons.attach_email_outlined, 'Invite Visitor', 'Convidar Visitante', () async { + if (StorageUtil().whatsapp) + await open(context, '/fastPassPage'); + else + DialogUnavailable.unavailableFeature(context); + safeSetState; + }); + if (options.contains(MenuOption.CompleteSchedule)) + addMenuEntry(Icons.event, 'Complete Schedule', 'Agenda Completa', () async { + await open(context, '/scheduleCompleteVisitPage'); + safeSetState; + }); + + /// ABOUT THE PROPERTY + if (options.contains(MenuOption.AboutProperty)) + addMenuEntry(Icons.home, 'About Property', 'Sobre a Propriedade', () async { + if (StorageUtil().whatsapp) + await open(context, '/aboutProperty'); + else + DialogUnavailable.unavailableFeature(context); + safeSetState; + }); + if (options.contains(MenuOption.PetsOnTheProperty)) + addMenuEntry(Icons.pets, 'My Pets', 'Meus Pets', () async { + if (StorageUtil().pets) + await open(context, '/petsOnThePropertyPage'); + else + DialogUnavailable.unavailableFeature(context); + safeSetState; + }); + if (options.contains(MenuOption.ResidentsOnTheProperty)) + addMenuEntry(Icons.groups, 'Live With Me', 'Moram Comigo', () async { + await open(context, '/peopleOnThePropertyPage'); + safeSetState; + }); + if (options.contains(MenuOption.VehiclesOnTheProperty)) + addMenuEntry(Symbols.directions_car, 'My Vehicles', 'Meus Veículos', () async { + await open(context, '/vehiclesOnThePropertyPage'); + safeSetState; + }); + if (options.contains(MenuOption.VisitsOnTheProperty)) + addMenuEntry(Symbols.perm_contact_calendar, 'Opened Visits', 'Visitas em Aberto', () async { + await open(context, '/visitsOnThePropertyPage'); + safeSetState; + }); + if (options.contains(MenuOption.PackagesOnTheProperty)) + addMenuEntry(Icons.inventory_2_outlined, 'My Orders', 'Minhas Encomendas', () async { + if (StorageUtil().whatsapp) + await open(context, '/packageOrder'); + else + DialogUnavailable.unavailableFeature(context); + safeSetState; + }); + + /// ABOUT THE RESIDENTS + if (options.contains(MenuOption.PetsRegister)) + addMenuEntry(Icons.pets, 'Pets Register', 'Cadastrar Pet', () async { + if (StorageUtil().pets) + await open(context, '/petsPage'); + else + DialogUnavailable.unavailableFeature(context); + safeSetState; + }); + if (options.contains(MenuOption.ReservationsOnTheLocal)) + addMenuEntry(Icons.event_available, 'Reservations', 'Reservas', () async { + if (StorageUtil().whatsapp) + await open(context, '/reservation'); + else + DialogUnavailable.unavailableFeature(context); + + safeSetState; + }); + if (options.contains(MenuOption.QRCodeAccessInProperty)) + addMenuEntry(Icons.qr_code, 'QRCode Access', 'QRCode de Acesso', () async { + await open(context, '/qrCodePage'); + safeSetState; + }); + if (options.contains(MenuOption.AccessOnTheProperty)) + addMenuEntry(Icons.transfer_within_a_station_outlined, 'Access History', 'Consultar Acessos', () async { + await open(context, '/acessHistoryPage'); + safeSetState; + }); + if (options.contains(MenuOption.LiberationsOnTheProperty)) + addMenuEntry(Icons.how_to_reg_outlined, 'Liberations History', 'Consultar Liberações', () async { + await open(context, '/liberationHistory'); + safeSetState; + }); + if (options.contains(MenuOption.MessagesOnTheProperty)) + addMenuEntry(Icons.chat_outlined, 'Message History', 'Consultar Mensagens', () async { + await open(context, '/messageHistoryPage'); + safeSetState; + }); + + /// ABOUT THE SYSTEM + if (options.contains(MenuOption.SettingsOnTheApp)) + addMenuEntry(Icons.settings, 'System Settings', 'Opções do Sistema', () async { + await open(context, '/preferencesSettings'); + safeSetState; + }); + if (options.contains(MenuOption.LogoutOnTheApp)) + addMenuEntry(Icons.logout, 'Logout', 'Sair', () async { + await out(context); + safeSetState; + }); + + return entries; } - Future openQRCodeScanner(BuildContext context) async { - context.push( - '/qrCodePage', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } - Future openCompleteSchedule(BuildContext context) async { + + Future open(BuildContext context, String link) async { context.push( - '/scheduleCompleteVisitPage', + link, extra: { kTransitionInfoKey: const TransitionInfo( hasTransition: true, @@ -56,57 +199,20 @@ class MenuComponentModel extends FlutterFlowModel { }, ); } - Future openDeliverySchedule(BuildContext context) async { - final bool isProvisional = StorageUtil().provisional; - if (isProvisional == true) { - context.push( - '/deliverySchedule', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } else { - DialogUnavailable.unavailableFeature(context); - } - } - Future openProvisionalSchedule(BuildContext context) async { - final isProvisional = StorageUtil().provisional; - if (isProvisional == true) { - context.push( - '/provisionalSchedule', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } else { - DialogUnavailable.unavailableFeature(context); - } + + Future out(BuildContext context) async { + final String title = FFLocalizations.of(context).getVariableText( + ptText: 'Sair', + enText: 'Logout', + ); + final String content = FFLocalizations.of(context).getVariableText( + ptText: 'Tem certeza que deseja sair?', + enText: 'Are you sure you want to logout?', + ); + showAlertDialog(context, title, content, () async => await AuthenticationService.signOut(context)); } - Future openFastPassSchedule(BuildContext context) async { - final isWpp = StorageUtil().whatsapp; - if (isWpp) { - context.push( - '/fastPassPage', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } else { - DialogUnavailable.unavailableFeature(context); - } - } + + /// LEGACY FEATURES Future showSchedules(BuildContext context) async { final routesListStr = [ 'scheduleProvisionalVisitPage', @@ -146,91 +252,7 @@ class MenuComponentModel extends FlutterFlowModel { }, ); } - Future openVisitorsRegister(BuildContext context) async { - context.push( - '/registerVisitorPage', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } - Future openPoepleOnTheProperty(BuildContext context) async { - context.push( - '/peopleOnThePropertyPage', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } - Future Logout(BuildContext context) async { - final String title = FFLocalizations.of(context).getVariableText( - ptText: 'Sair', - enText: 'Logout', - ); - final String content = FFLocalizations.of(context).getVariableText( - ptText: 'Tem certeza que deseja sair?', - enText: 'Are you sure you want to logout?', - ); - showAlertDialog( - context, - title, - content, - () async => await AuthenticationService.signOut(context)); - } - Future openPreferencesSettings(BuildContext context) async { - context.push( - '/preferencesSettings', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } - Future openMyOrders(BuildContext context) async { - final isWpp = StorageUtil().whatsapp; - if (isWpp) { - context.push( - '/packageOrder', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } else { - DialogUnavailable.unavailableFeature(context); - } - } - Future openReservations(BuildContext context) async { - final isWpp = StorageUtil().whatsapp; - if (isWpp) { - context.push( - '/reservation', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } else { - DialogUnavailable.unavailableFeature(context); - } - } + Future showHistories(BuildContext context) async { await showAdaptiveDialog( // isScrollControlled: true, @@ -241,12 +263,7 @@ class MenuComponentModel extends FlutterFlowModel { return Padding( padding: MediaQuery.viewInsetsOf(context), child: OptionSelectionModalWidget( - routesListStr: const [ - 'liberationHistory', - 'acessHistoryPage', - 'scheduleCompleteVisitPage', - 'messageHistoryPage' - ], + routesListStr: const ['liberationHistory', 'acessHistoryPage', 'scheduleCompleteVisitPage', 'messageHistoryPage'], iconsListIcon: const [ Icons.history_rounded, Icons.history_rounded, @@ -276,72 +293,4 @@ class MenuComponentModel extends FlutterFlowModel { }, ); } - Future openLiberationsHistory(BuildContext context) async { - context.push( - '/liberationHistory', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } - Future openAccessHistory(BuildContext context) async { - context.push( - '/acessHistoryPage', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } - Future openVisitsHistory(BuildContext context) async { - context.push( - '/scheduleCompleteVisitPage', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } - Future openMessagesHistory(BuildContext context) async { - context.push( - '/messageHistoryPage', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } - Future openPetsRegister(BuildContext context) async { - bool isPet = StorageUtil().pets; - if (isPet) { - context.push( - '/petsPage', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); - } else { - DialogUnavailable.unavailableFeature(context); - } - } - - } - diff --git a/lib/components/organism_components/menu_component/menu_component_widget.dart b/lib/components/organism_components/menu_component/menu_component_widget.dart index cd940d59..50e1a7c7 100644 --- a/lib/components/organism_components/menu_component/menu_component_widget.dart +++ b/lib/components/organism_components/menu_component/menu_component_widget.dart @@ -12,617 +12,68 @@ import 'menu_component_model.dart'; export 'menu_component_model.dart'; class MenuComponentWidget extends StatefulWidget { - const MenuComponentWidget({ - Key? key, - required this.style, - required this.item, - required this.expandable, - }); - final MenuView style; - final MenuItem item; - final bool expandable; + final MenuComponentModel model; + const MenuComponentWidget({super.key, required this.model}); + @override State createState() => _MenuComponentWidgetState(); } class _MenuComponentWidgetState extends State { - late MenuComponentModel _model; - @override void setState(VoidCallback callback) { super.setState(callback); - _model.onUpdate(); + widget.model.onUpdate(); } @override void initState() { super.initState(); - _model = createModel(context, () => MenuComponentModel()); + widget.model.safeSetState = () => safeSetState(() {}); + } + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + widget.model.menuEntries = widget.model.generateMenuEntries(context, widget.model.item, widget.model.menuOptions); } @override void dispose() { - _model.maybeDispose(); - + widget.model.maybeDispose(); super.dispose(); } - // MenuButtonWidget(icon: FFIcons.kvector2, action: () async {setState(() {});}, title: FFLocalizations.of(context).getVariableText(enText:'Link\nCondominum' , ptText:'' ,),), - // MenuButtonWidget(icon: FFIcons.kpets, action: () async {setState(() {});}, title: FFLocalizations.of(context).getVariableText(enText:'Register\Pet' , ptText:'' ,),), - @override Widget build(BuildContext context) { - final options = () { - if (widget.item == MenuItem.button) { - if (_model.isGrid == true) - return [ - MenuButtonWidget( - icon: FFIcons.kvector1, - action: () async { - await _model.showSchedules(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Schedule\nVisit', - ptText: 'Agendar\nVisita', - ), - ), - MenuButtonWidget( - icon: FFIcons.khome, - action: () async { - await _model.openVisitorsRegister(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Register\nVisitor', - ptText: 'Cadastro\nde Visitante', - ), - ), - MenuButtonWidget( - icon: Icons.qr_code, - action: () async { - await _model.openQRCodeScanner(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'QRCode\nAccess', - ptText: 'QRCode\nde Acesso', - ), - ), - MenuButtonWidget( - icon: Icons.pets, - action: () async { - await _model.openPetsRegister(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Pets\nRegister', - ptText: 'Cadastro\nde Pet', - ), - ), - MenuButtonWidget( - icon: Icons.people, - action: () async { - await _model.openPoepleOnTheProperty(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'People on\nthe Property', - ptText: 'Pessoas na\nPropriedade', - ), - ), - MenuButtonWidget( - icon: Icons.history_sharp, - action: () async { - await _model.showHistories(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Consult\nHistories', - ptText: 'Consultar\nHistóricos', - ), - ), - MenuButtonWidget( - icon: Icons.settings, - action: () async { - await _model.openPreferencesSettings(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Preferences\nSettings', - ptText: 'Opções\ndo Sistema', - ), - ), - ]; - else - return [ - MenuButtonWidget( - icon: Icons.engineering_outlined, - action: () async { - await _model.openProvisionalSchedule(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Schedule\nProviders', - ptText: 'Agendar\nPrestadores', - ), - ), - MenuButtonWidget( - icon: Icons.sports_motorsports_outlined, - action: () async { - await _model.openDeliverySchedule(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Schedule\nDeliveries', - ptText: 'Agendar\nEntregas', - ), - ), - MenuButtonWidget( - icon: Icons.attach_email_outlined, - action: () async { - await _model.openFastPassSchedule(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - ptText: 'Convidar\nVisitante', - enText: 'Invite\nVisitor', - ), - ), - MenuButtonWidget( - icon: Icons.event, - action: () async { - await _model.openCompleteSchedule(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Complete\nSchedule', - ptText: 'Agenda\nCompleta', - ), - ), - MenuButtonWidget( - icon: Icons.inventory_2_outlined, - action: () async { - await _model.openMyOrders(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - ptText: 'Minhas\nEncomendas', - enText: 'My\nOrders', - ), - ), - MenuButtonWidget( - icon: Icons.event_available, - action: () async { - await _model.openReservations(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - ptText: 'Reservas', - enText: 'Reservations', - ), - ), - MenuButtonWidget( - icon: Icons.person_add_alt_1_outlined, - action: () async { - await _model.openVisitorsRegister(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Register\nVisitor', - ptText: 'Cadastrar\nVisitante', - ), - ), - MenuButtonWidget( - icon: Icons.qr_code, - action: () async { - await _model.openQRCodeScanner(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'QRCode\nAccess', - ptText: 'QRCode\nde Acesso', - ), - ), - MenuButtonWidget( - icon: Icons.pets, - action: () async { - await _model.openPetsRegister(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Pets\nRegister', - ptText: 'Cadastrar\nPet', - ), - ), - MenuButtonWidget( - icon: Icons.transfer_within_a_station_outlined, - action: () async { - await _model.openAccessHistory(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Access\nHistory', - ptText: 'Consultar\nAcessos', - ), - ), - MenuButtonWidget( - icon: Icons.how_to_reg_outlined, - action: () async { - await _model.openLiberationsHistory(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Liberations\nHistory', - ptText: 'Consultar\nLiberações', - ), - ), - MenuButtonWidget( - icon: Icons.chat_outlined, - action: () async { - await _model.openMessagesHistory(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Message\nHistory', - ptText: 'Consultar\nMensagens', - ), - ), - MenuButtonWidget( - icon: Icons.groups, - action: () async { - await _model.openPoepleOnTheProperty(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'People on\nthe Property', - ptText: 'Pessoas na\nPropriedade', - ), - ), - MenuButtonWidget( - icon: Icons.settings, - action: () async { - await _model.openPreferencesSettings(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'System\n Settings', - ptText: 'Opções\ndo Sistema', - ), - ), - ]; - } - if (widget.item == MenuItem.card) { - return [ - MenuCardItem( - icon: FFIcons.kvector1, - action: () async { - await _model.showSchedules(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Schedule\nVisit', - ptText: 'Agendar\nVisita', - ), - ), - MenuCardItem( - icon: FFIcons.khome, - action: () async { - await _model.openVisitorsRegister(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Register\nVisitor', - ptText: 'Cadastro\nde Visitante', - ), - ), - MenuCardItem( - icon: Icons.qr_code, - action: () async { - await _model.openQRCodeScanner(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'QRCode\nAccess', - ptText: 'QRCode\nde Acesso', - ), - ), - MenuCardItem( - icon: Icons.people, - action: () async { - await _model.openPoepleOnTheProperty(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'People on\nthe Property', - ptText: 'Pessoas\nna Propriedade', - ), - ), - MenuCardItem( - icon: Icons.history_sharp, - action: () async { - await _model.showHistories(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Consult\nHistories', - ptText: 'Consultar\nHistoricos', - ), - ), - MenuCardItem( - icon: Icons.inventory_2_rounded, - action: () async { - await _model.openMyOrders(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Orders', - ptText: 'Encomendas', - ), - ), - MenuButtonWidget( - icon: Icons.pets, - action: () async { - await _model.openPetsRegister(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Pets\nRegister', - ptText: 'Cadastrar\nPet', - ), - ), - MenuCardItem( - icon: Icons.event_available, - action: () async { - await _model.openReservations(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Reservations', - ptText: 'Reservas', - ), - ), - MenuCardItem( - icon: Icons.settings, - action: () async { - await _model.openPreferencesSettings(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Preferences\nSettings', - ptText: 'Preferências\nde Configuração', - ), - ), - ]; - } - // if (MenuItem.tile) - return [ - MenuCardItem( - icon: Icons.engineering_outlined, - action: () async { - await _model.openProvisionalSchedule(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Schedule Providers', - ptText: 'Agendar Prestadores', - ), - ), - MenuCardItem( - icon: Icons.sports_motorsports_outlined, - action: () async { - await _model.openDeliverySchedule(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Schedule Deliveries', - ptText: 'Agendar Entregas', - ), - ), - MenuCardItem( - icon: Icons.attach_email_outlined, - action: () async { - await _model.openFastPassSchedule(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - ptText: 'Convidar Visitante', - enText: 'Invite Visitor', - ), - ), - MenuCardItem( - icon: Icons.event, - action: () async { - await _model.openCompleteSchedule(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Complete Schedule', - ptText: 'Agenda Completa', - ), - ), - MenuCardItem( - icon: Icons.inventory_2_outlined, - action: () async { - await _model.openMyOrders(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - ptText: 'Minhas Encomendas', - enText: 'My Orders', - ), - ), - MenuCardItem( - icon: Icons.event_available, - action: () async { - await _model.openReservations(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - ptText: 'Reservas', - enText: 'Reservations', - ), - ), - MenuCardItem( - icon: Icons.person_add_alt_1_outlined, - action: () async { - await _model.openVisitorsRegister(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Register Visitor', - ptText: 'Cadastrar Visitante', - ), - ), - MenuCardItem( - icon: Icons.qr_code, - action: () async { - await _model.openQRCodeScanner(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'QRCode Access', - ptText: 'QRCode de Acesso', - ), - ), - MenuCardItem( - icon: Icons.pets, - action: () async { - await _model.openPetsRegister(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Pets Register', - ptText: 'Cadastro de Pet', - ), - ), - MenuCardItem( - icon: Icons.transfer_within_a_station_outlined, - action: () async { - await _model.openAccessHistory(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Access History', - ptText: 'Consultar Acessos', - ), - ), - MenuCardItem( - icon: Icons.how_to_reg_outlined, - action: () async { - await _model.openLiberationsHistory(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Liberations History', - ptText: 'Consultar Liberações', - ), - ), - MenuCardItem( - icon: Icons.chat_outlined, - action: () async { - await _model.openMessagesHistory(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Message History', - ptText: 'Consultar Mensagens', - ), - ), - MenuCardItem( - icon: Icons.groups, - action: () async { - await _model.openPoepleOnTheProperty(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'People on the Property', - ptText: 'Pessoas na Propriedade', - ), - ), - MenuCardItem( - icon: Icons.settings, - action: () async { - await _model.openPreferencesSettings(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'System Settings', - ptText: 'Opções do Sistema', - ), - ), - MenuCardItem( - icon: Icons.logout, - action: () async { - await _model.Logout(context); - setState(() {}); - }, - title: FFLocalizations.of(context).getVariableText( - enText: 'Logout Account', - ptText: 'Sair da Conta', - ), - ), - MenuCardItem(icon: null, action: () {}, title: ''), - ]; - }(); - return Builder( builder: (context) { - if (widget.style == MenuView.list_grid && - widget.expandable == true && - widget.item == MenuItem.button) { - if (_model.isGrid == true) { - return wrapWithModel( - model: _model.menuStaggeredViewComponentModel, - updateCallback: () => setState(() {}), - updateOnChange: true, - child: MenuStaggeredViewComponentWidget( - options: options, - expandable: widget.expandable, - item: widget.item, - changeMenuStyle: () async { - await _model.changeMenuStyle(context); - setState(() {}); - }, - isGrid: _model.isGrid, - ), - ); - } else { - return wrapWithModel( - model: _model.menuStaggeredViewComponentModel, - updateCallback: () => setState(() {}), - updateOnChange: true, - child: MenuStaggeredViewComponentWidget( - options: options, - expandable: widget.expandable, - item: widget.item, - changeMenuStyle: () async { - await _model.changeMenuStyle(context); - setState(() {}); - }, - isGrid: _model.isGrid, - ), - ); - } - } - if (widget.style == MenuView.list && - widget.expandable == false && - widget.item == MenuItem.tile) { + if (widget.model.style == MenuView.list_grid) return wrapWithModel( - model: _model.menuListViewComponentModel, + model: widget.model.menuStaggeredViewComponentModel, + updateCallback: () => setState(() {}), + updateOnChange: true, + child: MenuStaggeredViewComponentWidget( + options: widget.model.menuEntries, + expandable: widget.model.expandable, + item: widget.model.item, + changeMenuStyle: () async {}, + isGrid: widget.model.isGrid, + ), + ); + if (widget.model.style == MenuView.list) + return wrapWithModel( + model: widget.model.menuListViewComponentModel, updateCallback: () => setState(() {}), updateOnChange: true, child: MenuListViewComponentWidget( - options: options, - expandable: widget.expandable, - item: widget.item, - changeMenuStyle: () async { - await _model.changeMenuStyle(context); - setState(() {}); - }, + options: widget.model.menuEntries, + expandable: widget.model.expandable, + item: widget.model.item, + changeMenuStyle: () async {}, ), ); - } + return const SizedBox(); }, ); diff --git a/lib/components/organism_components/menu_list_view_component/menu_list_view_component_model.dart b/lib/components/organism_components/menu_list_view_component/menu_list_view_component_model.dart index 027278ab..d15273ee 100644 --- a/lib/components/organism_components/menu_list_view_component/menu_list_view_component_model.dart +++ b/lib/components/organism_components/menu_list_view_component/menu_list_view_component_model.dart @@ -2,13 +2,10 @@ import '/flutter_flow/flutter_flow_util.dart'; import 'menu_list_view_component_widget.dart' show MenuListViewComponentWidget; import 'package:flutter/material.dart'; - - -class MenuListViewComponentModel - extends FlutterFlowModel { +class MenuListViewComponentModel extends FlutterFlowModel { @override void initState(BuildContext context) {} @override void dispose() {} -} \ No newline at end of file +} diff --git a/lib/components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart b/lib/components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart index c16e3669..88f6153e 100644 --- a/lib/components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart +++ b/lib/components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart @@ -23,16 +23,14 @@ class MenuListViewComponentWidget extends StatefulWidget { final bool expandable; final MenuItem item; - final List options; + final List options; final Future Function()? changeMenuStyle; @override - State createState() => - _MenuListViewComponentWidgetState(); + State createState() => _MenuListViewComponentWidgetState(); } -class _MenuListViewComponentWidgetState - extends State { +class _MenuListViewComponentWidgetState extends State { late MenuListViewComponentModel _model; @override @@ -75,8 +73,7 @@ class _MenuListViewComponentWidgetState itemBuilder: (context, index) { return Padding( padding: const EdgeInsets.all(8.0), - child: SizedBox( - height: 115, width: 115, child: widget.options[index]), + child: SizedBox(height: 115, width: 115, child: widget.options[index]), ); }, ), @@ -95,8 +92,7 @@ class _MenuListViewComponentWidgetState itemBuilder: (context, index) { return Padding( padding: const EdgeInsets.all(8.0), - child: SizedBox( - height: 115, width: 115, child: widget.options[index]), + child: SizedBox(height: 115, width: 115, child: widget.options[index]), ); }, ), diff --git a/lib/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_model.dart b/lib/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_model.dart index 4ee29584..cb0efe51 100644 --- a/lib/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_model.dart +++ b/lib/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_model.dart @@ -4,12 +4,10 @@ import '/flutter_flow/flutter_flow_util.dart'; import 'package:flutter/material.dart'; - -class MenuStaggeredViewComponentModel - extends FlutterFlowModel { +class MenuStaggeredViewComponentModel extends FlutterFlowModel { @override void initState(BuildContext context) {} @override void dispose() {} -} \ No newline at end of file +} diff --git a/lib/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart b/lib/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart index ef9d3f46..4adbb83d 100644 --- a/lib/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart +++ b/lib/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart @@ -7,28 +7,20 @@ import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; class MenuStaggeredViewComponentWidget extends StatefulWidget { - const MenuStaggeredViewComponentWidget( - {super.key, - required this.changeMenuStyle, - required this.expandable, - required this.item, - required this.options, - required this.isGrid}); + const MenuStaggeredViewComponentWidget({super.key, required this.changeMenuStyle, required this.expandable, required this.item, required this.options, required this.isGrid}); final bool expandable; final MenuItem item; final bool isGrid; - final List options; + final List options; final Future Function()? changeMenuStyle; @override - State createState() => - _MenuStaggeredViewComponentWidgetState(); + State createState() => _MenuStaggeredViewComponentWidgetState(); } -class _MenuStaggeredViewComponentWidgetState - extends State { +class _MenuStaggeredViewComponentWidgetState extends State { late MenuStaggeredViewComponentModel _model; @override @@ -87,9 +79,7 @@ class _MenuStaggeredViewComponentWidgetState ); }, ), - ] - .addToStart(const SizedBox(height: 30)) - .addToEnd(const SizedBox(height: 30)), + ].addToStart(const SizedBox(height: 30)).addToEnd(const SizedBox(height: 30)), ); } diff --git a/lib/flutter_flow/nav/nav.dart b/lib/flutter_flow/nav/nav.dart index 3fcf2daf..bbcd1463 100644 --- a/lib/flutter_flow/nav/nav.dart +++ b/lib/flutter_flow/nav/nav.dart @@ -2,32 +2,43 @@ import 'dart:async'; import 'dart:developer'; import 'package:flutter/material.dart'; +import 'package:hub/backend/schema/util/schema_util.dart'; +import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/nav/nav.dart'; +import 'package:hub/pages/about_property_page/about_property_screen.dart'; +import 'package:hub/pages/acess_history_page/acess_history_page_widget.dart'; import 'package:hub/pages/delivery_schedule_page/delivery_schedule_widget.dart'; import 'package:hub/pages/fast_pass_page/fast_pass_page_widget.dart'; import 'package:hub/pages/forgot_password_page/forgot_password_screen.dart'; +import 'package:hub/pages/home_page/home_page_widget.dart'; +import 'package:hub/pages/liberation_history/liberation_history_widget.dart'; import 'package:hub/pages/message_history_page/message_history_page_widget.dart'; import 'package:hub/pages/package_order_page/package_order_page.dart'; +import 'package:hub/pages/people_on_the_property_page/people_on_the_property_page_widget.dart'; +import 'package:hub/pages/pets_on_the_property_page/pets_history_screen.dart'; import 'package:hub/pages/pets_page/pets_page_widget.dart'; +import 'package:hub/pages/preferences_settings_page/preferences_settings_widget.dart'; import 'package:hub/pages/provisional_schedule_page/provisional_schedule_widget.dart'; +import 'package:hub/pages/qr_code_page/qr_code_page_widget.dart'; import 'package:hub/pages/reception_page/reception_page_widget.dart'; +import 'package:hub/pages/register_visitor_page/register_visitor_page_widget.dart'; import 'package:hub/pages/reservation_page/reservation_page_widget.dart'; - +import 'package:hub/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart'; +import 'package:hub/pages/sign_in_page/sign_in_page_widget.dart'; +import 'package:hub/pages/sign_up_page/sign_up_page_widget.dart'; +import 'package:hub/pages/vehicles_on_the_property/vehicles_on_the_property.dart'; +import 'package:hub/pages/visits_on_the_property/visits_on_the_property_screen.dart'; +import 'package:hub/pages/welcome_page/welcome_page_widget.dart'; +import 'package:hub/shared/utils/dialog_util.dart'; import 'package:hub/shared/utils/storage_util.dart'; + import 'package:provider/provider.dart'; - -import '../../shared/utils/dialog_util.dart'; -import '/backend/schema/structs/index.dart'; -import '/flutter_flow/flutter_flow_util.dart'; -import '/index.dart'; - export 'package:go_router/go_router.dart'; export 'serialization_util.dart'; const kTransitionInfoKey = '__transition_info__'; - class AppStateNotifier extends ChangeNotifier { AppStateNotifier._(); @@ -47,40 +58,18 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) { final bool? haveLocal = StorageUtil().haveLocal; final bool haveUserUUID = StorageUtil().userUUID.isNotEmpty; final bool haveDevUUID = StorageUtil().devUUID.isNotEmpty; - final bool isRecovered = StorageUtil().isRecovered; - - log('() => isLogged: $isLogged'); - log('() => haveLocal: $haveLocal'); + // final bool isRecovered = StorageUtil().isRecovered; return GoRouter( initialLocation: '/', debugLogDiagnostics: true, refreshListenable: appStateNotifier, // errorBuilder: (context, state) => appStateNotifier.showSplashImage - // ? Builder( - // builder: (context) => Container( - // color: FlutterFlowTheme.of(context).primary, - // child: Image.asset( - // 'assets/images/logo.svg', - // fit: BoxFit.cover, - // ), - // ), - // ) + // ? Builder( builder: (context) => Container(color: FlutterFlowTheme.of(context).primary, child: Image.asset( 'assets/images/logo.svg', fit: BoxFit.cover))) // : const PeopleOnThePropertyPageWidget(), routes: [ - // FFRoute( - // name: '_initialize', - // path: '/', - // builder: (context, _) => appStateNotifier.showSplashImage - // ? Builder( - // builder: (context) => Container( - // color: FlutterFlowTheme.of(context).primary, - // child: Image.asset( - // 'assets/images/favicon.png', - // fit: BoxFit.cover, - // ), - // ), - // ) + // FFRoute(name: '_initialize', path: '/',builder: (context, _) => appStateNotifier.showSplashImage + // ? Builder(builder: (context) => Container(color: FlutterFlowTheme.of(context).primary, child: Image.asset('assets/images/favicon.png', fit: BoxFit.cover))) // : const OnBoardingPageWidget(), // ), FFRoute( @@ -90,8 +79,8 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) { try { return isLogged && haveDevUUID && haveUserUUID ? haveLocal == true - ? const HomePageWidget() - : const ReceptionPageWidget() + ? const HomePageWidget() + : const ReceptionPageWidget() : const WelcomePageWidget(); } catch (e) { DialogUtil.error(context, e.toString()); @@ -99,237 +88,107 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) { } }, ), - FFRoute( - name: 'forgotPassword', - path: '/forgotPassword', - builder: (context, params) { - late final String email = params.getParam('email', ParamType.String); - late final String token = params.getParam('token', ParamType.String); - - return ForgotPasswordScreen( - key: UniqueKey(), - email: email, - token: token, - ); - } - ), - FFRoute( - name: 'homePage', - path: '/homePage', - builder: (context, params) => HomePageWidget(key: UniqueKey()), - ), - FFRoute( - name: 'receptionPage', - path: '/receptionPage', - builder: (context, params) => const ReceptionPageWidget()), - FFRoute( - name: 'messageHistoryPage', - path: '/messageHistoryPage', - builder: (context, params) => const MessageHistoryPageWidget()), - FFRoute( - name: 'registerVisitorPage', - path: '/registerVisitorPage', - builder: (context, params) => const RegisterVisitorPageWidget(), - ), - FFRoute( - name: 'scheduleCompleteVisitPage', - path: '/scheduleCompleteVisitPage', - builder: (context, params) { - return const ScheduleCompleteVisitPageWidget(); - }), - FFRoute( - name: 'deliverySchedule', - path: '/deliverySchedule', - builder: (context, params) => const DeliverySchedule(), - ), - FFRoute( - name: 'provisionalSchedule', - path: '/provisionalSchedule', - builder: (context, params) => const ProvisionalSchedule(), - ), - FFRoute( - name: 'fastPassPage', - path: '/fastPassPage', - builder: (context, params) => /*const*/ FastPassPageWidget(), - ), - FFRoute( - name: 'preferencesSettings', - path: '/preferencesSettings', - builder: (context, params) => PreferencesPageWidget()), - FFRoute( - name: 'peopleOnThePropertyPage', - path: '/peopleOnThePropertyPage', - builder: (context, params) => const PeopleOnThePropertyPageWidget(), - ), - FFRoute( - name: 'acessHistoryPage', - path: '/acessHistoryPage', - builder: (context, params) => AccessHistoryScreen(opt: const { - 'personType': '.*', - 'accessType': '.*', - 'search': '.*', - })), - FFRoute( - name: 'liberationHistory', - path: '/liberationHistory', - builder: (context, params) => const LiberationHistoryWidget(), - ), - FFRoute( - name: 'signInPage', - path: '/signInPage', - builder: (context, params) => const SignInPageWidget(), - ), - FFRoute( - name: 'signUpPage', - path: '/signUpPage', - builder: (context, params) => const SignUpPageWidget(), - ), - FFRoute( - name: 'welcomePage', - path: '/welcomePage', - builder: (context, params) => const WelcomePageWidget(), - ), - FFRoute( - name: 'qrCodePage', - path: '/qrCodePage', - builder: (context, params) => const QrCodePageWidget(), - ), - FFRoute( - name: 'preferencesPage', - path: '/preferencesPage', - builder: (context, params) => PreferencesPageWidget(), - ), - FFRoute( - name: 'packageOrder', - path: '/packageOrder', - builder: (context, params) => const PackageOrderPage(), - ), - FFRoute( - name: 'reservation', - path: '/reservation', - builder: (context, params) => ReservationPageWidget(), - ), + FFRoute(name: 'forgotPassword', path: '/forgotPassword', builder: (context, params) => ForgotPasswordScreen(key: UniqueKey(), email: params.getParam('email', ParamType.String), token: params.getParam('token', ParamType.String))), + FFRoute(name: 'homePage', path: '/homePage', builder: (context, params) => HomePageWidget(key: UniqueKey())), + FFRoute(name: 'petsOnThePropertyPage', path: '/petsOnThePropertyPage', builder: (context, params) => Scaffold(body: const PetsHistoryScreen())), + FFRoute(name: 'vehiclesOnThePropertyPage', path: '/vehiclesOnThePropertyPage', builder: (context, params) => const VehicleOnTheProperty()), + FFRoute(name: 'visitsOnThePropertyPage', path: '/visitsOnThePropertyPage', builder: (context, params) => const VisitsOnTheProperty()), + FFRoute(name: 'receptionPage', path: '/receptionPage', builder: (context, params) => const ReceptionPageWidget()), + FFRoute(name: 'messageHistoryPage', path: '/messageHistoryPage', builder: (context, params) => const MessageHistoryPageWidget()), + FFRoute(name: 'registerVisitorPage', path: '/registerVisitorPage', builder: (context, params) => const RegisterVisitorPageWidget()), + FFRoute(name: 'scheduleCompleteVisitPage', path: '/scheduleCompleteVisitPage', builder: (context, params) => const ScheduleCompleteVisitPageWidget()), + FFRoute(name: 'deliverySchedule', path: '/deliverySchedule', builder: (context, params) => const DeliverySchedule()), + FFRoute(name: 'provisionalSchedule', path: '/provisionalSchedule', builder: (context, params) => const ProvisionalSchedule()), + FFRoute(name: 'fastPassPage', path: '/fastPassPage', builder: (context, params) => /*const*/ FastPassPageWidget()), + FFRoute(name: 'preferencesSettings', path: '/preferencesSettings', builder: (context, params) => PreferencesPageWidget()), + FFRoute(name: 'aboutProperty', path: '/aboutProperty', builder: (context, params) => AboutPropertyPage()), + FFRoute(name: 'peopleOnThePropertyPage', path: '/peopleOnThePropertyPage', builder: (context, params) => PeopleOnThePropertyPage()), + FFRoute(name: 'acessHistoryPage', path: '/acessHistoryPage', builder: (context, params) => AccessHistoryScreen(opt: const {'personType': '.*', 'accessType': '.*', 'search': '.*'})), + FFRoute(name: 'liberationHistory', path: '/liberationHistory', builder: (context, params) => const LiberationHistoryWidget()), + FFRoute(name: 'signInPage', path: '/signInPage', builder: (context, params) => const SignInPageWidget()), + FFRoute(name: 'signUpPage', path: '/signUpPage', builder: (context, params) => const SignUpPageWidget()), + FFRoute(name: 'welcomePage', path: '/welcomePage', builder: (context, params) => const WelcomePageWidget()), + FFRoute(name: 'qrCodePage', path: '/qrCodePage', builder: (context, params) => const QrCodePageWidget()), + FFRoute(name: 'preferencesPage', path: '/preferencesPage', builder: (context, params) => PreferencesPageWidget()), + FFRoute(name: 'packageOrder', path: '/packageOrder', builder: (context, params) => const PackageOrderPage()), + FFRoute(name: 'reservation', path: '/reservation', builder: (context, params) => ReservationPageWidget()), FFRoute( name: 'petsPage', path: '/petsPage', builder: (context, params) { - final pet = params.getParam( - 'pet', - ParamType.JSON, - ); - - return PetsPageWidget( - pet: pet, - ); + final pet = params.getParam('pet', ParamType.JSON); + return PetsPageWidget(pet: pet); }, ), - // FFRoute( - // name: 'settingsPage', - // path: '/settingsPage', - // builder: (context, params) => params.isEmpty - // ? const NavBarPage(initialPage: 'settingsPage') - // : const SettingsPageWidget(), - // ) + // FFRoute(name: 'settingsPage', path: '/settingsPage', builder: (context, params) => params.isEmpty ? const NavBarPage(initialPage: 'settingsPage') : const SettingsPageWidget()) ].map((r) => r.toRoute(appStateNotifier)).toList(), ); } extension NavParamExtensions on Map { Map get withoutNulls => Map.fromEntries( - entries - .where((e) => e.value != null) - .map((e) => MapEntry(e.key, e.value!)), + entries.where((e) => e.value != null).map((e) => MapEntry(e.key, e.value!)), ); } + extension NavigationExtensions on BuildContext { void safePop() { - // If there is only one route on the stack, navigate to the initial - // page instead of popping. - if (canPop()) { + if (canPop()) pop(); - } else { + else go('/'); - } } } + extension _GoRouterStateExtensions on GoRouterState { - Map get extraMap => - extra != null ? extra as Map : {}; + Map get extraMap => extra != null ? extra as Map : {}; Map get allParams => {} ..addAll(pathParameters) ..addAll(uri.queryParameters) ..addAll(extraMap); - TransitionInfo get transitionInfo => extraMap.containsKey(kTransitionInfoKey) - ? extraMap[kTransitionInfoKey] as TransitionInfo - : TransitionInfo.appDefault(); + TransitionInfo get transitionInfo => extraMap.containsKey(kTransitionInfoKey) ? extraMap[kTransitionInfoKey] as TransitionInfo : TransitionInfo.appDefault(); } + extension GoRouterLocationExtension on GoRouter { String getCurrentLocation() { final RouteMatch lastMatch = routerDelegate.currentConfiguration.last; - final RouteMatchList matchList = lastMatch is ImperativeRouteMatch - ? lastMatch.matches - : routerDelegate.currentConfiguration; + final RouteMatchList matchList = lastMatch is ImperativeRouteMatch ? lastMatch.matches : routerDelegate.currentConfiguration; return matchList.uri.toString(); } } class FFParameters { FFParameters(this.state, [this.asyncParams = const {}]); - final GoRouterState state; - final Map Function(String)> asyncParams; + final Map Function(String)> asyncParams; Map futureParamValues = {}; - // Parameters are empty if the params map is empty or if the only parameter - // present is the special extra parameter reserved for the transition info. - bool get isEmpty => - state.allParams.isEmpty || - (state.allParams.length == 1 && - state.extraMap.containsKey(kTransitionInfoKey)); - bool isAsyncParam(MapEntry param) => - asyncParams.containsKey(param.key) && param.value is String; + bool get isEmpty => state.allParams.isEmpty || (state.allParams.length == 1 && state.extraMap.containsKey(kTransitionInfoKey)); + bool isAsyncParam(MapEntry param) => asyncParams.containsKey(param.key) && param.value is String; bool get hasFutures => state.allParams.entries.any(isAsyncParam); Future completeFutures() => Future.wait( state.allParams.entries.where(isAsyncParam).map( (param) async { - final doc = await asyncParams[param.key]!(param.value) - .onError((_, __) => null); + final doc = await asyncParams[param.key]!(param.value).onError((_, __) => null); if (doc != null) { futureParamValues[param.key] = doc; return true; - } - return false; + } else + return false; }, ), ).onError((_, __) => [false]).then((v) => v.every((e) => e)); - dynamic getParam( - String paramName, - ParamType type, { - bool isList = false, - StructBuilder? structBuilder, - }) { - if (futureParamValues.containsKey(paramName)) { - return futureParamValues[paramName]; - } - if (!state.allParams.containsKey(paramName)) { - return null; - } + dynamic getParam(String paramName, ParamType type, {bool isList = false, StructBuilder? structBuilder}) { + if (futureParamValues.containsKey(paramName)) return futureParamValues[paramName]; + if (!state.allParams.containsKey(paramName)) return null; final param = state.allParams[paramName]; - // Got parameter from `extras`, so just directly return it. - if (param is! String) { - return param; - } - // Return serialized value. - return deserializeParam( - param, - type, - isList, - structBuilder: structBuilder, - ); + if (param is! String) return param; + return deserializeParam(param, type, isList, structBuilder: structBuilder); } } + class FFRoute { const FFRoute({ required this.name, @@ -360,33 +219,26 @@ class FFRoute { ) : builder(context, ffParams); final child = page; - final transitionInfo = state.transitionInfo; return transitionInfo.hasTransition ? CustomTransitionPage( key: state.pageKey, child: child, transitionDuration: transitionInfo.duration, - transitionsBuilder: - (context, animation, secondaryAnimation, child) => - PageTransition( + transitionsBuilder: (context, animation, secondaryAnimation, child) => PageTransition( type: transitionInfo.transitionType, duration: transitionInfo.duration, reverseDuration: transitionInfo.duration, alignment: transitionInfo.alignment, child: child, - ).buildTransitions( - context, - animation, - secondaryAnimation, - child, - ), + ).buildTransitions(context, animation, secondaryAnimation, child), ) : MaterialPage(key: state.pageKey, child: child); }, routes: routes, ); } + class TransitionInfo { const TransitionInfo({ required this.hasTransition, @@ -400,9 +252,9 @@ class TransitionInfo { final Duration duration; final Alignment? alignment; - static TransitionInfo appDefault() => - const TransitionInfo(hasTransition: false); + static TransitionInfo appDefault() => const TransitionInfo(hasTransition: false); } + class RootPageContext { const RootPageContext(this.isRootPage, [this.errorRoute]); final bool isRootPage; @@ -412,13 +264,8 @@ class RootPageContext { final rootPageContext = context.read(); final isRootPage = rootPageContext?.isRootPage ?? false; final location = GoRouterState.of(context).uri.toString(); - return isRootPage && - location != '/' && - location != rootPageContext?.errorRoute; + return isRootPage && location != '/' && location != rootPageContext?.errorRoute; } - static Widget wrap(Widget child, {String? errorRoute}) => Provider.value( - value: RootPageContext(true, errorRoute), - child: child, - ); -} + static Widget wrap(Widget child, {String? errorRoute}) => Provider.value(value: RootPageContext(true, errorRoute), child: child); +} diff --git a/lib/main.dart b/lib/main.dart index 9ebf0b17..2f3b9dd5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -36,7 +36,6 @@ Future initializeApp() async { WidgetsFlutterBinding.ensureInitialized(); await _initializeTracking(); await _initializeStorageHelpers(); - await _initializeFirebase(); await _initializeNotificationService(); _initializeUrlStrategy(); @@ -45,9 +44,6 @@ Future initializeApp() async { } Future _initializeStorageHelpers() async { - log('Initializing SharedPreferencesStorageHelper'); - await SharedPreferencesStorageHelper().initialize(); - log('Initializing SharedPreferencesStorageHelper'); await StorageUtil().ensureInitialization(); } @@ -92,10 +88,7 @@ Future _foregroundHandlerMessage(RemoteMessage message) async { StorageUtil().context?.go('/homePage'); } if (!Platform.isIOS) { - NotificationService.show( - title: message.notification!.title!, - body: message.notification!.body!, - payload: Map.from(message.data)); + NotificationService.show(title: message.notification!.title!, body: message.notification!.body!, payload: Map.from(message.data)); } } @@ -113,11 +106,10 @@ class App extends StatefulWidget { @override State createState() => _AppState(); - static _AppState of(BuildContext context) => - context.findAncestorStateOfType<_AppState>()!; + static _AppState of(BuildContext context) => context.findAncestorStateOfType<_AppState>()!; } -class _AppState extends State with WidgetsBindingObserver { +class _AppState extends State with WidgetsBindingObserver { Locale? _locale = FFLocalizations.getStoredLocale(); ThemeMode _themeMode = FlutterFlowTheme.themeMode; late AppStateNotifier _appStateNotifier; @@ -158,8 +150,7 @@ class _AppState extends State with WidgetsBindingObserver { }), ), ); - final Iterable>? localizationsDelegates = - const [ + final Iterable>? localizationsDelegates = const [ FFLocalizationsDelegate(), GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, @@ -211,8 +202,7 @@ class _AppState extends State with WidgetsBindingObserver { builder(context) => screen; showModalBottomSheet( context: context, - builder: (context) => Padding( - padding: MediaQuery.viewInsetsOf(context), child: builder(context)), + builder: (context) => Padding(padding: MediaQuery.viewInsetsOf(context), child: builder(context)), isScrollControlled: true, // barrierColor: theme.primaryBackground.withOpacity(0.2), backgroundColor: theme.primaryBackground, @@ -238,8 +228,7 @@ class _AppState extends State with WidgetsBindingObserver { StorageUtil().haveLocal = true; log('onMessageOpenedApp'); } else { - onMessageReceived(message.data, message.notification!.body, - message.data['click_action']); + onMessageReceived(message.data, message.notification!.body, message.data['click_action']); } }); FirebaseMessaging.instance.getInitialMessage().then((message) { @@ -264,7 +253,8 @@ class _AppState extends State with WidgetsBindingObserver { }); } - @override void initState() { + @override + void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); @@ -273,25 +263,27 @@ class _AppState extends State with WidgetsBindingObserver { FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); _appStateNotifier = AppStateNotifier.instance; _router = createRouter(_appStateNotifier); - Future.delayed(const Duration(milliseconds: 1000), - () => setState(() => _appStateNotifier.stopShowingSplashImage())); + Future.delayed(const Duration(milliseconds: 1000), () => setState(() => _appStateNotifier.stopShowingSplashImage())); _setupFirebaseMessaging(); WidgetsBinding.instance.addPersistentFrameCallback((_) => initDeepLinks()); } - @override void dispose() { + @override + void dispose() { WidgetsBinding.instance.removeObserver(this); _linkSubscription?.cancel(); super.dispose(); } - @override void didChangeAppLifecycleState(AppLifecycleState state) async { + @override + void didChangeAppLifecycleState(AppLifecycleState state) async { bool initialize = await StorageUtil().ensureInitialization(); - if(initialize) await LocalizationService.processLocals(context); + if (initialize) await LocalizationService.processLocals(context); } - @override Widget build(BuildContext context) { + @override + Widget build(BuildContext context) { return MaterialApp.router( key: navigatorKey, title: 'FRE ACCESS HUB', diff --git a/lib/pages/about_property_page/about_property_model.dart b/lib/pages/about_property_page/about_property_model.dart new file mode 100644 index 00000000..1af57767 --- /dev/null +++ b/lib/pages/about_property_page/about_property_model.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; + +import 'package:hub/backend/schema/enums/enums.dart'; +import 'package:hub/components/molecular_components/menu_item/menu_item.dart'; +import 'package:hub/components/organism_components/menu_component/menu_component_model.dart'; +import 'package:hub/flutter_flow/flutter_flow_model.dart'; + +import 'package:hub/pages/about_property_page/about_property_screen.dart'; + +class AboutPropertyModel extends FlutterFlowModel { + dynamic item; + + VoidCallback? safeSetState; + + final GlobalKey registerFormKey = GlobalKey(); + final GlobalKey updateFormKey = GlobalKey(); + + late MenuComponentModel menuComponentModel; + + Future initAsync() async { + safeSetState?.call(); + } + + @override + void initState(BuildContext context) { + menuComponentModel = createModel( + context, + () => MenuComponentModel(expandable: true, style: MenuView.list_grid, item: MenuItem.button, menuOptions: [ + MenuOption.PetsOnTheProperty, + MenuOption.ResidentsOnTheProperty, + MenuOption.VisitsOnTheProperty, + MenuOption.VehiclesOnTheProperty, + MenuOption.PackagesOnTheProperty, + ])); + + initAsync(); + } + + @override + void dispose() {} +} diff --git a/lib/pages/about_property_page/about_property_screen.dart b/lib/pages/about_property_page/about_property_screen.dart new file mode 100644 index 00000000..7fb40e0f --- /dev/null +++ b/lib/pages/about_property_page/about_property_screen.dart @@ -0,0 +1,70 @@ +// ignore: must_be_immutable +import 'package:flutter/material.dart'; +import 'package:hub/components/atomic_components/shared_components_atoms/appbar.dart'; +import 'package:hub/components/organism_components/menu_component/menu_component_widget.dart'; +import 'package:hub/flutter_flow/flutter_flow_model.dart'; +import 'package:hub/flutter_flow/flutter_flow_theme.dart'; +import 'package:hub/flutter_flow/flutter_flow_util.dart'; +import 'package:hub/flutter_flow/nav/nav.dart'; +import 'package:hub/pages/about_property_page/about_property_model.dart'; + +// ignore: must_be_immutable +class AboutPropertyPage extends StatefulWidget { + dynamic pet; + + AboutPropertyPage({ + super.key, + this.pet, + }); + + @override + State createState() => _AboutPropertyPageState(); +} + +class _AboutPropertyPageState extends State with SingleTickerProviderStateMixin { + late AboutPropertyModel _model; + + @override + void initState() { + super.initState(); + _model = createModel(context, () => AboutPropertyModel()); + _model.updateOnChange = true; + + _model.safeSetState = () { + safeSetState(() {}); + }; + } + + @override + void dispose() { + super.dispose(); + _model.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold(appBar: _buildAppBar(context), backgroundColor: FlutterFlowTheme.of(context).primaryBackground, body: _buildBody(context)); + } + + PreferredSizeWidget _buildAppBar(BuildContext context) { + final String title = FFLocalizations.of(context).getVariableText(ptText: "Sobre a Propriedade", enText: "About the Property"); + return AppBarUtil( + title: title, + onBackButtonPressed: () => context.pop(), + ); + } + + Widget _buildBody(BuildContext context) { + return Container( + color: FlutterFlowTheme.of(context).primaryBackground, + child: wrapWithModel( + model: _model.menuComponentModel, + updateCallback: () => setState(() {}), + child: Padding( + padding: EdgeInsets.only(bottom: 40), + child: MenuComponentWidget(model: _model.menuComponentModel), + ), + ), + ); + } +} diff --git a/lib/pages/home_page/home_page_model.dart b/lib/pages/home_page/home_page_model.dart index a648e58b..8f2f44d3 100644 --- a/lib/pages/home_page/home_page_model.dart +++ b/lib/pages/home_page/home_page_model.dart @@ -1,4 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:hub/backend/schema/enums/enums.dart'; +import 'package:hub/components/molecular_components/menu_item/menu_item.dart'; import 'package:hub/components/organism_components/local_profile_component/local_profile_component_model.dart'; import 'package:hub/components/organism_components/menu_component/menu_component_model.dart'; import 'package:hub/components/organism_components/message_well_component/message_well_component_model.dart'; @@ -19,7 +21,8 @@ class HomePageModel extends FlutterFlowModel { TextEditingController? textController; String? Function(BuildContext, String?)? textControllerValidator; late LocalProfileComponentModel localComponentModel; - late MenuComponentModel menuComponentModel; + late MenuComponentModel homeMenuComponentModel; + late MenuComponentModel drawerMenuComponentModel; late MessageWellComponentModel messageWellComponentModel; Future _initVariable() async { @@ -33,11 +36,45 @@ class HomePageModel extends FlutterFlowModel { @override void initState(BuildContext context) { _initVariable(); - localComponentModel = - createModel(context, () => LocalProfileComponentModel()); - menuComponentModel = createModel(context, () => MenuComponentModel()); - messageWellComponentModel = - createModel(context, () => MessageWellComponentModel()); + localComponentModel = createModel(context, () => LocalProfileComponentModel()); + homeMenuComponentModel = createModel( + context, + () => MenuComponentModel(expandable: true, style: MenuView.list_grid, item: MenuItem.button, menuOptions: [ + MenuOption.SettingsOnTheApp, + MenuOption.MessagesOnTheProperty, + MenuOption.AccessOnTheProperty, + MenuOption.PetsRegister, + MenuOption.VisitorsRegister, + MenuOption.ReservationsOnTheLocal, + MenuOption.PackagesOnTheProperty, + MenuOption.DeliverySchedule, + MenuOption.WorkersOnTheProperty, + MenuOption.AboutProperty, + MenuOption.CompleteSchedule, + MenuOption.FastPassSchedule, + MenuOption.LiberationsOnTheProperty, + MenuOption.QRCodeAccessInProperty, + ])); + drawerMenuComponentModel = createModel( + context, + () => MenuComponentModel(expandable: false, style: MenuView.list, item: MenuItem.tile, menuOptions: [ + MenuOption.SettingsOnTheApp, + MenuOption.MessagesOnTheProperty, + MenuOption.AccessOnTheProperty, + MenuOption.PetsRegister, + MenuOption.VisitorsRegister, + MenuOption.ReservationsOnTheLocal, + MenuOption.PackagesOnTheProperty, + MenuOption.DeliverySchedule, + MenuOption.WorkersOnTheProperty, + MenuOption.AboutProperty, + MenuOption.CompleteSchedule, + MenuOption.FastPassSchedule, + MenuOption.LiberationsOnTheProperty, + MenuOption.QRCodeAccessInProperty, + MenuOption.LogoutOnTheApp, + ])); + messageWellComponentModel = createModel(context, () => MessageWellComponentModel()); } @override @@ -47,7 +84,7 @@ class HomePageModel extends FlutterFlowModel { textController?.dispose(); localComponentModel.dispose(); - menuComponentModel.dispose(); + homeMenuComponentModel.dispose(); messageWellComponentModel.dispose(); } } diff --git a/lib/pages/home_page/home_page_widget.dart b/lib/pages/home_page/home_page_widget.dart index 93ee9cfd..e0204dd4 100644 --- a/lib/pages/home_page/home_page_widget.dart +++ b/lib/pages/home_page/home_page_widget.dart @@ -1,4 +1,3 @@ - import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; @@ -20,7 +19,7 @@ class HomePageWidget extends StatefulWidget { State createState() => _HomePageWidgetState(); } -class _HomePageWidgetState extends State { +class _HomePageWidgetState extends State { late HomePageModel _model; final scaffoldKey = GlobalKey(); @@ -30,13 +29,14 @@ class _HomePageWidgetState extends State { _localProfileComponentWidget = LocalProfileComponentWidget(); } - @override void dispose() { - + @override + void dispose() { super.dispose(); _model.dispose(); } - @override void initState() { + @override + void initState() { super.initState(); _model = createModel(context, () => HomePageModel()); @@ -48,9 +48,8 @@ class _HomePageWidgetState extends State { _model.textFieldFocusNode ??= FocusNode(); } - - - @override Widget build(BuildContext context) { + @override + Widget build(BuildContext context) { StorageUtil().context = context; return Scaffold( key: scaffoldKey, @@ -95,8 +94,7 @@ class _HomePageWidgetState extends State { fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).info, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ].divide(const SizedBox(width: 8.0)), @@ -109,10 +107,6 @@ class _HomePageWidgetState extends State { ); } - - - - Container buildPage(BuildContext context) { return Container( decoration: BoxDecoration( @@ -147,14 +141,13 @@ class _HomePageWidgetState extends State { return Container( color: FlutterFlowTheme.of(context).primaryBackground, child: wrapWithModel( - model: _model.menuComponentModel, + model: _model.homeMenuComponentModel, + updateOnChange: true, updateCallback: () => setState(() {}), - child: const Padding( - padding: EdgeInsets.only(bottom: 40), + child: Padding( + padding: const EdgeInsets.only(bottom: 40), child: MenuComponentWidget( - expandable: true, - style: MenuView.list_grid, - item: MenuItem.button, + model: _model.homeMenuComponentModel, ), ), ), diff --git a/lib/pages/people_on_the_property_page/people_on_the_property_page_model.dart b/lib/pages/people_on_the_property_page/people_on_the_property_page_model.dart index b33ee6b3..ed14c919 100644 --- a/lib/pages/people_on_the_property_page/people_on_the_property_page_model.dart +++ b/lib/pages/people_on_the_property_page/people_on_the_property_page_model.dart @@ -2,10 +2,7 @@ import 'package:flutter/material.dart'; import 'package:hub/flutter_flow/flutter_flow_model.dart'; import 'package:hub/pages/people_on_the_property_page/people_on_the_property_page_widget.dart'; -class PeopleOnThePropertyPageModel - extends FlutterFlowModel { - /// State fields for stateful widgets in this page. - +class PeopleOnThePropertyPageModel extends FlutterFlowModel { final unfocusNode = FocusNode(); @override diff --git a/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart b/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart index c6852f85..a9be6c49 100644 --- a/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart +++ b/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart @@ -1,70 +1,122 @@ -import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hub/backend/api_requests/api_calls.dart'; +import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart'; import 'package:hub/flutter_flow/flutter_flow_icon_button.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; -import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/pages/people_on_the_property_page/people_on_the_property_page_model.dart'; +import 'package:hub/shared/utils/dialog_util.dart'; +import 'package:hub/shared/utils/log_util.dart'; +import 'package:hub/shared/utils/storage_util.dart'; -import '../../shared/utils/log_util.dart'; - -class PeopleOnThePropertyPageWidget extends StatefulWidget { - const PeopleOnThePropertyPageWidget({super.key}); +class PeopleOnThePropertyPage extends StatefulWidget { + const PeopleOnThePropertyPage({super.key}); @override - State createState() => - _PeopleOnThePropertyPageWidgetState(); + _PeopleOnThePropertyPageState createState() => _PeopleOnThePropertyPageState(); } -class _PeopleOnThePropertyPageWidgetState - extends State { - late PeopleOnThePropertyPageModel _model; +class _PeopleOnThePropertyPageState extends State with TickerProviderStateMixin { + late ScrollController _scrollController; - final scaffoldKey = GlobalKey(); + int _pageNumber = 1; + bool _hasData = false; + bool _loading = false; + int count = 0; + late final PeopleOnThePropertyPageModel model; + + late Future _petsFuture; + List _petsWrap = []; @override void initState() { super.initState(); - _model = createModel(context, () => PeopleOnThePropertyPageModel()); + model = createModel(context, () => PeopleOnThePropertyPageModel()); + _petsFuture = _fetchVisits(); + + _scrollController = ScrollController() + ..addListener(() { + if (_scrollController.position.atEdge && _scrollController.position.pixels != 0) { + _loadMore(); + } + }); } @override void dispose() { - _model.dispose(); - + _scrollController.dispose(); super.dispose(); } @override - Widget build(BuildContext context) { - return Scaffold( - key: scaffoldKey, - backgroundColor: FlutterFlowTheme.of(context).primaryBackground, - appBar: AppBar( + Widget build(BuildContext context) => Scaffold( + appBar: _appBar(context), backgroundColor: FlutterFlowTheme.of(context).primaryBackground, - automaticallyImplyLeading: false, - forceMaterialTransparency: true, - leading: FlutterFlowIconButton( - borderColor: Colors.transparent, - borderRadius: 30.0, - borderWidth: 1.0, - buttonSize: 60.0, - icon: Icon( - Icons.keyboard_arrow_left, - color: FlutterFlowTheme.of(context).primaryText, - size: 30.0, - ), - onPressed: () async { - context.pop(); - }, + body: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + if (_hasData == false && _pageNumber <= 1 && _loading == false) + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Center( + child: Text(FFLocalizations.of(context).getVariableText(ptText: "Nenhum veículo encontrado!", enText: "No vehicle found")), + ) + ], + ), + ) + else if (_hasData == true || _pageNumber >= 1) + Expanded( + child: FutureBuilder( + future: _petsFuture, + builder: (context, snapshot) { + return ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + controller: _scrollController, + itemCount: _petsWrap.length + 1, + itemBuilder: (context, index) { + if (index == 0) { + // Add your item here + return Padding( + padding: const EdgeInsets.only(right: 30, top: 10), + child: Text( + // model.petAmountRegister == '0' ? FFLocalizations.of(context).getVariableText(ptText: "Ilimitado", enText: "Unlimited") : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}$count/${model.petAmountRegister}", + '', + textAlign: TextAlign.right, + ), + ); + } else { + final item = _petsWrap[index - 1]; + return _item(context, item); + } + }); + }, + )), + if (_hasData == true && _loading == true) + Container( + padding: const EdgeInsets.only(top: 15, bottom: 15), + child: Center( + child: CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation( + FlutterFlowTheme.of(context).primary, + ), + ), + ), + ) + ].addToStart(const SizedBox(height: 0)), ), - title: Text( - FFLocalizations.of(context).getText( - 'nsu13r5d' /* Pessoas na Propriedade */, - ), + ); + + PreferredSizeWidget _appBar(BuildContext context) { + return AppBar( + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, + automaticallyImplyLeading: false, + title: Text(FFLocalizations.of(context).getVariableText(ptText: 'Moram Comigo', enText: 'People on the property'), style: FlutterFlowTheme.of(context).headlineMedium.override( fontFamily: 'Nunito', color: FlutterFlowTheme.of(context).primaryText, @@ -72,114 +124,103 @@ class _PeopleOnThePropertyPageWidgetState letterSpacing: 0.0, fontWeight: FontWeight.bold, useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'), - ), - ), - actions: const [], - centerTitle: true, - elevation: 0.0, + )), + leading: _backButton(context, FlutterFlowTheme.of(context)), + centerTitle: true, + elevation: 0.0, + actions: [], + ); + } + + Widget _backButton(BuildContext context, FlutterFlowTheme theme) { + return FlutterFlowIconButton( + borderColor: Colors.transparent, + borderRadius: 30.0, + borderWidth: 1.0, + buttonSize: 60.0, + icon: Icon( + Icons.keyboard_arrow_left, + color: theme.primaryText, + size: 30.0, ), - body: SafeArea( - top: true, - child: FutureBuilder( - future: PhpGroup.getPessoasLocalCall.call(), - builder: (context, snapshot) { - // Customize what your widget looks like when it's loading. - if (!snapshot.hasData) { - return Center( - child: SizedBox( - width: 50.0, - height: 50.0, - child: SpinKitCircle( - color: FlutterFlowTheme.of(context).primary, - size: 50.0, - ), - ), - ); - } + onPressed: () => Navigator.of(context).pop(), + ); + } - if (snapshot.hasError || snapshot.data?.exception != null) { - if (snapshot.error != null && snapshot.stackTrace != null) { - LogUtil.requestAPIFailed( - 'getPessoasLocal.php', - "", - 'Busca Pessoas no Local', - snapshot.error, - snapshot.stackTrace!); - } + Future _fetchVisits() async { + try { + setState(() => _loading = true); - return Center( - child: SizedBox( - width: double.infinity, - height: 100, - child: Text( - FFLocalizations.of(context).getVariableText( - ptText: "Pessoas não encontradas", - enText: "Persons not found"), - textAlign: TextAlign.center, - ), - ), - ); - } + var response = await PhpGroup.getResidentsByProperty.call(_pageNumber.toString()); - final columnGetPessoasLocalResponse = snapshot.data!; - final getPoepleProperty = PhpGroup.getPessoasLocalCall - .pessoas( - columnGetPessoasLocalResponse.jsonBody, - ) - ?.toList() ?? - []; + final List pets = response.jsonBody['residents'] ?? []; + safeSetState(() => count = response.jsonBody['total_rows'] ?? 0); - return ListView.builder( - physics: const AlwaysScrollableScrollPhysics(), - shrinkWrap: true, - itemCount: getPoepleProperty.length, - itemBuilder: (context, index) { - final getPoeplePropertyItem = getPoepleProperty[index]; - return Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.all(4.0), - child: Container( - width: 50.0, - height: 50.0, - clipBehavior: Clip.antiAlias, - decoration: const BoxDecoration( - shape: BoxShape.circle, - ), - child: CachedNetworkImage( - fadeInDuration: const Duration(milliseconds: 500), - fadeOutDuration: const Duration(milliseconds: 500), - imageUrl: - 'https://storage.googleapis.com/flutterflow-io-6f20.appspot.com/projects/flutter-freaccess-hub-0xgz9q/assets/7ftdetkzc3s0/360_F_64676383_LdbmhiNM6Ypzb3FM4PPuFP9rHe7ri8Ju.jpg', - fit: BoxFit.cover, - ), - ), - ), - Text( - getJsonField( - getPoeplePropertyItem, - r'''$.USU_NOME''', - ).toString(), - style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, - fontSize: 14.0, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), - ), - ), - ] - .divide(const SizedBox(width: 20.0)) - .addToStart(const SizedBox(width: 40.0)), - ); - }, - ); - }, - ), + if (pets.isNotEmpty) { + setState(() { + _petsWrap.addAll(pets); + _hasData = true; + _loading = false; + }); + + return response; + } + + _showNoMoreDataSnackBar(context); + + setState(() { + _hasData = false; + _loading = false; + }); + + return null; + } catch (e, s) { + DialogUtil.errorDefault(context); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets", e, s); + setState(() { + _hasData = false; + _loading = false; + }); + } + return null; + } + + void _loadMore() { + if (_hasData == true) { + _pageNumber++; + + _petsFuture = _fetchVisits(); + } + } + + void _showNoMoreDataSnackBar(BuildContext context) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), + duration: const Duration(seconds: 3), + backgroundColor: FlutterFlowTheme.of(context).primary, ), ); } + + Widget _item(BuildContext context, dynamic uItem) { + return CardItemTemplateComponentWidget( + imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${StorageUtil().devUUID}&cliID=${StorageUtil().cliUUID}&atividade=getFoto&Documento=${uItem['documento']}&tipo=Z', + labelsHashMap: { + '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': uItem['nome'] ?? '', + //statusweb + '${FFLocalizations.of(context).getVariableText(ptText: "Status", enText: "Status")}:': uItem['statusweb'] == "A" + ? FFLocalizations.of(context).getVariableText( + ptText: 'Ativo', + enText: 'Active', + ) + : FFLocalizations.of(context).getVariableText( + ptText: 'Inativo', + enText: 'Inactive', + ), + }, + statusHashMap: [], + onTapCardItemAction: () async {}, + ); + } } diff --git a/lib/pages/pets_on_the_property_page/pets_history_screen.dart b/lib/pages/pets_on_the_property_page/pets_history_screen.dart new file mode 100644 index 00000000..95626cc2 --- /dev/null +++ b/lib/pages/pets_on_the_property_page/pets_history_screen.dart @@ -0,0 +1,309 @@ +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:hub/backend/api_requests/api_calls.dart'; +import 'package:hub/backend/api_requests/api_manager.dart'; +import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart'; +import 'package:hub/flutter_flow/flutter_flow_icon_button.dart'; +import 'package:hub/flutter_flow/flutter_flow_theme.dart'; + +import 'package:hub/flutter_flow/flutter_flow_util.dart'; +import 'package:hub/pages/pets_page/pets_page_model.dart'; + +import 'package:hub/shared/utils/dialog_util.dart'; +import 'package:hub/shared/utils/log_util.dart'; +import 'package:hub/shared/utils/storage_util.dart'; + +class PetsHistoryScreen extends StatefulWidget { + const PetsHistoryScreen({super.key, this.model}); + final PetsPageModel? model; + + @override + _PetsHistoryScreenState createState() => _PetsHistoryScreenState(); +} + +class _PetsHistoryScreenState extends State with TickerProviderStateMixin { + late ScrollController _scrollController; + + int _pageNumber = 1; + final int _pageSize = 10; + bool _hasData = false; + bool _loading = false; + int count = 0; + late final PetsPageModel model; + + late Future _petsFuture; + List _petsWrap = []; + + @override + void initState() { + super.initState(); + model = widget.model ?? createModel(context, () => PetsPageModel()); + _petsFuture = _fetchVisits(); + + _scrollController = ScrollController() + ..addListener(() { + if (_scrollController.position.atEdge && _scrollController.position.pixels != 0) { + _loadMore(); + } + }); + } + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => Scaffold( + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, + appBar: _appBar(context), + body: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + if (_hasData == false && _pageNumber <= 1 && _loading == false) + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Center( + child: Text(FFLocalizations.of(context).getVariableText(ptText: "Nenhum Pet encontrado!", enText: "No pets found")), + ) + ], + ), + ) + else if (_hasData == true || _pageNumber >= 1) + Expanded( + child: FutureBuilder( + future: _petsFuture, + builder: (context, snapshot) { + return ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + controller: _scrollController, + itemCount: _petsWrap.length + 1, + itemBuilder: (context, index) { + if (index == 0) { + // Add your item here + return Padding( + padding: const EdgeInsets.only(right: 30, top: 10), + child: Text( + model.petAmountRegister == '0' ? FFLocalizations.of(context).getVariableText(ptText: "Ilimitado", enText: "Unlimited") : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}$count/${model.petAmountRegister}", + textAlign: TextAlign.right, + ), + ); + } else { + final item = _petsWrap[index - 1]; + return _item(context, item); + } + }); + }, + )), + if (_hasData == true && _loading == true) + Container( + padding: const EdgeInsets.only(top: 15, bottom: 15), + child: Center( + child: CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation( + FlutterFlowTheme.of(context).primary, + ), + ), + ), + ) + ].addToStart(const SizedBox(height: 0)), + ), + ); + + PreferredSizeWidget _appBar(BuildContext context) { + return AppBar( + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, + automaticallyImplyLeading: false, + title: Text(FFLocalizations.of(context).getVariableText(enText: 'My Pets', ptText: 'Meus Pets'), + style: FlutterFlowTheme.of(context).headlineMedium.override( + fontFamily: 'Nunito', + color: FlutterFlowTheme.of(context).primaryText, + fontSize: 15.0, + letterSpacing: 0.0, + fontWeight: FontWeight.bold, + useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'), + )), + leading: _backButton(context, FlutterFlowTheme.of(context)), + centerTitle: true, + elevation: 0.0, + actions: [], + ); + } + + Widget _backButton(BuildContext context, FlutterFlowTheme theme) { + return FlutterFlowIconButton( + borderColor: Colors.transparent, + borderRadius: 30.0, + borderWidth: 1.0, + buttonSize: 60.0, + icon: Icon( + Icons.keyboard_arrow_left, + color: theme.primaryText, + size: 30.0, + ), + onPressed: () => Navigator.of(context).pop(), + ); + } + + Future _fetchVisits() async { + try { + setState(() => _loading = true); + + var response = await PhpGroup.getPets.call( + pageSize: _pageSize, + page: _pageNumber, + ); + + final List pets = response.jsonBody['pets']['list'] ?? []; + safeSetState(() => count = response.jsonBody['pets']['count'] ?? 0); + + if (pets.isNotEmpty) { + setState(() { + _petsWrap.addAll(pets); + _hasData = true; + _loading = false; + }); + + return response; + } + + _showNoMoreDataSnackBar(context); + + setState(() { + _hasData = false; + _loading = false; + }); + + return null; + } catch (e, s) { + DialogUtil.errorDefault(context); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets", e, s); + setState(() { + _hasData = false; + _loading = false; + }); + } + return null; + } + + void _loadMore() { + if (_hasData == true) { + _pageNumber++; + + _petsFuture = _fetchVisits(); + } + } + + void _showNoMoreDataSnackBar(BuildContext context) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), + duration: const Duration(seconds: 3), + backgroundColor: FlutterFlowTheme.of(context).primary, + ), + ); + } + + Widget _item(BuildContext context, dynamic uItem) { + return CardItemTemplateComponentWidget( + imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${model.devUUID}&userUUID=${model.userUUID}&cliID=${model.cliUUID}&atividade=consultaFotoPet&petId=${uItem['id'] ?? ''}', + labelsHashMap: { + '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': uItem['name'] ?? '', + '${FFLocalizations.of(context).getVariableText(ptText: "Espécie", enText: "Species")}:': uItem['species'] ?? '', + '${FFLocalizations.of(context).getVariableText(ptText: "Raça", enText: "Breed")}:': uItem['breed'] ?? '', + }, + statusHashMap: [ + if (uItem['size'] == "MIN") + { + FFLocalizations.of(context).getVariableText( + ptText: 'Mini', + enText: 'Mini', + ): FlutterFlowTheme.of(context).accent4, + }, + if (uItem['size'] == "PEQ") + { + FFLocalizations.of(context).getVariableText( + ptText: 'Pequeno', + enText: 'Small', + ): FlutterFlowTheme.of(context).accent4, + }, + if (uItem['size'] == "MED") + { + FFLocalizations.of(context).getVariableText( + ptText: 'Medio', + enText: 'Medium', + ): FlutterFlowTheme.of(context).accent4, + }, + if (uItem['size'] == "GRA") + { + FFLocalizations.of(context).getVariableText( + ptText: 'Grande', + enText: 'Big', + ): FlutterFlowTheme.of(context).accent4, + }, + if (uItem['size'] == "GIG") + { + FFLocalizations.of(context).getVariableText( + ptText: 'Gigante', + enText: 'Giant', + ): FlutterFlowTheme.of(context).accent4, + }, + if (uItem['gender'] == "MAC") + { + FFLocalizations.of(context).getVariableText(ptText: 'Macho', enText: 'Male'): const Color(0xFF094CB0), + }, + if (uItem['gender'] == "FEM") + { + FFLocalizations.of(context).getVariableText( + ptText: 'Femêa', + enText: 'Female', + ): const Color(0xFFE463E7), + } + ], + onTapCardItemAction: () async { + final cliUUID = StorageUtil().cliUUID; + final cliName = StorageUtil().cliName; + final devUUID = StorageUtil().devUUID; + final userUUID = StorageUtil().userUUID; + await showDialog( + useSafeArea: true, + context: context, + builder: (context) { + return Dialog( + alignment: Alignment.center, + child: model.buildPetDetails( + item: uItem, + context: context, + devUUID: devUUID, + userUUID: userUUID, + cliUUID: cliUUID, + cliName: cliName, + model: model, + isInteractive: false, + ), + ); + }, + ).whenComplete(() { + safeSetState(() { + _pageNumber = 1; + _petsWrap = []; + _petsFuture = _fetchVisits().then((value) => value!.jsonBody['pets'] ?? []); + }); + }).catchError((e, s) { + DialogUtil.errorDefault(context); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets", e, s); + safeSetState(() { + _hasData = false; + _loading = false; + }); + }); + }, + ); + } +} diff --git a/lib/pages/pets_page/pets_history_screen.dart b/lib/pages/pets_page/pets_history_screen.dart deleted file mode 100644 index a1d9cdf0..00000000 --- a/lib/pages/pets_page/pets_history_screen.dart +++ /dev/null @@ -1,284 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:hub/backend/api_requests/api_calls.dart'; -import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart'; -import 'package:hub/flutter_flow/flutter_flow_theme.dart'; -import 'package:hub/flutter_flow/flutter_flow_util.dart'; -import 'package:hub/pages/pets_page/pets_page_model.dart'; -import 'package:hub/shared/utils/dialog_util.dart'; -import 'package:hub/shared/utils/log_util.dart'; -import 'package:hub/shared/utils/storage_util.dart'; - -class PetsHistoryScreen extends StatefulWidget { - const PetsHistoryScreen({super.key, required this.model}); - - final PetsPageModel model; - - @override - _PetsHistoryScreenState createState() => _PetsHistoryScreenState(); -} - -class _PetsHistoryScreenState extends State - with TickerProviderStateMixin { - late ScrollController _scrollController; - - int _pageNumber = 1; - final int _pageSize = 10; - bool _hasData = false; - bool _loading = false; - int count = 0; - - late Future _petsFuture; - List _petsWrap = []; - - @override - void initState() { - super.initState(); - - _petsFuture = _fetchVisits(); - - _scrollController = ScrollController() - ..addListener(() { - if (_scrollController.position.atEdge && - _scrollController.position.pixels != 0) { - _loadMore(); - } - }); - } - - @override - void dispose() { - _scrollController.dispose(); - super.dispose(); - } - - Future _fetchVisits() async { - try { - setState(() => _loading = true); - - var response = await PhpGroup.getPets.call( - pageSize: _pageSize, - page: _pageNumber, - ); - - final List pets = response.jsonBody['pets']['list'] ?? []; - safeSetState(() => count = response.jsonBody['pets']['count'] ?? 0); - - if (pets.isNotEmpty) { - setState(() { - _petsWrap.addAll(pets); - _hasData = true; - _loading = false; - }); - - return response; - } - - _showNoMoreDataSnackBar(context); - - setState(() { - _hasData = false; - _loading = false; - }); - - return null; - } catch (e, s) { - DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed( - "proccessRequest.php", "", "Consulta de Pets", e, s); - setState(() { - _hasData = false; - _loading = false; - }); - } - return null; - } - - void _loadMore() { - if (_hasData == true) { - _pageNumber++; - - _petsFuture = _fetchVisits(); - } - } - - void _showNoMoreDataSnackBar(BuildContext context) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text( - FFLocalizations.of(context).getVariableText( - ptText: "Não há mais dados.", enText: "No more data."), - ), - duration: const Duration(seconds: 3), - backgroundColor: FlutterFlowTheme.of(context).primary, - ), - ); - } - - @override - Widget build(BuildContext context) { - return Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - if (_hasData == false && _pageNumber <= 1 && _loading == false) - Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - children: [ - Center( - child: Text(FFLocalizations.of(context).getVariableText( - ptText: "Nenhum Pet encontrado!", - enText: "No pets found")), - ) - ], - ), - ) - else if (_hasData == true || _pageNumber >= 1) - Expanded( - child: FutureBuilder( - future: _petsFuture, - builder: (context, snapshot) { - return ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - controller: _scrollController, - itemCount: _petsWrap.length + 1, - itemBuilder: (context, index) { - if (index == 0) { - // Add your item here - return Padding( - padding: const EdgeInsets.only(right: 30, top: 10), - child: Text( - widget.model.petAmountRegister == '0' - ? FFLocalizations.of(context).getVariableText( - ptText: "Ilimitado", enText: "Unlimited") - : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}$count/${widget.model.petAmountRegister}", - textAlign: TextAlign.right, - ), - ); - } else { - final item = _petsWrap[index - 1]; - return _item(context, item); - } - }); - }, - )), - if (_hasData == true && _loading == true) - Container( - padding: const EdgeInsets.only(top: 15, bottom: 15), - child: Center( - child: CircularProgressIndicator( - valueColor: AlwaysStoppedAnimation( - FlutterFlowTheme.of(context).primary, - ), - ), - ), - ) - ].addToStart(const SizedBox(height: 0)), - ); - } - - Widget _item(BuildContext context, dynamic uItem) { - return CardItemTemplateComponentWidget( - imagePath: - 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${widget.model.devUUID}&userUUID=${widget.model.userUUID}&cliID=${widget.model.cliUUID}&atividade=consultaFotoPet&petId=${uItem['id'] ?? ''}', - labelsHashMap: { - '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': - uItem['name'] ?? '', - '${FFLocalizations.of(context).getVariableText(ptText: "Espécie", enText: "Species")}:': - uItem['species'] ?? '', - '${FFLocalizations.of(context).getVariableText(ptText: "Raça", enText: "Breed")}:': - uItem['breed'] ?? '', - }, - statusHashMap: [ - if (uItem['size'] == "MIN") - { - FFLocalizations.of(context).getVariableText( - ptText: 'Mini', - enText: 'Mini', - ): FlutterFlowTheme.of(context).accent4, - }, - if (uItem['size'] == "PEQ") - { - FFLocalizations.of(context).getVariableText( - ptText: 'Pequeno', - enText: 'Small', - ): FlutterFlowTheme.of(context).accent4, - }, - if (uItem['size'] == "MED") - { - FFLocalizations.of(context).getVariableText( - ptText: 'Medio', - enText: 'Medium', - ): FlutterFlowTheme.of(context).accent4, - }, - if (uItem['size'] == "GRA") - { - FFLocalizations.of(context).getVariableText( - ptText: 'Grande', - enText: 'Big', - ): FlutterFlowTheme.of(context).accent4, - }, - if (uItem['size'] == "GIG") - { - FFLocalizations.of(context).getVariableText( - ptText: 'Gigante', - enText: 'Giant', - ): FlutterFlowTheme.of(context).accent4, - }, - if (uItem['gender'] == "MAC") - { - FFLocalizations.of(context).getVariableText( - ptText: 'Macho', enText: 'Male'): const Color(0xFF094CB0), - }, - if (uItem['gender'] == "FEM") - { - FFLocalizations.of(context).getVariableText( - ptText: 'Femêa', - enText: 'Female', - ): const Color(0xFFE463E7), - } - ], - onTapCardItemAction: () async { - final cliUUID = StorageUtil().cliUUID; - final cliName = StorageUtil().cliName; - final devUUID = StorageUtil().devUUID; - final userUUID = StorageUtil().userUUID; - await showDialog( - useSafeArea: true, - context: context, - builder: (context) { - return Dialog( - alignment: Alignment.center, - child: widget.model.buildPetDetails( - item: uItem, - context: context, - devUUID: devUUID, - userUUID: userUUID, - cliUUID: cliUUID, - cliName: cliName, - model: widget.model, - ), - ); - }, - ).whenComplete(() { - safeSetState(() { - _pageNumber = 1; - _petsWrap = []; - _petsFuture = - _fetchVisits().then((value) => value!.jsonBody['pets'] ?? []); - }); - }).catchError((e, s) { - DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed( - "proccessRequest.php", "", "Consulta de Pets", e, s); - safeSetState(() { - _hasData = false; - _loading = false; - }); - }); - }, - ); - } -} diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index 958c5f09..3ea09c9f 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -18,6 +18,11 @@ import 'package:hub/shared/utils/storage_util.dart'; import 'package:hub/shared/utils/validator_util.dart'; class PetsPageModel extends FlutterFlowModel { + static PetsPageModel? _instance = PetsPageModel._internal(); + PetsPageModel._internal(); + factory PetsPageModel() => _instance ?? PetsPageModel._internal(); + static void resetInstance() => _instance = null; + late final String devUUID; late final String userUUID; late final String cliUUID; @@ -100,17 +105,9 @@ class PetsPageModel extends FlutterFlowModel { TextEditingController? textControllerObservation; String? Function(BuildContext, String?)? textControllerObservationValidator; - Future initAsync() async { - devUUID = StorageUtil().devUUID; - userUUID = StorageUtil().userUUID; - cliUUID = StorageUtil().cliUUID; - petAmountRegister = StorageUtil().petAmountRegister.toString(); - - safeSetState?.call(); - } - @override void initState(BuildContext context) { + resetInstance(); tabBarController = TabController( vsync: Navigator.of(context), length: 2, @@ -134,67 +131,13 @@ class PetsPageModel extends FlutterFlowModel { textFieldFocusObservation = FocusNode(); textControllerObservation = TextEditingController(); - dropDownValueController1 = - FormFieldController(dropDownValue1 ??= 'Selecione uma opção'); + dropDownValueController1 = FormFieldController(dropDownValue1 ??= 'Selecione uma opção'); - dropDownValueController2 = - FormFieldController(dropDownValue2 ??= 'Selecione uma opção'); + dropDownValueController2 = FormFieldController(dropDownValue2 ??= 'Selecione uma opção'); initAsync(); } - void setEditForm() { - log('item: $item'); - - if (item != null) petId = item['id']; - - // updateImage!(); - (() async { - Response response = await get(Uri.parse( - 'https://freaccess.com.br/freaccess/getImage.php?devUUID=$devUUID&userUUID=$userUUID&cliID=$cliUUID&atividade=consultaFotoPet&petId=$petId')); - String base64 = base64Encode(response.bodyBytes); - uploadedTempFile = await ImageUtils.convertToUploadFile(base64); - updateImage?.call(); - })(); - - textControllerName = - TextEditingController(text: item != null ? item['name'] ?? '' : ''); - textFieldFocusName = FocusNode(); - - textControllerSpecies = - TextEditingController(text: item != null ? item['species'] ?? '' : ''); - textFieldFocusSpecies = FocusNode(); - - textControllerRace = - TextEditingController(text: item != null ? item['breed'] ?? '' : ''); - textFieldFocusRace = FocusNode(); - - textControllerColor = - TextEditingController(text: item != null ? item['color'] ?? '' : ''); - textFieldFocusColor = FocusNode(); - - textControllerData = TextEditingController( - text: item != null - ? item['birthdayDate'] != null - ? ValidatorUtil.formatDateTimePicker(item['birthdayDate']) - : '' - : ''); - - textFieldFocusData = FocusNode(); - - textControllerObservation = - TextEditingController(text: item != null ? item['notes'] ?? '' : ''); - textFieldFocusObservation = FocusNode(); - - item != null ? dropDownValue1 = item['gender'] ?? '' : dropDownValue1 = ''; - - item != null ? dropDownValue2 = item['size'] ?? '' : dropDownValue2 = ''; - - dropDownValueController1 = FormFieldController(dropDownValue1); - - dropDownValueController2 = FormFieldController(dropDownValue2); - } - @override void dispose() { tabBarController.dispose(); @@ -221,31 +164,79 @@ class PetsPageModel extends FlutterFlowModel { dropDownValueController2?.dispose(); } + Future initAsync() async { + devUUID = StorageUtil().devUUID; + userUUID = StorageUtil().userUUID; + cliUUID = StorageUtil().cliUUID; + petAmountRegister = StorageUtil().petAmountRegister.toString(); + + safeSetState?.call(); + } + + void setEditForm() { + log('item: $item'); + + if (item != null) petId = item['id']; + + // updateImage!(); + (() async { + Response response = await get(Uri.parse('https://freaccess.com.br/freaccess/getImage.php?devUUID=$devUUID&userUUID=$userUUID&cliID=$cliUUID&atividade=consultaFotoPet&petId=$petId')); + String base64 = base64Encode(response.bodyBytes); + uploadedTempFile = await ImageUtils.convertToUploadFile(base64); + updateImage?.call(); + })(); + + textControllerName = TextEditingController(text: item != null ? item['name'] ?? '' : ''); + textFieldFocusName = FocusNode(); + + textControllerSpecies = TextEditingController(text: item != null ? item['species'] ?? '' : ''); + textFieldFocusSpecies = FocusNode(); + + textControllerRace = TextEditingController(text: item != null ? item['breed'] ?? '' : ''); + textFieldFocusRace = FocusNode(); + + textControllerColor = TextEditingController(text: item != null ? item['color'] ?? '' : ''); + textFieldFocusColor = FocusNode(); + + textControllerData = TextEditingController( + text: item != null + ? item['birthdayDate'] != null + ? ValidatorUtil.formatDateTimePicker(item['birthdayDate']) + : '' + : ''); + + textFieldFocusData = FocusNode(); + + textControllerObservation = TextEditingController(text: item != null ? item['notes'] ?? '' : ''); + textFieldFocusObservation = FocusNode(); + + item != null ? dropDownValue1 = item['gender'] ?? '' : dropDownValue1 = ''; + + item != null ? dropDownValue2 = item['size'] ?? '' : dropDownValue2 = ''; + + dropDownValueController1 = FormFieldController(dropDownValue1); + + dropDownValueController2 = FormFieldController(dropDownValue2); + } + bool isFormValid(BuildContext context) { if (uploadedLocalFile == null || uploadedLocalFile!.bytes!.isEmpty) { return false; } - if (textControllerName.text.isEmpty || - textControllerName.text.length > 80 || - textControllerName.text == '') { + if (textControllerName!.text.isEmpty || textControllerName!.text.length > 80 || textControllerName!.text == '') { return false; } - if (textControllerSpecies.text.isEmpty || - textControllerSpecies.text == '') { + if (textControllerSpecies!.text.isEmpty || textControllerSpecies!.text == '') { return false; } - if (textControllerRace.text.isEmpty || textControllerRace.text == '') { + if (textControllerRace!.text.isEmpty || textControllerRace!.text == '') { return false; } - if (dropDownValue1 == null || - dropDownValue1!.isEmpty || - dropDownValue1 == '') { + if (dropDownValue1 == null || dropDownValue1!.isEmpty || dropDownValue1 == '') { return false; } - if (dropDownValue2 == null || - dropDownValue2!.isEmpty || - dropDownValue2 == '') { + if (dropDownValue2 == null || dropDownValue2!.isEmpty || dropDownValue2 == '') { return false; } return true; @@ -254,8 +245,7 @@ class PetsPageModel extends FlutterFlowModel { Future updatePet() async { var img = await ImageUtils.convertImageFileToBase64(uploadedLocalFile!); img = "base64;jpeg,$img"; - final url = - 'https://freaccess.com.br/freaccess/getImage.php?devUUID=$devUUID&userUUID=$userUUID&cliID=$cliUUID&atividade=consultaFotoPet&petId=$petId'; + final url = 'https://freaccess.com.br/freaccess/getImage.php?devUUID=$devUUID&userUUID=$userUUID&cliID=$cliUUID&atividade=consultaFotoPet&petId=$petId'; final response = await PhpGroup.updatePet.call( petID: petId, image: img, @@ -284,8 +274,7 @@ class PetsPageModel extends FlutterFlowModel { } else { String errorMessage; try { - errorMessage = - jsonDecode(response.jsonBody['error_msg'])[0]['message'].toString(); + errorMessage = jsonDecode(response.jsonBody['error_msg'])[0]['message'].toString(); } catch (e) { errorMessage = FFLocalizations.of(buildContext!).getVariableText( enText: 'Failed to update pet', @@ -323,11 +312,9 @@ class PetsPageModel extends FlutterFlowModel { } else { String errorMessage; try { - errorMessage = - jsonDecode(response.jsonBody['error_msg'])[0]['message'].toString(); + errorMessage = jsonDecode(response.jsonBody['error_msg'])[0]['message'].toString(); } catch (e) { - if (response.jsonBody['error_msg'] == - "Limite de Cadastro de Pet Atingido.") { + if (response.jsonBody['error_msg'] == "Limite de Cadastro de Pet Atingido.") { errorMessage = FFLocalizations.of(buildContext!).getVariableText( enText: 'Pet registration limit reached', ptText: 'Limite de cadastro de pets atingido', @@ -388,162 +375,142 @@ class PetsPageModel extends FlutterFlowModel { required String cliUUID, required String cliName, required PetsPageModel model, + bool isInteractive = true, }) { return DetailsComponentWidget( buttons: [ // EDIT ACTION - FFButtonWidget( - text: FFLocalizations.of(context).getVariableText( - ptText: 'Editar', - enText: 'Edit', - ), - icon: const Icon(Icons.edit), - onPressed: () async { - context.pop(); + if (isInteractive) + FFButtonWidget( + text: FFLocalizations.of(context).getVariableText( + ptText: 'Editar', + enText: 'Edit', + ), + icon: const Icon(Icons.edit), + onPressed: () async { + context.pop(); - model.isEditing = true; - model.item = item; - model.switchTab(0); - model.setEditForm(); - // model.safeSetState!(); - }, - options: FFButtonOptions( - width: 130, - height: 40, - color: FlutterFlowTheme.of(context).primaryBackground, - elevation: 0, - textStyle: TextStyle( - color: FlutterFlowTheme.of(context).primaryText, - ), - borderSide: BorderSide( + model.isEditing = true; + model.item = item; + model.switchTab(0); + model.setEditForm(); + // model.safeSetState!(); + }, + options: FFButtonOptions( + width: 130, + height: 40, color: FlutterFlowTheme.of(context).primaryBackground, - width: 1, + elevation: 0, + textStyle: TextStyle( + color: FlutterFlowTheme.of(context).primaryText, + ), + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).primaryBackground, + width: 1, + ), + // borderRadius: 12, ), - // borderRadius: 12, ), - ), // DELETE ACTION - FFButtonWidget( - text: FFLocalizations.of(context).getVariableText( - ptText: 'Excluir', - enText: 'Delete', - ), - icon: const Icon(Icons.close), - onPressed: () async { - showAlertDialog( - context, - FFLocalizations.of(context).getVariableText( - ptText: 'Excluir Pet', - enText: 'Delete Pet', - ), - FFLocalizations.of(context).getVariableText( - ptText: 'Você tem certeza que deseja excluir esse pet?', - enText: 'Are you sure you want to delete this pet?', - ), () async { - int id = item['id']; - await PhpGroup.deletePet - .call( - petID: id, - ) - .then((value) { - // Navigator.pop(context, value); - context.pop(value); - context.pop(value); + if (isInteractive) + FFButtonWidget( + text: FFLocalizations.of(context).getVariableText( + ptText: 'Excluir', + enText: 'Delete', + ), + icon: const Icon(Icons.close), + onPressed: () async { + showAlertDialog( + context, + FFLocalizations.of(context).getVariableText( + ptText: 'Excluir Pet', + enText: 'Delete Pet', + ), + FFLocalizations.of(context).getVariableText( + ptText: 'Você tem certeza que deseja excluir esse pet?', + enText: 'Are you sure you want to delete this pet?', + ), () async { + int id = item['id']; + await PhpGroup.deletePet + .call( + petID: id, + ) + .then((value) { + // Navigator.pop(context, value); + context.pop(value); + context.pop(value); - if (value == false) { + if (value == false) { + showSnackbar( + context, + FFLocalizations.of(context).getVariableText( + ptText: 'Erro ao excluir pet', + enText: 'Error deleting pet', + ), + true, + ); + } else if (value == true) { + showSnackbar( + context, + FFLocalizations.of(context).getVariableText( + enText: 'Success deleting pet', + ptText: 'Succeso ao excluir pet', + ), + false, + ); + } + }).catchError((err, stack) { + context.pop(); showSnackbar( context, FFLocalizations.of(context).getVariableText( - ptText: 'Erro ao excluir pet', enText: 'Error deleting pet', + ptText: 'Erro ao excluir pet', ), true, ); - } else if (value == true) { - showSnackbar( - context, - FFLocalizations.of(context).getVariableText( - enText: 'Success deleting pet', - ptText: 'Succeso ao excluir pet', - ), - false, - ); - } - }).catchError((err, stack) { - context.pop(); - showSnackbar( - context, - FFLocalizations.of(context).getVariableText( - enText: 'Error deleting pet', - ptText: 'Erro ao excluir pet', - ), - true, - ); + }); }); - }); - }, - options: FFButtonOptions( - width: 130, - height: 40, - color: FlutterFlowTheme.of(context).primaryBackground, - elevation: 0, - textStyle: TextStyle( - color: FlutterFlowTheme.of(context).primaryText, - ), - borderSide: BorderSide( + }, + options: FFButtonOptions( + width: 130, + height: 40, color: FlutterFlowTheme.of(context).primaryBackground, - width: 1, + elevation: 0, + textStyle: TextStyle( + color: FlutterFlowTheme.of(context).primaryText, + ), + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).primaryBackground, + width: 1, + ), + // borderRadius: 12, ), - // borderRadius: 12, ), - ), ], // 'MIN', 'PEQ', 'MED', 'GRA', 'GIG' labelsHashMap: Map.from({ - if (item['species'] != null && item['species'] != '') - '${FFLocalizations.of(context).getVariableText(ptText: "Espécie", enText: "Species")}:': - item['species'].toString().toUpperCase(), - if (item['breed'] != null && item['breed'] != '') - '${FFLocalizations.of(context).getVariableText(ptText: "Raça", enText: "Breed")}:': - item['breed'].toString().toUpperCase(), - if (item['color'] != null && item['color'] != '') - '${FFLocalizations.of(context).getVariableText(ptText: "Cor", enText: "Color")}:': - item['color'].toString().toUpperCase(), - if (item['birthdayDate'] != null && item['birthdayDate'] != '') - '${FFLocalizations.of(context).getVariableText(ptText: "Data de Nascimento", enText: "Date of Birth")}:': - ValidatorUtil.formatDateTimePicker(item['birthdayDate']), - if (item['gender'] != null && item['gender'] != '') - '${FFLocalizations.of(context).getVariableText(ptText: "Gênero", enText: "Gender")}:': - item['gender'] == 'MAC' - ? FFLocalizations.of(context) - .getVariableText(ptText: 'MACHO', enText: 'MALE') - : FFLocalizations.of(context) - .getVariableText(enText: 'FEMALE', ptText: 'FÊMEA'), + if (item['species'] != null && item['species'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Espécie", enText: "Species")}:': item['species'].toString().toUpperCase(), + if (item['breed'] != null && item['breed'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Raça", enText: "Breed")}:': item['breed'].toString().toUpperCase(), + if (item['color'] != null && item['color'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Cor", enText: "Color")}:': item['color'].toString().toUpperCase(), + if (item['birthdayDate'] != null && item['birthdayDate'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Data de Nascimento", enText: "Date of Birth")}:': ValidatorUtil.formatDateTimePicker(item['birthdayDate']), + if (item['gender'] != null && item['gender'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Gênero", enText: "Gender")}:': item['gender'] == 'MAC' ? FFLocalizations.of(context).getVariableText(ptText: 'MACHO', enText: 'MALE') : FFLocalizations.of(context).getVariableText(enText: 'FEMALE', ptText: 'FÊMEA'), if (item['size'] != null && item['size'] != '') - '${FFLocalizations.of(context).getVariableText(ptText: "Porte", enText: "Size")}:': - item['size'] == 'MIN' - ? FFLocalizations.of(context) - .getVariableText(ptText: 'MINI', enText: 'MINI') - : item['size'] == 'PEQ' - ? FFLocalizations.of(context) - .getVariableText(ptText: 'PEQUENO', enText: 'SMALL') - : item['size'] == 'MED' - ? FFLocalizations.of(context).getVariableText( - ptText: 'MÉDIO', enText: 'MEDIUM') - : item['size'] == 'GRD' - ? FFLocalizations.of(context).getVariableText( - ptText: 'GRANDE', enText: 'LARGE') - : item['size'] == 'GIG' - ? FFLocalizations.of(context).getVariableText( - ptText: 'GIGANTE', enText: 'GIANT') - : '', - if (item['notes'] != null && item['notes'] != '') - '${FFLocalizations.of(context).getVariableText(ptText: "Observação", enText: "Notes")}:': - item['notes'] ?? '', + '${FFLocalizations.of(context).getVariableText(ptText: "Porte", enText: "Size")}:': item['size'] == 'MIN' + ? FFLocalizations.of(context).getVariableText(ptText: 'MINI', enText: 'MINI') + : item['size'] == 'PEQ' + ? FFLocalizations.of(context).getVariableText(ptText: 'PEQUENO', enText: 'SMALL') + : item['size'] == 'MED' + ? FFLocalizations.of(context).getVariableText(ptText: 'MÉDIO', enText: 'MEDIUM') + : item['size'] == 'GRD' + ? FFLocalizations.of(context).getVariableText(ptText: 'GRANDE', enText: 'LARGE') + : item['size'] == 'GIG' + ? FFLocalizations.of(context).getVariableText(ptText: 'GIGANTE', enText: 'GIANT') + : '', + if (item['notes'] != null && item['notes'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Observação", enText: "Notes")}:': item['notes'] ?? '', }), - imagePath: - 'https://freaccess.com.br/freaccess/getImage.php?devUUID=$devUUID&userUUID=$userUUID&cliID=$cliUUID&atividade=consultaFotoPet&petId=${item['id'] ?? ''}', + imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=$devUUID&userUUID=$userUUID&cliID=$cliUUID&atividade=consultaFotoPet&petId=${item['id'] ?? ''}', statusHashMap: [ if (item['gender'] == "MAC") Map.from({ diff --git a/lib/pages/pets_page/pets_page_widget.dart b/lib/pages/pets_page/pets_page_widget.dart index c965d7ef..21664cf9 100644 --- a/lib/pages/pets_page/pets_page_widget.dart +++ b/lib/pages/pets_page/pets_page_widget.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hub/components/atomic_components/shared_components_atoms/appbar.dart'; @@ -11,7 +10,7 @@ import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/form_field_controller.dart'; import 'package:hub/flutter_flow/nav/nav.dart'; -import 'package:hub/pages/pets_page/pets_history_screen.dart'; +import 'package:hub/pages/pets_on_the_property_page/pets_history_screen.dart'; import 'package:hub/pages/pets_page/pets_page_model.dart'; import 'package:material_symbols_icons/symbols.dart'; @@ -28,8 +27,7 @@ class PetsPageWidget extends StatefulWidget { State createState() => _PetsPageWidgetState(); } -class _PetsPageWidgetState extends State - with SingleTickerProviderStateMixin { +class _PetsPageWidgetState extends State with SingleTickerProviderStateMixin { late PetsPageModel _model; @override @@ -67,10 +65,7 @@ class _PetsPageWidgetState extends State Widget build(BuildContext context) { _model.buildContext = context; - return Scaffold( - appBar: _buildAppBar(context), - backgroundColor: FlutterFlowTheme.of(context).primaryBackground, - body: _buildTabView(context)); + return Scaffold(appBar: _buildAppBar(context), backgroundColor: FlutterFlowTheme.of(context).primaryBackground, body: _buildTabView(context)); } PreferredSizeWidget _buildAppBar(BuildContext context) { @@ -90,17 +85,10 @@ class _PetsPageWidgetState extends State return TabViewUtil( context: context, model: _model, - labelTab1: _model.isEditing - ? FFLocalizations.of(context) - .getVariableText(ptText: 'Editar', enText: 'Edit') - : FFLocalizations.of(context) - .getVariableText(ptText: 'Cadastrar', enText: 'Register'), - labelTab2: FFLocalizations.of(context) - .getVariableText(ptText: 'Consultar', enText: 'History'), + labelTab1: _model.isEditing ? FFLocalizations.of(context).getVariableText(ptText: 'Editar', enText: 'Edit') : FFLocalizations.of(context).getVariableText(ptText: 'Cadastrar', enText: 'Register'), + labelTab2: FFLocalizations.of(context).getVariableText(ptText: 'Consultar', enText: 'History'), controller: _model.tabBarController, - widget1: _model.isEditing - ? _buildEditForm(context) - : _buildRegisterForm(context), + widget1: _model.isEditing ? _buildEditForm(context) : _buildRegisterForm(context), widget2: PetsHistoryScreen(model: _model), onEditingChanged: onEditingChanged, ); @@ -124,8 +112,7 @@ class _PetsPageWidgetState extends State style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -133,437 +120,305 @@ class _PetsPageWidgetState extends State Form( key: _model.registerFormKey, autovalidateMode: AutovalidateMode.onUserInteraction, - child: Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Padding( - padding: const EdgeInsets.fromLTRB(0, 10, 0, 20), - child: MediaUploadButtonUtil( - onUploadComplete: _model.handleUploadComplete, - isUploading: _model.isDataUploading, - uploadedFiles: _model.uploadedLocalFile, - labelText: FFLocalizations.of(context).getVariableText( - ptText: 'Clique para adicionar a foto de seu Pet', - enText: 'Click to add your Pet\'s photo'), - ), - ), - CustomInputUtil( - controller: _model.textControllerName, - validator: _model.textControllerNameValidator - .asValidator(context), - focusNode: _model.textFieldFocusName, - labelText: FFLocalizations.of(context) - .getVariableText(ptText: 'Nome', enText: 'Name'), - hintText: FFLocalizations.of(context) - .getVariableText(ptText: 'Nome', enText: 'Name'), - suffixIcon: Symbols.format_color_text, - haveMaxLength: true, - onChanged: (value) => setState(() {}), - maxLength: 80, - ), - CustomInputUtil( - controller: _model.textControllerSpecies, - validator: _model.textControllerSpeciesValidator - .asValidator(context), - focusNode: _model.textFieldFocusSpecies, - labelText: FFLocalizations.of(context).getVariableText( - ptText: 'Espécie', enText: 'Species'), - hintText: FFLocalizations.of(context).getVariableText( - ptText: 'Ex: Cachorro, Gato, Papagaio', - enText: 'e.g. Dog, Cat, Parrot'), - suffixIcon: Symbols.sound_detection_dog_barking, - haveMaxLength: true, - onChanged: (value) => setState(() {}), - maxLength: 80, - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), - child: CustomInputUtil( - controller: _model.textControllerRace, - validator: _model.textControllerRaceValidator - .asValidator(context), - focusNode: _model.textFieldFocusRace, - labelText: FFLocalizations.of(context) - .getVariableText(ptText: 'Raça', enText: 'Race'), - hintText: FFLocalizations.of(context).getVariableText( - ptText: 'Ex: Labrador, Poodle, Siamês, Persa', - enText: 'e.g. Labrador, Poodle, Siamese, Persian'), - suffixIcon: Icons.pets_outlined, - haveMaxLength: true, - onChanged: (value) => setState(() {}), - maxLength: 80, - ), - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), - child: CustomInputUtil( - controller: _model.textControllerColor, - validator: _model.textControllerColorValidator - .asValidator(context), - focusNode: _model.textFieldFocusColor, - labelText: FFLocalizations.of(context) - .getVariableText(ptText: 'Cor', enText: 'Color'), - hintText: FFLocalizations.of(context).getVariableText( - ptText: 'Ex: Preto, Amarelo, Branco', - enText: 'e.g. Black, Yellow, White'), - suffixIcon: Symbols.palette, - haveMaxLength: true, - onChanged: (value) => setState(() {}), - maxLength: 80, - ), - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), - child: Row( - mainAxisSize: MainAxisSize.max, - children: [ - SizedBox( - width: MediaQuery.of(context).size.width, - height: 60.0, - child: Stack( - children: [ - Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), - child: TextFormField( - controller: _model.textControllerData, - focusNode: _model.textFieldFocusData, - cursorColor: - FlutterFlowTheme.of(context).primary, - readOnly: true, - autovalidateMode: - AutovalidateMode.onUserInteraction, - autofocus: false, - obscureText: false, - decoration: InputDecoration( - isDense: true, - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), - ), - hintText: FFLocalizations.of(context) - .getVariableText( - ptText: 'Data de Nascimento', - enText: 'Date of Birth', + child: Column(mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ + Padding( + padding: const EdgeInsets.fromLTRB(0, 10, 0, 20), + child: MediaUploadButtonUtil( + onUploadComplete: _model.handleUploadComplete, + isUploading: _model.isDataUploading, + uploadedFiles: _model.uploadedLocalFile, + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Clique para adicionar a foto de seu Pet', enText: 'Click to add your Pet\'s photo'), + ), + ), + CustomInputUtil( + controller: _model.textControllerName, + validator: _model.textControllerNameValidator.asValidator(context), + focusNode: _model.textFieldFocusName, + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Nome', enText: 'Name'), + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Nome', enText: 'Name'), + suffixIcon: Symbols.format_color_text, + haveMaxLength: true, + onChanged: (value) => setState(() {}), + maxLength: 80, + ), + CustomInputUtil( + controller: _model.textControllerSpecies, + validator: _model.textControllerSpeciesValidator.asValidator(context), + focusNode: _model.textFieldFocusSpecies, + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Espécie', enText: 'Species'), + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Ex: Cachorro, Gato, Papagaio', enText: 'e.g. Dog, Cat, Parrot'), + suffixIcon: Symbols.sound_detection_dog_barking, + haveMaxLength: true, + onChanged: (value) => setState(() {}), + maxLength: 80, + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), + child: CustomInputUtil( + controller: _model.textControllerRace, + validator: _model.textControllerRaceValidator.asValidator(context), + focusNode: _model.textFieldFocusRace, + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Raça', enText: 'Race'), + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Ex: Labrador, Poodle, Siamês, Persa', enText: 'e.g. Labrador, Poodle, Siamese, Persian'), + suffixIcon: Icons.pets_outlined, + haveMaxLength: true, + onChanged: (value) => setState(() {}), + maxLength: 80, + ), + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), + child: CustomInputUtil( + controller: _model.textControllerColor, + validator: _model.textControllerColorValidator.asValidator(context), + focusNode: _model.textFieldFocusColor, + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Cor', enText: 'Color'), + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Ex: Preto, Amarelo, Branco', enText: 'e.g. Black, Yellow, White'), + suffixIcon: Symbols.palette, + haveMaxLength: true, + onChanged: (value) => setState(() {}), + maxLength: 80, + ), + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + SizedBox( + width: MediaQuery.of(context).size.width, + height: 60.0, + child: Stack( + children: [ + Padding( + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), + child: TextFormField( + controller: _model.textControllerData, + focusNode: _model.textFieldFocusData, + cursorColor: FlutterFlowTheme.of(context).primary, + readOnly: true, + autovalidateMode: AutovalidateMode.onUserInteraction, + autofocus: false, + obscureText: false, + decoration: InputDecoration( + isDense: true, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), - lineHeight: 1.0, - ), - enabledBorder: OutlineInputBorder( - borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .customColor6, - width: 0.5, - ), - borderRadius: - BorderRadius.circular(10.0), - ), - focusedBorder: OutlineInputBorder( - borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .primary, - width: 0.5, - ), - borderRadius: - BorderRadius.circular(10.0), - ), - errorBorder: OutlineInputBorder( - borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .error, - width: 0.5, - ), - borderRadius: - BorderRadius.circular(10.0), - ), - focusedErrorBorder: OutlineInputBorder( - borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .error, - width: 0.5, - ), - borderRadius: - BorderRadius.circular(10.0), - ), - suffixIcon: Icon( - Icons.date_range, - color: FlutterFlowTheme.of(context) - .accent1, + hintText: FFLocalizations.of(context).getVariableText( + ptText: 'Data de Nascimento', + enText: 'Date of Birth', + ), + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + lineHeight: 1.0, ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).customColor6, + width: 0.5, ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .bodyMediumFamily, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), - lineHeight: 1.8, - ), - textAlign: TextAlign.start, - validator: _model - .textControllerDataValidator - .asValidator(context), + borderRadius: BorderRadius.circular(10.0), + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).primary, + width: 0.5, + ), + borderRadius: BorderRadius.circular(10.0), + ), + errorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).error, + width: 0.5, + ), + borderRadius: BorderRadius.circular(10.0), + ), + focusedErrorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).error, + width: 0.5, + ), + borderRadius: BorderRadius.circular(10.0), + ), + suffixIcon: Icon( + Icons.date_range, + color: FlutterFlowTheme.of(context).accent1, ), ), - Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), - child: InkWell( - splashColor: Colors.transparent, - focusColor: Colors.transparent, - hoverColor: Colors.transparent, - highlightColor: Colors.transparent, - onTap: () async { - final pickedDate = await showDatePicker( - context: context, - initialDate: getCurrentTimestamp, - firstDate: DateTime(1990), - lastDate: DateTime.now(), - builder: (context, child) { - return wrapInMaterialDatePickerTheme( - context, - child!, - headerBackgroundColor: - FlutterFlowTheme.of(context) - .primary, - headerForegroundColor: - FlutterFlowTheme.of(context) - .info, - headerTextStyle: - FlutterFlowTheme.of(context) - .headlineLarge - .override( - fontFamily: FlutterFlowTheme - .of(context) - .headlineLargeFamily, - fontSize: 32.0, - letterSpacing: 0.0, - fontWeight: - FontWeight.w600, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .headlineLargeFamily), - ), - pickerBackgroundColor: - FlutterFlowTheme.of(context) - .primaryBackground, - pickerForegroundColor: - FlutterFlowTheme.of(context) - .primaryText, - selectedDateTimeBackgroundColor: - FlutterFlowTheme.of(context) - .primary, - selectedDateTimeForegroundColor: - FlutterFlowTheme.of(context) - .info, - actionButtonForegroundColor: - FlutterFlowTheme.of(context) - .primaryText, - iconSize: 24.0, - ); - }, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + lineHeight: 1.8, + ), + textAlign: TextAlign.start, + validator: _model.textControllerDataValidator.asValidator(context), + ), + ), + Padding( + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), + child: InkWell( + splashColor: Colors.transparent, + focusColor: Colors.transparent, + hoverColor: Colors.transparent, + highlightColor: Colors.transparent, + onTap: () async { + final pickedDate = await showDatePicker( + context: context, + initialDate: getCurrentTimestamp, + firstDate: DateTime(1990), + lastDate: DateTime.now(), + builder: (context, child) { + return wrapInMaterialDatePickerTheme( + context, + child!, + headerBackgroundColor: FlutterFlowTheme.of(context).primary, + headerForegroundColor: FlutterFlowTheme.of(context).info, + headerTextStyle: FlutterFlowTheme.of(context).headlineLarge.override( + fontFamily: FlutterFlowTheme.of(context).headlineLargeFamily, + fontSize: 32.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w600, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), + ), + pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, + pickerForegroundColor: FlutterFlowTheme.of(context).primaryText, + selectedDateTimeBackgroundColor: FlutterFlowTheme.of(context).primary, + selectedDateTimeForegroundColor: FlutterFlowTheme.of(context).info, + actionButtonForegroundColor: FlutterFlowTheme.of(context).primaryText, + iconSize: 24.0, + ); + }, + ); + + if (pickedDate != null) { + setState(() { + _model.selectedDate = DateTime( + pickedDate.year, + pickedDate.month, + pickedDate.day, ); - if (pickedDate != null) { - setState(() { - _model.selectedDate = DateTime( - pickedDate.year, - pickedDate.month, - pickedDate.day, - ); - - _model.textControllerData = - TextEditingController( - text: dateTimeFormat( - 'dd/MM/yyyy', - _model.selectedDate, - locale: FFLocalizations.of(context) - .languageCode, - )); - _model.textControllerData?.selection = - TextSelection.collapsed( - offset: _model.textControllerData! - .text.length, - ); - }); - } - }, - child: Container( - width: double.infinity, - height: 80.0, - decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(10.0), - ), - ), + _model.textControllerData = TextEditingController( + text: dateTimeFormat( + 'dd/MM/yyyy', + _model.selectedDate, + locale: FFLocalizations.of(context).languageCode, + )); + _model.textControllerData?.selection = TextSelection.collapsed( + offset: _model.textControllerData!.text.length, + ); + }); + } + }, + child: Container( + width: double.infinity, + height: 80.0, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10.0), ), ), - ], + ), ), - ), - ], - ), - ), - Align( - alignment: const AlignmentDirectional(-1.0, 0.0), - child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0, 0.0, 15), - child: Text( - FFLocalizations.of(context).getVariableText( - ptText: 'Selecione as opções disponíveis', - enText: 'Select the available options', - ), - textAlign: TextAlign.start, - style: FlutterFlowTheme.of(context) - .bodySmall - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodySmallFamily, - letterSpacing: 0.0, - fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), - ), + ], ), ), - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), - child: CustomSelect( - options: const ['MAC', 'FEM'], - controller: _model.dropDownValueController1 ??= - FormFieldController( - _model.dropDownValue1 ??= ''), - isRequired: true, - changed: (val) => safeSetState(() { - _model.dropDownValue1 = val; - }), - dropDownValue: _model.dropDownValue1, - optionsLabel: [ - FFLocalizations.of(context).getVariableText( - ptText: 'Macho', enText: 'Male'), - FFLocalizations.of(context).getVariableText( - ptText: 'Fêmea', enText: 'Female') - ], - hintText: FFLocalizations.of(context).getVariableText( - ptText: 'Selecione o gênero do Pet', - enText: 'Select the gender of the Pet')), - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), - child: CustomSelect( - options: const ['MIN', 'PEQ', 'MED', 'GRA', 'GIG'], - controller: _model.dropDownValueController2 ??= - FormFieldController( - _model.dropDownValue2 ??= ''), - isRequired: true, - changed: (val) => safeSetState(() { - _model.dropDownValue2 = val; - }), - dropDownValue: _model.dropDownValue2, - optionsLabel: [ - FFLocalizations.of(context).getVariableText( - ptText: 'Mini', enText: 'Mini'), - FFLocalizations.of(context).getVariableText( - ptText: 'Pequeno', enText: 'Small'), - FFLocalizations.of(context).getVariableText( - ptText: 'Médio', enText: 'Medium'), - FFLocalizations.of(context).getVariableText( - ptText: 'Grande', enText: 'Big'), - FFLocalizations.of(context).getVariableText( - ptText: 'Gigante', enText: 'Giant'), - ], - hintText: FFLocalizations.of(context).getVariableText( - ptText: 'Selecione o porte do Pet', - enText: 'Select the size of the Pet')), - ), - Align( - alignment: const AlignmentDirectional(-1.0, 0.0), - child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0, 0.0, 15), - child: Text( - FFLocalizations.of(context).getVariableText( - ptText: - 'Você tem alguma observação sobre o seu Pet?', - enText: - 'Do you have any observations about your Pet?', - ), - textAlign: TextAlign.start, - style: FlutterFlowTheme.of(context) - .bodySmall - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodySmallFamily, - letterSpacing: 0.0, - fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), - ), - ), + ], + ), + ), + Align( + alignment: const AlignmentDirectional(-1.0, 0.0), + child: Padding( + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0, 0.0, 15), + child: Text( + FFLocalizations.of(context).getVariableText( + ptText: 'Selecione as opções disponíveis', + enText: 'Select the available options', ), + textAlign: TextAlign.start, + style: FlutterFlowTheme.of(context).bodySmall.override( + fontFamily: FlutterFlowTheme.of(context).bodySmallFamily, + letterSpacing: 0.0, + fontWeight: FontWeight.w600, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + ), ), - CustomInputUtil( - controller: _model.textControllerObservation, - validator: _model.textControllerObservationValidator - .asValidator(context), - focusNode: _model.textFieldFocusObservation, - labelText: FFLocalizations.of(context).getVariableText( - ptText: 'Escreva as suas observações aqui...', - enText: 'Write your observations here...'), - hintText: FFLocalizations.of(context).getVariableText( - ptText: 'Escreva as suas observações aqui...', - enText: 'Write your observations here...'), - suffixIcon: Icons.text_fields, - haveMaxLength: true, - onChanged: (value) => setState(() {}), - maxLength: 250, + ), + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), + child: CustomSelect( + options: const ['MAC', 'FEM'], + controller: _model.dropDownValueController1 ??= FormFieldController(_model.dropDownValue1 ??= ''), + isRequired: true, + changed: (val) => safeSetState(() { + _model.dropDownValue1 = val; + }), + dropDownValue: _model.dropDownValue1, + optionsLabel: [FFLocalizations.of(context).getVariableText(ptText: 'Macho', enText: 'Male'), FFLocalizations.of(context).getVariableText(ptText: 'Fêmea', enText: 'Female')], + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Selecione o gênero do Pet', enText: 'Select the gender of the Pet')), + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), + child: CustomSelect( + options: const ['MIN', 'PEQ', 'MED', 'GRA', 'GIG'], + controller: _model.dropDownValueController2 ??= FormFieldController(_model.dropDownValue2 ??= ''), + isRequired: true, + changed: (val) => safeSetState(() { + _model.dropDownValue2 = val; + }), + dropDownValue: _model.dropDownValue2, + optionsLabel: [ + FFLocalizations.of(context).getVariableText(ptText: 'Mini', enText: 'Mini'), + FFLocalizations.of(context).getVariableText(ptText: 'Pequeno', enText: 'Small'), + FFLocalizations.of(context).getVariableText(ptText: 'Médio', enText: 'Medium'), + FFLocalizations.of(context).getVariableText(ptText: 'Grande', enText: 'Big'), + FFLocalizations.of(context).getVariableText(ptText: 'Gigante', enText: 'Giant'), + ], + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Selecione o porte do Pet', enText: 'Select the size of the Pet')), + ), + Align( + alignment: const AlignmentDirectional(-1.0, 0.0), + child: Padding( + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0, 0.0, 15), + child: Text( + FFLocalizations.of(context).getVariableText( + ptText: 'Você tem alguma observação sobre o seu Pet?', + enText: 'Do you have any observations about your Pet?', + ), + textAlign: TextAlign.start, + style: FlutterFlowTheme.of(context).bodySmall.override( + fontFamily: FlutterFlowTheme.of(context).bodySmallFamily, + letterSpacing: 0.0, + fontWeight: FontWeight.w600, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + ), ), - Padding( - padding: const EdgeInsets.fromLTRB(70, 20, 70, 30), - child: SubmitButtonUtil( - labelText: FFLocalizations.of(context) - .getVariableText( - ptText: 'Cadastrar', enText: 'Register'), - onPressed: _model.isFormValid(context) - ? _model.registerPet - : null), - ), - ])), + ), + ), + CustomInputUtil( + controller: _model.textControllerObservation, + validator: _model.textControllerObservationValidator.asValidator(context), + focusNode: _model.textFieldFocusObservation, + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'), + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'), + suffixIcon: Icons.text_fields, + haveMaxLength: true, + onChanged: (value) => setState(() {}), + maxLength: 250, + ), + Padding( + padding: const EdgeInsets.fromLTRB(70, 20, 70, 30), + child: SubmitButtonUtil(labelText: FFLocalizations.of(context).getVariableText(ptText: 'Cadastrar', enText: 'Register'), onPressed: _model.isFormValid(context) ? _model.registerPet : null), + ), + ])), ], ), ); @@ -587,8 +442,7 @@ class _PetsPageWidgetState extends State style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -596,442 +450,308 @@ class _PetsPageWidgetState extends State Form( key: _model.updateFormKey, autovalidateMode: AutovalidateMode.onUserInteraction, - child: Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Padding( - padding: const EdgeInsets.fromLTRB(0, 10, 0, 20), - child: MediaUploadButtonUtil( - onUploadComplete: _model.handleUploadComplete, - isUploading: _model.isDataUploading, - uploadedFiles: _model.uploadedLocalFile, - labelText: FFLocalizations.of(context).getVariableText( - ptText: 'Clique para adicionar a foto de seu Pet', - enText: 'Click to add your Pet\'s photo'), - ), - ), - CustomInputUtil( - controller: _model.textControllerName, - validator: _model.textControllerNameValidator - .asValidator(context), - focusNode: _model.textFieldFocusName, - labelText: FFLocalizations.of(context) - .getVariableText(ptText: 'Nome', enText: 'Name'), - hintText: FFLocalizations.of(context) - .getVariableText(ptText: 'Nome', enText: 'Name'), - suffixIcon: Symbols.format_color_text, - haveMaxLength: true, - onChanged: (value) => setState(() {}), - maxLength: 80, - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), - child: CustomInputUtil( - controller: _model.textControllerSpecies, - validator: _model.textControllerSpeciesValidator - .asValidator(context), - focusNode: _model.textFieldFocusSpecies, - labelText: FFLocalizations.of(context).getVariableText( - ptText: 'Espécie', enText: 'Species'), - hintText: FFLocalizations.of(context).getVariableText( - ptText: 'Ex: Cachorro, Gato, Papagaio', - enText: 'e.g. Dog, Cat, Parrot'), - suffixIcon: Symbols.sound_detection_dog_barking, - haveMaxLength: true, - onChanged: (value) => setState(() {}), - maxLength: 80, - ), - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), - child: CustomInputUtil( - controller: _model.textControllerRace, - validator: _model.textControllerRaceValidator - .asValidator(context), - focusNode: _model.textFieldFocusRace, - labelText: FFLocalizations.of(context) - .getVariableText(ptText: 'Raça', enText: 'Race'), - hintText: FFLocalizations.of(context).getVariableText( - ptText: 'Ex: Labrador, Poodle, Siamês, Persa', - enText: 'e.g. Labrador, Poodle, Siamese, Persian'), - suffixIcon: Icons.pets_outlined, - haveMaxLength: true, - onChanged: (value) => setState(() {}), - maxLength: 80, - ), - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), - child: CustomInputUtil( - controller: _model.textControllerColor, - validator: _model.textControllerColorValidator - .asValidator(context), - focusNode: _model.textFieldFocusColor, - labelText: FFLocalizations.of(context) - .getVariableText(ptText: 'Cor', enText: 'Color'), - hintText: FFLocalizations.of(context).getVariableText( - ptText: 'Ex: Preto, Amarelo, Branco', - enText: 'e.g. Black, Yellow, White'), - suffixIcon: Symbols.palette, - haveMaxLength: true, - onChanged: (value) => setState(() {}), - maxLength: 80, - ), - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), - child: Row( - mainAxisSize: MainAxisSize.max, - children: [ - SizedBox( - width: MediaQuery.of(context).size.width, - height: 60.0, - child: Stack( - children: [ - Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), - child: TextFormField( - controller: _model.textControllerData, - focusNode: _model.textFieldFocusData, - cursorColor: - FlutterFlowTheme.of(context).primary, - readOnly: true, - autovalidateMode: - AutovalidateMode.onUserInteraction, - autofocus: false, - obscureText: false, - decoration: InputDecoration( - isDense: true, - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), - ), - hintText: FFLocalizations.of(context) - .getVariableText( - ptText: 'Data de Nascimento', - enText: 'Date of Birth', + child: Column(mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ + Padding( + padding: const EdgeInsets.fromLTRB(0, 10, 0, 20), + child: MediaUploadButtonUtil( + onUploadComplete: _model.handleUploadComplete, + isUploading: _model.isDataUploading, + uploadedFiles: _model.uploadedLocalFile, + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Clique para adicionar a foto de seu Pet', enText: 'Click to add your Pet\'s photo'), + ), + ), + CustomInputUtil( + controller: _model.textControllerName, + validator: _model.textControllerNameValidator.asValidator(context), + focusNode: _model.textFieldFocusName, + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Nome', enText: 'Name'), + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Nome', enText: 'Name'), + suffixIcon: Symbols.format_color_text, + haveMaxLength: true, + onChanged: (value) => setState(() {}), + maxLength: 80, + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), + child: CustomInputUtil( + controller: _model.textControllerSpecies, + validator: _model.textControllerSpeciesValidator.asValidator(context), + focusNode: _model.textFieldFocusSpecies, + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Espécie', enText: 'Species'), + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Ex: Cachorro, Gato, Papagaio', enText: 'e.g. Dog, Cat, Parrot'), + suffixIcon: Symbols.sound_detection_dog_barking, + haveMaxLength: true, + onChanged: (value) => setState(() {}), + maxLength: 80, + ), + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), + child: CustomInputUtil( + controller: _model.textControllerRace, + validator: _model.textControllerRaceValidator.asValidator(context), + focusNode: _model.textFieldFocusRace, + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Raça', enText: 'Race'), + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Ex: Labrador, Poodle, Siamês, Persa', enText: 'e.g. Labrador, Poodle, Siamese, Persian'), + suffixIcon: Icons.pets_outlined, + haveMaxLength: true, + onChanged: (value) => setState(() {}), + maxLength: 80, + ), + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), + child: CustomInputUtil( + controller: _model.textControllerColor, + validator: _model.textControllerColorValidator.asValidator(context), + focusNode: _model.textFieldFocusColor, + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Cor', enText: 'Color'), + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Ex: Preto, Amarelo, Branco', enText: 'e.g. Black, Yellow, White'), + suffixIcon: Symbols.palette, + haveMaxLength: true, + onChanged: (value) => setState(() {}), + maxLength: 80, + ), + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + SizedBox( + width: MediaQuery.of(context).size.width, + height: 60.0, + child: Stack( + children: [ + Padding( + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), + child: TextFormField( + controller: _model.textControllerData, + focusNode: _model.textFieldFocusData, + cursorColor: FlutterFlowTheme.of(context).primary, + readOnly: true, + autovalidateMode: AutovalidateMode.onUserInteraction, + autofocus: false, + obscureText: false, + decoration: InputDecoration( + isDense: true, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), - lineHeight: 1.0, - ), - enabledBorder: OutlineInputBorder( - borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .customColor6, - width: 0.5, - ), - borderRadius: - BorderRadius.circular(10.0), - ), - focusedBorder: OutlineInputBorder( - borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .primary, - width: 0.5, - ), - borderRadius: - BorderRadius.circular(10.0), - ), - errorBorder: OutlineInputBorder( - borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .error, - width: 0.5, - ), - borderRadius: - BorderRadius.circular(10.0), - ), - focusedErrorBorder: OutlineInputBorder( - borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .error, - width: 0.5, - ), - borderRadius: - BorderRadius.circular(10.0), - ), - suffixIcon: Icon( - Icons.date_range, - color: FlutterFlowTheme.of(context) - .accent1, + hintText: FFLocalizations.of(context).getVariableText( + ptText: 'Data de Nascimento', + enText: 'Date of Birth', + ), + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + lineHeight: 1.0, ), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).customColor6, + width: 0.5, ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .bodyMediumFamily, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), - lineHeight: 1.8, - ), - textAlign: TextAlign.start, - validator: _model - .textControllerDataValidator - .asValidator(context), + borderRadius: BorderRadius.circular(10.0), + ), + focusedBorder: OutlineInputBorder( + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).primary, + width: 0.5, + ), + borderRadius: BorderRadius.circular(10.0), + ), + errorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).error, + width: 0.5, + ), + borderRadius: BorderRadius.circular(10.0), + ), + focusedErrorBorder: OutlineInputBorder( + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).error, + width: 0.5, + ), + borderRadius: BorderRadius.circular(10.0), + ), + suffixIcon: Icon( + Icons.date_range, + color: FlutterFlowTheme.of(context).accent1, ), ), - Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), - child: InkWell( - splashColor: Colors.transparent, - focusColor: Colors.transparent, - hoverColor: Colors.transparent, - highlightColor: Colors.transparent, - onTap: () async { - final pickedDate = await showDatePicker( - context: context, - initialDate: DateFormat('dd/MM/yyyy') - .tryParse( - _model.textControllerData.text), - firstDate: DateTime(1990), - lastDate: DateTime.now(), - builder: (context, child) { - return wrapInMaterialDatePickerTheme( - context, - child!, - headerBackgroundColor: - FlutterFlowTheme.of(context) - .primary, - headerForegroundColor: - FlutterFlowTheme.of(context) - .info, - headerTextStyle: - FlutterFlowTheme.of(context) - .headlineLarge - .override( - fontFamily: FlutterFlowTheme - .of(context) - .headlineLargeFamily, - fontSize: 32.0, - letterSpacing: 0.0, - fontWeight: - FontWeight.w600, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .headlineLargeFamily), - ), - pickerBackgroundColor: - FlutterFlowTheme.of(context) - .primaryBackground, - pickerForegroundColor: - FlutterFlowTheme.of(context) - .primaryText, - selectedDateTimeBackgroundColor: - FlutterFlowTheme.of(context) - .primary, - selectedDateTimeForegroundColor: - FlutterFlowTheme.of(context) - .info, - actionButtonForegroundColor: - FlutterFlowTheme.of(context) - .primaryText, - iconSize: 24.0, - ); - }, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + lineHeight: 1.8, + ), + textAlign: TextAlign.start, + validator: _model.textControllerDataValidator.asValidator(context), + ), + ), + Padding( + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), + child: InkWell( + splashColor: Colors.transparent, + focusColor: Colors.transparent, + hoverColor: Colors.transparent, + highlightColor: Colors.transparent, + onTap: () async { + final pickedDate = await showDatePicker( + context: context, + initialDate: DateFormat('dd/MM/yyyy').tryParse(_model.textControllerData.text), + firstDate: DateTime(1990), + lastDate: DateTime.now(), + builder: (context, child) { + return wrapInMaterialDatePickerTheme( + context, + child!, + headerBackgroundColor: FlutterFlowTheme.of(context).primary, + headerForegroundColor: FlutterFlowTheme.of(context).info, + headerTextStyle: FlutterFlowTheme.of(context).headlineLarge.override( + fontFamily: FlutterFlowTheme.of(context).headlineLargeFamily, + fontSize: 32.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w600, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), + ), + pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, + pickerForegroundColor: FlutterFlowTheme.of(context).primaryText, + selectedDateTimeBackgroundColor: FlutterFlowTheme.of(context).primary, + selectedDateTimeForegroundColor: FlutterFlowTheme.of(context).info, + actionButtonForegroundColor: FlutterFlowTheme.of(context).primaryText, + iconSize: 24.0, + ); + }, + ); + + if (pickedDate != null) { + setState(() { + _model.selectedDate = DateTime( + pickedDate.year, + pickedDate.month, + pickedDate.day, ); - if (pickedDate != null) { - setState(() { - _model.selectedDate = DateTime( - pickedDate.year, - pickedDate.month, - pickedDate.day, - ); - - _model.textControllerData = - TextEditingController( - text: dateTimeFormat( - 'dd/MM/yyyy', - _model.selectedDate, - locale: FFLocalizations.of(context) - .languageCode, - )); - _model.textControllerData?.selection = - TextSelection.collapsed( - offset: _model.textControllerData! - .text.length, - ); - }); - } - }, - child: Container( - width: double.infinity, - height: 80.0, - decoration: BoxDecoration( - borderRadius: - BorderRadius.circular(10.0), - ), - ), + _model.textControllerData = TextEditingController( + text: dateTimeFormat( + 'dd/MM/yyyy', + _model.selectedDate, + locale: FFLocalizations.of(context).languageCode, + )); + _model.textControllerData?.selection = TextSelection.collapsed( + offset: _model.textControllerData!.text.length, + ); + }); + } + }, + child: Container( + width: double.infinity, + height: 80.0, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10.0), ), ), - ], + ), ), - ), - ], - ), - ), - Align( - alignment: const AlignmentDirectional(-1.0, 0.0), - child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0, 0.0, 15), - child: Text( - FFLocalizations.of(context).getVariableText( - ptText: 'Selecione as opções disponíveis', - enText: 'Select the available options', - ), - textAlign: TextAlign.start, - style: FlutterFlowTheme.of(context) - .bodySmall - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodySmallFamily, - letterSpacing: 0.0, - fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), - ), + ], ), ), - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), - child: CustomSelect( - options: const ['MAC', 'FEM'], - controller: _model.dropDownValueController1 ??= - FormFieldController( - _model.dropDownValue1 ??= ''), - isRequired: true, - changed: (val) => safeSetState(() { - _model.dropDownValue1 = val; - }), - dropDownValue: _model.dropDownValue1, - optionsLabel: [ - FFLocalizations.of(context).getVariableText( - ptText: 'Macho', enText: 'Male'), - FFLocalizations.of(context).getVariableText( - ptText: 'Fêmea', enText: 'Female') - ], - hintText: FFLocalizations.of(context).getVariableText( - ptText: 'Selecione o gênero do Pet', - enText: 'Select the gender of the Pet')), - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), - child: CustomSelect( - options: const ['MIN', 'PEQ', 'MED', 'GRA', 'GIG'], - controller: _model.dropDownValueController2 ??= - FormFieldController( - _model.dropDownValue2 ??= ''), - isRequired: true, - changed: (val) => safeSetState(() { - _model.dropDownValue2 = val; - }), - dropDownValue: _model.dropDownValue1, - optionsLabel: [ - FFLocalizations.of(context).getVariableText( - ptText: 'Mini', enText: 'Mini'), - FFLocalizations.of(context).getVariableText( - ptText: 'Pequeno', enText: 'Small'), - FFLocalizations.of(context).getVariableText( - ptText: 'Médio', enText: 'Medium'), - FFLocalizations.of(context).getVariableText( - ptText: 'Grande', enText: 'Big'), - FFLocalizations.of(context).getVariableText( - ptText: 'Gigante', enText: 'Giant'), - ], - hintText: FFLocalizations.of(context).getVariableText( - ptText: 'Selecione o porte do Pet', - enText: 'Select the size of the Pet')), - ), - Align( - alignment: const AlignmentDirectional(-1.0, 0.0), - child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0, 0.0, 15), - child: Text( - FFLocalizations.of(context).getVariableText( - ptText: - 'Você tem alguma observação sobre o seu Pet?', - enText: - 'Do you have any observations about your Pet?', - ), - textAlign: TextAlign.start, - style: FlutterFlowTheme.of(context) - .bodySmall - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodySmallFamily, - letterSpacing: 0.0, - fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), - ), - ), + ], + ), + ), + Align( + alignment: const AlignmentDirectional(-1.0, 0.0), + child: Padding( + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0, 0.0, 15), + child: Text( + FFLocalizations.of(context).getVariableText( + ptText: 'Selecione as opções disponíveis', + enText: 'Select the available options', ), + textAlign: TextAlign.start, + style: FlutterFlowTheme.of(context).bodySmall.override( + fontFamily: FlutterFlowTheme.of(context).bodySmallFamily, + letterSpacing: 0.0, + fontWeight: FontWeight.w600, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + ), ), - CustomInputUtil( - controller: _model.textControllerObservation, - validator: _model.textControllerObservationValidator - .asValidator(context), - focusNode: _model.textFieldFocusObservation, - labelText: FFLocalizations.of(context).getVariableText( - ptText: 'Escreva as suas observações aqui...', - enText: 'Write your observations here...'), - hintText: FFLocalizations.of(context).getVariableText( - ptText: 'Escreva as suas observações aqui...', - enText: 'Write your observations here...'), - suffixIcon: Icons.text_fields, - haveMaxLength: true, - maxLength: 250, - onChanged: (value) => setState(() {}), + ), + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), + child: CustomSelect( + options: const ['MAC', 'FEM'], + controller: _model.dropDownValueController1 ??= FormFieldController(_model.dropDownValue1 ??= ''), + isRequired: true, + changed: (val) => safeSetState(() { + _model.dropDownValue1 = val; + }), + dropDownValue: _model.dropDownValue1, + optionsLabel: [FFLocalizations.of(context).getVariableText(ptText: 'Macho', enText: 'Male'), FFLocalizations.of(context).getVariableText(ptText: 'Fêmea', enText: 'Female')], + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Selecione o gênero do Pet', enText: 'Select the gender of the Pet')), + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), + child: CustomSelect( + options: const ['MIN', 'PEQ', 'MED', 'GRA', 'GIG'], + controller: _model.dropDownValueController2 ??= FormFieldController(_model.dropDownValue2 ??= ''), + isRequired: true, + changed: (val) => safeSetState(() { + _model.dropDownValue2 = val; + }), + dropDownValue: _model.dropDownValue1, + optionsLabel: [ + FFLocalizations.of(context).getVariableText(ptText: 'Mini', enText: 'Mini'), + FFLocalizations.of(context).getVariableText(ptText: 'Pequeno', enText: 'Small'), + FFLocalizations.of(context).getVariableText(ptText: 'Médio', enText: 'Medium'), + FFLocalizations.of(context).getVariableText(ptText: 'Grande', enText: 'Big'), + FFLocalizations.of(context).getVariableText(ptText: 'Gigante', enText: 'Giant'), + ], + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Selecione o porte do Pet', enText: 'Select the size of the Pet')), + ), + Align( + alignment: const AlignmentDirectional(-1.0, 0.0), + child: Padding( + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0, 0.0, 15), + child: Text( + FFLocalizations.of(context).getVariableText( + ptText: 'Você tem alguma observação sobre o seu Pet?', + enText: 'Do you have any observations about your Pet?', + ), + textAlign: TextAlign.start, + style: FlutterFlowTheme.of(context).bodySmall.override( + fontFamily: FlutterFlowTheme.of(context).bodySmallFamily, + letterSpacing: 0.0, + fontWeight: FontWeight.w600, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + ), ), - Padding( - padding: const EdgeInsets.fromLTRB(70, 20, 70, 30), - child: SubmitButtonUtil( - labelText: FFLocalizations.of(context) - .getVariableText( - ptText: 'Salvar', enText: 'Save'), - onPressed: _model.isFormValid(context) - ? _model.updatePet - : null), - ), - ])), + ), + ), + CustomInputUtil( + controller: _model.textControllerObservation, + validator: _model.textControllerObservationValidator.asValidator(context), + focusNode: _model.textFieldFocusObservation, + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'), + hintText: FFLocalizations.of(context).getVariableText(ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'), + suffixIcon: Icons.text_fields, + haveMaxLength: true, + maxLength: 250, + onChanged: (value) => setState(() {}), + ), + Padding( + padding: const EdgeInsets.fromLTRB(70, 20, 70, 30), + child: SubmitButtonUtil(labelText: FFLocalizations.of(context).getVariableText(ptText: 'Salvar', enText: 'Save'), onPressed: _model.isFormValid(context) ? _model.updatePet : null), + ), + ])), ], ), ); diff --git a/lib/pages/reception_page/reception_page_widget.dart b/lib/pages/reception_page/reception_page_widget.dart index e5eca1f6..10529ad4 100644 --- a/lib/pages/reception_page/reception_page_widget.dart +++ b/lib/pages/reception_page/reception_page_widget.dart @@ -11,6 +11,7 @@ import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/flutter_flow_widgets.dart'; import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/pages/reception_page/reception_page_model.dart'; +import 'package:hub/shared/services/authentication/authentication_service.dart'; import 'package:hub/shared/services/localization/localization_service.dart'; import 'package:hub/shared/utils/storage_util.dart'; import 'package:provider/provider.dart'; @@ -23,7 +24,8 @@ class ReceptionPageWidget extends StatefulWidget { } class _ReceptionPageWidgetState extends State with WidgetsBindingObserver { - @override void initState() { + @override + void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); () async { @@ -35,13 +37,14 @@ class _ReceptionPageWidgetState extends State with WidgetsB LocalizationService.checkLocals(context); } - @override void dispose() { + @override + void dispose() { WidgetsBinding.instance.removeObserver(this); super.dispose(); } - - @override void didChangeAppLifecycleState(AppLifecycleState state) { + @override + void didChangeAppLifecycleState(AppLifecycleState state) { log('() => state: $state'); if (state == AppLifecycleState.resumed) { setState(() { @@ -68,46 +71,31 @@ class _ReceptionPageWidgetState extends State with WidgetsB Padding( padding: const EdgeInsets.fromLTRB(45, 0, 45, 15.0), child: Text( - FFLocalizations.of(context).getVariableText( - ptText: - 'Falta pouco para você utilizar o FRE Access Hub...', - enText: - 'You are close to using the FRE Access Hub...'), + FFLocalizations.of(context).getVariableText(ptText: 'Falta pouco para você utilizar o FRE Access Hub...', enText: 'You are close to using the FRE Access Hub...'), textAlign: TextAlign.center, - style: FlutterFlowTheme.of(context) - .displayLarge - .override( + style: FlutterFlowTheme.of(context).displayLarge.override( fontFamily: 'Plus Jakarta Sans', color: FlutterFlowTheme.of(context).accent1, fontSize: 20.0, letterSpacing: 0.0, fontWeight: FontWeight.w700, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), ), ), - const AtomImageSvgTheme( - filename: 'reception', width: 180, height: 180), + const AtomImageSvgTheme(filename: 'reception', width: 180, height: 180), Padding( padding: const EdgeInsets.fromLTRB(70, 30, 70.0, 60), child: Text( - FFLocalizations.of(context).getVariableText( - ptText: - 'Envie seu identificador para seu condomínio para vincularem sua conta aos nossos sistemas.', - enText: - 'Send your identifier to your condominium to link your account to our systems.'), + FFLocalizations.of(context).getVariableText(ptText: 'Envie seu identificador para seu condomínio para vincularem sua conta aos nossos sistemas.', enText: 'Send your identifier to your condominium to link your account to our systems.'), textAlign: TextAlign.center, - style: FlutterFlowTheme.of(context) - .displaySmall - .override( + style: FlutterFlowTheme.of(context).displaySmall.override( fontFamily: 'Nunito Sans', color: FlutterFlowTheme.of(context).primaryText, fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), ), ), @@ -118,48 +106,31 @@ class _ReceptionPageWidgetState extends State with WidgetsB Padding( padding: const EdgeInsets.fromLTRB(60, 0, 60, 10), child: Tooltip( - message: FFLocalizations.of(context).getVariableText( - ptText: - 'Seu identificador é utilizado para efetuar\no vínculo do seu APP com o condominio.', - enText: 'My Identifier'), - textStyle: FlutterFlowTheme.of(context) - .labelSmall - .override( + message: FFLocalizations.of(context).getVariableText(ptText: 'Seu identificador é utilizado para efetuar\no vínculo do seu APP com o condominio.', enText: 'My Identifier'), + textStyle: FlutterFlowTheme.of(context).labelSmall.override( fontFamily: 'Nunito Sans', - color: FlutterFlowTheme.of(context) - .secondaryText, + color: FlutterFlowTheme.of(context).secondaryText, fontSize: 10.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), child: FFButtonWidget( onPressed: () => model.getIdenfifier(context), - text: FFLocalizations.of(context) - .getVariableText( - ptText: 'Meu Identificador', - enText: 'My Identifier'), + text: FFLocalizations.of(context).getVariableText(ptText: 'Meu Identificador', enText: 'My Identifier'), options: FFButtonOptions( width: double.infinity, height: 44.0, - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), - iconPadding: - const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), color: FlutterFlowTheme.of(context).primary, - textStyle: FlutterFlowTheme.of(context) - .titleSmall - .override( + textStyle: FlutterFlowTheme.of(context).titleSmall.override( fontFamily: 'Nunito Sans', - color: - FlutterFlowTheme.of(context).info, + color: FlutterFlowTheme.of(context).info, fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), elevation: 3.0, borderSide: const BorderSide( @@ -177,44 +148,23 @@ class _ReceptionPageWidgetState extends State with WidgetsB child: FFButtonWidget( onPressed: () async { PhpGroup.unregisterDevice(); - - StorageUtil.purge(); + AuthenticationService.signOut(context); setState(() {}); - - context.go( - '/welcomePage', - extra: { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }, - ); }, - text: FFLocalizations.of(context).getVariableText( - ptText: 'Sair da Conta', enText: 'Logout'), + text: FFLocalizations.of(context).getVariableText(ptText: 'Sair da Conta', enText: 'Logout'), options: FFButtonOptions( width: double.infinity, height: 44.0, - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), - iconPadding: - const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), - color: - FlutterFlowTheme.of(context).customColor1, - textStyle: FlutterFlowTheme.of(context) - .titleSmall - .override( + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + color: FlutterFlowTheme.of(context).customColor1, + textStyle: FlutterFlowTheme.of(context).titleSmall.override( fontFamily: 'Nunito Sans', - color: FlutterFlowTheme.of(context) - .primaryBackground, + color: FlutterFlowTheme.of(context).primaryBackground, fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), elevation: 3.0, borderSide: const BorderSide( diff --git a/lib/pages/vehicles_on_the_property/vehicle_model.dart b/lib/pages/vehicles_on_the_property/vehicle_model.dart new file mode 100644 index 00000000..47672d20 --- /dev/null +++ b/lib/pages/vehicles_on_the_property/vehicle_model.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; +import 'package:hub/backend/api_requests/api_manager.dart'; +import 'package:hub/components/templates_components/details_component/details_component_widget.dart'; +import 'package:hub/flutter_flow/flutter_flow_model.dart'; +import 'package:hub/flutter_flow/flutter_flow_theme.dart'; +import 'package:hub/flutter_flow/internationalization.dart'; +import 'package:hub/pages/vehicles_on_the_property/vehicles_on_the_property.dart'; +import 'package:hub/shared/utils/storage_util.dart'; + +class VehicleModel extends FlutterFlowModel { + static VehicleModel? _instance = VehicleModel._internal(); + VehicleModel._internal(); + factory VehicleModel() => _instance ?? VehicleModel._internal(); + static void resetInstance() => _instance = null; + + dynamic item; + + final GlobalKey registerFormKey = GlobalKey(); + final GlobalKey updateFormKey = GlobalKey(); + + @override + void initState(BuildContext context) { + resetInstance(); + + initAsync(); + } + + @override + void dispose() {} + + Future initAsync() async {} + + Widget buildVehicleDetails({ + required dynamic item, + required BuildContext context, + required VehicleModel model, + }) { + return DetailsComponentWidget( + buttons: [], + labelsHashMap: Map.from({ + if (item['licensePlate'] != null && item['licensePlate'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Placa", enText: "License Plate")}:': item['licensePlate'].toString().toUpperCase(), + if (item['color'] != null && item['color'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Cor", enText: "Color")}:': item['color'].toString().toUpperCase(), + if (item['model'] != null && item['model'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Modelo", enText: "Model")}:': item['model'].toString().toUpperCase(), + if (item['tag'] != null && item['tag'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Tag", enText: "Tag")}:': item['tag'].toString().toUpperCase(), + if (item['personName'] != null && item['personName'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Proprietário", enText: "Owner")}:': item['personName'].toString().toUpperCase(), + }), + imagePath: 'https://freaccess.com.br/freaccess/Images/Clients/${StorageUtil().cliUUID}.png', + statusHashMap: [ + if (item['model'] != null) Map.from({item['model']: FlutterFlowTheme.of(context).primary}), + ], + ); + } +} diff --git a/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart b/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart new file mode 100644 index 00000000..3bfb5704 --- /dev/null +++ b/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart @@ -0,0 +1,245 @@ +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:hub/backend/api_requests/api_calls.dart'; +import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart'; +import 'package:hub/flutter_flow/flutter_flow_icon_button.dart'; +import 'package:hub/flutter_flow/flutter_flow_theme.dart'; +import 'package:hub/flutter_flow/flutter_flow_util.dart'; +import 'package:hub/pages/vehicles_on_the_property/vehicle_model.dart'; +import 'package:hub/shared/utils/dialog_util.dart'; +import 'package:hub/shared/utils/log_util.dart'; + +class VehicleOnTheProperty extends StatefulWidget { + const VehicleOnTheProperty({super.key}); + + @override + _VehicleOnThePropertyState createState() => _VehicleOnThePropertyState(); +} + +class _VehicleOnThePropertyState extends State with TickerProviderStateMixin { + late ScrollController _scrollController; + + int _pageNumber = 1; + bool _hasData = false; + bool _loading = false; + int count = 0; + late final VehicleModel model; + + late Future _petsFuture; + List _petsWrap = []; + + @override + void initState() { + super.initState(); + model = createModel(context, () => VehicleModel()); + _petsFuture = _fetchVisits(); + + _scrollController = ScrollController() + ..addListener(() { + if (_scrollController.position.atEdge && _scrollController.position.pixels != 0) { + _loadMore(); + } + }); + } + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => Scaffold( + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, + appBar: _appBar(context), + body: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + if (_hasData == false && _pageNumber <= 1 && _loading == false) + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Center( + child: Text(FFLocalizations.of(context).getVariableText(ptText: "Nenhum veículo encontrado!", enText: "No vehicle found")), + ) + ], + ), + ) + else if (_hasData == true || _pageNumber >= 1) + Expanded( + child: FutureBuilder( + future: _petsFuture, + builder: (context, snapshot) { + return ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + controller: _scrollController, + itemCount: _petsWrap.length + 1, + itemBuilder: (context, index) { + if (index == 0) { + // Add your item here + return Padding( + padding: const EdgeInsets.only(right: 30, top: 10), + child: Text( + // model.petAmountRegister == '0' ? FFLocalizations.of(context).getVariableText(ptText: "Ilimitado", enText: "Unlimited") : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}$count/${model.petAmountRegister}", + '', + textAlign: TextAlign.right, + ), + ); + } else { + final item = _petsWrap[index - 1]; + return _item(context, item); + } + }); + }, + )), + if (_hasData == true && _loading == true) + Container( + padding: const EdgeInsets.only(top: 15, bottom: 15), + child: Center( + child: CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation( + FlutterFlowTheme.of(context).primary, + ), + ), + ), + ) + ].addToStart(const SizedBox(height: 0)), + ), + ); + + PreferredSizeWidget _appBar(BuildContext context) { + return AppBar( + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, + automaticallyImplyLeading: false, + title: Text(FFLocalizations.of(context).getVariableText(enText: 'My Vehicles', ptText: 'Meus Veículos'), + style: FlutterFlowTheme.of(context).headlineMedium.override( + fontFamily: 'Nunito', + color: FlutterFlowTheme.of(context).primaryText, + fontSize: 15.0, + letterSpacing: 0.0, + fontWeight: FontWeight.bold, + useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'), + )), + leading: _backButton(context, FlutterFlowTheme.of(context)), + centerTitle: true, + elevation: 0.0, + actions: [], + ); + } + + Widget _backButton(BuildContext context, FlutterFlowTheme theme) { + return FlutterFlowIconButton( + borderColor: Colors.transparent, + borderRadius: 30.0, + borderWidth: 1.0, + buttonSize: 60.0, + icon: Icon( + Icons.keyboard_arrow_left, + color: theme.primaryText, + size: 30.0, + ), + onPressed: () => Navigator.of(context).pop(), + ); + } + + Future _fetchVisits() async { + try { + setState(() => _loading = true); + + var response = await PhpGroup.getVehiclesByProperty.call(_pageNumber.toString()); + + final List pets = response.jsonBody['vehicles'] ?? []; + safeSetState(() => count = response.jsonBody['total_rows'] ?? 0); + + if (pets.isNotEmpty) { + setState(() { + _petsWrap.addAll(pets); + _hasData = true; + _loading = false; + }); + + return response; + } + + _showNoMoreDataSnackBar(context); + + setState(() { + _hasData = false; + _loading = false; + }); + + return null; + } catch (e, s) { + DialogUtil.errorDefault(context); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets", e, s); + setState(() { + _hasData = false; + _loading = false; + }); + } + return null; + } + + void _loadMore() { + if (_hasData == true) { + _pageNumber++; + + _petsFuture = _fetchVisits(); + } + } + + void _showNoMoreDataSnackBar(BuildContext context) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), + duration: const Duration(seconds: 3), + backgroundColor: FlutterFlowTheme.of(context).primary, + ), + ); + } + + Widget _item(BuildContext context, dynamic uItem) { + return CardItemTemplateComponentWidget( + imagePath: '', + labelsHashMap: { + '${FFLocalizations.of(context).getVariableText(ptText: "Placa", enText: "License Plate")}:': uItem['licensePlate'] ?? '', + '${FFLocalizations.of(context).getVariableText(ptText: "Modelo", enText: "Model")}:': uItem['model'] ?? '', + '${FFLocalizations.of(context).getVariableText(ptText: "Tag", enText: "Tag")}:': uItem['tag'] ?? '', + }, + statusHashMap: [], + onTapCardItemAction: () async { + await showDialog( + useSafeArea: true, + context: context, + builder: (context) { + return Dialog( + alignment: Alignment.center, + child: model.buildVehicleDetails( + item: uItem, + context: context, + model: model, + ), + ); + }, + ).whenComplete(() { + safeSetState(() { + _pageNumber = 1; + _petsWrap = []; + _petsFuture = _fetchVisits().then((value) => value!.jsonBody['pets'] ?? []); + }); + }).catchError((e, s) { + DialogUtil.errorDefault(context); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets", e, s); + safeSetState(() { + _hasData = false; + _loading = false; + }); + }); + }, + ); + } +} diff --git a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart new file mode 100644 index 00000000..9c234488 --- /dev/null +++ b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart @@ -0,0 +1,248 @@ +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:hub/backend/api_requests/api_calls.dart'; +import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart'; +import 'package:hub/flutter_flow/flutter_flow_icon_button.dart'; +import 'package:hub/flutter_flow/flutter_flow_theme.dart'; +import 'package:hub/flutter_flow/flutter_flow_util.dart'; +import 'package:hub/pages/vehicles_on_the_property/vehicle_model.dart'; +import 'package:hub/shared/utils/dialog_util.dart'; +import 'package:hub/shared/utils/log_util.dart'; +import 'package:hub/shared/utils/storage_util.dart'; + +class VisitsOnTheProperty extends StatefulWidget { + const VisitsOnTheProperty({super.key}); + + @override + _VisitsOnThePropertyState createState() => _VisitsOnThePropertyState(); +} + +class _VisitsOnThePropertyState extends State with TickerProviderStateMixin { + late ScrollController _scrollController; + + int _pageNumber = 1; + bool _hasData = false; + bool _loading = false; + int count = 0; + late final VehicleModel model; + + late Future _visitsFuture; + List _visitsList = []; + + @override + void initState() { + super.initState(); + model = createModel(context, () => VehicleModel()); + _visitsFuture = _fetchVisits(); + + _scrollController = ScrollController() + ..addListener(() { + if (_scrollController.position.atEdge && _scrollController.position.pixels != 0) { + _loadMore(); + } + }); + } + + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => Scaffold( + appBar: _appBar(context), + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, + body: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + if (_hasData == false && _pageNumber <= 1 && _loading == false) + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Center( + child: Text(FFLocalizations.of(context).getVariableText(ptText: "Nenhuma visita em aberto encontrada!", enText: "No opened visits found")), + ) + ], + ), + ) + else if (_hasData == true || _pageNumber >= 1) + Expanded( + child: FutureBuilder( + future: _visitsFuture, + builder: (context, snapshot) { + return ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + controller: _scrollController, + itemCount: _visitsList.length + 1, + itemBuilder: (context, index) { + if (index == 0) { + // Add your item here + return Padding( + padding: const EdgeInsets.only(right: 30, top: 10), + child: Text( + // model.petAmountRegister == '0' ? FFLocalizations.of(context).getVariableText(ptText: "Ilimitado", enText: "Unlimited") : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}$count/${model.petAmountRegister}", + '', + textAlign: TextAlign.right, + ), + ); + } else { + final item = _visitsList[index - 1]; + return _item(context, item); + } + }); + }, + )), + if (_hasData == true && _loading == true) + Container( + padding: const EdgeInsets.only(top: 15, bottom: 15), + child: Center( + child: CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation( + FlutterFlowTheme.of(context).primary, + ), + ), + ), + ) + ].addToStart(const SizedBox(height: 0)), + ), + ); + + PreferredSizeWidget _appBar(BuildContext context) { + return AppBar( + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, + automaticallyImplyLeading: false, + title: Text(FFLocalizations.of(context).getVariableText(enText: 'Visitas em aberto', ptText: 'Opened visits'), + style: FlutterFlowTheme.of(context).headlineMedium.override( + fontFamily: 'Nunito', + color: FlutterFlowTheme.of(context).primaryText, + fontSize: 15.0, + letterSpacing: 0.0, + fontWeight: FontWeight.bold, + useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'), + )), + leading: _backButton(context, FlutterFlowTheme.of(context)), + centerTitle: true, + elevation: 0.0, + actions: [], + ); + } + + Widget _backButton(BuildContext context, FlutterFlowTheme theme) { + return FlutterFlowIconButton( + borderColor: Colors.transparent, + borderRadius: 30.0, + borderWidth: 1.0, + buttonSize: 60.0, + icon: Icon( + Icons.keyboard_arrow_left, + color: theme.primaryText, + size: 30.0, + ), + onPressed: () => Navigator.of(context).pop(), + ); + } + + Future _fetchVisits() async { + try { + setState(() => _loading = true); + + var response = await PhpGroup.getOpenedVisits.call(_pageNumber.toString()); + + final List pets = response.jsonBody['visitas'] ?? []; + safeSetState(() => count = response.jsonBody['total_rows'] ?? 0); + + if (pets.isNotEmpty) { + setState(() { + _visitsList.addAll(pets); + _hasData = true; + _loading = false; + }); + + return response; + } + + _showNoMoreDataSnackBar(context); + + setState(() { + _hasData = false; + _loading = false; + }); + + return null; + } catch (e, s) { + DialogUtil.errorDefault(context); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets", e, s); + setState(() { + _hasData = false; + _loading = false; + }); + } + return null; + } + + void _loadMore() { + if (_hasData == true) { + _pageNumber++; + + _visitsFuture = _fetchVisits(); + } + } + + void _showNoMoreDataSnackBar(BuildContext context) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), + duration: const Duration(seconds: 3), + backgroundColor: FlutterFlowTheme.of(context).primary, + ), + ); + } + + Widget _item(BuildContext context, dynamic uItem) { + return CardItemTemplateComponentWidget( + imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${StorageUtil().devUUID}&cliID=${StorageUtil().cliUUID}&atividade=getFoto&Documento=${uItem['VDO_DOCUMENTO']}&tipo=E', + labelsHashMap: { + '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': uItem['VTA_NOME'] ?? '', + '${FFLocalizations.of(context).getVariableText(ptText: "Validade", enText: "Valids")}:': uItem['VTA_VALIDADE'] ?? '', + '${FFLocalizations.of(context).getVariableText(ptText: "Entrada", enText: "Entrada")}:': uItem['VTA_DTINICIO'] ?? '', + if (uItem['VTA_DTFIM'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Saída", enText: "Exit")}:': uItem['VTA_DTFIM'] ?? '', + }, + statusHashMap: [ + if (uItem['VTA_UNICA'] == "N") + { + FFLocalizations.of(context).getVariableText( + ptText: 'Recorrente', + enText: 'Recurrent', + ): FlutterFlowTheme.of(context).warning, + }, + if (uItem['VTA_UNICA'] == "S") + { + FFLocalizations.of(context).getVariableText( + ptText: 'Única', + enText: 'Unique', + ): FlutterFlowTheme.of(context).success, + }, + if (uItem['VTA_DTFIM'] != '') + { + FFLocalizations.of(context).getVariableText( + ptText: 'Finalizada', + enText: 'Finished', + ): FlutterFlowTheme.of(context).success, + }, + if (uItem['VTA_DTFIM'] == '') + { + FFLocalizations.of(context).getVariableText( + ptText: 'Em aberto', + enText: 'Opened', + ): FlutterFlowTheme.of(context).warning, + }, + ], + onTapCardItemAction: () async {}, + ); + } +} diff --git a/lib/shared/helpers/sqlite_storage_helper.dart b/lib/shared/helpers/sqlite_storage_helper.dart index 402413ba..3deda5a5 100644 --- a/lib/shared/helpers/sqlite_storage_helper.dart +++ b/lib/shared/helpers/sqlite_storage_helper.dart @@ -143,27 +143,7 @@ class SQLiteStorageHelper implements Storage { log('Setting up local variables'); try { await _database?.transaction((txn) async { - final keys = [ - 'devUUID', - 'userUUID', - 'userDevUUID', - 'status', - 'userName', - 'cliUUID', - 'ownerUUID', - 'cliName', - 'petAmountRegister', - 'whatsapp', - 'provisional', - 'pets', - 'local', - 'notify', - 'fingerprint', - 'access', - 'panic', - 'person', - 'requestOSnotification' - ]; + final keys = ['devUUID', 'userUUID', 'userDevUUID', 'status', 'userName', 'cliUUID', 'ownerUUID', 'cliName', 'petAmountRegister', 'whatsapp', 'provisional', 'pets', 'local', 'notify', 'fingerprint', 'access', 'panic', 'person', 'requestOSnotification']; for (var key in keys) { log('Fetching value for key: $key'); @@ -220,8 +200,7 @@ class SQLiteStorageHelper implements Storage { } @override - Future set( - String key, dynamic value, Function(dynamic) cacheSetter) async { + Future set(String key, dynamic value, Function(dynamic) cacheSetter) async { log('Setting value for key: $key to $value'); CacheUtil().set(key, value); final db = await database; @@ -260,7 +239,6 @@ class SQLiteStorageHelper implements Storage { Future purge() async { log('Purging SQLite storage'); await deleteDatabaseDB(); - await database; log('Database purged'); } diff --git a/lib/shared/services/authentication/authentication_service.dart b/lib/shared/services/authentication/authentication_service.dart index 11821a73..07545d83 100644 --- a/lib/shared/services/authentication/authentication_service.dart +++ b/lib/shared/services/authentication/authentication_service.dart @@ -1,5 +1,3 @@ - - import 'package:flutter/material.dart'; import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/shared/utils/snackbar_util.dart'; @@ -13,9 +11,6 @@ import '../../utils/log_util.dart'; import '../../utils/storage_util.dart'; class AuthenticationService { - - - static Future login(BuildContext context) async { final GetLocalsCall callback = PhpGroup.getLocalsCall; @@ -35,10 +30,14 @@ class AuthenticationService { context.go('/homePage'); } StorageUtil().isLogged = true; - } - static Future signIn(BuildContext context, FlutterFlowModel model, {String? emailAdress, String? password,}) async { + static Future signIn( + BuildContext context, + FlutterFlowModel model, { + String? emailAdress, + String? password, + }) async { try { final ApiCallResponse? response; final LoginCall callback = PhpGroup.loginCall; @@ -84,8 +83,7 @@ class AuthenticationService { if (response.jsonBody['error'] == null) { DialogUtil.errorDefault(context); } else { - DialogUtil.error( - context, response.jsonBody['error_msg'].toString()); + DialogUtil.error(context, response.jsonBody['error_msg'].toString()); } } } @@ -93,12 +91,17 @@ class AuthenticationService { return; } catch (e, s) { DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed( - 'login.php', emailAdress.toString(), "Login", e, s); + LogUtil.requestAPIFailed('login.php', emailAdress.toString(), "Login", e, s); } } - static Future signUp(BuildContext context, {required String? name, String? passwd, required String? email, String? device,}) async { + static Future signUp( + BuildContext context, { + required String? name, + String? passwd, + required String? email, + String? device, + }) async { try { ApiCallResponse? response; if ((email != null && email != '') && (passwd != null && passwd != '' && passwd.length > 7) && (name != null && name != '')) { @@ -127,25 +130,24 @@ class AuthenticationService { } static Future signOut(BuildContext context) async { - await PhpGroup.unregisterDevice.call(); - final Map extra = { - kTransitionInfoKey: const TransitionInfo( - hasTransition: true, - transitionType: PageTransitionType.scale, - alignment: Alignment.bottomCenter, - ), - }; - await StorageUtil.purge(); - context.go( '/welcomePage', extra: extra); - } + await PhpGroup.unregisterDevice.call(); + await StorageUtil().purge(); + await StorageUtil().ensureInitialization(); + final Map extra = { + kTransitionInfoKey: const TransitionInfo( + hasTransition: true, + transitionType: PageTransitionType.scale, + alignment: Alignment.bottomCenter, + ), + }; + context.go('/welcomePage', extra: extra); + } static Future forgotPassword(BuildContext context, String email) async { try { final ApiCallResponse? response; final ForgotPasswordCall callback = PhpGroup.forgotPasswordCall; - final String message = FFLocalizations.of(context).getVariableText( - enText: "Send E-mail Successful!", - ptText: "E-mail Enviado com Sucesso!"); + final String message = FFLocalizations.of(context).getVariableText(enText: "Send E-mail Successful!", ptText: "E-mail Enviado com Sucesso!"); response = await callback.call(email: email); @@ -156,31 +158,28 @@ class AuthenticationService { } } catch (e, s) { DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed( - 'forgotPassword.php', email, "Forgot Password", e, s); + LogUtil.requestAPIFailed('forgotPassword.php', email, "Forgot Password", e, s); } } static Future changePassword(BuildContext context, String email, String password, String token) async { try { - final ApiCallResponse response = await PhpGroup.changePasswordCall.call(email: email, psswd: password, token: token); + final ApiCallResponse response = await PhpGroup.changePasswordCall.call(email: email, psswd: password, token: token); - if (response.jsonBody['error'] == false) { - final String message = FFLocalizations.of(context).getVariableText( - enText: "Password changed successfully!", - ptText: "Senha alterada com sucesso!", - ); - DialogUtil.success(context, message).then((_) => context.pop); - } else { - final String message = response.jsonBody['error_msg']; - DialogUtil.error(context, message); - } } catch (e, s) { + if (response.jsonBody['error'] == false) { + final String message = FFLocalizations.of(context).getVariableText( + enText: "Password changed successfully!", + ptText: "Senha alterada com sucesso!", + ); + DialogUtil.success(context, message).then((_) => context.pop); + } else { + final String message = response.jsonBody['error_msg']; + DialogUtil.error(context, message); + } + } catch (e, s) { DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed( - 'changePassword.php', email, "Change Password", e, s); + LogUtil.requestAPIFailed('changePassword.php', email, "Change Password", e, s); } - - } static Future deleteAccount(BuildContext context) async { @@ -199,7 +198,7 @@ class AuthenticationService { enText: 'Account deleted successfully', ptText: 'Conta deletada com sucesso', ); - StorageUtil.purge(); + StorageUtil().purge(); context.pop(); context.go('/welcomePage', extra: extra); } @@ -220,5 +219,4 @@ class AuthenticationService { SnackBarUtil.showSnackBar(context, content, isError: true); } } - -} \ No newline at end of file +} diff --git a/lib/shared/services/localization/localization_service.dart b/lib/shared/services/localization/localization_service.dart index 089e005b..aede3570 100644 --- a/lib/shared/services/localization/localization_service.dart +++ b/lib/shared/services/localization/localization_service.dart @@ -13,8 +13,6 @@ import '../../utils/snackbar_util.dart'; import '../authentication/authentication_service.dart'; class LocalizationService { - - static Future checkLocals(BuildContext context) async { try { final GetLocalsCall callback = PhpGroup.getLocalsCall; @@ -43,6 +41,7 @@ class LocalizationService { log(e.toString(), stackTrace: s); } } + static Future processLocals(BuildContext context) async { try { await StorageUtil().ensureInitialization(); @@ -87,12 +86,12 @@ class LocalizationService { } else if (isAvailable) { log('() => isAvailable'); return await processData(context); - } else { - if (!isUnique && !isActive) log('() => not unique and not active'); - if (!isUnique && isInactived) log('() => not unique and inactived'); - if (!isUnique && isPending) log('() => not unique and pending'); - if (!isUnique && isBlocked) log('() => not unique and blocked'); - log('() => else'); + } else { + if (!isUnique && !isActive) log('() => not unique and not active'); + if (!isUnique && isInactived) log('() => not unique and inactived'); + if (!isUnique && isPending) log('() => not unique and pending'); + if (!isUnique && isBlocked) log('() => not unique and blocked'); + log('() => else'); return await selectLocal(context); } } catch (e, s) { @@ -107,6 +106,7 @@ class LocalizationService { return false; } } + static Future processData(BuildContext context) async { try { await StorageUtil().ensureInitialization(); @@ -118,8 +118,7 @@ class LocalizationService { final String errorMsg = response.jsonBody['error_msg']; DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context)); return false; - } - else { + } else { _updateStorageUtil(response.jsonBody); return true; } @@ -134,6 +133,7 @@ class LocalizationService { return false; } } + static Future selectLocal(BuildContext context) async { return await showModalBottomSheet( isScrollControlled: true, @@ -152,6 +152,7 @@ class LocalizationService { ), ).then((_) async => await processData(context)); } + static Future unlinkLocal(BuildContext context) async { String content; try { @@ -196,11 +197,16 @@ class LocalizationService { } } - static void _handleError(BuildContext context, String errorMsg) { - AuthenticationService.signOut(context); + static void _handleError(BuildContext context, String errorMsg) async { + await StorageUtil().ensureInitialization(); + final bool isNotAuthenticated = StorageUtil().userUUID.isEmpty && StorageUtil().devUUID.isEmpty; + final bool isLinked = errorMsg.contains('Esse dispositivo nao pertence a esse usuario'); + log('() => isLinked: $errorMsg'); + if (isNotAuthenticated || isLinked) AuthenticationService.signOut(context); DialogUtil.error(context, errorMsg); LogUtil.requestAPIFailed('getLocals.php', '{devUUID: ${StorageUtil().devUUID}, cliUUID: ${StorageUtil().userUUID}}', 'Get Locals', errorMsg, StackTrace.current); } + static Future _handleUnavailable(BuildContext context, List locals) async { log('() => isUnavailable'); try { @@ -222,6 +228,7 @@ class LocalizationService { } return false; } + static Future _handleEnabled(BuildContext context, dynamic local) async { log('() => isEnabled'); StorageUtil().cliName = local['CLI_NOME']; @@ -237,24 +244,31 @@ class LocalizationService { log('() => CLU_STATUS: $status'); } } + static bool _isActive(List locals) { return locals.where((local) => local['CLU_STATUS'] == 'A').isNotEmpty; } + static bool _isInactived(List locals) { return locals.where((local) => local['CLI_ID'] != StorageUtil().cliUUID && local['CLU_STATUS'] == 'A').isNotEmpty; } + static bool _isPending(List locals) { return locals.where((local) => local['CLU_STATUS'] != 'B' && local['CLU_STATUS'] != 'A').isNotEmpty; } + static bool _isUnselected() { return StorageUtil().cliUUID.isEmpty && StorageUtil().cliName.isEmpty && StorageUtil().ownerUUID.isEmpty; } + static bool _isSelected(bool isInactived) { return StorageUtil().cliUUID.isNotEmpty && StorageUtil().cliName.isNotEmpty && isInactived; } + static bool _isAvailable() { return StorageUtil().cliUUID.isNotEmpty && StorageUtil().cliName.isNotEmpty; } + static void _updateStorageUtil(Map jsonBody) { StorageUtil().whatsapp = jsonBody['whatsapp'] ?? false; StorageUtil().provisional = jsonBody['provisional'] ?? false; @@ -262,6 +276,4 @@ class LocalizationService { StorageUtil().petAmountRegister = jsonBody['petAmountRegister'].toString().isEmpty ? '0' : jsonBody['petAmountRegister'].toString(); StorageUtil().userName = jsonBody['visitado']['VDO_NOME']; } - - -} \ No newline at end of file +} diff --git a/lib/shared/utils/storage_util.dart b/lib/shared/utils/storage_util.dart index 43839dfe..f59af57e 100644 --- a/lib/shared/utils/storage_util.dart +++ b/lib/shared/utils/storage_util.dart @@ -1,12 +1,10 @@ import 'dart:developer'; -import 'dart:ffi'; import 'package:flutter/material.dart'; import 'package:hub/shared/helpers/secure_storage_helper.dart'; import 'package:hub/shared/helpers/shared_preferences_storage_helper.dart'; import 'package:hub/shared/helpers/sqlite_storage_helper.dart'; import 'package:hub/shared/utils/cache_util.dart'; -import 'package:hub/shared/utils/dialog_util.dart'; import 'package:hub/shared/utils/log_util.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -53,8 +51,7 @@ class StorageUtil { await SecureStorageHelper().set(data.key, data.value, (v) {}); break; case StorageType.sharedPreferences: - await SharedPreferencesStorageHelper() - .set(data.key, data.value, (v) {}); + await SharedPreferencesStorageHelper().set(data.key, data.value, (v) {}); break; case StorageType.dbSQLite3: await SQLiteStorageHelper().set(data.key, data.value, (v) {}); @@ -109,10 +106,11 @@ class StorageUtil { } } - static Future purge() async { + Future purge() async { try { await SecureStorageHelper().purge(); await SQLiteStorageHelper().purge(); + _initialized = true; // await SharedPreferencesStorageHelper().purge(); } catch (e) { log('Error purging data: $e'); @@ -122,12 +120,13 @@ class StorageUtil { Future ensureInitialization() async { try { log('StorageUtil: Starting initialization'); - if(!_initialized) return true; - await initSharedPreferences(); + if (!_initialized) return true; + if (_initialized) await SharedPreferencesStorageHelper().initialize(); await initSecureStorage(); + await initSharedPreferences(); await initSQLiteStorage(); - if(_initialized) _initialized = false; - if(_initialized) return true; + if (_initialized) _initialized = false; + if (_initialized) return true; return false; } catch (e, s) { log('Error initializing storage: $e'); @@ -138,10 +137,9 @@ class StorageUtil { Future initSharedPreferences() async { try { - if(_initialized) _sharedPreferences = SharedPreferencesStorageHelper(); + if (_initialized) _sharedPreferences = SharedPreferencesStorageHelper(); _sharedPreferences.prefs ??= await SharedPreferences.getInstance(); - final bool milestone = - _sharedPreferences.prefs?.getBool('fre_isFirstRun') ?? true; + final bool milestone = _sharedPreferences.prefs?.getBool('fre_isFirstRun') ?? true; if (milestone) { isFirstRun = false; await _sharedPreferences.prefs?.setBool('fre_isFirstRun', false); @@ -153,15 +151,14 @@ class StorageUtil { } } catch (e, s) { log('SharedPreferencesStorageHelper: Error during initialization'); - LogUtil.requestAPIFailed( - '$UniqueKey', '$UniqueKey', 'SharedPreferencesStorageHelper', e, s); + LogUtil.requestAPIFailed('$UniqueKey', '$UniqueKey', 'SharedPreferencesStorageHelper', e, s); } } Future initSecureStorage() async { log('SecureStorageHelper: Starting initialization'); try { - if(_initialized) _secureStorage = SecureStorageHelper(); + if (_initialized) _secureStorage = SecureStorageHelper(); _email = await _secureStorage.getString('fre_email'); _passwd = await _secureStorage.getString('fre_passwd'); _deviceType = await _secureStorage.getString('fre_deviceType'); @@ -171,12 +168,10 @@ class StorageUtil { _panicPass = await _secureStorage.getString('fre_panicPass'); _fingerprintPass = await _secureStorage.getString('fre_fingerprintPass'); _haveLocal = await _secureStorage.getBool('fre_have_local') ?? false; - _deviceDescription = - await _secureStorage.getString('fre_deviceDescription'); + _deviceDescription = await _secureStorage.getString('fre_deviceDescription'); } catch (e, s) { log('SecureStorageHelper: Error during initialization: $e'); - LogUtil.requestAPIFailed( - '$UniqueKey', '$UniqueKey', 'SecureStorageHelper', e, s); + LogUtil.requestAPIFailed('$UniqueKey', '$UniqueKey', 'SecureStorageHelper', e, s); } log('SecureStorageHelper: Initialization complete'); } @@ -184,7 +179,7 @@ class StorageUtil { Future initSQLiteStorage() async { log('SQLiteStorageHelper: Starting initialization'); try { - if(_initialized) _sqliteStorage = SQLiteStorageHelper(); + if (_initialized) _sqliteStorage = SQLiteStorageHelper(); await _sqliteStorage.database; _devUUID = await _sqliteStorage.get('fre_devUUID') ?? ''; _userUUID = await _sqliteStorage.get('fre_userUUID') ?? ''; @@ -204,12 +199,10 @@ class StorageUtil { _access = await _sqliteStorage.getBoolean('fre_access'); _panic = await _sqliteStorage.getBoolean('fre_panic'); _person = await _sqliteStorage.getBoolean('fre_person'); - _requestOSnotification = - await _sqliteStorage.getBoolean('fre_requestOSnotification'); + _requestOSnotification = await _sqliteStorage.getBoolean('fre_requestOSnotification'); } catch (e, s) { log('SQLiteStorageHelper: Error during initialization: $e'); - LogUtil.requestAPIFailed( - '$UniqueKey', '$UniqueKey', 'SQLiteStorageHelper', e, s); + LogUtil.requestAPIFailed('$UniqueKey', '$UniqueKey', 'SQLiteStorageHelper', e, s); } log('SQLiteStorageHelper: Initialization complete'); } diff --git a/lib/shared/widgets/drawer_widget/drawer_widget.dart b/lib/shared/widgets/drawer_widget/drawer_widget.dart index 5636717f..0e43594b 100644 --- a/lib/shared/widgets/drawer_widget/drawer_widget.dart +++ b/lib/shared/widgets/drawer_widget/drawer_widget.dart @@ -1,12 +1,10 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; -import 'package:hub/backend/schema/enums/enums.dart'; +import 'package:hub/components/organism_components/menu_component/menu_component_widget.dart'; +import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/pages/home_page/home_page_model.dart'; -import '../../../components/organism_components/menu_component/menu_component_widget.dart'; -import '../../../flutter_flow/flutter_flow_theme.dart'; - class CustomDrawer extends StatelessWidget { const CustomDrawer({super.key, required this.model}); final HomePageModel model; @@ -64,11 +62,9 @@ class CustomDrawer extends StatelessWidget { height: 80.0, fit: BoxFit.cover, alignment: Alignment.center, - placeholder: (context, url) => - Image.asset('assets/images/person.jpg'), + placeholder: (context, url) => Image.asset('assets/images/person.jpg'), errorListener: (_) => Image.asset('assets/images/person.jpg'), - errorWidget: (_, __, ___) => - Image.asset('assets/images/person.jpg'), + errorWidget: (_, __, ___) => Image.asset('assets/images/person.jpg'), ), ), ), @@ -164,13 +160,9 @@ class CustomDrawer extends StatelessWidget { Widget _buildDrawerBody() { return wrapWithModel( - model: model.menuComponentModel, + model: model.drawerMenuComponentModel, updateCallback: () {}, - child: const MenuComponentWidget( - expandable: false, - style: MenuView.list, - item: MenuItem.tile, - ), + child: MenuComponentWidget(model: model.drawerMenuComponentModel), ); } } From 294fe2ffa2c4bfc772b14db9970a7eccb44c5eec Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Wed, 30 Oct 2024 14:53:37 -0300 Subject: [PATCH 02/33] WIP: some changes --- lib/pages/about_property_page/about_property_model.dart | 3 --- lib/pages/vehicles_on_the_property/vehicle_model.dart | 3 --- 2 files changed, 6 deletions(-) diff --git a/lib/pages/about_property_page/about_property_model.dart b/lib/pages/about_property_page/about_property_model.dart index 1af57767..4bd5e867 100644 --- a/lib/pages/about_property_page/about_property_model.dart +++ b/lib/pages/about_property_page/about_property_model.dart @@ -12,9 +12,6 @@ class AboutPropertyModel extends FlutterFlowModel { VoidCallback? safeSetState; - final GlobalKey registerFormKey = GlobalKey(); - final GlobalKey updateFormKey = GlobalKey(); - late MenuComponentModel menuComponentModel; Future initAsync() async { diff --git a/lib/pages/vehicles_on_the_property/vehicle_model.dart b/lib/pages/vehicles_on_the_property/vehicle_model.dart index 47672d20..6db1e7f9 100644 --- a/lib/pages/vehicles_on_the_property/vehicle_model.dart +++ b/lib/pages/vehicles_on_the_property/vehicle_model.dart @@ -15,9 +15,6 @@ class VehicleModel extends FlutterFlowModel { dynamic item; - final GlobalKey registerFormKey = GlobalKey(); - final GlobalKey updateFormKey = GlobalKey(); - @override void initState(BuildContext context) { resetInstance(); From 5b1a122f62e4e03020359144d3e6a779ec236dcb Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Wed, 30 Oct 2024 15:09:51 -0300 Subject: [PATCH 03/33] FIX: adicionei o modal de detalhes para visita em aberto --- lib/pages/visits_on_the_property/model.dart | 50 +++++++++++++++++++ .../visits_on_the_property_screen.dart | 38 ++++++++++++-- 2 files changed, 83 insertions(+), 5 deletions(-) create mode 100644 lib/pages/visits_on_the_property/model.dart diff --git a/lib/pages/visits_on_the_property/model.dart b/lib/pages/visits_on_the_property/model.dart new file mode 100644 index 00000000..f6a65856 --- /dev/null +++ b/lib/pages/visits_on_the_property/model.dart @@ -0,0 +1,50 @@ +import 'package:flutter/material.dart'; +import 'package:hub/backend/api_requests/api_manager.dart'; +import 'package:hub/components/templates_components/details_component/details_component_widget.dart'; +import 'package:hub/flutter_flow/flutter_flow_model.dart'; +import 'package:hub/flutter_flow/flutter_flow_theme.dart'; +import 'package:hub/flutter_flow/internationalization.dart'; +import 'package:hub/pages/vehicles_on_the_property/vehicles_on_the_property.dart'; +import 'package:hub/shared/utils/storage_util.dart'; + +class VisitsModel extends FlutterFlowModel { + static VisitsModel? _instance = VisitsModel._internal(); + VisitsModel._internal(); + factory VisitsModel() => _instance ?? VisitsModel._internal(); + static void resetInstance() => _instance = null; + + dynamic item; + + @override + void initState(BuildContext context) { + resetInstance(); + + initAsync(); + } + + @override + void dispose() {} + + Future initAsync() async {} + + Widget buildVisitDetails({ + required dynamic item, + required BuildContext context, + required VisitsModel model, + }) { + return DetailsComponentWidget( + buttons: [], + labelsHashMap: Map.from({ + if (item['VTA_VALIDADE'] != null && item['VTA_VALIDADE'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Validade", enText: "Validity")}:': item['VTA_VALIDADE'].toString().toUpperCase(), + if (item['VTA_DTFIM'] != null && item['VTA_DTFIM'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Data de Fim", enText: "End Date")}:': item['VTA_DTFIM'].toString().toUpperCase(), + if (item['VTA_DTINICIO'] != null && item['VTA_DTINICIO'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Data de Início", enText: "Start Date")}:': item['VTA_DTINICIO'].toString().toUpperCase(), + if (item['VTA_NOME'] != null && item['VTA_NOME'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': item['VTA_NOME'].toString().toUpperCase(), + if (item['VTA_UNICA'] != null && item['VTA_UNICA'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Única", enText: "Unique")}:': item['VTA_UNICA'].toString().toUpperCase(), + }), + imagePath: 'https://freaccess.com.br/freaccess/Images/Clients/${StorageUtil().cliUUID}.png', + statusHashMap: [ + if (item['MOT_DESCRICAO'] != null) Map.from({item['MOT_DESCRICAO'].toString().toUpperCase(): FlutterFlowTheme.of(context).primary}), + ], + ); + } +} diff --git a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart index 9c234488..7cb4b3a9 100644 --- a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart +++ b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart @@ -5,7 +5,7 @@ import 'package:hub/components/templates_components/card_item_template_component import 'package:hub/flutter_flow/flutter_flow_icon_button.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; -import 'package:hub/pages/vehicles_on_the_property/vehicle_model.dart'; +import 'package:hub/pages/visits_on_the_property/model.dart'; import 'package:hub/shared/utils/dialog_util.dart'; import 'package:hub/shared/utils/log_util.dart'; import 'package:hub/shared/utils/storage_util.dart'; @@ -24,7 +24,7 @@ class _VisitsOnThePropertyState extends State with TickerPr bool _hasData = false; bool _loading = false; int count = 0; - late final VehicleModel model; + late final VisitsModel model; late Future _visitsFuture; List _visitsList = []; @@ -32,7 +32,7 @@ class _VisitsOnThePropertyState extends State with TickerPr @override void initState() { super.initState(); - model = createModel(context, () => VehicleModel()); + model = createModel(context, () => VisitsModel()); _visitsFuture = _fetchVisits(); _scrollController = ScrollController() @@ -209,7 +209,7 @@ class _VisitsOnThePropertyState extends State with TickerPr labelsHashMap: { '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': uItem['VTA_NOME'] ?? '', '${FFLocalizations.of(context).getVariableText(ptText: "Validade", enText: "Valids")}:': uItem['VTA_VALIDADE'] ?? '', - '${FFLocalizations.of(context).getVariableText(ptText: "Entrada", enText: "Entrada")}:': uItem['VTA_DTINICIO'] ?? '', + '${FFLocalizations.of(context).getVariableText(ptText: "Motivo", enText: "Reason")}:': uItem['MOT_DESCRICAO'][0].toUpperCase() + uItem['MOT_DESCRICAO'].substring(1).toLowerCase(), if (uItem['VTA_DTFIM'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Saída", enText: "Exit")}:': uItem['VTA_DTFIM'] ?? '', }, statusHashMap: [ @@ -242,7 +242,35 @@ class _VisitsOnThePropertyState extends State with TickerPr ): FlutterFlowTheme.of(context).warning, }, ], - onTapCardItemAction: () async {}, + onTapCardItemAction: () async { + await showDialog( + useSafeArea: true, + context: context, + builder: (context) { + return Dialog( + alignment: Alignment.center, + child: model.buildVisitDetails( + item: uItem, + context: context, + model: model, + ), + ); + }, + ).whenComplete(() { + safeSetState(() { + _pageNumber = 1; + _visitsList = []; + _visitsFuture = _fetchVisits().then((value) => value!.jsonBody['pets'] ?? []); + }); + }).catchError((e, s) { + DialogUtil.errorDefault(context); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets", e, s); + safeSetState(() { + _hasData = false; + _loading = false; + }); + }); + }, ); } } From 41b3a02027b7665920f2a580aac2f0b66f645d1e Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Thu, 31 Oct 2024 08:15:01 -0300 Subject: [PATCH 04/33] WIP --- lib/pages/home_page/home_page_widget.dart | 94 ++++++++++++----------- lib/shared/utils/storage_util.dart | 9 ++- 2 files changed, 55 insertions(+), 48 deletions(-) diff --git a/lib/pages/home_page/home_page_widget.dart b/lib/pages/home_page/home_page_widget.dart index e0204dd4..d907f658 100644 --- a/lib/pages/home_page/home_page_widget.dart +++ b/lib/pages/home_page/home_page_widget.dart @@ -58,55 +58,59 @@ class _HomePageWidgetState extends State { drawerEnableOpenDragGesture: true, drawerDragStartBehavior: DragStartBehavior.start, drawer: CustomDrawer(model: _model), - appBar: AppBar( - backgroundColor: FlutterFlowTheme.of(context).primary, - automaticallyImplyLeading: false, - leading: FlutterFlowIconButton( - borderRadius: 20.0, - borderWidth: 1.0, - buttonSize: 40.0, - fillColor: FlutterFlowTheme.of(context).primary, - icon: const Icon( - Icons.menu_rounded, - color: Colors.white, - size: 28.0, - ), - onPressed: () async { - scaffoldKey.currentState!.openDrawer(); - }, - ), - title: Row( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.min, - children: [ - ClipRRect( - borderRadius: BorderRadius.circular(8.0), - child: Image.asset( - 'assets/images/logo.png', - width: 15.0, - height: 15.0, - fit: BoxFit.cover, - ), - ), - Text( - 'FRE ACCESS', - style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, - color: FlutterFlowTheme.of(context).info, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), - ), - ), - ].divide(const SizedBox(width: 8.0)), - ), - actions: const [], - centerTitle: true, - elevation: 0.0, - ), + appBar: buildAppBar(context), body: buildPage(context), ); } + AppBar buildAppBar(BuildContext context) { + return AppBar( + backgroundColor: FlutterFlowTheme.of(context).primary, + automaticallyImplyLeading: false, + leading: FlutterFlowIconButton( + borderRadius: 20.0, + borderWidth: 1.0, + buttonSize: 40.0, + fillColor: FlutterFlowTheme.of(context).primary, + icon: const Icon( + Icons.menu_rounded, + color: Colors.white, + size: 28.0, + ), + onPressed: () async { + scaffoldKey.currentState!.openDrawer(); + }, + ), + title: Row( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.0), + child: Image.asset( + 'assets/images/logo.png', + width: 15.0, + height: 15.0, + fit: BoxFit.cover, + ), + ), + Text( + 'FRE ACCESS', + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + color: FlutterFlowTheme.of(context).info, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + ), + ), + ].divide(const SizedBox(width: 8.0)), + ), + actions: const [], + centerTitle: true, + elevation: 0.0, + ); + } + Container buildPage(BuildContext context) { return Container( decoration: BoxDecoration( diff --git a/lib/shared/utils/storage_util.dart b/lib/shared/utils/storage_util.dart index f59af57e..72c7ac18 100644 --- a/lib/shared/utils/storage_util.dart +++ b/lib/shared/utils/storage_util.dart @@ -33,9 +33,9 @@ class StorageUtil { StorageUtil._internal(); - late final SQLiteStorageHelper _sqliteStorage; - late final SecureStorageHelper _secureStorage; - late final SharedPreferencesStorageHelper _sharedPreferences; + late SQLiteStorageHelper _sqliteStorage; + late SecureStorageHelper _secureStorage; + late SharedPreferencesStorageHelper _sharedPreferences; bool _initialized = true; static Future set(StorageData data) async { @@ -122,6 +122,9 @@ class StorageUtil { log('StorageUtil: Starting initialization'); if (!_initialized) return true; if (_initialized) await SharedPreferencesStorageHelper().initialize(); + if (_initialized) _secureStorage = SecureStorageHelper(); + if (_initialized) _sqliteStorage = SQLiteStorageHelper(); + if (_initialized) _sqliteStorage = SQLiteStorageHelper(); await initSecureStorage(); await initSharedPreferences(); await initSQLiteStorage(); From 4fb5e0a2485ef6a225cabfb673d2b4777aeb68a2 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Thu, 31 Oct 2024 10:58:04 -0300 Subject: [PATCH 05/33] WIP --- .../people_on_the_property_page_widget.dart | 10 ++--- .../vehicle_model.dart | 4 +- lib/pages/visits_on_the_property/model.dart | 38 ++++++++++++++++--- .../visits_on_the_property_screen.dart | 12 +++--- 4 files changed, 46 insertions(+), 18 deletions(-) diff --git a/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart b/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart index a9be6c49..475d3223 100644 --- a/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart +++ b/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart @@ -209,14 +209,14 @@ class _PeopleOnThePropertyPageState extends State with labelsHashMap: { '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': uItem['nome'] ?? '', //statusweb - '${FFLocalizations.of(context).getVariableText(ptText: "Status", enText: "Status")}:': uItem['statusweb'] == "A" + '${FFLocalizations.of(context).getVariableText(ptText: "Possui App", enText: "Has App")}:': uItem['statusweb'] == "A" ? FFLocalizations.of(context).getVariableText( - ptText: 'Ativo', - enText: 'Active', + ptText: 'Sim', + enText: 'Yes', ) : FFLocalizations.of(context).getVariableText( - ptText: 'Inativo', - enText: 'Inactive', + ptText: 'Não', + enText: 'No', ), }, statusHashMap: [], diff --git a/lib/pages/vehicles_on_the_property/vehicle_model.dart b/lib/pages/vehicles_on_the_property/vehicle_model.dart index 6db1e7f9..2e14ce08 100644 --- a/lib/pages/vehicles_on_the_property/vehicle_model.dart +++ b/lib/pages/vehicles_on_the_property/vehicle_model.dart @@ -35,11 +35,11 @@ class VehicleModel extends FlutterFlowModel { return DetailsComponentWidget( buttons: [], labelsHashMap: Map.from({ + if (item['model'] != null && item['model'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Modelo", enText: "Model")}:': item['model'].toString().toUpperCase(), if (item['licensePlate'] != null && item['licensePlate'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Placa", enText: "License Plate")}:': item['licensePlate'].toString().toUpperCase(), if (item['color'] != null && item['color'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Cor", enText: "Color")}:': item['color'].toString().toUpperCase(), - if (item['model'] != null && item['model'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Modelo", enText: "Model")}:': item['model'].toString().toUpperCase(), - if (item['tag'] != null && item['tag'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Tag", enText: "Tag")}:': item['tag'].toString().toUpperCase(), if (item['personName'] != null && item['personName'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Proprietário", enText: "Owner")}:': item['personName'].toString().toUpperCase(), + if (item['tag'] != null && item['tag'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Tag", enText: "Tag")}:': item['tag'].toString().toUpperCase(), }), imagePath: 'https://freaccess.com.br/freaccess/Images/Clients/${StorageUtil().cliUUID}.png', statusHashMap: [ diff --git a/lib/pages/visits_on_the_property/model.dart b/lib/pages/visits_on_the_property/model.dart index f6a65856..8ae5d907 100644 --- a/lib/pages/visits_on_the_property/model.dart +++ b/lib/pages/visits_on_the_property/model.dart @@ -35,11 +35,39 @@ class VisitsModel extends FlutterFlowModel { return DetailsComponentWidget( buttons: [], labelsHashMap: Map.from({ - if (item['VTA_VALIDADE'] != null && item['VTA_VALIDADE'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Validade", enText: "Validity")}:': item['VTA_VALIDADE'].toString().toUpperCase(), - if (item['VTA_DTFIM'] != null && item['VTA_DTFIM'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Data de Fim", enText: "End Date")}:': item['VTA_DTFIM'].toString().toUpperCase(), - if (item['VTA_DTINICIO'] != null && item['VTA_DTINICIO'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Data de Início", enText: "Start Date")}:': item['VTA_DTINICIO'].toString().toUpperCase(), - if (item['VTA_NOME'] != null && item['VTA_NOME'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': item['VTA_NOME'].toString().toUpperCase(), - if (item['VTA_UNICA'] != null && item['VTA_UNICA'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Única", enText: "Unique")}:': item['VTA_UNICA'].toString().toUpperCase(), + if (item['VTA_NOME'] != null && item['VTA_NOME'] != '') + '${FFLocalizations.of(context).getVariableText( + ptText: "Nome", + enText: "Name", + )}:': item['VTA_NOME'].toString().toUpperCase(), + if (item['VTA_DTINICIO'] != null && item['VTA_DTINICIO'] != '') + '${FFLocalizations.of(context).getVariableText( + ptText: "Data de Início", + enText: "Start Date", + )}:': item['VTA_DTINICIO'].toString().toUpperCase(), + if (item['VTA_DTFIM'] != null && item['VTA_DTFIM'] != '') + '${FFLocalizations.of(context).getVariableText( + ptText: "Data de Fim", + enText: "End Date", + )}:': item['VTA_DTFIM'].toString().toUpperCase(), + if (item['VTA_VALIDADE'] != null && item['VTA_VALIDADE'] != '') + '${FFLocalizations.of(context).getVariableText( + ptText: "Validade", + enText: "Validity", + )}:': item['VTA_VALIDADE'].toString().toUpperCase(), + if (item['VTA_FIXA'] != null && item['VTA_FIXA'] != '') + '${FFLocalizations.of(context).getVariableText( + ptText: "Entrada Única", + enText: "Single Entry", + )}:': item['VTA_FIXA'] == true + ? FFLocalizations.of(context).getVariableText( + ptText: "Sim", + enText: "Yes", + ) + : FFLocalizations.of(context).getVariableText( + ptText: "Não", + enText: "No", + ), }), imagePath: 'https://freaccess.com.br/freaccess/Images/Clients/${StorageUtil().cliUUID}.png', statusHashMap: [ diff --git a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart index 7cb4b3a9..33ef6286 100644 --- a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart +++ b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart @@ -213,18 +213,18 @@ class _VisitsOnThePropertyState extends State with TickerPr if (uItem['VTA_DTFIM'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Saída", enText: "Exit")}:': uItem['VTA_DTFIM'] ?? '', }, statusHashMap: [ - if (uItem['VTA_UNICA'] == "N") + if (uItem['VTA_FIXA'] == true) { FFLocalizations.of(context).getVariableText( - ptText: 'Recorrente', - enText: 'Recurrent', + ptText: 'Entrada Recorrente', + enText: 'Recurrent Entry', ): FlutterFlowTheme.of(context).warning, }, - if (uItem['VTA_UNICA'] == "S") + if (uItem['VTA_FIXA'] == false) { FFLocalizations.of(context).getVariableText( - ptText: 'Única', - enText: 'Unique', + ptText: 'Entrada Única', + enText: 'Single Entry', ): FlutterFlowTheme.of(context).success, }, if (uItem['VTA_DTFIM'] != '') From dd9a657770c417bfe6ece984f6e36ba46994793a Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Thu, 31 Oct 2024 16:43:32 -0300 Subject: [PATCH 06/33] WIPnose: fix VDO --- .../schedule_complete_visit_page_widget.dart | 814 +++++------------- lib/pages/visits_on_the_property/model.dart | 2 +- 2 files changed, 233 insertions(+), 583 deletions(-) diff --git a/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart b/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart index 8ce47494..e58a5934 100644 --- a/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart +++ b/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart @@ -1,4 +1,3 @@ - import 'package:auto_size_text/auto_size_text.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; @@ -35,13 +34,10 @@ class ScheduleCompleteVisitPageWidget extends ScheduleComplete { const ScheduleCompleteVisitPageWidget({super.key}); @override - State createState() => - _ScheduleCompleteVisitPageWidgetState(); + State createState() => _ScheduleCompleteVisitPageWidgetState(); } -class _ScheduleCompleteVisitPageWidgetState - extends State - with TickerProviderStateMixin { +class _ScheduleCompleteVisitPageWidgetState extends State with TickerProviderStateMixin { late ScheduleCompleteVisitPageModel _model; int _visitHistoryLoadingIdx = 0; final int _visitHistoryLoadingCount = 10; @@ -80,8 +76,7 @@ class _ScheduleCompleteVisitPageWidgetState } final int start = _visitHistoryLoadingIdx * _visitHistoryLoadingCount; - final List newItems = - await fetchVisitHistory(start, _visitHistoryLoadingCount); + final List newItems = await fetchVisitHistory(start, _visitHistoryLoadingCount); if (newItems.isNotEmpty) { _visitHistoryList.addAll(newItems); @@ -91,8 +86,7 @@ class _ScheduleCompleteVisitPageWidgetState } void _scrollListener() { - if (_visitHistoryController.position.pixels == - _visitHistoryController.position.maxScrollExtent) { + if (_visitHistoryController.position.pixels == _visitHistoryController.position.maxScrollExtent) { _loadMoreVisitHistory(); } } @@ -107,9 +101,7 @@ class _ScheduleCompleteVisitPageWidgetState @override Widget build(BuildContext context) { return GestureDetector( - onTap: () => _model.unfocusNode.canRequestFocus - ? FocusScope.of(context).requestFocus(_model.unfocusNode) - : FocusScope.of(context).unfocus(), + onTap: () => _model.unfocusNode.canRequestFocus ? FocusScope.of(context).requestFocus(_model.unfocusNode) : FocusScope.of(context).unfocus(), child: Scaffold( key: scaffoldKey, backgroundColor: FlutterFlowTheme.of(context).primaryBackground, @@ -158,8 +150,7 @@ PreferredSizeWidget appBarScheduleCompleteVisit(BuildContext context) { ); } -Widget bodyScheduleCompleteVisit(BuildContext context, - ScheduleCompleteVisitPageModel model, Function safeSetState) { +Widget bodyScheduleCompleteVisit(BuildContext context, ScheduleCompleteVisitPageModel model, Function safeSetState) { return SafeArea( top: true, child: Column( @@ -167,35 +158,23 @@ Widget bodyScheduleCompleteVisit(BuildContext context, Align( alignment: const Alignment(0.0, 0), child: TabBar( - labelColor: FlutterFlowTheme.of(context).primaryText, - unselectedLabelColor: FlutterFlowTheme.of(context).primaryText, - labelStyle: FlutterFlowTheme.of(context).titleMedium.override( - fontFamily: FlutterFlowTheme.of(context).titleMediumFamily, - fontSize: 13.0, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).titleMediumFamily), - ), - unselectedLabelStyle: const TextStyle(), - indicatorColor: FlutterFlowTheme.of(context).primary, - padding: const EdgeInsets.all(4.0), - tabs: [ - Tab( - text: FFLocalizations.of(context).getText( - 'ueth1f4g', - ), - ), - Tab( - text: FFLocalizations.of(context).getText( - 'k4uraqam', - ), - ), - ], - controller: model.tabBarController, - onTap: (i) async { - [() async {}, () async {}][i](); - }, - ), + labelColor: FlutterFlowTheme.of(context).primaryText, + unselectedLabelColor: FlutterFlowTheme.of(context).primaryText, + labelStyle: FlutterFlowTheme.of(context).titleMedium.override( + fontFamily: FlutterFlowTheme.of(context).titleMediumFamily, + fontSize: 13.0, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).titleMediumFamily), + ), + unselectedLabelStyle: const TextStyle(), + indicatorColor: FlutterFlowTheme.of(context).primary, + padding: const EdgeInsets.all(4.0), + tabs: [ + Tab(text: FFLocalizations.of(context).getText('ueth1f4g')), + Tab(text: FFLocalizations.of(context).getText('k4uraqam')), + ], + controller: model.tabBarController, + onTap: (i) async => [() async {}, () async {}][i]()), ), Expanded( child: TabBarView( @@ -217,8 +196,7 @@ Widget bodyScheduleCompleteVisit(BuildContext context, ); } -Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, - Function safeSetState) { +Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, Function safeSetState) { return SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.max, @@ -233,20 +211,17 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, Align( alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 20.0, 30.0, 0.0, 24.0), + padding: const EdgeInsetsDirectional.fromSTEB(20.0, 30.0, 0.0, 24.0), child: Text( FFLocalizations.of(context).getText( '98evnbbe', ), textAlign: TextAlign.start, style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -260,60 +235,42 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, child: Stack( children: [ Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( controller: model.textController1, readOnly: true, focusNode: model.textFieldFocusNode1, - autovalidateMode: - AutovalidateMode.onUserInteraction, + autovalidateMode: AutovalidateMode.onUserInteraction, autofocus: false, obscureText: false, decoration: InputDecoration( isDense: true, - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: FFLocalizations.of(context).getText( '53cbwqh9', ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), lineHeight: 1.0, ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of(context).accent4, + color: FlutterFlowTheme.of(context).accent4, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of(context).primary, + color: FlutterFlowTheme.of(context).primary, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), @@ -337,25 +294,17 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, color: FlutterFlowTheme.of(context).accent1, ), ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), lineHeight: 1.8, ), textAlign: TextAlign.start, - validator: model.textController1Validator - .asValidator(context)), + validator: model.textController1Validator.asValidator(context)), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, @@ -371,38 +320,20 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, return wrapInMaterialDatePickerTheme( context, child!, - headerBackgroundColor: - FlutterFlowTheme.of(context).primary, - headerForegroundColor: - FlutterFlowTheme.of(context).info, - headerTextStyle: FlutterFlowTheme.of( - context) - .headlineLarge - .override( - fontFamily: - FlutterFlowTheme.of(context) - .headlineLargeFamily, + headerBackgroundColor: FlutterFlowTheme.of(context).primary, + headerForegroundColor: FlutterFlowTheme.of(context).info, + headerTextStyle: FlutterFlowTheme.of(context).headlineLarge.override( + fontFamily: FlutterFlowTheme.of(context).headlineLargeFamily, fontSize: 32.0, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .headlineLargeFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), ), - pickerBackgroundColor: - FlutterFlowTheme.of(context) - .primaryBackground, - pickerForegroundColor: - FlutterFlowTheme.of(context) - .primaryText, - selectedDateTimeBackgroundColor: - FlutterFlowTheme.of(context).primary, - selectedDateTimeForegroundColor: - FlutterFlowTheme.of(context).info, - actionButtonForegroundColor: - FlutterFlowTheme.of(context) - .primaryText, + pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, + pickerForegroundColor: FlutterFlowTheme.of(context).primaryText, + selectedDateTimeBackgroundColor: FlutterFlowTheme.of(context).primary, + selectedDateTimeForegroundColor: FlutterFlowTheme.of(context).info, + actionButtonForegroundColor: FlutterFlowTheme.of(context).primaryText, iconSize: 24.0, ); }, @@ -412,58 +343,33 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, if (datePicked1Date != null) { datePicked1Time = await showTimePicker( context: context, - initialTime: TimeOfDay.fromDateTime( - getCurrentTimestamp), + initialTime: TimeOfDay.fromDateTime(getCurrentTimestamp), builder: (context, child) { return wrapInMaterialTimePickerTheme( context, child!, - headerBackgroundColor: - FlutterFlowTheme.of(context) - .primary, - headerForegroundColor: - FlutterFlowTheme.of(context).info, - headerTextStyle: FlutterFlowTheme.of( - context) - .headlineLarge - .override( - fontFamily: - FlutterFlowTheme.of(context) - .headlineLargeFamily, + headerBackgroundColor: FlutterFlowTheme.of(context).primary, + headerForegroundColor: FlutterFlowTheme.of(context).info, + headerTextStyle: FlutterFlowTheme.of(context).headlineLarge.override( + fontFamily: FlutterFlowTheme.of(context).headlineLargeFamily, fontSize: 32.0, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .headlineLargeFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), ), - pickerBackgroundColor: - FlutterFlowTheme.of(context) - .primaryBackground, - pickerForegroundColor: - FlutterFlowTheme.of(context).info, - selectedDateTimeBackgroundColor: - FlutterFlowTheme.of(context) - .primary, - selectedDateTimeForegroundColor: - FlutterFlowTheme.of(context).info, - pickerDialForegroundColor: - FlutterFlowTheme.of(context) - .primaryText, - actionButtonForegroundColor: - FlutterFlowTheme.of(context) - .primaryText, + pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, + pickerForegroundColor: FlutterFlowTheme.of(context).info, + selectedDateTimeBackgroundColor: FlutterFlowTheme.of(context).primary, + selectedDateTimeForegroundColor: FlutterFlowTheme.of(context).info, + pickerDialForegroundColor: FlutterFlowTheme.of(context).primaryText, + actionButtonForegroundColor: FlutterFlowTheme.of(context).primaryText, iconSize: 24.0, ); }, ); } - if (datePicked1Date != null && - datePicked1Time != null) { + if (datePicked1Date != null && datePicked1Time != null) { safeSetState(() { model.datePicked1 = DateTime( datePicked1Date.year, @@ -478,13 +384,9 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, model.textController1?.text = dateTimeFormat( 'dd/MM/yyyy HH:mm:ss', model.datePicked1, - locale: FFLocalizations.of(context) - .languageCode, + locale: FFLocalizations.of(context).languageCode, ); - model.textController1?.selection = - TextSelection.collapsed( - offset: model - .textController1!.text.length); + model.textController1?.selection = TextSelection.collapsed(offset: model.textController1!.text.length); }); }, child: Container( @@ -510,46 +412,30 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, child: Stack( children: [ Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( readOnly: true, controller: model.textController2, focusNode: model.textFieldFocusNode2, - autovalidateMode: - AutovalidateMode.onUserInteraction, + autovalidateMode: AutovalidateMode.onUserInteraction, autofocus: false, obscureText: false, decoration: InputDecoration( isDense: true, - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: FFLocalizations.of(context).getText( 'xpgc5e8d', ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), lineHeight: 1.0, ), enabledBorder: OutlineInputBorder( @@ -585,26 +471,18 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, color: FlutterFlowTheme.of(context).accent1, ), ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), lineHeight: 1.8, ), textAlign: TextAlign.start, - validator: model.textController2Validator - .asValidator(context), + validator: model.textController2Validator.asValidator(context), ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, @@ -620,38 +498,20 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, return wrapInMaterialDatePickerTheme( context, child!, - headerBackgroundColor: - FlutterFlowTheme.of(context).primary, - headerForegroundColor: - FlutterFlowTheme.of(context).info, - headerTextStyle: FlutterFlowTheme.of( - context) - .headlineLarge - .override( - fontFamily: - FlutterFlowTheme.of(context) - .headlineLargeFamily, + headerBackgroundColor: FlutterFlowTheme.of(context).primary, + headerForegroundColor: FlutterFlowTheme.of(context).info, + headerTextStyle: FlutterFlowTheme.of(context).headlineLarge.override( + fontFamily: FlutterFlowTheme.of(context).headlineLargeFamily, fontSize: 32.0, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .headlineLargeFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), ), - pickerBackgroundColor: - FlutterFlowTheme.of(context) - .primaryBackground, - pickerForegroundColor: - FlutterFlowTheme.of(context) - .primaryText, - selectedDateTimeBackgroundColor: - FlutterFlowTheme.of(context).primary, - selectedDateTimeForegroundColor: - FlutterFlowTheme.of(context).info, - actionButtonForegroundColor: - FlutterFlowTheme.of(context) - .primaryText, + pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, + pickerForegroundColor: FlutterFlowTheme.of(context).primaryText, + selectedDateTimeBackgroundColor: FlutterFlowTheme.of(context).primary, + selectedDateTimeForegroundColor: FlutterFlowTheme.of(context).info, + actionButtonForegroundColor: FlutterFlowTheme.of(context).primaryText, iconSize: 24.0, ); }, @@ -661,58 +521,33 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, if (datePicked2Date != null) { datePicked2Time = await showTimePicker( context: context, - initialTime: TimeOfDay.fromDateTime( - getCurrentTimestamp), + initialTime: TimeOfDay.fromDateTime(getCurrentTimestamp), builder: (context, child) { return wrapInMaterialTimePickerTheme( context, child!, - headerBackgroundColor: - FlutterFlowTheme.of(context) - .primary, - headerForegroundColor: - FlutterFlowTheme.of(context).info, - headerTextStyle: FlutterFlowTheme.of( - context) - .headlineLarge - .override( - fontFamily: - FlutterFlowTheme.of(context) - .headlineLargeFamily, + headerBackgroundColor: FlutterFlowTheme.of(context).primary, + headerForegroundColor: FlutterFlowTheme.of(context).info, + headerTextStyle: FlutterFlowTheme.of(context).headlineLarge.override( + fontFamily: FlutterFlowTheme.of(context).headlineLargeFamily, fontSize: 32.0, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .headlineLargeFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), ), - pickerBackgroundColor: - FlutterFlowTheme.of(context) - .primaryBackground, - pickerForegroundColor: - FlutterFlowTheme.of(context).info, - selectedDateTimeBackgroundColor: - FlutterFlowTheme.of(context) - .primary, - selectedDateTimeForegroundColor: - FlutterFlowTheme.of(context).info, - pickerDialForegroundColor: - FlutterFlowTheme.of(context) - .primaryText, - actionButtonForegroundColor: - FlutterFlowTheme.of(context) - .primaryText, + pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, + pickerForegroundColor: FlutterFlowTheme.of(context).info, + selectedDateTimeBackgroundColor: FlutterFlowTheme.of(context).primary, + selectedDateTimeForegroundColor: FlutterFlowTheme.of(context).info, + pickerDialForegroundColor: FlutterFlowTheme.of(context).primaryText, + actionButtonForegroundColor: FlutterFlowTheme.of(context).primaryText, iconSize: 24.0, ); }, ); } - if (datePicked2Date != null && - datePicked2Time != null) { + if (datePicked2Date != null && datePicked2Time != null) { safeSetState(() { model.datePicked2 = DateTime( datePicked2Date.year, @@ -727,13 +562,9 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, model.textController2?.text = dateTimeFormat( 'dd/MM/yyyy HH:mm:ss', model.datePicked2, - locale: FFLocalizations.of(context) - .languageCode, + locale: FFLocalizations.of(context).languageCode, ); - model.textController2?.selection = - TextSelection.collapsed( - offset: model - .textController2!.text.length); + model.textController2?.selection = TextSelection.collapsed(offset: model.textController2!.text.length); }); }, child: Container( @@ -757,21 +588,17 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, Align( alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 20.0, 24.0, 0.0, 30.0), + padding: const EdgeInsetsDirectional.fromSTEB(20.0, 24.0, 0.0, 30.0), child: Text( FFLocalizations.of(context).getText( 'u0jocx7e', ), textAlign: TextAlign.start, style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -779,8 +606,7 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, if (model.visitorJsonList.isNotEmpty) Builder( builder: (context) { - final visitorListView = - model.visitorJsonList.map((e) => e).toList(); + final visitorListView = model.visitorJsonList.map((e) => e).toList(); return ListView.separated( padding: const EdgeInsets.fromLTRB( 0, @@ -791,20 +617,16 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, shrinkWrap: true, scrollDirection: Axis.vertical, itemCount: visitorListView.length, - separatorBuilder: (_, __) => - const SizedBox(height: 5.0), + separatorBuilder: (_, __) => const SizedBox(height: 5.0), itemBuilder: (context, visitorListViewIndex) { - final visitorListViewItem = - visitorListView[visitorListViewIndex]; + final visitorListViewItem = visitorListView[visitorListViewIndex]; return Padding( - padding: - const EdgeInsets.symmetric(horizontal: 30), + padding: const EdgeInsets.symmetric(horizontal: 30), child: Container( width: MediaQuery.of(context).size.width, height: 70.0, decoration: BoxDecoration( - color: FlutterFlowTheme.of(context) - .primaryBackground, + color: FlutterFlowTheme.of(context).primaryBackground, ), child: Row( mainAxisSize: MainAxisSize.max, @@ -818,36 +640,21 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, shape: BoxShape.circle, ), child: CachedNetworkImage( - fadeInDuration: - const Duration(milliseconds: 500), - fadeOutDuration: - const Duration(milliseconds: 500), - imageUrl: - "https://freaccess.com.br/freaccess/getImage.php?devUUID=${model.devUUID}&userUUID=${model.userUUID}&cliID=${model.cliUUID}&atividade=getFoto&Documento=${getJsonField(visitorListViewItem, r'''$.VTE_DOCUMENTO''').toString()}&tipo=E", + fadeInDuration: const Duration(milliseconds: 500), + fadeOutDuration: const Duration(milliseconds: 500), + imageUrl: "https://freaccess.com.br/freaccess/getImage.php?devUUID=${model.devUUID}&userUUID=${model.userUUID}&cliID=${model.cliUUID}&atividade=getFoto&Documento=${getJsonField(visitorListViewItem, r'''$.VTE_DOCUMENTO''').toString()}&tipo=E", fit: BoxFit.cover, ), ), Expanded( child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8.0), + padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Text( - getJsonField(visitorListViewItem, - r'''$.VTE_NOME''') - .toString(), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .bodyMediumFamily, + getJsonField(visitorListViewItem, r'''$.VTE_NOME''').toString(), + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), overflow: TextOverflow.ellipsis, ), @@ -856,8 +663,7 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, IconButton( onPressed: () async { safeSetState(() { - model.removeFromVisitorJsonList( - visitorListViewItem); + model.removeFromVisitorJsonList(visitorListViewItem); if (model.visitorJsonList.isEmpty) { model.visitorStrList = ''; } @@ -878,44 +684,30 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, Align( alignment: const AlignmentDirectional(0.01, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 20.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 20.0), child: FFButtonWidget( onPressed: () async { await showModalBottomSheet( isScrollControlled: true, isDismissible: true, - backgroundColor: FlutterFlowTheme.of(context) - .primaryBackground, + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, enableDrag: true, context: context, builder: (context) { return GestureDetector( - onTap: () => - model.unfocusNode.canRequestFocus - ? FocusScope.of(context) - .requestFocus(model.unfocusNode) - : FocusScope.of(context).unfocus(), + onTap: () => model.unfocusNode.canRequestFocus ? FocusScope.of(context).requestFocus(model.unfocusNode) : FocusScope.of(context).unfocus(), child: SizedBox( - height: - MediaQuery.of(context).size.height * - 0.7, + height: MediaQuery.of(context).size.height * 0.7, width: MediaQuery.of(context).size.width, child: Padding( - padding: - MediaQuery.viewInsetsOf(context), - child: - VisitorSearchModalTemplateComponentWidget( + padding: MediaQuery.viewInsetsOf(context), + child: VisitorSearchModalTemplateComponentWidget( getVisitors: (visitorsParam) async { - model.visitorJsonList = - visitorsParam! - .toList() - .cast(); + model.visitorJsonList = visitorsParam!.toList().cast(); safeSetState(() {}); }, getDocs: (docsParam) async { - model.visitorStrList = strListToStr( - docsParam!.toList()); + model.visitorStrList = strListToStr(docsParam!.toList()); safeSetState(() {}); }, ), @@ -934,25 +726,15 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, options: FFButtonOptions( width: MediaQuery.sizeOf(context).width * 0.8, height: 80.0, - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB( - 14.0, 0.0, 0.0, 20.0), - color: FlutterFlowTheme.of(context) - .primaryBackground, - textStyle: FlutterFlowTheme.of(context) - .titleSmall - .override( - fontFamily: FlutterFlowTheme.of(context) - .titleSmallFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(14.0, 0.0, 0.0, 20.0), + color: FlutterFlowTheme.of(context).primaryBackground, + textStyle: FlutterFlowTheme.of(context).titleSmall.override( + fontFamily: FlutterFlowTheme.of(context).titleSmallFamily, + color: FlutterFlowTheme.of(context).primaryText, fontSize: 16.0, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .titleSmallFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).titleSmallFamily), ), borderSide: BorderSide( color: FlutterFlowTheme.of(context).accent4, @@ -966,8 +748,7 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, Align( alignment: const AlignmentDirectional(0.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 50.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 50.0, 0.0, 0.0), child: Container( width: MediaQuery.sizeOf(context).width * 0.8, height: 20.0, @@ -978,18 +759,11 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, FFLocalizations.of(context).getText( 'r8soavtz', ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -1006,21 +780,17 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, Align( alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 20.0, 24.0, 0.0, 24.0), + padding: const EdgeInsetsDirectional.fromSTEB(20.0, 24.0, 0.0, 24.0), child: Text( FFLocalizations.of(context).getText( '0meymh6u', ), textAlign: TextAlign.start, style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -1032,8 +802,7 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, children: [ Expanded( child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: Container( width: 100.0, height: 45.0, @@ -1047,65 +816,44 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, width: 50.0, height: 50.0, child: SpinKitCircle( - color: FlutterFlowTheme.of(context) - .primary, + color: FlutterFlowTheme.of(context).primary, size: 50.0, ), ), ); } - final reasonsJsonList = - PhpGroup.getDadosCall.reasonsJsonList( - snapshot.data!.jsonBody); - final reasonsOptionLabels = PhpGroup - .getDadosCall - .reasonsMotDescStrList( - snapshot.data!.jsonBody); + final reasonsJsonList = PhpGroup.getDadosCall.reasonsJsonList(snapshot.data!.jsonBody); + final reasonsOptionLabels = PhpGroup.getDadosCall.reasonsMotDescStrList(snapshot.data!.jsonBody); model.processDropDown1(reasonsJsonList!); return FlutterFlowDropDown( - fillColor: FlutterFlowTheme.of(context) - .primaryBackground, - controller: - model.dropDownValueController1, + fillColor: FlutterFlowTheme.of(context).primaryBackground, + controller: model.dropDownValueController1, options: model.reasonsDropDown1, optionLabels: reasonsOptionLabels, - onChanged: (val) => safeSetState( - () => model.dropDownValue1 = val), + onChanged: (val) => safeSetState(() => model.dropDownValue1 = val), width: double.infinity, height: double.infinity, - textStyle: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .bodyMediumFamily, + textStyle: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), - hintText: - FFLocalizations.of(context).getText( + hintText: FFLocalizations.of(context).getText( '6p3e0bzr', ), icon: Icon( Icons.keyboard_arrow_down_rounded, - color: FlutterFlowTheme.of(context) - .accent1, + color: FlutterFlowTheme.of(context).accent1, size: 24.0, ), elevation: 2.0, - borderColor: - FlutterFlowTheme.of(context).accent4, + borderColor: FlutterFlowTheme.of(context).accent4, borderWidth: 0.5, borderRadius: 10.0, - margin: - const EdgeInsetsDirectional.fromSTEB( - 16.0, 0.0, 16.0, 0.0), + margin: const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 0.0), hidesUnderline: true, isOverButton: true, isSearchable: false, @@ -1124,17 +872,13 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( - padding: const EdgeInsets.symmetric( - horizontal: 30.0, vertical: 5.0), + padding: const EdgeInsets.symmetric(horizontal: 30.0, vertical: 5.0), child: Text( FFLocalizations.of(context).getVariableText( enText: 'Field is Required', ptText: 'Campo Obrigatório', ), - style: TextStyle( - color: FlutterFlowTheme.of(context) - .customColor6, - fontSize: 12.0)), + style: TextStyle(color: FlutterFlowTheme.of(context).customColor6, fontSize: 12.0)), ), ], ), @@ -1147,8 +891,7 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, children: [ Expanded( child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: Container( width: 100.0, height: 45.0, @@ -1162,64 +905,44 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, width: 50.0, height: 50.0, child: SpinKitCircle( - color: FlutterFlowTheme.of(context) - .primary, + color: FlutterFlowTheme.of(context).primary, size: 50.0, ), ), ); } - final lavelsJsonList = PhpGroup.getDadosCall - .levelJsonList(snapshot.data!.jsonBody); - final lavelsOptionLabels = PhpGroup - .getDadosCall - .levelNACDescricaoStrList( - snapshot.data!.jsonBody); + final lavelsJsonList = PhpGroup.getDadosCall.levelJsonList(snapshot.data!.jsonBody); + final lavelsOptionLabels = PhpGroup.getDadosCall.levelNACDescricaoStrList(snapshot.data!.jsonBody); model.processDropDown2(lavelsJsonList!); return FlutterFlowDropDown( - controller: - model.dropDownValueController2, + controller: model.dropDownValueController2, options: model.lavelsDropDown2, optionLabels: lavelsOptionLabels, - onChanged: (val) => safeSetState( - () => model.dropDownValue2 = val), + onChanged: (val) => safeSetState(() => model.dropDownValue2 = val), width: double.infinity, height: double.infinity, - textStyle: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .bodyMediumFamily, + textStyle: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), - hintText: - FFLocalizations.of(context).getText( + hintText: FFLocalizations.of(context).getText( '2wun8p6c', ), icon: Icon( Icons.keyboard_arrow_down_rounded, - color: FlutterFlowTheme.of(context) - .accent1, + color: FlutterFlowTheme.of(context).accent1, size: 24.0, ), elevation: 2.0, - borderColor: - FlutterFlowTheme.of(context).accent4, + borderColor: FlutterFlowTheme.of(context).accent4, borderWidth: 0.5, borderRadius: 10.0, - margin: - const EdgeInsetsDirectional.fromSTEB( - 16.0, 0.0, 16.0, 0.0), + margin: const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 0.0), hidesUnderline: true, - fillColor: FlutterFlowTheme.of(context) - .primaryBackground, + fillColor: FlutterFlowTheme.of(context).primaryBackground, isOverButton: true, isSearchable: false, isMultiSelect: false, @@ -1237,17 +960,13 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( - padding: const EdgeInsets.symmetric( - horizontal: 30.0, vertical: 5.0), + padding: const EdgeInsets.symmetric(horizontal: 30.0, vertical: 5.0), child: Text( FFLocalizations.of(context).getVariableText( enText: 'Field is Required', ptText: 'Campo Obrigatório', ), - style: TextStyle( - color: FlutterFlowTheme.of(context) - .customColor6, - fontSize: 12.0)), + style: TextStyle(color: FlutterFlowTheme.of(context).customColor6, fontSize: 12.0)), ), ], ), @@ -1261,28 +980,23 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, Align( alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 20.0, 24.0, 0.0, 24.0), + padding: const EdgeInsetsDirectional.fromSTEB(20.0, 24.0, 0.0, 24.0), child: Text( FFLocalizations.of(context).getText( '8rk26eg1', ), textAlign: TextAlign.start, style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 30.0, 0.0, 30.0, 20.0), + padding: const EdgeInsetsDirectional.fromSTEB(30.0, 0.0, 30.0, 20.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, @@ -1290,23 +1004,16 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, children: [ Flexible( child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 130.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 130.0, 0.0), child: Text( FFLocalizations.of(context).getText( 'lgv0q5ht', ), textAlign: TextAlign.start, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -1325,15 +1032,13 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, return FlutterFlowTheme.of(context).alternate; }, ), - hoverColor: - FlutterFlowTheme.of(context).primaryBackground, + hoverColor: FlutterFlowTheme.of(context).primaryBackground, overlayColor: WidgetStateProperty.resolveWith( (states) { if (states.contains(WidgetState.disabled)) { return FlutterFlowTheme.of(context).accent4; } - return FlutterFlowTheme.of(context) - .primaryBackground; + return FlutterFlowTheme.of(context).primaryBackground; }, ), trackOutlineColor: WidgetStateProperty.resolveWith( @@ -1341,17 +1046,13 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, if (states.contains(WidgetState.disabled)) { return FlutterFlowTheme.of(context).accent4; } - return FlutterFlowTheme.of(context) - .primaryBackground; + return FlutterFlowTheme.of(context).primaryBackground; }, ), activeColor: FlutterFlowTheme.of(context).success, - activeTrackColor: - FlutterFlowTheme.of(context).primaryBackground, - inactiveTrackColor: - FlutterFlowTheme.of(context).primaryBackground, - inactiveThumbColor: - FlutterFlowTheme.of(context).error, + activeTrackColor: FlutterFlowTheme.of(context).primaryBackground, + inactiveTrackColor: FlutterFlowTheme.of(context).primaryBackground, + inactiveThumbColor: FlutterFlowTheme.of(context).error, ), ], ), @@ -1364,28 +1065,23 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, Align( alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 20.0, 0.0, 0.0, 24.0), + padding: const EdgeInsetsDirectional.fromSTEB(20.0, 0.0, 0.0, 24.0), child: Text( FFLocalizations.of(context).getText( 'eftcs67c', ), textAlign: TextAlign.start, style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: SizedBox( width: double.infinity, child: TextFormField( @@ -1400,30 +1096,20 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, labelText: FFLocalizations.of(context).getText( 't0q2vuup', ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: FFLocalizations.of(context).getText( 'w18iztdm', ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -1459,19 +1145,15 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, maxLines: null, maxLength: 80, - validator: - model.textController3Validator.asValidator(context), + validator: model.textController3Validator.asValidator(context), ), ), ), @@ -1495,17 +1177,15 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, Future scheduleVisit() async { await PhpGroup.postScheduleVisitCall .call( - devDesc: model.textController3.text, - idVisitante: model.visitorStrList, - dtInicio: model - .convertDateFormat(model.textController1.text), - dtFim: model - .convertDateFormat(model.textController2.text), - unica: model.switchValue == true ? 'S' : 'N', - idMotivo: extractIdToStr(model.dropDownValue1!), - idNAC: extractIdToStr(model.dropDownValue2!), - obs: model.textController3.text, - ) + devDesc: model.textController3.text, + idVisitante: model.visitorStrList, + dtInicio: model.convertDateFormat(model.textController1.text), + dtFim: model.convertDateFormat(model.textController2.text), + unica: model.switchValue == true ? 'S' : 'N', + idMotivo: extractIdToStr(model.dropDownValue1!), + idNAC: extractIdToStr(model.dropDownValue2!), + obs: model.textController3.text, + ) .catchError((e) async => await DialogUtil.errorDefault(context)) .then((value) async { if (PhpGroup.postScheduleVisitCall.error( @@ -1516,20 +1196,12 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, model.dropDownValue1 = null; model.dropDownValue2 = null; - model.dropDownValueController1 = - FormFieldController(''); - model.dropDownValueController2 = - FormFieldController(''); + model.dropDownValueController1 = FormFieldController(''); + model.dropDownValueController2 = FormFieldController(''); model.visitorStrList = ''; model.visitorJsonList = []; - ToastUtil.showToast( - message: FFLocalizations.of(context) - .getVariableText( - ptText: 'Visitante já adicionado!', - enText: 'Visitor already added!'), - gravity: ToastGravity.TOP, - backgroundColor: Colors.green); + ToastUtil.showToast(message: FFLocalizations.of(context).getVariableText(ptText: 'Visitante já adicionado!', enText: 'Visitor already added!'), gravity: ToastGravity.TOP, backgroundColor: Colors.green); await ShareUtil.showShare(value.jsonBody); } else { @@ -1548,10 +1220,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, enText: 'Register Multiple Visitors', ); final content = FFLocalizations.of(context).getVariableText( - ptText: - 'Você deseja agendar uma visita para ${model.visitorJsonList.length} visitantes?', - enText: - 'Do you want to schedule a visit for ${model.visitorJsonList.length} visitors?', + ptText: 'Você deseja agendar uma visita para ${model.visitorJsonList.length} visitantes?', + enText: 'Do you want to schedule a visit for ${model.visitorJsonList.length} visitors?', ); showAlertDialog(context, title, content, scheduleVisit); @@ -1560,18 +1230,14 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, context: context, builder: (context) { return GestureDetector( - onTap: () => model.unfocusNode.canRequestFocus - ? FocusScope.of(context) - .requestFocus(model.unfocusNode) - : FocusScope.of(context).unfocus(), + onTap: () => model.unfocusNode.canRequestFocus ? FocusScope.of(context).requestFocus(model.unfocusNode) : FocusScope.of(context).unfocus(), child: Dialog( alignment: Alignment.topCenter, child: SizedBox( child: DetailsComponentWidget( buttons: [ FFButtonWidget( - text: FFLocalizations.of(context) - .getVariableText( + text: FFLocalizations.of(context).getVariableText( enText: 'Done', ptText: 'Confirmar', ), @@ -1580,43 +1246,27 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, options: FFButtonOptions( width: 130, height: 40, - color: FlutterFlowTheme.of(context) - .primaryBackground, + color: FlutterFlowTheme.of(context).primaryBackground, elevation: 0, textStyle: TextStyle( - color: FlutterFlowTheme.of(context) - .primaryText, + color: FlutterFlowTheme.of(context).primaryText, ), borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .primaryBackground, + color: FlutterFlowTheme.of(context).primaryBackground, width: 1, ), ), ), ], - imagePath: - 'https://freaccess.com.br/freaccess/getImage.php?cliID=${model.cliUUID}&atividade=getFoto&Documento=${model.visitorJsonList[0]['VTE_DOCUMENTO'] ?? ''}&tipo=E', + imagePath: 'https://freaccess.com.br/freaccess/getImage.php?cliID=${model.cliUUID}&atividade=getFoto&Documento=${model.visitorJsonList[0]['VTE_DOCUMENTO'] ?? ''}&tipo=E', labelsHashMap: { 'Nome': model.visitorJsonList[0]['VTE_NOME'], 'Start': model.textController1.text, 'End': model.textController2.text, - 'Reason': (RegExp(r'MOT_DESCRICAO:\s*([^,]+)') - .firstMatch( - model.dropDownValue1.toString()) - ?.group(1) - .toString()) ?? - '', - 'Level': (RegExp(r'NAC_DESCRICAO:\s*([^,]+)') - .firstMatch( - model.dropDownValue2.toString()) - ?.group(1) - .toString()) ?? - '', - 'Single Visit': - model.switchValue == true ? 'S' : 'N', - if (model.textController3.text.isNotEmpty) - 'Observation': model.textController3.text, + 'Reason': (RegExp(r'MOT_DESCRICAO:\s*([^,]+)').firstMatch(model.dropDownValue1.toString())?.group(1).toString()) ?? '', + 'Level': (RegExp(r'NAC_DESCRICAO:\s*([^,]+)').firstMatch(model.dropDownValue2.toString())?.group(1).toString()) ?? '', + 'Single Visit': model.switchValue == true ? 'S' : 'N', + if (model.textController3.text.isNotEmpty) 'Observation': model.textController3.text, }, statusHashMap: [ Map.from({ diff --git a/lib/pages/visits_on_the_property/model.dart b/lib/pages/visits_on_the_property/model.dart index 8ae5d907..4fa15bb9 100644 --- a/lib/pages/visits_on_the_property/model.dart +++ b/lib/pages/visits_on_the_property/model.dart @@ -69,7 +69,7 @@ class VisitsModel extends FlutterFlowModel { enText: "No", ), }), - imagePath: 'https://freaccess.com.br/freaccess/Images/Clients/${StorageUtil().cliUUID}.png', + imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${StorageUtil().devUUID}&cliID=${StorageUtil().cliUUID}&atividade=getFoto&Documento=${item['VDO_DOCUMENTO']}&tipo=E', statusHashMap: [ if (item['MOT_DESCRICAO'] != null) Map.from({item['MOT_DESCRICAO'].toString().toUpperCase(): FlutterFlowTheme.of(context).primary}), ], From a25f96bd7e87ef031c16a8f02c2e439d248655d1 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Thu, 31 Oct 2024 17:17:55 -0300 Subject: [PATCH 07/33] WIP of Thrones --- ...search_modal_template_component_model.dart | 12 +- ...earch_modal_template_component_widget.dart | 258 ++++-------------- 2 files changed, 64 insertions(+), 206 deletions(-) diff --git a/lib/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_model.dart b/lib/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_model.dart index a8efa6c4..8902a477 100644 --- a/lib/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_model.dart +++ b/lib/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_model.dart @@ -4,8 +4,7 @@ import 'package:hub/components/templates_components/visitor_search_modal_templat import 'package:hub/flutter_flow/flutter_flow_model.dart'; import 'package:hub/shared/utils/storage_util.dart'; -class VisitorSearchModalTemplateComponentModel - extends FlutterFlowModel { +class VisitorSearchModalTemplateComponentModel extends FlutterFlowModel { late final String devUUID; late final String userUUID; late final String cliUUID; @@ -14,18 +13,15 @@ class VisitorSearchModalTemplateComponentModel void addToVisitors(dynamic item) => visitors.add(item); void removeFromVisitors(dynamic item) => visitors.remove(item); void removeAtIndexFromVisitors(int index) => visitors.removeAt(index); - void insertAtIndexInVisitors(int index, dynamic item) => - visitors.insert(index, item); - void updateVisitorsAtIndex(int index, Function(dynamic) updateFn) => - visitors[index] = updateFn(visitors[index]); + void insertAtIndexInVisitors(int index, dynamic item) => visitors.insert(index, item); + void updateVisitorsAtIndex(int index, Function(dynamic) updateFn) => visitors[index] = updateFn(visitors[index]); List docs = []; void addToDocs(String item) => docs.add(item); void removeFromDocs(String item) => docs.remove(item); void removeAtIndexFromDocs(int index) => docs.removeAt(index); void insertAtIndexInDocs(int index, String item) => docs.insert(index, item); - void updateDocsAtIndex(int index, Function(String) updateFn) => - docs[index] = updateFn(docs[index]); + void updateDocsAtIndex(int index, Function(String) updateFn) => docs[index] = updateFn(docs[index]); FocusNode? textFieldFocusNode; TextEditingController? textController; diff --git a/lib/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_widget.dart b/lib/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_widget.dart index 29597fc5..f41722fa 100644 --- a/lib/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_widget.dart +++ b/lib/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_widget.dart @@ -26,13 +26,10 @@ class VisitorSearchModalTemplateComponentWidget extends StatefulWidget { final Future Function(List? docsParam)? getDocs; @override - State createState() => - _VisitorSearchModalTemplateComponentWidgetState(); + State createState() => _VisitorSearchModalTemplateComponentWidgetState(); } -class _VisitorSearchModalTemplateComponentWidgetState - extends State - with TickerProviderStateMixin { +class _VisitorSearchModalTemplateComponentWidgetState extends State with TickerProviderStateMixin { late VisitorSearchModalTemplateComponentModel _model; safeSetState(VoidCallback callback) { @@ -43,8 +40,7 @@ class _VisitorSearchModalTemplateComponentWidgetState @override void initState() { super.initState(); - _model = - createModel(context, () => VisitorSearchModalTemplateComponentModel()); + _model = createModel(context, () => VisitorSearchModalTemplateComponentModel()); _model.textController ??= TextEditingController(); _model.textFieldFocusNode ??= FocusNode(); @@ -85,8 +81,7 @@ class _VisitorSearchModalTemplateComponentWidgetState ), ), Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(16.0, 25.0, 16.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 25.0, 16.0, 0.0), child: TextFormField( controller: _model.textController, focusNode: _model.textFieldFocusNode, @@ -99,84 +94,41 @@ class _VisitorSearchModalTemplateComponentWidgetState obscureText: false, decoration: InputDecoration( isDense: true, - labelText: FFLocalizations.of(context).getText( - 'cjlpru1m' /* Procure pelo documento do visi... */, - ), + labelText: FFLocalizations.of(context).getText('cjlpru1m'), labelStyle: FlutterFlowTheme.of(context).labelMedium.override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( - borderSide: BorderSide( - color: FlutterFlowTheme.of(context).accent1, - width: 0.5, - ), - borderRadius: const BorderRadius.only( - bottomLeft: Radius.circular(15.0), - bottomRight: Radius.circular(15.0), - topLeft: Radius.circular(15.0), - topRight: Radius.circular(15.0), - ), + borderSide: BorderSide(color: FlutterFlowTheme.of(context).accent1, width: 0.5), + borderRadius: const BorderRadius.only(bottomLeft: Radius.circular(15.0), bottomRight: Radius.circular(15.0), topLeft: Radius.circular(15.0), topRight: Radius.circular(15.0)), ), focusedBorder: OutlineInputBorder( - borderSide: BorderSide( - color: FlutterFlowTheme.of(context).primary, - width: 0.5, - ), - borderRadius: const BorderRadius.only( - bottomLeft: Radius.circular(15.0), - bottomRight: Radius.circular(15.0), - topLeft: Radius.circular(15.0), - topRight: Radius.circular(15.0), - ), + borderSide: BorderSide(color: FlutterFlowTheme.of(context).primary, width: 0.5), + borderRadius: const BorderRadius.only(bottomLeft: Radius.circular(15.0), bottomRight: Radius.circular(15.0), topLeft: Radius.circular(15.0), topRight: Radius.circular(15.0)), ), errorBorder: OutlineInputBorder( - borderSide: BorderSide( - color: FlutterFlowTheme.of(context).error, - width: 0.5, - ), - borderRadius: const BorderRadius.only( - bottomLeft: Radius.circular(15.0), - bottomRight: Radius.circular(15.0), - topLeft: Radius.circular(15.0), - topRight: Radius.circular(15.0), - ), + borderSide: BorderSide(color: FlutterFlowTheme.of(context).error, width: 0.5), + borderRadius: const BorderRadius.only(bottomLeft: Radius.circular(15.0), bottomRight: Radius.circular(15.0), topLeft: Radius.circular(15.0), topRight: Radius.circular(15.0)), ), focusedErrorBorder: OutlineInputBorder( - borderSide: BorderSide( - color: FlutterFlowTheme.of(context).error, - width: 0.5, - ), - borderRadius: const BorderRadius.only( - bottomLeft: Radius.circular(15.0), - bottomRight: Radius.circular(15.0), - topLeft: Radius.circular(15.0), - topRight: Radius.circular(15.0), - ), + borderSide: BorderSide(color: FlutterFlowTheme.of(context).error, width: 0.5), + borderRadius: const BorderRadius.only(bottomLeft: Radius.circular(15.0), bottomRight: Radius.circular(15.0), topLeft: Radius.circular(15.0), topRight: Radius.circular(15.0)), ), filled: true, fillColor: FlutterFlowTheme.of(context).primaryBackground, - prefixIcon: Icon( - Icons.search_outlined, - color: FlutterFlowTheme.of(context).accent1, - ), + prefixIcon: Icon(Icons.search_outlined, color: FlutterFlowTheme.of(context).accent1), ), style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), - keyboardType: - const TextInputType.numberWithOptions(signed: true), + keyboardType: const TextInputType.numberWithOptions(signed: true), validator: _model.textControllerValidator.asValidator(context), - inputFormatters: [ - FilteringTextInputFormatter.allow(RegExp('[0-9]')), - ], + inputFormatters: [FilteringTextInputFormatter.allow(RegExp('[0-9]'))], ), ), if (_model.visitors.isNotEmpty && _model.visitors.isNotEmpty) @@ -185,33 +137,25 @@ class _VisitorSearchModalTemplateComponentWidgetState mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 16.0, 12.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 12.0, 0.0, 0.0), child: Text( - FFLocalizations.of(context).getText( - '9coywebh' /* Visitantes encontrados */, - ), + FFLocalizations.of(context).getText('9coywebh'), style: FlutterFlowTheme.of(context).labelMedium.override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 4.0, 12.0, 16.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(4.0, 12.0, 16.0, 0.0), child: Text( _model.visitors.length.toString(), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -222,12 +166,10 @@ class _VisitorSearchModalTemplateComponentWidgetState builder: (context) { if (_model.visitors.isNotEmpty) { return Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 8.0, 8.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 8.0, 8.0, 0.0), child: Builder( builder: (context) { - final visitor = - _model.visitors.map((e) => e).toList(); + final visitor = _model.visitors.map((e) => e).toList(); final doc = _model.docs.map((e) => e).toList(); return ListView.builder( padding: EdgeInsets.zero, @@ -237,8 +179,7 @@ class _VisitorSearchModalTemplateComponentWidgetState final visitorItem = visitor[visitorIndex]; final docItem = doc[visitorIndex]; return Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 1.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 1.0), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, @@ -247,26 +188,20 @@ class _VisitorSearchModalTemplateComponentWidgetState child: Container( width: 100.0, decoration: BoxDecoration( - color: FlutterFlowTheme.of(context) - .primaryBackground, + color: FlutterFlowTheme.of(context).primaryBackground, ), child: Padding( padding: const EdgeInsets.all(8.0), child: Row( mainAxisSize: MainAxisSize.min, - crossAxisAlignment: - CrossAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, children: [ ClipRRect( - borderRadius: - BorderRadius.circular(40.0), + borderRadius: BorderRadius.circular(40.0), child: CachedNetworkImage( - fadeInDuration: const Duration( - milliseconds: 500), - fadeOutDuration: const Duration( - milliseconds: 500), - imageUrl: - "https://freaccess.com.br/freaccess/getImage.php?devUUID=${_model.devUUID}&userUUID=${_model.userUUID}&cliID=${_model.cliUUID}&atividade=getFoto&Documento=${getJsonField( + fadeInDuration: const Duration(milliseconds: 500), + fadeOutDuration: const Duration(milliseconds: 500), + imageUrl: "https://freaccess.com.br/freaccess/getImage.php?devUUID=${_model.devUUID}&userUUID=${_model.userUUID}&cliID=${_model.cliUUID}&atividade=getFoto&Documento=${getJsonField( visitorItem, r'''$.VTE_DOCUMENTO''', ).toString()}&tipo=E", @@ -278,39 +213,20 @@ class _VisitorSearchModalTemplateComponentWidgetState Expanded( child: Column( mainAxisSize: MainAxisSize.max, - mainAxisAlignment: - MainAxisAlignment.center, - crossAxisAlignment: - CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - padding: - const EdgeInsetsDirectional - .fromSTEB( - 12.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 0.0, 0.0), child: Text( valueOrDefault( - getJsonField( - visitorItem, - r'''$.VTE_NOME''', - )?.toString(), + getJsonField(visitorItem, r'''$.VTE_NOME''')?.toString(), 'NOT FOUND', ), - style: FlutterFlowTheme.of( - context) - .bodyLarge - .override( - fontFamily: - FlutterFlowTheme.of( - context) - .bodyLargeFamily, + style: FlutterFlowTheme.of(context).bodyLarge.override( + fontFamily: FlutterFlowTheme.of(context).bodyLargeFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .bodyLargeFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyLargeFamily), ), ), ), @@ -321,16 +237,9 @@ class _VisitorSearchModalTemplateComponentWidgetState borderRadius: 20.0, borderWidth: 1.0, buttonSize: 40.0, - icon: Icon( - Icons.close, - color: - FlutterFlowTheme.of(context) - .customColor6, - size: 20.0, - ), + icon: Icon(Icons.close, color: FlutterFlowTheme.of(context).customColor6, size: 20.0), onPressed: () async { - _model.removeFromVisitors( - visitorItem); + _model.removeFromVisitors(visitorItem); _model.removeFromDocs(docItem); safeSetState(() {}); }, @@ -350,9 +259,7 @@ class _VisitorSearchModalTemplateComponentWidgetState return Container( width: 100.0, height: 100.0, - decoration: BoxDecoration( - color: FlutterFlowTheme.of(context).primaryBackground, - ), + decoration: BoxDecoration(color: FlutterFlowTheme.of(context).primaryBackground), ); } }, @@ -363,15 +270,7 @@ class _VisitorSearchModalTemplateComponentWidgetState mainAxisSize: MainAxisSize.max, children: [ FFButtonWidget( - onPressed: MediaQuery.of(context).viewInsets.bottom > 0 - ? () async { - await addVisitor(context); - - safeSetState(() {}); - } - : () async { - await sendVisitors(context); - }, + onPressed: MediaQuery.of(context).viewInsets.bottom > 0 ? () async => await addVisitor(context).whenComplete(safeSetState(() {})) : () async => await sendVisitors(context), text: MediaQuery.of(context).viewInsets.bottom > 0 ? FFLocalizations.of(context).getVariableText( enText: 'Add', @@ -384,37 +283,23 @@ class _VisitorSearchModalTemplateComponentWidgetState options: FFButtonOptions( width: MediaQuery.of(context).size.width * 0.3, height: MediaQuery.of(context).size.width * 0.1, - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), color: FlutterFlowTheme.of(context).primary, textStyle: FlutterFlowTheme.of(context).titleSmall.override( - fontFamily: - FlutterFlowTheme.of(context).titleSmallFamily, + fontFamily: FlutterFlowTheme.of(context).titleSmallFamily, color: Colors.white, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).titleSmallFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).titleSmallFamily), ), elevation: 3.0, - borderSide: const BorderSide( - color: Colors.transparent, - width: 1.0, - ), - borderRadius: const BorderRadius.only( - bottomLeft: Radius.circular(15), - bottomRight: Radius.circular(15), - topLeft: Radius.circular(15), - topRight: Radius.circular(15), - ), + borderSide: const BorderSide(color: Colors.transparent, width: 1.0), + borderRadius: const BorderRadius.only(bottomLeft: Radius.circular(15), bottomRight: Radius.circular(15), topLeft: Radius.circular(15), topRight: Radius.circular(15)), ), ), ], ), - const SizedBox( - height: 30.0, - ) + const SizedBox(height: 30.0) ], ), ), @@ -422,9 +307,7 @@ class _VisitorSearchModalTemplateComponentWidgetState } Future sendVisitors(BuildContext context) async { - await widget.getVisitors?.call( - _model.visitors, - ); + await widget.getVisitors?.call(_model.visitors); log('() => docs: ${_model.docs}'); await widget.getDocs?.call(_model.docs); context.pop(); @@ -433,39 +316,20 @@ class _VisitorSearchModalTemplateComponentWidgetState Future addVisitor(BuildContext context) async { safeSetState(() { _model.textController?.text = _model.textController.text; - _model.textController?.selection = - TextSelection.collapsed(offset: _model.textController!.text.length); + _model.textController?.selection = TextSelection.collapsed(offset: _model.textController!.text.length); }); - _model.getVisitorByDoc = await PhpGroup.getVisitorByDocCall.call( - documento: _model.textController.text, - ); + _model.getVisitorByDoc = await PhpGroup.getVisitorByDocCall.call(documento: _model.textController.text.replaceFirst(RegExp(r'^0+'), '')); - if (PhpGroup.getVisitorByDocCall.vistanteId( - (_model.getVisitorByDoc?.jsonBody ?? ''), - ) != - '0' && - PhpGroup.getVisitorByDocCall - .error((_model.getVisitorByDoc?.jsonBody ?? '')) == - false && - PhpGroup.getVisitorByDocCall - .vistanteId((_model.getVisitorByDoc?.jsonBody ?? '')) != - null) { + if (PhpGroup.getVisitorByDocCall.vistanteId((_model.getVisitorByDoc?.jsonBody ?? '')) != '0' && PhpGroup.getVisitorByDocCall.error((_model.getVisitorByDoc?.jsonBody ?? '')) == false && PhpGroup.getVisitorByDocCall.vistanteId((_model.getVisitorByDoc?.jsonBody ?? '')) != null) { String newDoc = _model.textController.text; bool existDoc = _model.docs.contains(newDoc); if (existDoc == false) { - _model.addToVisitors(PhpGroup.getVisitorByDocCall.visitante( - (_model.getVisitorByDoc?.jsonBody ?? ''), - )); + _model.addToVisitors(PhpGroup.getVisitorByDocCall.visitante((_model.getVisitorByDoc?.jsonBody ?? ''))); safeSetState(() {}); _model.addToDocs(_model.textController.text); safeSetState(() {}); } else if (existDoc == true) { - ToastUtil.showToast( - message: FFLocalizations.of(context).getVariableText( - ptText: 'Visitante já adicionado!', - enText: 'Visitor already added!'), - gravity: ToastGravity.TOP, - backgroundColor: Colors.red); + ToastUtil.showToast(message: FFLocalizations.of(context).getVariableText(ptText: 'Visitante já adicionado!', enText: 'Visitor already added!'), gravity: ToastGravity.TOP, backgroundColor: Colors.red); } } else { await showAdaptiveDialog( @@ -473,9 +337,7 @@ class _VisitorSearchModalTemplateComponentWidgetState context: context, builder: (context) { return Dialog( - child: VisitorNotFoundComponentWidget( - doc: _model.textController.text, - ), + child: VisitorNotFoundComponentWidget(doc: _model.textController.text), ); }, ).then((value) => safeSetState(() { From fa393a0b33366b1fa429136b088fdbfa62bafd2a Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Fri, 1 Nov 2024 11:14:22 -0300 Subject: [PATCH 08/33] dart format --- integration_test/app_test.dart | 45 +- lib/backend/api_requests/api_calls.dart | 3 +- lib/backend/api_requests/api_manager.dart | 77 +- .../api_requests/get_streamed_response.dart | 3 +- .../firebase_messaging_service.dart | 6 +- .../notifications/notification_service.dart | 51 +- lib/backend/schema/structs/device_struct.dart | 10 +- lib/backend/schema/util/schema_util.dart | 23 +- .../atom_image_svg_theme.dart | 8 +- .../custom_datepicker.dart | 70 +- .../custom_select.dart | 39 +- .../media_upload_button.dart | 52 +- .../submit_button.dart | 6 +- .../shared_components_atoms/tabview.dart | 4 +- .../text_field_component_model.dart | 6 +- .../text_field_component_widget.dart | 18 +- .../message_opt_modal/opt_modal_model.dart | 3 +- .../message_opt_modal/opt_modal_widget.dart | 54 +- .../opt_modal/opt_modal_model.dart | 7 +- .../opt_modal/opt_modal_widget.dart | 91 +-- .../option_selection_modal_model.dart | 6 +- .../option_selection_modal_widget.dart | 49 +- .../order_filter_modal_model.dart | 8 +- .../order_filter_modal_widget.dart | 62 +- .../throw_exception_model.dart | 4 +- .../throw_exception_widget.dart | 151 ++-- .../visitor_not_found_component_model.dart | 6 +- .../visitor_not_found_component_widget.dart | 37 +- ...m_arrow_linked_locals_component_model.dart | 6 +- ..._arrow_linked_locals_component_widget.dart | 78 +- .../local_profile_component_model.dart | 3 +- .../local_profile_component_widget.dart | 24 +- .../menu_component/menu_component_model.dart | 25 +- .../menu_staggered_view_component_widget.dart | 8 +- .../message_well_component_model.dart | 11 +- .../message_well_component_widget.dart | 27 +- .../schedule_visit_detail_model.dart | 7 +- .../schedule_visit_detail_widget.dart | 397 +++------- ...p_arrow_linked_locals_component_model.dart | 3 +- ..._arrow_linked_locals_component_widget.dart | 64 +- ...cation_modal_template_component_model.dart | 3 +- ...ation_modal_template_component_widget.dart | 163 ++-- .../card_item_template_component_model.dart | 9 +- .../card_item_template_component_widget.dart | 20 +- .../change_pass_model.dart | 24 +- .../change_pass_widget.dart | 107 +-- .../details_component_widget.dart | 72 +- ...got_password_template_component_model.dart | 11 +- ...ot_password_template_component_widget.dart | 83 +- ...item_details_template_component_model.dart | 3 +- ...tem_details_template_component_widget.dart | 154 ++-- .../message_notification_widget.dart | 75 +- .../provisional_schedule_template_model.dart | 24 +- .../provisional_shcedule_template_widget.dart | 742 +++++------------- ...ode_pass_key_template_component_model.dart | 17 +- ...de_pass_key_template_component_widget.dart | 118 ++- ...siter_vistor_template_component_model.dart | 16 +- ...iter_vistor_template_component_widget.dart | 408 ++++------ .../sign_in_template_component_model.dart | 13 +- .../sign_in_template_component_widget.dart | 555 ++++++------- .../sign_up_template_component_model.dart | 10 +- .../sign_up_template_component_widget.dart | 564 ++++--------- .../view_visit_detail_widget.dart | 304 +++---- ...etails_modal_template_component_model.dart | 10 +- ...tails_modal_template_component_widget.dart | 10 +- ...etails_modal_template_component_model.dart | 6 +- ...tails_modal_template_component_widget.dart | 85 +- ...earch_modal_template_component_widget.dart | 68 +- .../welcome_template_component_model.dart | 6 +- .../welcome_template_component_widget.dart | 233 ++---- lib/firebase_options.dart | 9 +- lib/flutter_flow/custom_icons.dart | 5 +- lib/flutter_flow/flutter_flow_animations.dart | 17 +- .../flutter_flow_button_tabbar.dart | 125 +-- .../flutter_flow_checkbox_group.dart | 19 +- lib/flutter_flow/flutter_flow_drop_down.dart | 70 +- .../flutter_flow_icon_button.dart | 16 +- lib/flutter_flow/flutter_flow_model.dart | 9 +- lib/flutter_flow/flutter_flow_theme.dart | 21 +- lib/flutter_flow/flutter_flow_util.dart | 93 +-- lib/flutter_flow/flutter_flow_widgets.dart | 61 +- lib/flutter_flow/form_field_controller.dart | 6 +- lib/flutter_flow/internationalization.dart | 39 +- lib/flutter_flow/keep_alive_wrapper.dart | 5 +- lib/flutter_flow/lat_lng.dart | 7 +- lib/flutter_flow/nav/nav.dart | 83 +- lib/flutter_flow/nav/serialization_util.dart | 10 +- lib/flutter_flow/permissions_util.dart | 3 +- lib/flutter_flow/place.dart | 2 +- lib/flutter_flow/random_data_util.dart | 11 +- lib/flutter_flow/request_manager.dart | 11 +- lib/flutter_flow/upload_data.dart | 98 +-- lib/flutter_flow/uploaded_file.dart | 2 +- lib/index.dart | 15 +- lib/main.dart | 8 +- .../about_property_screen.dart | 8 +- .../acess_history_page_model.dart | 3 +- .../acess_history_page_widget.dart | 68 +- .../delivery_schedule_widget.dart | 3 +- .../fast_pass_page/fast_pass_page_widget.dart | 38 +- .../forgot_password_model.dart | 22 +- .../forgot_password_screen.dart | 136 ++-- .../liberation_history_model.dart | 3 +- .../liberation_history_widget.dart | 58 +- .../message_history_page_model.dart | 9 +- .../message_history_page_widget.dart | 59 +- .../package_order_page.dart | 92 +-- .../people_on_the_property_page_widget.dart | 28 +- .../pets_history_screen.dart | 14 +- lib/pages/pets_page/pets_page_model.dart | 33 +- lib/pages/pets_page/pets_page_widget.dart | 131 +++- .../preferences_settings_model.dart | 8 - .../preferences_settings_widget.dart | 24 +- .../provisional_schedule_widget.dart | 3 +- .../qr_code_page/qr_code_page_model.dart | 23 +- .../qr_code_page/qr_code_page_widget.dart | 104 +-- .../reception_page/reception_page_widget.dart | 20 +- .../register_visitor_page_model.dart | 6 +- .../register_visitor_page_widget.dart | 6 +- .../reservation_page_widget.dart | 42 +- .../schedule_complete_visit_page_model.dart | 85 +- .../schedule_complete_visit_page_widget.dart | 126 ++- .../visit_history_page_widget.dart | 47 +- .../sign_in_page/sign_in_page_model.dart | 5 +- .../sign_up_page/sign_up_page_model.dart | 5 +- .../vehicle_model.dart | 20 +- .../vehicles_on_the_property.dart | 9 +- lib/pages/visits_on_the_property/model.dart | 7 +- .../visits_on_the_property_screen.dart | 18 +- .../welcome_page/welcome_page_model.dart | 5 +- .../welcome_page/welcome_page_widget.dart | 8 +- .../components/atoms/atom_terms_of_use.dart | 28 +- lib/shared/enums/enum_throw_exception.dart | 6 +- lib/shared/extensions/dialog_extensions.dart | 3 +- .../flutter_secure_storage_extensions.dart | 33 +- lib/shared/helpers/secure_storage_helper.dart | 12 +- .../shared_preferences_storage_helper.dart | 32 +- lib/shared/helpers/sqlite_storage_helper.dart | 22 +- .../authentication_service.dart | 10 +- .../localization/localization_service.dart | 6 +- lib/shared/utils/cache_util.dart | 2 +- lib/shared/utils/device_util.dart | 4 +- lib/shared/utils/dialog_util.dart | 10 +- lib/shared/utils/image_util.dart | 3 +- lib/shared/utils/log_util.dart | 7 +- lib/shared/utils/snackbar_util.dart | 10 +- lib/shared/utils/validator_util.dart | 1 - lib/shared/widgets/menu.dart | 10 +- 148 files changed, 2876 insertions(+), 4809 deletions(-) diff --git a/integration_test/app_test.dart b/integration_test/app_test.dart index f5a1de48..3c69a8d3 100644 --- a/integration_test/app_test.dart +++ b/integration_test/app_test.dart @@ -13,8 +13,7 @@ void main() { group('Initialization', () { group('Navigation', () { - setUpAll(() async => - await initializeApp().then((_) => StorageUtil().isLogged = false)); + setUpAll(() async => await initializeApp().then((_) => StorageUtil().isLogged = false)); testWidgets('Test Welcome', (WidgetTester tester) async { widget = tester; await _testWelcome(); @@ -25,16 +24,14 @@ void main() { }); group('Authentication', () { group('Sign in', () { - setUpAll(() async => - await initializeApp().then((_) => StorageUtil().isLogged = false)); + setUpAll(() async => await initializeApp().then((_) => StorageUtil().isLogged = false)); testWidgets('Test Sign In', (WidgetTester tester) async { widget = tester; await _testSignIn(); }); }); group('Sign up', () { - setUpAll(() async => - await initializeApp().then((_) => StorageUtil().isLogged = false)); + setUpAll(() async => await initializeApp().then((_) => StorageUtil().isLogged = false)); testWidgets('Test Sign Up', (WidgetTester tester) async { widget = tester; await _testSignUp(); @@ -96,14 +93,8 @@ Future _testWelcome() async { Future _testSignIn() async { await widget.pumpWidget(const App()); await _navigateToSignIn(); - await _auth({ - 'emailTextFormField': 'erro@exemplo.com', - 'passwordTextFormField': '12345678' - }); - await _auth({ - 'emailTextFormField': 'email_app@exemplo.com', - 'passwordTextFormField': '12345678' - }); + await _auth({'emailTextFormField': 'erro@exemplo.com', 'passwordTextFormField': '12345678'}); + await _auth({'emailTextFormField': 'email_app@exemplo.com', 'passwordTextFormField': '12345678'}); } Future _testSignUp() async { @@ -120,17 +111,10 @@ Future _testSignUp() async { var name = randomString(7, 7, true, true, true); var email = '$name@example.com'; var password = '12345678'; - credentials = { - 'nameTextFormField': name, - 'emailTextFormField': email, - 'passwordTextFormField': password - }; + credentials = {'nameTextFormField': name, 'emailTextFormField': email, 'passwordTextFormField': password}; await _navigateToSignUp(); await _auth(credentials); - credentials = { - 'emailTextFormField': email, - 'passwordTextFormField': password - }; + credentials = {'emailTextFormField': email, 'passwordTextFormField': password}; await _auth(credentials); } @@ -152,20 +136,17 @@ Future _testForgotPassword() async { Future _recoveryPassword() async { await widget.pumpAndSettle(); - final Finder forgotPassword = - find.byKey(const ValueKey('ForgotPassword')); + final Finder forgotPassword = find.byKey(const ValueKey('ForgotPassword')); if (forgotPassword.evaluate().isNotEmpty) await widget.tap(forgotPassword); await widget.ensureVisible(forgotPassword); await widget.pumpAndSettle(); } Future _navigateBackUsingSystemGesture() async => - IntegrationTestWidgetsFlutterBinding.instance.keyboard - .isLogicalKeyPressed(LogicalKeyboardKey.escape); + IntegrationTestWidgetsFlutterBinding.instance.keyboard.isLogicalKeyPressed(LogicalKeyboardKey.escape); Future _navigateToSignUp() async { await widget.pumpAndSettle(); - final Finder navToSignUp = - find.byKey(const ValueKey('toggleSignUpPage')); + final Finder navToSignUp = find.byKey(const ValueKey('toggleSignUpPage')); if (navToSignUp.evaluate().isNotEmpty) { await widget.tap(navToSignUp); await widget.pumpAndSettle(); @@ -174,8 +155,7 @@ Future _navigateToSignUp() async { Future _navigateToSignIn() async { await widget.pumpAndSettle(); - final Finder navToSignIn = - find.byKey(const ValueKey('toggleSignInPage')); + final Finder navToSignIn = find.byKey(const ValueKey('toggleSignInPage')); expect(navToSignIn, findsOneWidget); if (navToSignIn.evaluate().isNotEmpty) { await widget.tap(navToSignIn); @@ -214,8 +194,7 @@ Future _submit(String key) async { await widget.pumpAndSettle(); } - final Finder throwExceptionWidget = - find.byKey(const ValueKey('ThrowExceptionWidget')); + final Finder throwExceptionWidget = find.byKey(const ValueKey('ThrowExceptionWidget')); await widget.pumpAndSettle(); if (throwExceptionWidget.evaluate().isNotEmpty) { await widget.ensureVisible(throwExceptionWidget); diff --git a/lib/backend/api_requests/api_calls.dart b/lib/backend/api_requests/api_calls.dart index 7b8c30e2..6d8ec9e1 100644 --- a/lib/backend/api_requests/api_calls.dart +++ b/lib/backend/api_requests/api_calls.dart @@ -2520,7 +2520,8 @@ class ApiPagingParams { }); @override - String toString() => 'PagingParams(nextPageNumber: $nextPageNumber, numItems: $numItems, lastResponse: $lastResponse,)'; + String toString() => + 'PagingParams(nextPageNumber: $nextPageNumber, numItems: $numItems, lastResponse: $lastResponse,)'; } String _toEncodable(dynamic item) { diff --git a/lib/backend/api_requests/api_manager.dart b/lib/backend/api_requests/api_manager.dart index 72087153..5e8f68bb 100644 --- a/lib/backend/api_requests/api_manager.dart +++ b/lib/backend/api_requests/api_manager.dart @@ -107,9 +107,7 @@ class ApiCallResponse { final Object? exception; bool get succeeded => statusCode >= 200 && statusCode < 300; String getHeader(String headerName) => headers[headerName] ?? ''; - String get bodyText => - response?.body ?? - (jsonBody is String ? jsonBody as String : jsonEncode(jsonBody)); + String get bodyText => response?.body ?? (jsonBody is String ? jsonBody as String : jsonEncode(jsonBody)); String get exceptionMessage => exception.toString(); static ApiCallResponse fromHttpResponse( @@ -123,9 +121,7 @@ class ApiCallResponse { if (bodyType == BodyType.BLOB) { jsonBody = response.bodyBytes; } else { - final responseBody = decodeUtf8 && returnBody - ? const Utf8Decoder().convert(response.bodyBytes) - : response.body; + final responseBody = decodeUtf8 && returnBody ? const Utf8Decoder().convert(response.bodyBytes) : response.body; jsonBody = returnBody ? json.decode(responseBody) : null; } } catch (_) {} @@ -137,8 +133,7 @@ class ApiCallResponse { ); } - static ApiCallResponse fromCloudCallResponse(Map response) => - ApiCallResponse( + static ApiCallResponse fromCloudCallResponse(Map response) => ApiCallResponse( response['body'], ApiManager.toStringMap(response['headers'] ?? {}), response['statusCode'] ?? 400, @@ -155,17 +150,14 @@ class ApiManager { static String? _accessToken; - static void clearCache(String callName) => _apiCache.keys - .toSet() - .forEach((k) => k.callName == callName ? _apiCache.remove(k) : null); + static void clearCache(String callName) => + _apiCache.keys.toSet().forEach((k) => k.callName == callName ? _apiCache.remove(k) : null); static Map toStringMap(Map map) => map.map((key, value) => MapEntry(key.toString(), value.toString())); - static String asQueryParams(Map map) => map.entries - .map((e) => - "${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value.toString())}") - .join('&'); + static String asQueryParams(Map map) => + map.entries.map((e) => "${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value.toString())}").join('&'); static Future urlRequest( ApiCallType callType, @@ -179,15 +171,13 @@ class ApiManager { BodyType? bodyType, }) async { if (params.isNotEmpty) { - final specifier = - Uri.parse(apiUrl).queryParameters.isNotEmpty ? '&' : '?'; + final specifier = Uri.parse(apiUrl).queryParameters.isNotEmpty ? '&' : '?'; apiUrl = '$apiUrl$specifier${asQueryParams(params)}'; } if (isStreamingApi) { client ??= http.Client(); - final request = - http.Request(callType.toString().split('.').last, Uri.parse(apiUrl)) - ..headers.addAll(toStringMap(headers)); + final request = http.Request(callType.toString().split('.').last, Uri.parse(apiUrl)) + ..headers.addAll(toStringMap(headers)); final streamedResponse = await getStreamedResponse(request); return ApiCallResponse( null, @@ -199,10 +189,8 @@ class ApiManager { final makeRequest = callType == ApiCallType.GET ? (client != null ? client.get : http.get) : (client != null ? client.delete : http.delete); - final response = - await makeRequest(Uri.parse(apiUrl), headers: toStringMap(headers)); - return ApiCallResponse.fromHttpResponse( - response, returnBody, decodeUtf8, bodyType); + final response = await makeRequest(Uri.parse(apiUrl), headers: toStringMap(headers)); + return ApiCallResponse.fromHttpResponse(response, returnBody, decodeUtf8, bodyType); } static Future requestWithBody( @@ -224,13 +212,11 @@ class ApiManager { (alwaysAllowBody && type == ApiCallType.DELETE), 'Invalid ApiCallType $type for request with body', ); - final postBody = - createBody(headers, params, body, bodyType, encodeBodyUtf8); + final postBody = createBody(headers, params, body, bodyType, encodeBodyUtf8); if (isStreamingApi) { client ??= http.Client(); - final request = - http.Request(type.toString().split('.').last, Uri.parse(apiUrl)) - ..headers.addAll(toStringMap(headers)); + final request = http.Request(type.toString().split('.').last, Uri.parse(apiUrl)) + ..headers.addAll(toStringMap(headers)); request.body = postBody; final streamedResponse = await getStreamedResponse(request); return ApiCallResponse( @@ -242,8 +228,7 @@ class ApiManager { } if (bodyType == BodyType.MULTIPART) { - return multipartRequest(type, apiUrl, headers, params, returnBody, - decodeUtf8, alwaysAllowBody, bodyType); + return multipartRequest(type, apiUrl, headers, params, returnBody, decodeUtf8, alwaysAllowBody, bodyType); } final requestFn = { @@ -252,10 +237,8 @@ class ApiManager { ApiCallType.PATCH: client != null ? client.patch : http.patch, ApiCallType.DELETE: client != null ? client.delete : http.delete, }[type]!; - final response = await requestFn(Uri.parse(apiUrl), - headers: toStringMap(headers), body: postBody); - return ApiCallResponse.fromHttpResponse( - response, returnBody, decodeUtf8, bodyType); + final response = await requestFn(Uri.parse(apiUrl), headers: toStringMap(headers), body: postBody); + return ApiCallResponse.fromHttpResponse(response, returnBody, decodeUtf8, bodyType); } static Future multipartRequest( @@ -275,19 +258,14 @@ class ApiManager { ); bool isFile(dynamic e) => - e is FFUploadedFile || - e is List || - (e is List && e.firstOrNull is FFUploadedFile); + e is FFUploadedFile || e is List || (e is List && e.firstOrNull is FFUploadedFile); - final nonFileParams = toStringMap( - Map.fromEntries(params.entries.where((e) => !isFile(e.value)))); + final nonFileParams = toStringMap(Map.fromEntries(params.entries.where((e) => !isFile(e.value)))); List files = []; params.entries.where((e) => isFile(e.value)).forEach((e) { final param = e.value; - final uploadedFiles = param is List - ? param as List - : [param as FFUploadedFile]; + final uploadedFiles = param is List ? param as List : [param as FFUploadedFile]; for (var uploadedFile in uploadedFiles) { files.add( http.MultipartFile.fromBytes( @@ -300,15 +278,13 @@ class ApiManager { } }); - final request = http.MultipartRequest( - type.toString().split('.').last, Uri.parse(apiUrl)) + final request = http.MultipartRequest(type.toString().split('.').last, Uri.parse(apiUrl)) ..headers.addAll(toStringMap(headers)) ..files.addAll(files); nonFileParams.forEach((key, value) => request.fields[key] = value); final response = await http.Response.fromStream(await request.send()); - return ApiCallResponse.fromHttpResponse( - response, returnBody, decodeUtf8, bodyType); + return ApiCallResponse.fromHttpResponse(response, returnBody, decodeUtf8, bodyType); } static MediaType? _getMediaType(String? filename) { @@ -357,13 +333,10 @@ class ApiManager { case null: break; } - if (contentType != null && - !headers.keys.any((h) => h.toLowerCase() == 'content-type')) { + if (contentType != null && !headers.keys.any((h) => h.toLowerCase() == 'content-type')) { headers['Content-Type'] = contentType; } - return encodeBodyUtf8 && postBody is String - ? utf8.encode(postBody) - : postBody; + return encodeBodyUtf8 && postBody is String ? utf8.encode(postBody) : postBody; } Future call(ApiCallOptions options) => makeApiCall( diff --git a/lib/backend/api_requests/get_streamed_response.dart b/lib/backend/api_requests/get_streamed_response.dart index 303a19e5..73280a05 100644 --- a/lib/backend/api_requests/get_streamed_response.dart +++ b/lib/backend/api_requests/get_streamed_response.dart @@ -1,4 +1,3 @@ import 'package:http/http.dart'; -Future getStreamedResponse(Request request) => - Client().send(request); \ No newline at end of file +Future getStreamedResponse(Request request) => Client().send(request); diff --git a/lib/backend/notifications/firebase_messaging_service.dart b/lib/backend/notifications/firebase_messaging_service.dart index dfe76047..d351fb2c 100644 --- a/lib/backend/notifications/firebase_messaging_service.dart +++ b/lib/backend/notifications/firebase_messaging_service.dart @@ -16,8 +16,7 @@ Future handleMessage(RemoteMessage message) async { class FirebaseMessagingService { // Singleton instance - static final FirebaseMessagingService _instance = - FirebaseMessagingService._internal(); + static final FirebaseMessagingService _instance = FirebaseMessagingService._internal(); // Factory constructor factory FirebaseMessagingService() => _instance; @@ -36,8 +35,7 @@ class FirebaseMessagingService { _firebaseMessaging.pluginConstants; } - static Future getToken() async => - await FirebaseMessaging.instance.getToken() ?? ''; + static Future getToken() async => await FirebaseMessaging.instance.getToken() ?? ''; Future updateDeviceToken() async { try { diff --git a/lib/backend/notifications/notification_service.dart b/lib/backend/notifications/notification_service.dart index 15303b61..ca716f72 100644 --- a/lib/backend/notifications/notification_service.dart +++ b/lib/backend/notifications/notification_service.dart @@ -11,8 +11,7 @@ import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/shared/utils/dialog_util.dart'; import 'package:hub/shared/utils/storage_util.dart'; -Future onMessageReceived( - Map payload, String? extra, String? handleClick) async { +Future onMessageReceived(Map payload, String? extra, String? handleClick) async { final localId = jsonDecode(payload['local']!)['CLI_ID']; final cliUUID = StorageUtil().cliUUID; @@ -62,10 +61,8 @@ Future onMessageReceived( enText: 'Approve Visit', ), FFLocalizations.of(context).getVariableText( - ptText: - 'Você tem certeza que deseja aprovar essa visita?', - enText: - 'Are you sure you want to approve this visit?', + ptText: 'Você tem certeza que deseja aprovar essa visita?', + enText: 'Are you sure you want to approve this visit?', ), () async { await answersRequest( @@ -102,10 +99,8 @@ Future onMessageReceived( enText: 'Block Visit', ), FFLocalizations.of(context).getVariableText( - ptText: - 'Você tem certeza que deseja bloquear essa visita?', - enText: - 'Are you sure you want to block this visit?', + ptText: 'Você tem certeza que deseja bloquear essa visita?', + enText: 'Are you sure you want to block this visit?', ), () async { await answersRequest .call( @@ -190,9 +185,7 @@ Future onMessageReceived( FFLocalizations.of(context).getVariableText( enText: 'Type', ptText: 'Tipo', - ): payload['USR_TIPO'].toString() == 'O' - ? 'Morador' - : 'Visitante', + ): payload['USR_TIPO'].toString() == 'O' ? 'Morador' : 'Visitante', FFLocalizations.of(context).getVariableText( enText: 'Access Date', ptText: 'Data de Acesso', @@ -235,11 +228,8 @@ Future onMessageReceived( child: MessageNotificationModalTemplateComponentWidget( id: localId, from: payload['remetente'].toString(), - to: payload['destinatario'].toString() == 'O' - ? 'Morador' - : 'Visitante', - message: - extra.toString().isEmpty ? 'Unknown' : extra.toString(), + to: payload['destinatario'].toString() == 'O' ? 'Morador' : 'Visitante', + message: extra.toString().isEmpty ? 'Unknown' : extra.toString(), ), ), ); @@ -274,16 +264,10 @@ class NotificationService { ledColor: Colors.white, ) ], - channelGroups: [ - NotificationChannelGroup( - channelGroupKey: 'basic_channel_group', - channelGroupName: 'group_1') - ], + channelGroups: [NotificationChannelGroup(channelGroupKey: 'basic_channel_group', channelGroupName: 'group_1')], debug: kDebugMode); - await AwesomeNotifications() - .isNotificationAllowed() - .then((isAllowed) async { + await AwesomeNotifications().isNotificationAllowed().then((isAllowed) async { final bool requestOSnotification = StorageUtil().requestOSnotification; if (requestOSnotification == false) { @@ -302,22 +286,18 @@ class NotificationService { onDismissActionReceivedMethod: onDismissActionReceivedMethod); } - static Future onActionReceivedMethod( - ReceivedAction receivedAction) async { + static Future onActionReceivedMethod(ReceivedAction receivedAction) async { final payload = receivedAction.payload ?? {}; final extra = receivedAction.body; final handleClick = payload['click_action']; onMessageReceived(payload, extra, handleClick); } - static Future onNotificationCreatedMethod( - ReceivedNotification receivedNotification) async {} + static Future onNotificationCreatedMethod(ReceivedNotification receivedNotification) async {} - static Future onNotificationDisplayedMethod( - ReceivedNotification receivedNotification) async {} + static Future onNotificationDisplayedMethod(ReceivedNotification receivedNotification) async {} - static Future onDismissActionReceivedMethod( - ReceivedAction receivedAction) async {} + static Future onDismissActionReceivedMethod(ReceivedAction receivedAction) async {} static Future show({ required final String title, @@ -351,8 +331,7 @@ class NotificationService { schedule: scheduled ? NotificationInterval( interval: Duration(seconds: interval!), - timeZone: - await AwesomeNotifications().getLocalTimeZoneIdentifier(), + timeZone: await AwesomeNotifications().getLocalTimeZoneIdentifier(), preciseAlarm: true) : null); } diff --git a/lib/backend/schema/structs/device_struct.dart b/lib/backend/schema/structs/device_struct.dart index 174afa98..620863c4 100644 --- a/lib/backend/schema/structs/device_struct.dart +++ b/lib/backend/schema/structs/device_struct.dart @@ -1,11 +1,9 @@ // ignore_for_file: unnecessary_getters_setters - import 'package:hub/flutter_flow/nav/nav.dart'; import 'index.dart'; - class DeviceStruct extends BaseStruct { DeviceStruct({ String? devUUID, @@ -67,8 +65,7 @@ class DeviceStruct extends BaseStruct { ), }.withoutNulls; - static DeviceStruct fromSerializableMap(Map data) => - DeviceStruct( + static DeviceStruct fromSerializableMap(Map data) => DeviceStruct( devUUID: deserializeParam( data['devUUID'], ParamType.String, @@ -98,8 +95,7 @@ class DeviceStruct extends BaseStruct { } @override - int get hashCode => - const ListEquality().hash([devUUID, version, description]); + int get hashCode => const ListEquality().hash([devUUID, version, description]); } DeviceStruct createDeviceStruct({ @@ -111,4 +107,4 @@ DeviceStruct createDeviceStruct({ devUUID: devUUID, version: version, description: description, - ); \ No newline at end of file + ); diff --git a/lib/backend/schema/util/schema_util.dart b/lib/backend/schema/util/schema_util.dart index 80a9f7a4..d6c251d9 100644 --- a/lib/backend/schema/util/schema_util.dart +++ b/lib/backend/schema/util/schema_util.dart @@ -6,13 +6,10 @@ import 'package:hub/backend/schema/enums/enums.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/nav/serialization_util.dart'; - - export 'package:collection/collection.dart' show ListEquality; export 'package:flutter/material.dart' show Color, Colors; export 'package:from_css_color/from_css_color.dart'; - typedef StructBuilder = T Function(Map data); abstract class BaseStruct { @@ -39,8 +36,7 @@ dynamic deserializeStructParam( return null; } return paramValues - .map((e) => deserializeStructParam(e, paramType, false, - structBuilder: structBuilder)) + .map((e) => deserializeStructParam(e, paramType, false, structBuilder: structBuilder)) .toList(); } else if (param is Map) { return structBuilder(param); @@ -58,16 +54,9 @@ List? getStructList( dynamic value, StructBuilder structBuilder, ) => - value is! List - ? null - : value - .whereType>() - .map((e) => structBuilder(e)) - .toList(); + value is! List ? null : value.whereType>().map((e) => structBuilder(e)).toList(); -List? getEnumList(dynamic value) => value is! List - ? null - : value.map((e) => deserializeEnum(e)).withoutNulls; +List? getEnumList(dynamic value) => value is! List ? null : value.map((e) => deserializeEnum(e)).withoutNulls; Color? getSchemaColor(dynamic value) => value is String ? fromCssColor(value) @@ -75,8 +64,6 @@ Color? getSchemaColor(dynamic value) => value is String ? value : null; -List? getColorsList(dynamic value) => - value is! List ? null : value.map(getSchemaColor).withoutNulls; +List? getColorsList(dynamic value) => value is! List ? null : value.map(getSchemaColor).withoutNulls; -List? getDataList(dynamic value) => - value is! List ? null : value.map((e) => castToType(e)!).toList(); \ No newline at end of file +List? getDataList(dynamic value) => value is! List ? null : value.map((e) => castToType(e)!).toList(); diff --git a/lib/components/atomic_components/shared_components_atoms/atom_image_svg_theme.dart b/lib/components/atomic_components/shared_components_atoms/atom_image_svg_theme.dart index 94484ab5..7f19801a 100644 --- a/lib/components/atomic_components/shared_components_atoms/atom_image_svg_theme.dart +++ b/lib/components/atomic_components/shared_components_atoms/atom_image_svg_theme.dart @@ -6,12 +6,7 @@ class AtomImageSvgTheme extends StatelessWidget { final double width; final double height; - const AtomImageSvgTheme({ - super.key, - required this.filename, - required this.width, - required this.height - }); + const AtomImageSvgTheme({super.key, required this.filename, required this.width, required this.height}); @override Widget build(BuildContext context) { @@ -21,5 +16,4 @@ class AtomImageSvgTheme extends StatelessWidget { return SvgPicture.asset(path, width: width, height: height); } - } diff --git a/lib/components/atomic_components/shared_components_atoms/custom_datepicker.dart b/lib/components/atomic_components/shared_components_atoms/custom_datepicker.dart index cffebe05..b615051b 100644 --- a/lib/components/atomic_components/shared_components_atoms/custom_datepicker.dart +++ b/lib/components/atomic_components/shared_components_atoms/custom_datepicker.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart'; @@ -66,8 +65,7 @@ class _CustomDatePickerState extends State { fontSize: 32.0, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).headlineLargeFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), ), pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, pickerForegroundColor: FlutterFlowTheme.of(context).primaryText, @@ -90,27 +88,19 @@ class _CustomDatePickerState extends State { child!, headerBackgroundColor: FlutterFlowTheme.of(context).primary, headerForegroundColor: FlutterFlowTheme.of(context).info, - headerTextStyle: - FlutterFlowTheme.of(context).headlineLarge.override( - fontFamily: - FlutterFlowTheme.of(context).headlineLargeFamily, - fontSize: 32.0, - letterSpacing: 0.0, - fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).headlineLargeFamily), - ), - pickerBackgroundColor: - FlutterFlowTheme.of(context).primaryBackground, + headerTextStyle: FlutterFlowTheme.of(context).headlineLarge.override( + fontFamily: FlutterFlowTheme.of(context).headlineLargeFamily, + fontSize: 32.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w600, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), + ), + pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, pickerForegroundColor: FlutterFlowTheme.of(context).info, - selectedDateTimeBackgroundColor: - FlutterFlowTheme.of(context).primary, - selectedDateTimeForegroundColor: - FlutterFlowTheme.of(context).info, - pickerDialForegroundColor: - FlutterFlowTheme.of(context).primaryText, - actionButtonForegroundColor: - FlutterFlowTheme.of(context).primaryText, + selectedDateTimeBackgroundColor: FlutterFlowTheme.of(context).primary, + selectedDateTimeForegroundColor: FlutterFlowTheme.of(context).info, + pickerDialForegroundColor: FlutterFlowTheme.of(context).primaryText, + actionButtonForegroundColor: FlutterFlowTheme.of(context).primaryText, iconSize: 24.0, ); }, @@ -167,8 +157,7 @@ class _CustomDatePickerState extends State { child: Stack( children: [ Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( controller: widget.controller, focusNode: widget.focusNode, @@ -178,26 +167,20 @@ class _CustomDatePickerState extends State { obscureText: false, decoration: InputDecoration( isDense: true, - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: widget.hintText, - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), lineHeight: 1.0, ), enabledBorder: OutlineInputBorder( @@ -234,11 +217,9 @@ class _CustomDatePickerState extends State { ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), lineHeight: 1.8, ), textAlign: TextAlign.start, @@ -246,8 +227,7 @@ class _CustomDatePickerState extends State { ), ), Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, diff --git a/lib/components/atomic_components/shared_components_atoms/custom_select.dart b/lib/components/atomic_components/shared_components_atoms/custom_select.dart index d0822749..14a97d94 100644 --- a/lib/components/atomic_components/shared_components_atoms/custom_select.dart +++ b/lib/components/atomic_components/shared_components_atoms/custom_select.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hub/flutter_flow/flutter_flow_drop_down.dart'; @@ -50,8 +49,7 @@ class _CustomSelectState extends State { children: [ Expanded( child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: Container( width: 100.0, height: 48.0, @@ -65,14 +63,11 @@ class _CustomSelectState extends State { isMultiSelect: false, width: double.infinity, height: double.infinity, - textStyle: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + textStyle: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), hintText: widget.hintText, icon: Icon( @@ -84,8 +79,7 @@ class _CustomSelectState extends State { borderColor: FlutterFlowTheme.of(context).customColor6, borderWidth: 0.5, borderRadius: 10.0, - margin: const EdgeInsetsDirectional.fromSTEB( - 12.0, 0.0, 16.0, 0.0), + margin: const EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 16.0, 0.0), hidesUnderline: true, isOverButton: true, isSearchable: false, @@ -98,31 +92,24 @@ class _CustomSelectState extends State { if (widget.isRequired) if (widget.dropDownValue == null || widget.dropDownValue == '') Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: Row( mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.max, children: [ Padding( - padding: - const EdgeInsetsDirectional.only(top: 5, start: 15), + padding: const EdgeInsetsDirectional.only(top: 5, start: 15), child: Text( FFLocalizations.of(context).getVariableText( enText: 'This field is required', ptText: 'Este campo é obrigatório', ), - style: FlutterFlowTheme.of(context) - .bodySmall - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodySmallFamily, - color: - FlutterFlowTheme.of(context).customColor6, + style: FlutterFlowTheme.of(context).bodySmall.override( + fontFamily: FlutterFlowTheme.of(context).bodySmallFamily, + color: FlutterFlowTheme.of(context).customColor6, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodySmallFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodySmallFamily), )), ), ], diff --git a/lib/components/atomic_components/shared_components_atoms/media_upload_button.dart b/lib/components/atomic_components/shared_components_atoms/media_upload_button.dart index 2377b458..4d9a87d9 100644 --- a/lib/components/atomic_components/shared_components_atoms/media_upload_button.dart +++ b/lib/components/atomic_components/shared_components_atoms/media_upload_button.dart @@ -36,8 +36,7 @@ class _MediaUploadButtonUtilState extends State { padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: Builder( builder: (context) { - if (widget.uploadedFiles != null && - widget.uploadedFiles!.bytes!.isNotEmpty) { + if (widget.uploadedFiles != null && widget.uploadedFiles!.bytes!.isNotEmpty) { { return InkWell( splashColor: Colors.transparent, @@ -47,8 +46,7 @@ class _MediaUploadButtonUtilState extends State { onTap: () async { setState(() { widget.isUploading = false; - widget.uploadedFiles = - FFUploadedFile(bytes: Uint8List.fromList([])); + widget.uploadedFiles = FFUploadedFile(bytes: Uint8List.fromList([])); widget.onUploadComplete(widget.uploadedFiles!); }); }, @@ -70,8 +68,7 @@ class _MediaUploadButtonUtilState extends State { alignment: const AlignmentDirectional(0.0, 0.0), child: FFButtonWidget( onPressed: () async { - final selectedMedia = - await selectMediaWithSourceBottomSheet( + final selectedMedia = await selectMediaWithSourceBottomSheet( context: context, imageQuality: 100, allowPhoto: true, @@ -83,9 +80,7 @@ class _MediaUploadButtonUtilState extends State { try { final message = FFLocalizations.of(context) - .getVariableText( - enText: 'Uploading file...', - ptText: 'Enviando arquivo...'); + .getVariableText(enText: 'Uploading file...', ptText: 'Enviando arquivo...'); showUploadMessage( context, message, @@ -104,22 +99,18 @@ class _MediaUploadButtonUtilState extends State { ScaffoldMessenger.of(context).hideCurrentSnackBar(); widget.isUploading = false; } - if (selectedUploadedFiles.length == - selectedMedia.length) { + if (selectedUploadedFiles.length == selectedMedia.length) { setState(() { widget.uploadedFiles = selectedUploadedFiles.first; }); widget.onUploadComplete(widget.uploadedFiles!); - final message = FFLocalizations.of(context) - .getVariableText( - enText: 'Success!', ptText: 'Sucesso!'); + final message = + FFLocalizations.of(context).getVariableText(enText: 'Success!', ptText: 'Sucesso!'); showUploadMessage(context, message); } else { setState(() {}); final message = FFLocalizations.of(context) - .getVariableText( - enText: 'Failed to upload data', - ptText: 'Falha ao enviar dados'); + .getVariableText(enText: 'Failed to upload data', ptText: 'Falha ao enviar dados'); showUploadMessage(context, message); return; } @@ -134,21 +125,16 @@ class _MediaUploadButtonUtilState extends State { options: FFButtonOptions( width: double.infinity, height: 120.0, - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 20.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB( - 14.0, 0.0, 0.0, 20.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 20.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(14.0, 0.0, 0.0, 20.0), color: FlutterFlowTheme.of(context).primaryBackground, - textStyle: FlutterFlowTheme.of(context) - .titleSmall - .override( - fontFamily: - FlutterFlowTheme.of(context).titleSmallFamily, + textStyle: FlutterFlowTheme.of(context).titleSmall.override( + fontFamily: FlutterFlowTheme.of(context).titleSmallFamily, color: FlutterFlowTheme.of(context).primaryText, fontSize: 16.0, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).titleSmallFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).titleSmallFamily), ), borderSide: BorderSide( color: FlutterFlowTheme.of(context).accent1, @@ -161,17 +147,15 @@ class _MediaUploadButtonUtilState extends State { Align( alignment: const AlignmentDirectional(0.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 10.0, 65.0, 10.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(10.0, 65.0, 10.0, 0.0), child: Text( widget.labelText, style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), diff --git a/lib/components/atomic_components/shared_components_atoms/submit_button.dart b/lib/components/atomic_components/shared_components_atoms/submit_button.dart index 4c1667fa..1a4cdd39 100644 --- a/lib/components/atomic_components/shared_components_atoms/submit_button.dart +++ b/lib/components/atomic_components/shared_components_atoms/submit_button.dart @@ -8,7 +8,8 @@ class SubmitButtonUtil extends StatelessWidget { final String labelText; Future Function()? onPressed; - SubmitButtonUtil({super.key, + SubmitButtonUtil({ + super.key, required this.labelText, required this.onPressed, }); @@ -29,8 +30,7 @@ class SubmitButtonUtil extends StatelessWidget { fontFamily: FlutterFlowTheme.of(context).titleSmallFamily, color: FlutterFlowTheme.of(context).info, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey(FlutterFlowTheme.of(context).titleSmallFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).titleSmallFamily), ), borderSide: const BorderSide( color: Colors.transparent, diff --git a/lib/components/atomic_components/shared_components_atoms/tabview.dart b/lib/components/atomic_components/shared_components_atoms/tabview.dart index 3798d6d8..0f4d0f61 100644 --- a/lib/components/atomic_components/shared_components_atoms/tabview.dart +++ b/lib/components/atomic_components/shared_components_atoms/tabview.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart'; @@ -41,8 +40,7 @@ class TabViewUtil extends StatelessWidget { fontFamily: FlutterFlowTheme.of(context).titleMediumFamily, fontSize: 13.0, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).titleMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).titleMediumFamily), ), unselectedLabelStyle: const TextStyle(), indicatorColor: FlutterFlowTheme.of(context).primary, diff --git a/lib/components/atomic_components/text_field_component/text_field_component_model.dart b/lib/components/atomic_components/text_field_component/text_field_component_model.dart index a74572ce..ff40e7d4 100644 --- a/lib/components/atomic_components/text_field_component/text_field_component_model.dart +++ b/lib/components/atomic_components/text_field_component/text_field_component_model.dart @@ -2,9 +2,7 @@ import '/flutter_flow/flutter_flow_util.dart'; import 'text_field_component_widget.dart' show TextFieldComponentWidget; import 'package:flutter/material.dart'; - -class TextFieldComponentModel - extends FlutterFlowModel { +class TextFieldComponentModel extends FlutterFlowModel { /// State fields for stateful widgets in this component. // State field(s) for TextField widget. @@ -20,4 +18,4 @@ class TextFieldComponentModel textFieldFocusNode?.dispose(); textController?.dispose(); } -} \ No newline at end of file +} diff --git a/lib/components/atomic_components/text_field_component/text_field_component_widget.dart b/lib/components/atomic_components/text_field_component/text_field_component_widget.dart index 90a63614..2e98b097 100644 --- a/lib/components/atomic_components/text_field_component/text_field_component_widget.dart +++ b/lib/components/atomic_components/text_field_component/text_field_component_widget.dart @@ -7,7 +7,6 @@ export 'text_field_component_model.dart'; //// - class TextFieldComponentWidget extends StatefulWidget { const TextFieldComponentWidget({ super.key, @@ -21,8 +20,7 @@ class TextFieldComponentWidget extends StatefulWidget { final String? hintTextStrParam; @override - State createState() => - _TextFieldComponentWidgetState(); + State createState() => _TextFieldComponentWidgetState(); } class _TextFieldComponentWidgetState extends State { @@ -39,8 +37,7 @@ class _TextFieldComponentWidgetState extends State { super.initState(); _model = createModel(context, () => TextFieldComponentModel()); - _model.textController ??= - TextEditingController(text: widget.initialValueStrParam); + _model.textController ??= TextEditingController(text: widget.initialValueStrParam); _model.textFieldFocusNode ??= FocusNode(); } @@ -66,16 +63,14 @@ class _TextFieldComponentWidgetState extends State { fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: widget.hintTextStrParam, hintStyle: FlutterFlowTheme.of(context).labelMedium.override( fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -110,11 +105,10 @@ class _TextFieldComponentWidgetState extends State { fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).secondaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), validator: _model.textControllerValidator.asValidator(context), ), ); } -} \ No newline at end of file +} diff --git a/lib/components/molecular_components/message_opt_modal/opt_modal_model.dart b/lib/components/molecular_components/message_opt_modal/opt_modal_model.dart index f7055ea5..e2b90125 100644 --- a/lib/components/molecular_components/message_opt_modal/opt_modal_model.dart +++ b/lib/components/molecular_components/message_opt_modal/opt_modal_model.dart @@ -18,8 +18,7 @@ class OptModalModel extends FlutterFlowModel { // State field(s) for CheckboxGroup widget. FormFieldController>? checkboxGroupValueController; List? get checkboxGroupValues => checkboxGroupValueController?.value; - set checkboxGroupValues(List? v) => - checkboxGroupValueController?.value = v; + set checkboxGroupValues(List? v) => checkboxGroupValueController?.value = v; @override void initState(BuildContext context) {} diff --git a/lib/components/molecular_components/message_opt_modal/opt_modal_widget.dart b/lib/components/molecular_components/message_opt_modal/opt_modal_widget.dart index 01ee6ea1..e516d396 100644 --- a/lib/components/molecular_components/message_opt_modal/opt_modal_widget.dart +++ b/lib/components/molecular_components/message_opt_modal/opt_modal_widget.dart @@ -44,12 +44,8 @@ class _OptModalWidgetState extends State { _model.textFieldFocusNode ??= FocusNode(); selected = { - 'personType': widget.defaultPersonType == '.*' - ? ['E', 'O'] - : [widget.defaultPersonType], - 'accessType': widget.defaultAccessType == '.*' - ? ['0', '1'] - : [widget.defaultAccessType], + 'personType': widget.defaultPersonType == '.*' ? ['E', 'O'] : [widget.defaultPersonType], + 'accessType': widget.defaultAccessType == '.*' ? ['0', '1'] : [widget.defaultAccessType], 'search': '.*', }; } @@ -58,9 +54,7 @@ class _OptModalWidgetState extends State { Map filterResult = { 'personType': '', 'accessType': '', - 'search': _model.textController?.text == '' - ? '.*' - : _model.textController!.text.toLowerCase(), + 'search': _model.textController?.text == '' ? '.*' : _model.textController!.text.toLowerCase(), }; if (selected['personType']!.isEmpty) { @@ -83,8 +77,7 @@ class _OptModalWidgetState extends State { context.pop(filterResult); } - Widget _buildCheckboxListTile( - String key, List> options, double fontsize) { + Widget _buildCheckboxListTile(String key, List> options, double fontsize) { return Column( children: [ Row( @@ -100,8 +93,7 @@ class _OptModalWidgetState extends State { fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, fontSize: fontsize, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), color: FlutterFlowTheme.of(context).primaryText, ), ), @@ -121,8 +113,7 @@ class _OptModalWidgetState extends State { fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontSize: fontsize, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), color: FlutterFlowTheme.of(context).primaryText, ), ), @@ -149,8 +140,7 @@ class _OptModalWidgetState extends State { width: 5, color: FlutterFlowTheme.of(context).secondaryText, ), - controlAffinity: - ListTileControlAffinity.leading, // Adiciona esta linha + controlAffinity: ListTileControlAffinity.leading, // Adiciona esta linha ); }, ), @@ -193,23 +183,18 @@ class _OptModalWidgetState extends State { mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 10.0, 10.0, 0.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(10.0, 10.0, 0.0, 10.0), child: Text( - FFLocalizations.of(context) - .getText('yfj9pd6k'), // Filtros - style: - FlutterFlowTheme.of(context).headlineMedium.override( - fontFamily: FlutterFlowTheme.of(context) - .headlineMediumFamily, - color: FlutterFlowTheme.of(context).primaryText, - fontSize: 18.0, - letterSpacing: 0.0, - fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .headlineMediumFamily), - ), + FFLocalizations.of(context).getText('yfj9pd6k'), // Filtros + style: FlutterFlowTheme.of(context).headlineMedium.override( + fontFamily: FlutterFlowTheme.of(context).headlineMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, + fontSize: 18.0, + letterSpacing: 0.0, + fontWeight: FontWeight.bold, + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineMediumFamily), + ), ), ), ], @@ -221,8 +206,7 @@ class _OptModalWidgetState extends State { child: Column( mainAxisSize: MainAxisSize.min, children: [ - _buildCheckboxListTile( - 'personType', personTypeOptions, 14), + _buildCheckboxListTile('personType', personTypeOptions, 14), ], ), ), diff --git a/lib/components/molecular_components/opt_modal/opt_modal_model.dart b/lib/components/molecular_components/opt_modal/opt_modal_model.dart index 66133fb1..1f2e3693 100644 --- a/lib/components/molecular_components/opt_modal/opt_modal_model.dart +++ b/lib/components/molecular_components/opt_modal/opt_modal_model.dart @@ -3,8 +3,6 @@ import '/flutter_flow/form_field_controller.dart'; import 'opt_modal_widget.dart' show OptModalWidget; import 'package:flutter/material.dart'; - - class OptModalModel extends FlutterFlowModel { /// State fields for stateful widgets in this component. @@ -19,8 +17,7 @@ class OptModalModel extends FlutterFlowModel { // State field(s) for CheckboxGroup widget. FormFieldController>? checkboxGroupValueController; List? get checkboxGroupValues => checkboxGroupValueController?.value; - set checkboxGroupValues(List? v) => - checkboxGroupValueController?.value = v; + set checkboxGroupValues(List? v) => checkboxGroupValueController?.value = v; @override void initState(BuildContext context) {} @@ -30,4 +27,4 @@ class OptModalModel extends FlutterFlowModel { textFieldFocusNode?.dispose(); textController?.dispose(); } -} \ No newline at end of file +} diff --git a/lib/components/molecular_components/opt_modal/opt_modal_widget.dart b/lib/components/molecular_components/opt_modal/opt_modal_widget.dart index 2a5e9329..a4914b22 100644 --- a/lib/components/molecular_components/opt_modal/opt_modal_widget.dart +++ b/lib/components/molecular_components/opt_modal/opt_modal_widget.dart @@ -49,12 +49,8 @@ class _OptModalWidgetState extends State { _model.textFieldFocusNode ??= FocusNode(); selected = { - 'personType': widget.defaultPersonType == '.*' - ? ['E', 'O'] - : [widget.defaultPersonType], - 'accessType': widget.defaultAccessType == '.*' - ? ['0', '1'] - : [widget.defaultAccessType], + 'personType': widget.defaultPersonType == '.*' ? ['E', 'O'] : [widget.defaultPersonType], + 'accessType': widget.defaultAccessType == '.*' ? ['0', '1'] : [widget.defaultAccessType], 'search': '.*', }; } @@ -63,9 +59,7 @@ class _OptModalWidgetState extends State { Map filterResult = { 'personType': '', 'accessType': '', - 'search': _model.textController?.text == '' - ? '.*' - : _model.textController!.text.toLowerCase(), + 'search': _model.textController?.text == '' ? '.*' : _model.textController!.text.toLowerCase(), }; if (selected['personType']!.isEmpty) { @@ -96,17 +90,14 @@ class _OptModalWidgetState extends State { mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0), child: Text( FFLocalizations.of(context).getText('l7tw8b92'), - textAlign: TextAlign - .left, // Adiciona esta linha para alinhar o texto à esquerda + textAlign: TextAlign.left, // Adiciona esta linha para alinhar o texto à esquerda style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), color: FlutterFlowTheme.of(context).primaryText, ), ), @@ -124,8 +115,7 @@ class _OptModalWidgetState extends State { style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), color: FlutterFlowTheme.of(context).primaryText, ), ), @@ -152,8 +142,7 @@ class _OptModalWidgetState extends State { width: 10, color: FlutterFlowTheme.of(context).secondaryText, ), - controlAffinity: - ListTileControlAffinity.leading, // Adiciona esta linha + controlAffinity: ListTileControlAffinity.leading, // Adiciona esta linha ); }, ), @@ -198,30 +187,23 @@ class _OptModalWidgetState extends State { mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 10.0, 10.0, 0.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(10.0, 10.0, 0.0, 10.0), child: Text( - FFLocalizations.of(context) - .getText('yfj9pd6k'), // Filtros - style: FlutterFlowTheme.of(context) - .headlineMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .headlineMediumFamily, + FFLocalizations.of(context).getText('yfj9pd6k'), // Filtros + style: FlutterFlowTheme.of(context).headlineMedium.override( + fontFamily: FlutterFlowTheme.of(context).headlineMediumFamily, color: FlutterFlowTheme.of(context).primaryText, fontSize: 16.0, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .headlineMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineMediumFamily), ), ), ), ], ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 8.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0), child: TextFormField( controller: _model.textController, focusNode: _model.textFieldFocusNode, @@ -232,27 +214,19 @@ class _OptModalWidgetState extends State { labelText: FFLocalizations.of(context).getText( '0enrtljz' /* Pesquise aqui..... */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -289,14 +263,12 @@ class _OptModalWidgetState extends State { ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), - validator: - _model.textControllerValidator.asValidator(context), + validator: _model.textControllerValidator.asValidator(context), ), ), SingleChildScrollView( @@ -305,10 +277,8 @@ class _OptModalWidgetState extends State { child: Column( mainAxisSize: MainAxisSize.min, children: [ - _buildCheckboxListTile( - 'personType', personTypeOptions), - _buildCheckboxListTile( - 'accessType', accessTypeOptions), + _buildCheckboxListTile('personType', personTypeOptions), + _buildCheckboxListTile('accessType', accessTypeOptions), ], ), ), @@ -319,8 +289,7 @@ class _OptModalWidgetState extends State { foregroundColor: FlutterFlowTheme.of(context).info, backgroundColor: FlutterFlowTheme.of(context).primary, ), - child: - Text(FFLocalizations.of(context).getText('88kshkph')), + child: Text(FFLocalizations.of(context).getText('88kshkph')), ), ], ), diff --git a/lib/components/molecular_components/option_selection_modal/option_selection_modal_model.dart b/lib/components/molecular_components/option_selection_modal/option_selection_modal_model.dart index 38613124..e2e83af6 100644 --- a/lib/components/molecular_components/option_selection_modal/option_selection_modal_model.dart +++ b/lib/components/molecular_components/option_selection_modal/option_selection_modal_model.dart @@ -1,14 +1,12 @@ import 'package:hub/components/molecular_components/option_selection_modal/option_selection_modal_widget.dart'; import 'package:hub/flutter_flow/flutter_flow_model.dart'; - import 'package:flutter/material.dart'; -class OptionSelectionModalModel - extends FlutterFlowModel { +class OptionSelectionModalModel extends FlutterFlowModel { @override void initState(BuildContext context) {} @override void dispose() {} -} \ No newline at end of file +} diff --git a/lib/components/molecular_components/option_selection_modal/option_selection_modal_widget.dart b/lib/components/molecular_components/option_selection_modal/option_selection_modal_widget.dart index a445cc81..ed4433d8 100644 --- a/lib/components/molecular_components/option_selection_modal/option_selection_modal_widget.dart +++ b/lib/components/molecular_components/option_selection_modal/option_selection_modal_widget.dart @@ -21,12 +21,10 @@ class OptionSelectionModalWidget extends StatefulWidget { final List? nameListStr; @override - State createState() => - _OptionSelectionModalWidgetState(); + State createState() => _OptionSelectionModalWidgetState(); } -class _OptionSelectionModalWidgetState extends State - with TickerProviderStateMixin { +class _OptionSelectionModalWidgetState extends State with TickerProviderStateMixin { late OptionSelectionModalModel _model; final animationsMap = {}; @@ -92,17 +90,14 @@ class _OptionSelectionModalWidgetState extends State return GestureDetector( onTap: () async { context.pop(); - if (widget.routesListStr![optionsListIndex] == - 'scheduleCompleteVisitPage') { + if (widget.routesListStr![optionsListIndex] == 'scheduleCompleteVisitPage') { // Navegação para a página ScheduleCompleteVisitPage com queryParameters context.go( '/scheduleCompleteVisitPage', extra: { - 'visitStartDateStr': DateFormat('yyyy-MM-dd HH:mm:ss') - .format(DateTime.now()), - 'visitEndDateStr': DateFormat('yyyy-MM-dd HH:mm:ss') - .format( - DateTime.now().add(const Duration(days: 1))), + 'visitStartDateStr': DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now()), + 'visitEndDateStr': + DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now().add(const Duration(days: 1))), }, ); } else { @@ -149,27 +144,20 @@ class _OptionSelectionModalWidgetState extends State children: [ Expanded( child: Align( - alignment: - const AlignmentDirectional(-1.0, 0.0), + alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: - const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 0.0, 0.0), child: Container( width: 30.0, height: 30.0, decoration: BoxDecoration( - color: FlutterFlowTheme.of(context) - .primaryBackground, + color: FlutterFlowTheme.of(context).primaryBackground, shape: BoxShape.circle, ), - alignment: const AlignmentDirectional( - 0.0, 0.0), + alignment: const AlignmentDirectional(0.0, 0.0), child: Icon( - widget.iconsListIcon![ - optionsListIndex]!, - color: FlutterFlowTheme.of(context) - .accent1, + widget.iconsListIcon![optionsListIndex]!, + color: FlutterFlowTheme.of(context).accent1, size: 34.0, ), ), @@ -186,21 +174,16 @@ class _OptionSelectionModalWidgetState extends State mainAxisAlignment: MainAxisAlignment.center, children: [ Align( - alignment: - const AlignmentDirectional(0.0, 0.0), + alignment: const AlignmentDirectional(0.0, 0.0), child: Text( widget.nameListStr![optionsListIndex], - style: FlutterFlowTheme.of(context) - .titleLarge - .override( + style: FlutterFlowTheme.of(context).titleLarge.override( fontFamily: 'Nunito', - color: FlutterFlowTheme.of(context) - .primaryText, + color: FlutterFlowTheme.of(context).primaryText, fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Nunito'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'), ), ), ), diff --git a/lib/components/molecular_components/order_filter_modal/order_filter_modal_model.dart b/lib/components/molecular_components/order_filter_modal/order_filter_modal_model.dart index e1f99286..79eefd3c 100644 --- a/lib/components/molecular_components/order_filter_modal/order_filter_modal_model.dart +++ b/lib/components/molecular_components/order_filter_modal/order_filter_modal_model.dart @@ -3,10 +3,7 @@ import '/flutter_flow/form_field_controller.dart'; import 'order_filter_modal_widget.dart' show OrderFilterModalWidget; import 'package:flutter/material.dart'; - - class OrderFilterModalModel extends FlutterFlowModel { - // State field(s) for TextField widget. FocusNode? textFieldFocusNode; TextEditingController? textController; @@ -18,8 +15,7 @@ class OrderFilterModalModel extends FlutterFlowModel { // State field(s) for CheckboxGroup widget. FormFieldController>? checkboxGroupValueController; List? get checkboxGroupValues => checkboxGroupValueController?.value; - set checkboxGroupValues(List? v) => - checkboxGroupValueController?.value = v; + set checkboxGroupValues(List? v) => checkboxGroupValueController?.value = v; @override void initState(BuildContext context) {} @@ -29,4 +25,4 @@ class OrderFilterModalModel extends FlutterFlowModel { textFieldFocusNode?.dispose(); textController?.dispose(); } -} \ No newline at end of file +} diff --git a/lib/components/molecular_components/order_filter_modal/order_filter_modal_widget.dart b/lib/components/molecular_components/order_filter_modal/order_filter_modal_widget.dart index 368ad6b9..c9fd0aa7 100644 --- a/lib/components/molecular_components/order_filter_modal/order_filter_modal_widget.dart +++ b/lib/components/molecular_components/order_filter_modal/order_filter_modal_widget.dart @@ -28,26 +28,22 @@ class _OrderFilterModalWidgetState extends State { late Map selected; final List> adresseeTypeOptions = [ { - 'title': FFLocalizations.of(StorageUtil().context!) - .getVariableText(enText: 'Resident', ptText: 'Morador'), + 'title': FFLocalizations.of(StorageUtil().context!).getVariableText(enText: 'Resident', ptText: 'Morador'), 'value': 'MOR' }, { - 'title': FFLocalizations.of(StorageUtil().context!) - .getVariableText(enText: 'Property', ptText: 'Propriedade'), + 'title': FFLocalizations.of(StorageUtil().context!).getVariableText(enText: 'Property', ptText: 'Propriedade'), 'value': 'PRO' }, ]; final List> statusOptions = [ { 'title': FFLocalizations.of(StorageUtil().context!) - .getVariableText( - ptText: 'Aguardando Retirada', enText: 'Waiting for Pickup'), + .getVariableText(ptText: 'Aguardando Retirada', enText: 'Waiting for Pickup'), 'value': 'notPickedUp' }, { - 'title': FFLocalizations.of(StorageUtil().context!) - .getVariableText(ptText: 'Retirado', enText: 'Picked Up'), + 'title': FFLocalizations.of(StorageUtil().context!).getVariableText(ptText: 'Retirado', enText: 'Picked Up'), 'value': 'pickedUp' }, ]; @@ -65,12 +61,8 @@ class _OrderFilterModalWidgetState extends State { _model = createModel(context, () => OrderFilterModalModel()); selected = { - 'adresseeType': widget.defaultAdresseeType == '.*' - ? ['MOR', 'PRO'] - : [widget.defaultAdresseeType], - 'status': widget.defaultStatus == '.*' - ? ['notPickedUp', 'pickedUp'] - : [widget.defaultStatus], + 'adresseeType': widget.defaultAdresseeType == '.*' ? ['MOR', 'PRO'] : [widget.defaultAdresseeType], + 'status': widget.defaultStatus == '.*' ? ['notPickedUp', 'pickedUp'] : [widget.defaultStatus], }; } @@ -100,8 +92,7 @@ class _OrderFilterModalWidgetState extends State { context.pop(filterResult); } - Widget _buildCheckboxListTile( - String key, List> options, double fontsize) { + Widget _buildCheckboxListTile(String key, List> options, double fontsize) { return Column( children: [ Row( @@ -117,8 +108,7 @@ class _OrderFilterModalWidgetState extends State { fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, fontSize: fontsize, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), color: FlutterFlowTheme.of(context).primaryText, ), ), @@ -138,8 +128,7 @@ class _OrderFilterModalWidgetState extends State { fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontSize: fontsize, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), color: FlutterFlowTheme.of(context).primaryText, ), ), @@ -167,8 +156,7 @@ class _OrderFilterModalWidgetState extends State { width: 5, color: FlutterFlowTheme.of(context).secondaryText, ), - controlAffinity: - ListTileControlAffinity.leading, // Adiciona esta linha + controlAffinity: ListTileControlAffinity.leading, // Adiciona esta linha ); }, ), @@ -197,23 +185,18 @@ class _OrderFilterModalWidgetState extends State { mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 10.0, 10.0, 0.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(10.0, 10.0, 0.0, 10.0), child: Text( - FFLocalizations.of(context) - .getText('yfj9pd6k'), // Filtros - style: - FlutterFlowTheme.of(context).headlineMedium.override( - fontFamily: FlutterFlowTheme.of(context) - .headlineMediumFamily, - color: FlutterFlowTheme.of(context).primaryText, - fontSize: 18.0, - letterSpacing: 0.0, - fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .headlineMediumFamily), - ), + FFLocalizations.of(context).getText('yfj9pd6k'), // Filtros + style: FlutterFlowTheme.of(context).headlineMedium.override( + fontFamily: FlutterFlowTheme.of(context).headlineMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, + fontSize: 18.0, + letterSpacing: 0.0, + fontWeight: FontWeight.bold, + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineMediumFamily), + ), ), ), ], @@ -225,8 +208,7 @@ class _OrderFilterModalWidgetState extends State { child: Column( mainAxisSize: MainAxisSize.min, children: [ - _buildCheckboxListTile( - 'adresseeType', adresseeTypeOptions, 14), + _buildCheckboxListTile('adresseeType', adresseeTypeOptions, 14), _buildCheckboxListTile('status', statusOptions, 14), ], ), diff --git a/lib/components/molecular_components/throw_exception/throw_exception_model.dart b/lib/components/molecular_components/throw_exception/throw_exception_model.dart index 69ec5ec4..31b6cee7 100644 --- a/lib/components/molecular_components/throw_exception/throw_exception_model.dart +++ b/lib/components/molecular_components/throw_exception/throw_exception_model.dart @@ -2,12 +2,10 @@ import '/flutter_flow/flutter_flow_util.dart'; import 'throw_exception_widget.dart' show ThrowExceptionWidget; import 'package:flutter/material.dart'; - - class ThrowExceptionModel extends FlutterFlowModel { @override void initState(BuildContext context) {} @override void dispose() {} -} \ No newline at end of file +} diff --git a/lib/components/molecular_components/throw_exception/throw_exception_widget.dart b/lib/components/molecular_components/throw_exception/throw_exception_widget.dart index b494d2c4..41afeb2b 100644 --- a/lib/components/molecular_components/throw_exception/throw_exception_widget.dart +++ b/lib/components/molecular_components/throw_exception/throw_exception_widget.dart @@ -13,8 +13,7 @@ export 'throw_exception_model.dart'; // ignore: must_be_immutable class ThrowExceptionWidget extends StatefulWidget { - ThrowExceptionWidget( - {super.key, required this.msg, this.type = EnumThrowException.error}); + ThrowExceptionWidget({super.key, required this.msg, this.type = EnumThrowException.error}); final String? msg; EnumThrowException type; @@ -23,8 +22,7 @@ class ThrowExceptionWidget extends StatefulWidget { State createState() => _ThrowExceptionWidgetState(); } -class _ThrowExceptionWidgetState extends State - with TickerProviderStateMixin { +class _ThrowExceptionWidgetState extends State with TickerProviderStateMixin { late ThrowExceptionModel _model; final animationsMap = {}; @@ -38,6 +36,7 @@ class _ThrowExceptionWidgetState extends State return FlutterFlowTheme.of(context).success; } } + IconData _getIconByType(BuildContext context) { switch (widget.type) { case EnumThrowException.error: @@ -48,26 +47,26 @@ class _ThrowExceptionWidgetState extends State return Icons.check_circle_outline; } } + String _getTitleByType(BuildContext context) { switch (widget.type) { case EnumThrowException.error: - return FFLocalizations.of(context) - .getVariableText(ptText: "Falha :(", enText: "Fail :("); + return FFLocalizations.of(context).getVariableText(ptText: "Falha :(", enText: "Fail :("); case EnumThrowException.warning: - return FFLocalizations.of(context) - .getVariableText(ptText: "Aviso :O", enText: "Warning :O"); + return FFLocalizations.of(context).getVariableText(ptText: "Aviso :O", enText: "Warning :O"); case EnumThrowException.success: - return FFLocalizations.of(context) - .getVariableText(ptText: "Sucesso ;)", enText: "Success ;)"); + return FFLocalizations.of(context).getVariableText(ptText: "Sucesso ;)", enText: "Success ;)"); } } - - @override void setState(VoidCallback callback) { + @override + void setState(VoidCallback callback) { super.setState(callback); _model.onUpdate(); } - @override void initState() { + + @override + void initState() { super.initState(); _model = createModel(context, () => ThrowExceptionModel()); animationsMap.addAll({ @@ -85,76 +84,82 @@ class _ThrowExceptionWidgetState extends State ), }); } - @override void dispose() { + + @override + void dispose() { _model.maybeDispose(); super.dispose(); } - @override Widget build(BuildContext context) { - return InkWell( - key: const ValueKey('ThrowExceptionWidget'), - splashColor: Colors.transparent, - focusColor: Colors.transparent, - hoverColor: Colors.transparent, - highlightColor: Colors.transparent, - onTap: () async { - context.pop(); - }, - child: DecoratedBox( - decoration: BoxDecoration( - color: FlutterFlowTheme.of(context).primaryBackground, - borderRadius: BorderRadius.circular(20.0), // Ajuste o valor conforme necessário - ), - child: SingleChildScrollView( - child: Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - const SizedBox(height: 20.0), - Stack( - children: [ - Align( - alignment: const AlignmentDirectional(0.0, 0.0), - child: Icon( - _getIconByType(context), - color: _getColorByType(context), - size: 150.0, + + @override + Widget build(BuildContext context) { + return InkWell( + key: const ValueKey('ThrowExceptionWidget'), + splashColor: Colors.transparent, + focusColor: Colors.transparent, + hoverColor: Colors.transparent, + highlightColor: Colors.transparent, + onTap: () async { + context.pop(); + }, + child: DecoratedBox( + decoration: BoxDecoration( + color: FlutterFlowTheme.of(context).primaryBackground, + borderRadius: BorderRadius.circular(20.0), // Ajuste o valor conforme necessário + ), + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox(height: 20.0), + Stack( + children: [ + Align( + alignment: const AlignmentDirectional(0.0, 0.0), + child: Icon( + _getIconByType(context), + color: _getColorByType(context), + size: 150.0, + ), ), - ), - ], - ).animateOnPageLoad(animationsMap['stackOnPageLoadAnimation']!), - const SizedBox(height: 20.0), - Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Text( - _getTitleByType(context), - style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, - fontSize: 20.0, - letterSpacing: 0.0, - fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), - ), - ), - Padding( - padding: const EdgeInsetsDirectional.fromSTEB(15.0, 10.0, 15.0, 0.0), - child: Text( - valueOrDefault(widget.msg, 'Message Not Found'), + ], + ).animateOnPageLoad(animationsMap['stackOnPageLoadAnimation']!), + const SizedBox(height: 20.0), + Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Text( + _getTitleByType(context), style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + fontSize: 20.0, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + fontWeight: FontWeight.bold, + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), - ), - ], - ), - ], + Padding( + padding: const EdgeInsetsDirectional.fromSTEB(15.0, 10.0, 15.0, 0.0), + child: Text( + valueOrDefault(widget.msg, 'Message Not Found'), + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + letterSpacing: 0.0, + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + ), + ), + ), + ], + ), + ], + ), ), ), - ), - ); -} + ); + } } diff --git a/lib/components/molecular_components/visitor_not_found_component/visitor_not_found_component_model.dart b/lib/components/molecular_components/visitor_not_found_component/visitor_not_found_component_model.dart index 6827c26d..98bb8579 100644 --- a/lib/components/molecular_components/visitor_not_found_component/visitor_not_found_component_model.dart +++ b/lib/components/molecular_components/visitor_not_found_component/visitor_not_found_component_model.dart @@ -1,14 +1,12 @@ import 'package:hub/components/molecular_components/visitor_not_found_component/visitor_not_found_component_widget.dart'; import 'package:hub/flutter_flow/flutter_flow_model.dart'; - import 'package:flutter/material.dart'; -class VisitorNotFoundComponentModel - extends FlutterFlowModel { +class VisitorNotFoundComponentModel extends FlutterFlowModel { @override void initState(BuildContext context) {} @override void dispose() {} -} \ No newline at end of file +} diff --git a/lib/components/molecular_components/visitor_not_found_component/visitor_not_found_component_widget.dart b/lib/components/molecular_components/visitor_not_found_component/visitor_not_found_component_widget.dart index 00261f19..7fdc75c7 100644 --- a/lib/components/molecular_components/visitor_not_found_component/visitor_not_found_component_widget.dart +++ b/lib/components/molecular_components/visitor_not_found_component/visitor_not_found_component_widget.dart @@ -13,12 +13,10 @@ class VisitorNotFoundComponentWidget extends StatefulWidget { final String? doc; @override - State createState() => - _VisitorNotFoundComponentWidgetState(); + State createState() => _VisitorNotFoundComponentWidgetState(); } -class _VisitorNotFoundComponentWidgetState - extends State { +class _VisitorNotFoundComponentWidgetState extends State { late VisitorNotFoundComponentModel _model; @override @@ -61,8 +59,7 @@ class _VisitorNotFoundComponentWidgetState Align( alignment: const AlignmentDirectional(1.0, -1.0), child: Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(0.0, 5.0, 5.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 5.0, 5.0, 0.0), child: FlutterFlowIconButton( borderRadius: 20.0, borderWidth: 1.0, @@ -84,19 +81,16 @@ class _VisitorNotFoundComponentWidgetState size: 72.0, ), Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(5.0, 16.0, 5.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(5.0, 16.0, 5.0, 10.0), child: Text( FFLocalizations.of(context).getText( '1p9mykbj' /* Usuário não encontrado */, ), textAlign: TextAlign.center, style: FlutterFlowTheme.of(context).headlineSmall.override( - fontFamily: - FlutterFlowTheme.of(context).headlineSmallFamily, + fontFamily: FlutterFlowTheme.of(context).headlineSmallFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).headlineSmallFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineSmallFamily), ), ), ), @@ -113,8 +107,7 @@ class _VisitorNotFoundComponentWidgetState fontSize: 14.0, letterSpacing: 0.0, fontStyle: FontStyle.italic, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelSmallFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelSmallFamily), ), ), ), @@ -147,22 +140,18 @@ class _VisitorNotFoundComponentWidgetState ).then((value) => context.pop(value)); // Navigator.pop(context, value) }, - text: FFLocalizations.of(context) - .getVariableText(enText: 'Add', ptText: 'Adicionar'), + text: FFLocalizations.of(context).getVariableText(enText: 'Add', ptText: 'Adicionar'), options: FFButtonOptions( height: 30.0, - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), color: FlutterFlowTheme.of(context).primary, textStyle: FlutterFlowTheme.of(context).labelSmall.override( - fontFamily: - FlutterFlowTheme.of(context).labelSmallFamily, + fontFamily: FlutterFlowTheme.of(context).labelSmallFamily, color: Colors.white, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelSmallFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelSmallFamily), ), elevation: 3.0, borderSide: const BorderSide( diff --git a/lib/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_model.dart b/lib/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_model.dart index 3ff8aba1..11d6aab5 100644 --- a/lib/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_model.dart +++ b/lib/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_model.dart @@ -1,14 +1,12 @@ import 'package:hub/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart'; import 'package:hub/flutter_flow/flutter_flow_model.dart'; - import 'package:flutter/material.dart'; -class BottomArrowLinkedLocalsComponentModel - extends FlutterFlowModel { +class BottomArrowLinkedLocalsComponentModel extends FlutterFlowModel { @override void initState(BuildContext context) {} @override void dispose() {} -} \ No newline at end of file +} diff --git a/lib/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart b/lib/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart index 0f242373..5d0a6dc8 100644 --- a/lib/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart +++ b/lib/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart @@ -15,12 +15,10 @@ class BottomArrowLinkedLocalsComponentWidget extends StatefulWidget { const BottomArrowLinkedLocalsComponentWidget({super.key}); @override - State createState() => - _BottomArrowLinkedLocalsComponentWidgetState(); + State createState() => _BottomArrowLinkedLocalsComponentWidgetState(); } -class _BottomArrowLinkedLocalsComponentWidgetState - extends State { +class _BottomArrowLinkedLocalsComponentWidgetState extends State { late BottomArrowLinkedLocalsComponentModel _model; bool _loading = false; @@ -29,17 +27,21 @@ class _BottomArrowLinkedLocalsComponentWidgetState late Future _localsFuture; List _localsWrap = []; - @override void setState(VoidCallback callback) { + @override + void setState(VoidCallback callback) { super.setState(callback); _model.onUpdate(); } - @override void initState() { + + @override + void initState() { super.initState(); - _model = - createModel(context, () => BottomArrowLinkedLocalsComponentModel()); + _model = createModel(context, () => BottomArrowLinkedLocalsComponentModel()); _localsFuture = _fetchLocals(); } - @override void dispose() { + + @override + void dispose() { _model.maybeDispose(); super.dispose(); @@ -49,8 +51,7 @@ class _BottomArrowLinkedLocalsComponentWidgetState ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( - FFLocalizations.of(context).getVariableText( - ptText: "Não há mais dados.", enText: "No more data."), + FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data."), ), duration: const Duration(seconds: 3), backgroundColor: FlutterFlowTheme.of(context).primary, @@ -64,7 +65,6 @@ class _BottomArrowLinkedLocalsComponentWidgetState var response = await PhpGroup.getLocalsCall.call(); final bool isError = response.jsonBody['error']; - if (isError) { final String errorMsg = response.jsonBody['error_msg']; _handleError(context, errorMsg); @@ -73,7 +73,6 @@ class _BottomArrowLinkedLocalsComponentWidgetState final List locals = response.jsonBody['locais'] ?? []; - final bool isEmpty = locals.isEmpty; final bool isUnique = locals.length == 1; final bool isActive = locals[0]['CLU_STATUS'] == 'A'; @@ -82,9 +81,6 @@ class _BottomArrowLinkedLocalsComponentWidgetState final bool isEnabled = isUnique && isActive; final bool isDisabled = isUnique && isBlocked; - - - if (!isEmpty) { setState(() { _localsWrap.addAll(locals); @@ -127,7 +123,8 @@ class _BottomArrowLinkedLocalsComponentWidgetState static void _handleError(BuildContext context, String errorMsg) { AuthenticationService.signOut(context); DialogUtil.error(context, errorMsg); - LogUtil.requestAPIFailed('getLocals.php', '{devUUID: ${StorageUtil().devUUID}, cliUUID: ${StorageUtil().userUUID}}', 'Get Locals', errorMsg, StackTrace.current); + LogUtil.requestAPIFailed('getLocals.php', '{devUUID: ${StorageUtil().devUUID}, cliUUID: ${StorageUtil().userUUID}}', + 'Get Locals', errorMsg, StackTrace.current); } Future _fetchResponseLink(String status, String cliID) async { @@ -138,9 +135,8 @@ class _BottomArrowLinkedLocalsComponentWidgetState if (response.jsonBody['error'] == false) { return { 'error': false, - 'error_msg': FFLocalizations.of(context).getVariableText( - ptText: "Vínculo Ativado com Sucesso", - enText: "Link Activated Successfully") + 'error_msg': FFLocalizations.of(context) + .getVariableText(ptText: "Vínculo Ativado com Sucesso", enText: "Link Activated Successfully") }; } else { StorageUtil().cliUUID = ''; @@ -148,8 +144,7 @@ class _BottomArrowLinkedLocalsComponentWidgetState } } catch (e, s) { DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed( - 'responderVinculo.php', '', 'Responder Vínculo', e, s); + LogUtil.requestAPIFailed('responderVinculo.php', '', 'Responder Vínculo', e, s); return { 'error': true, 'error_msg': FFLocalizations.of(context).getVariableText( @@ -174,17 +169,14 @@ class _BottomArrowLinkedLocalsComponentWidgetState Map _statusHashMap(dynamic local) { return Map.from({ if (local['CLU_STATUS'] == 'A') - FFLocalizations.of(context).getVariableText( - ptText: 'Ativo', - enText: 'Active'): FlutterFlowTheme.of(context).success + FFLocalizations.of(context).getVariableText(ptText: 'Ativo', enText: 'Active'): + FlutterFlowTheme.of(context).success else if (local['CLU_STATUS'] == 'B') - FFLocalizations.of(context).getVariableText( - ptText: 'Bloqueado', - enText: 'Blocked'): FlutterFlowTheme.of(context).error + FFLocalizations.of(context).getVariableText(ptText: 'Bloqueado', enText: 'Blocked'): + FlutterFlowTheme.of(context).error else - FFLocalizations.of(context).getVariableText( - ptText: 'Pendente', - enText: 'Pending'): FlutterFlowTheme.of(context).warning + FFLocalizations.of(context).getVariableText(ptText: 'Pendente', enText: 'Pending'): + FlutterFlowTheme.of(context).warning }); } @@ -202,8 +194,7 @@ class _BottomArrowLinkedLocalsComponentWidgetState context.pop(); } else if (local['CLU_STATUS'] == 'B') { String message = FFLocalizations.of(context).getVariableText( - ptText: - 'Local Bloqueado para Acesso, Entre em Contato com Administração', + ptText: 'Local Bloqueado para Acesso, Entre em Contato com Administração', enText: 'Location Blocked for Access, Contact Administration', ); @@ -219,12 +210,10 @@ class _BottomArrowLinkedLocalsComponentWidgetState String localName = local['CLI_NOME']; showAlertDialog( context, - FFLocalizations.of(context).getVariableText( - ptText: 'Ativar Vínculo', enText: 'Activate Link'), + FFLocalizations.of(context).getVariableText(ptText: 'Ativar Vínculo', enText: 'Activate Link'), FFLocalizations.of(context).getVariableText( ptText: 'Deseja aceitar o vínculo a $localName?', - enText: 'Do you wish to accept the link to $localName?'), - () async { + enText: 'Do you wish to accept the link to $localName?'), () async { var response = await _fetchResponseLink('A', local['CLI_ID']); context.pop(); @@ -276,8 +265,7 @@ class _BottomArrowLinkedLocalsComponentWidgetState height: height - (height * 0.5), decoration: BoxDecoration( color: FlutterFlowTheme.of(context).primaryBackground, - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(25), topRight: Radius.circular(25))), + borderRadius: const BorderRadius.only(topLeft: Radius.circular(25), topRight: Radius.circular(25))), child: Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, @@ -289,16 +277,13 @@ class _BottomArrowLinkedLocalsComponentWidgetState mainAxisSize: MainAxisSize.max, children: [ Center( - child: Text(FFLocalizations.of(context).getVariableText( - ptText: "Nenhum Local Encontrado.", - enText: "No local found")), + child: Text(FFLocalizations.of(context) + .getVariableText(ptText: "Nenhum Local Encontrado.", enText: "No local found")), ) ], ), ) - else if (_hasData == true && - _loading == false && - _localsWrap.isNotEmpty) + else if (_hasData == true && _loading == false && _localsWrap.isNotEmpty) Expanded(child: _listItems(context)), if (_loading == true) Container( @@ -315,8 +300,7 @@ class _BottomArrowLinkedLocalsComponentWidgetState padding: const EdgeInsets.only(top: 10), child: Center( child: Text( - FFLocalizations.of(context).getVariableText( - ptText: 'Escolha um local', enText: 'Choose a location'), + FFLocalizations.of(context).getVariableText(ptText: 'Escolha um local', enText: 'Choose a location'), overflow: TextOverflow.ellipsis, style: const TextStyle(fontWeight: FontWeight.bold), )))), diff --git a/lib/components/organism_components/local_profile_component/local_profile_component_model.dart b/lib/components/organism_components/local_profile_component/local_profile_component_model.dart index a8b72c84..52820f96 100644 --- a/lib/components/organism_components/local_profile_component/local_profile_component_model.dart +++ b/lib/components/organism_components/local_profile_component/local_profile_component_model.dart @@ -6,8 +6,7 @@ import 'package:flutter/material.dart'; /// -class LocalProfileComponentModel - extends FlutterFlowModel { +class LocalProfileComponentModel extends FlutterFlowModel { String cliName = ''; String cliUUID = ''; VoidCallback? setStateCallback; diff --git a/lib/components/organism_components/local_profile_component/local_profile_component_widget.dart b/lib/components/organism_components/local_profile_component/local_profile_component_widget.dart index e954b417..8597c37f 100644 --- a/lib/components/organism_components/local_profile_component/local_profile_component_widget.dart +++ b/lib/components/organism_components/local_profile_component/local_profile_component_widget.dart @@ -16,12 +16,10 @@ class LocalProfileComponentWidget extends StatefulWidget { const LocalProfileComponentWidget({super.key}); @override - State createState() => - _LocalProfileComponentWidgetState(); + State createState() => _LocalProfileComponentWidgetState(); } -class _LocalProfileComponentWidgetState - extends State { +class _LocalProfileComponentWidgetState extends State { late LocalProfileComponentModel _model; @override @@ -40,7 +38,6 @@ class _LocalProfileComponentWidgetState // WidgetsBinding.instance // .addPostFrameCallback((_) async => await LocalizationService.processLocals(context).then((value) => value == true ? onUpdate() : null)); LocalizationService.processLocals(context).then((value) => value == true ? onUpdate() : null); - } @override @@ -57,8 +54,6 @@ class _LocalProfileComponentWidgetState }); } - - @override Widget build(BuildContext context) { return Container( @@ -90,7 +85,8 @@ class _LocalProfileComponentWidgetState hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { - await LocalizationService.selectLocal(context).then((value) => value == true ? onUpdate() : null); + await LocalizationService.selectLocal(context) + .then((value) => value == true ? onUpdate() : null); }, child: ClipRRect( borderRadius: BorderRadius.circular(200.0), @@ -110,12 +106,9 @@ class _LocalProfileComponentWidgetState height: 80.0, fit: BoxFit.cover, alignment: const Alignment(0.0, 0.0), - placeholder: (context, url) => - Image.asset('assets/images/home.png'), - errorListener: (_) => - Image.asset('assets/images/home.png'), - errorWidget: (_, __, ___) => - Image.asset('assets/images/home.png'), + placeholder: (context, url) => Image.asset('assets/images/home.png'), + errorListener: (_) => Image.asset('assets/images/home.png'), + errorWidget: (_, __, ___) => Image.asset('assets/images/home.png'), ), )), ), @@ -134,8 +127,7 @@ class _LocalProfileComponentWidgetState fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: - GoogleFonts.asMap().containsKey('Nunito'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'), ), ), ] diff --git a/lib/components/organism_components/menu_component/menu_component_model.dart b/lib/components/organism_components/menu_component/menu_component_model.dart index 0d98e9f0..473173ed 100644 --- a/lib/components/organism_components/menu_component/menu_component_model.dart +++ b/lib/components/organism_components/menu_component/menu_component_model.dart @@ -46,11 +46,23 @@ class MenuComponentModel extends FlutterFlowModel { MenuEntry? addMenuEntry(IconData icon, String enText, String ptText, Function() action) { entries.add( item == MenuItem.button - ? MenuButtonWidget(icon: icon, action: action, title: FFLocalizations.of(context).getVariableText(enText: enText, ptText: ptText), safeSetState: safeSetState) + ? MenuButtonWidget( + icon: icon, + action: action, + title: FFLocalizations.of(context).getVariableText(enText: enText, ptText: ptText), + safeSetState: safeSetState) : item == MenuItem.card - ? MenuCardItem(icon: icon, action: action, title: FFLocalizations.of(context).getVariableText(enText: enText, ptText: ptText), safeSetState: safeSetState) + ? MenuCardItem( + icon: icon, + action: action, + title: FFLocalizations.of(context).getVariableText(enText: enText, ptText: ptText), + safeSetState: safeSetState) : item == MenuItem.tile - ? MenuCardItem(icon: icon, action: action, title: FFLocalizations.of(context).getVariableText(enText: enText, ptText: ptText), safeSetState: safeSetState) + ? MenuCardItem( + icon: icon, + action: action, + title: FFLocalizations.of(context).getVariableText(enText: enText, ptText: ptText), + safeSetState: safeSetState) : null, ); return null; @@ -263,7 +275,12 @@ class MenuComponentModel extends FlutterFlowModel { return Padding( padding: MediaQuery.viewInsetsOf(context), child: OptionSelectionModalWidget( - routesListStr: const ['liberationHistory', 'acessHistoryPage', 'scheduleCompleteVisitPage', 'messageHistoryPage'], + routesListStr: const [ + 'liberationHistory', + 'acessHistoryPage', + 'scheduleCompleteVisitPage', + 'messageHistoryPage' + ], iconsListIcon: const [ Icons.history_rounded, Icons.history_rounded, diff --git a/lib/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart b/lib/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart index 4adbb83d..a881894d 100644 --- a/lib/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart +++ b/lib/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart @@ -7,7 +7,13 @@ import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; class MenuStaggeredViewComponentWidget extends StatefulWidget { - const MenuStaggeredViewComponentWidget({super.key, required this.changeMenuStyle, required this.expandable, required this.item, required this.options, required this.isGrid}); + const MenuStaggeredViewComponentWidget( + {super.key, + required this.changeMenuStyle, + required this.expandable, + required this.item, + required this.options, + required this.isGrid}); final bool expandable; final MenuItem item; diff --git a/lib/components/organism_components/message_well_component/message_well_component_model.dart b/lib/components/organism_components/message_well_component/message_well_component_model.dart index d3aad87c..d18746ee 100644 --- a/lib/components/organism_components/message_well_component/message_well_component_model.dart +++ b/lib/components/organism_components/message_well_component/message_well_component_model.dart @@ -1,4 +1,3 @@ - import 'package:hub/backend/api_requests/api_manager.dart'; import 'package:hub/flutter_flow/request_manager.dart'; @@ -6,10 +5,7 @@ import '/flutter_flow/flutter_flow_util.dart'; import 'message_well_component_widget.dart' show MessageWellComponentWidget; import 'package:flutter/material.dart'; - - -class MessageWellComponentModel - extends FlutterFlowModel { +class MessageWellComponentModel extends FlutterFlowModel { final unfocusNode = FocusNode(); // State field(s) for TextField widget. FocusNode? textFieldFocusNode; @@ -30,8 +26,7 @@ class MessageWellComponentModel requestFn: requestFn, ); void clearGetLiberationsCache() => _getLiberationsManager.clear(); - void clearGetLiberationsCacheKey(String? uniqueKey) => - _getLiberationsManager.clearRequest(uniqueKey); + void clearGetLiberationsCacheKey(String? uniqueKey) => _getLiberationsManager.clearRequest(uniqueKey); @override void initState(BuildContext context) {} @@ -46,4 +41,4 @@ class MessageWellComponentModel clearGetLiberationsCache(); } -} \ No newline at end of file +} diff --git a/lib/components/organism_components/message_well_component/message_well_component_widget.dart b/lib/components/organism_components/message_well_component/message_well_component_widget.dart index ad05326e..97b52e31 100644 --- a/lib/components/organism_components/message_well_component/message_well_component_widget.dart +++ b/lib/components/organism_components/message_well_component/message_well_component_widget.dart @@ -21,12 +21,10 @@ class MessageWellComponentWidget extends StatefulWidget { const MessageWellComponentWidget({super.key}); @override - State createState() => - _MessageWellComponentWidgetState(); + State createState() => _MessageWellComponentWidgetState(); } -class _MessageWellComponentWidgetState - extends State { +class _MessageWellComponentWidgetState extends State { StreamSubscription? _dropdownSubscription; @override @@ -143,8 +141,7 @@ class _MessageWellComponentWidgetState fillColor: theme.primary, ), onChanged: (String? newValue) { - safeSetState(() => dropdown.value = LinkedHashMap.from( - {newValue!: dropdownItems[newValue].toString()})); + safeSetState(() => dropdown.value = LinkedHashMap.from({newValue!: dropdownItems[newValue].toString()})); }, items: dropdownItems.entries .map((entry) => DropdownMenuItem( @@ -181,8 +178,7 @@ class _MessageWellComponentWidgetState final formattedWords = words.map((word) { if (word.isEmpty) return word; // Handle empty words final firstLetter = word.substring(0, 1).toUpperCase(); - final remainingLetters = - word.length > 1 ? word.substring(1).toLowerCase() : ''; + final remainingLetters = word.length > 1 ? word.substring(1).toLowerCase() : ''; return '$firstLetter$remainingLetters'; }); return formattedWords.join(' '); @@ -238,8 +234,7 @@ class _MessageWellComponentWidgetState padding: const EdgeInsets.only(left: 5), child: Icon( Icons.history, - color: - FlutterFlowTheme.of(context).customColor6, + color: FlutterFlowTheme.of(context).customColor6, size: 15, ), ), @@ -249,8 +244,7 @@ class _MessageWellComponentWidgetState style: TextStyle( fontWeight: FontWeight.bold, fontSize: 10, - color: - FlutterFlowTheme.of(context).customColor6, + color: FlutterFlowTheme.of(context).customColor6, ), overflow: TextOverflow.ellipsis, ), @@ -265,8 +259,7 @@ class _MessageWellComponentWidgetState padding: const EdgeInsets.only(left: 5), child: Icon( Icons.message, - color: - FlutterFlowTheme.of(context).customColor6, + color: FlutterFlowTheme.of(context).customColor6, size: 15, ), ), @@ -327,8 +320,7 @@ class MessageWellState { return MessageWellState( messages: messages ?? this.messages, pageNumber: pageNumber ?? this.pageNumber, - allowScrollInSingleChildScrollView: allowScrollInSingleChildScrollView ?? - this.allowScrollInSingleChildScrollView, + allowScrollInSingleChildScrollView: allowScrollInSingleChildScrollView ?? this.allowScrollInSingleChildScrollView, ); } } @@ -382,7 +374,6 @@ class MessageWellNotifier extends StateNotifier { } } -final messageWellProvider = - StateNotifierProvider((ref) { +final messageWellProvider = StateNotifierProvider((ref) { return MessageWellNotifier(); }); diff --git a/lib/components/organism_components/schedule_visit_detail/schedule_visit_detail_model.dart b/lib/components/organism_components/schedule_visit_detail/schedule_visit_detail_model.dart index 672f7c4d..9fae560f 100644 --- a/lib/components/organism_components/schedule_visit_detail/schedule_visit_detail_model.dart +++ b/lib/components/organism_components/schedule_visit_detail/schedule_visit_detail_model.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:hub/backend/api_requests/api_manager.dart'; import 'package:hub/components/organism_components/schedule_visit_detail/schedule_visit_detail_widget.dart'; @@ -8,8 +7,7 @@ import 'package:hub/shared/helpers/sqlite_storage_helper.dart'; import 'package:hub/shared/utils/storage_util.dart'; import 'package:intl/intl.dart'; -class ScheduleVisitDetailModel - extends FlutterFlowModel { +class ScheduleVisitDetailModel extends FlutterFlowModel { late final String devUUID; late final String userUUID; late final String cliUUID; @@ -39,8 +37,7 @@ class ScheduleVisitDetailModel DateFormat originalFormat = DateFormat('d/M/y H:mm:ss'); DateFormat newFormat = DateFormat('y-M-d H:mm:ss'); - if (!RegExp(r'^\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{2}:\d{2}$') - .hasMatch(dateStr)) { + if (!RegExp(r'^\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{2}:\d{2}$').hasMatch(dateStr)) { return 'Invalid date format'; } diff --git a/lib/components/organism_components/schedule_visit_detail/schedule_visit_detail_widget.dart b/lib/components/organism_components/schedule_visit_detail/schedule_visit_detail_widget.dart index f64303fb..29f8f48d 100644 --- a/lib/components/organism_components/schedule_visit_detail/schedule_visit_detail_widget.dart +++ b/lib/components/organism_components/schedule_visit_detail/schedule_visit_detail_widget.dart @@ -35,8 +35,7 @@ class ScheduleVisitDetailWidget extends StatefulWidget { final String? visitObsStr; @override - State createState() => - _ScheduleVisitDetailWidgetState(); + State createState() => _ScheduleVisitDetailWidgetState(); } class _ScheduleVisitDetailWidgetState extends State { @@ -58,19 +57,16 @@ class _ScheduleVisitDetailWidgetState extends State { _model.textController1 ??= TextEditingController(text: widget.visitTempStr); _model.textFieldFocusNode1 ??= FocusNode(); - _model.textController2 ??= - TextEditingController(text: widget.visitStartDate); + _model.textController2 ??= TextEditingController(text: widget.visitStartDate); _model.textFieldFocusNode2 ??= FocusNode(); _model.textController3 ??= TextEditingController(text: widget.visitEndDate); _model.textFieldFocusNode3 ??= FocusNode(); - _model.textController4 ??= - TextEditingController(text: extractDescToStr(widget.visitResonStr!)); + _model.textController4 ??= TextEditingController(text: extractDescToStr(widget.visitResonStr!)); _model.textFieldFocusNode4 ??= FocusNode(); - _model.textController5 ??= - TextEditingController(text: extractDescToStr(widget.visitLevelStr!)); + _model.textController5 ??= TextEditingController(text: extractDescToStr(widget.visitLevelStr!)); _model.textFieldFocusNode5 ??= FocusNode(); _model.textController6 ??= TextEditingController(text: widget.visitObsStr); @@ -132,13 +128,11 @@ class _ScheduleVisitDetailWidgetState extends State { ), ), child: Visibility( - visible: widget.visitorStrList != null && - widget.visitorStrList != '', + visible: widget.visitorStrList != null && widget.visitorStrList != '', child: Align( alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 15.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(15.0, 0.0, 0.0, 0.0), child: FlutterFlowIconButton( borderRadius: 20.0, borderWidth: 1.0, @@ -161,8 +155,7 @@ class _ScheduleVisitDetailWidgetState extends State { mainAxisAlignment: MainAxisAlignment.end, children: [ Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 5.0, 0.0, 5.0, 20.0), + padding: const EdgeInsetsDirectional.fromSTEB(5.0, 0.0, 5.0, 20.0), child: SizedBox( width: 100.0, child: ClipRRect( @@ -190,8 +183,7 @@ class _ScheduleVisitDetailWidgetState extends State { Container( decoration: const BoxDecoration(), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 8.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 10.0), child: TextFormField( controller: _model.textController1, focusNode: _model.textFieldFocusNode1, @@ -203,31 +195,19 @@ class _ScheduleVisitDetailWidgetState extends State { labelText: FFLocalizations.of(context).getText( '7w4fohoa' /* Encerramento da Visita */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -258,32 +238,25 @@ class _ScheduleVisitDetailWidgetState extends State { borderRadius: BorderRadius.circular(8.0), ), ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey(FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), - validator: _model.textController1Validator - .asValidator(context), + validator: _model.textController1Validator.asValidator(context), ), ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 10.0), child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 8.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0), child: TextFormField( controller: _model.textController2, focusNode: _model.textFieldFocusNode2, @@ -292,98 +265,71 @@ class _ScheduleVisitDetailWidgetState extends State { readOnly: true, decoration: InputDecoration( isDense: true, - labelText: FFLocalizations.of(context) - .getVariableText( + labelText: FFLocalizations.of(context).getVariableText( enText: 'Start', ptText: 'Início', ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintText: - FFLocalizations.of(context).getText( + hintText: FFLocalizations.of(context).getText( '0cp1e31d' /* dd/mm/yyyy */, ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .accent1, + color: FlutterFlowTheme.of(context).accent1, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .primary, + color: FlutterFlowTheme.of(context).primary, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), errorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of(context).error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of(context).error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontSize: 12, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.center, - validator: _model.textController2Validator - .asValidator(context), + validator: _model.textController2Validator.asValidator(context), ), ), ), Expanded( child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 8.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0), child: TextFormField( controller: _model.textController3, focusNode: _model.textFieldFocusNode3, @@ -392,90 +338,64 @@ class _ScheduleVisitDetailWidgetState extends State { readOnly: true, decoration: InputDecoration( isDense: true, - labelText: - FFLocalizations.of(context).getText( + labelText: FFLocalizations.of(context).getText( 'abppdgz3' /* Término */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintText: - FFLocalizations.of(context).getText( + hintText: FFLocalizations.of(context).getText( 'kqralft4' /* dd/mm/yyyy */, ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .accent1, + color: FlutterFlowTheme.of(context).accent1, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .primary, + color: FlutterFlowTheme.of(context).primary, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), errorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of(context).error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of(context).error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontSize: 12, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.center, - validator: _model.textController3Validator - .asValidator(context), + validator: _model.textController3Validator.asValidator(context), ), ), ), @@ -483,16 +403,14 @@ class _ScheduleVisitDetailWidgetState extends State { ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 10.0), child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 8.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0), child: TextFormField( controller: _model.textController4, focusNode: _model.textFieldFocusNode4, @@ -501,96 +419,69 @@ class _ScheduleVisitDetailWidgetState extends State { readOnly: true, decoration: InputDecoration( isDense: true, - labelText: - FFLocalizations.of(context).getText( + labelText: FFLocalizations.of(context).getText( 'xjxhzqqm' /* Motivo da Visita */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintText: - FFLocalizations.of(context).getText( + hintText: FFLocalizations.of(context).getText( '47oezdm6' /* Motivo */, ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .accent1, + color: FlutterFlowTheme.of(context).accent1, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .primary, + color: FlutterFlowTheme.of(context).primary, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), errorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of(context).error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of(context).error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.center, - validator: _model.textController4Validator - .asValidator(context), + validator: _model.textController4Validator.asValidator(context), ), ), ), Expanded( child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 8.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0), child: TextFormField( controller: _model.textController5, focusNode: _model.textFieldFocusNode5, @@ -599,89 +490,63 @@ class _ScheduleVisitDetailWidgetState extends State { readOnly: true, decoration: InputDecoration( isDense: true, - labelText: - FFLocalizations.of(context).getText( + labelText: FFLocalizations.of(context).getText( '2ujg7u18' /* Nível de Acesso */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintText: - FFLocalizations.of(context).getText( + hintText: FFLocalizations.of(context).getText( '3emmbbfv' /* Nível de Acesso */, ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .accent1, + color: FlutterFlowTheme.of(context).accent1, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .primary, + color: FlutterFlowTheme.of(context).primary, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), errorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of(context).error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of(context).error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), borderRadius: BorderRadius.circular(8.0), ), ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.center, - validator: _model.textController5Validator - .asValidator(context), + validator: _model.textController5Validator.asValidator(context), ), ), ), @@ -691,8 +556,7 @@ class _ScheduleVisitDetailWidgetState extends State { Container( decoration: const BoxDecoration(), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 8.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0), child: TextFormField( controller: _model.textController6, focusNode: _model.textFieldFocusNode6, @@ -704,31 +568,19 @@ class _ScheduleVisitDetailWidgetState extends State { labelText: FFLocalizations.of(context).getText( 'ritce5uw' /* Observações da Visita */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -759,18 +611,13 @@ class _ScheduleVisitDetailWidgetState extends State { borderRadius: BorderRadius.circular(8.0), ), ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey(FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), - validator: _model.textController6Validator - .asValidator(context), + validator: _model.textController6Validator.asValidator(context), ), ), ), @@ -780,12 +627,10 @@ class _ScheduleVisitDetailWidgetState extends State { ), IconButton( onPressed: () async { - _model.postScheduleVisit = - await PhpGroup.postScheduleVisitCall.call( + _model.postScheduleVisit = await PhpGroup.postScheduleVisitCall.call( devDesc: widget.visitObsStr, idVisitante: widget.visitorStrList, - dtInicio: - _model.convertDateFormat(widget.visitStartDate ?? ''), + dtInicio: _model.convertDateFormat(widget.visitStartDate ?? ''), dtFim: _model.convertDateFormat(widget.visitEndDate ?? ''), unica: widget.visitTempStr, idMotivo: extractIdToStr(widget.visitResonStr!), @@ -799,12 +644,10 @@ class _ScheduleVisitDetailWidgetState extends State { false) { context.pop(); } else { - final String? msg = PhpGroup.postScheduleVisitCall.errorMsg( + final String? msg = PhpGroup.postScheduleVisitCall.errorMsg( (_model.postScheduleVisit?.jsonBody ?? ''), ); await DialogUtil.error(context, msg!).then((value) => safeSetState(() {})); - - } setState(() {}); diff --git a/lib/components/organism_components/up_arrow_linked_locals_component/up_arrow_linked_locals_component_model.dart b/lib/components/organism_components/up_arrow_linked_locals_component/up_arrow_linked_locals_component_model.dart index 58eb0783..235ccfe0 100644 --- a/lib/components/organism_components/up_arrow_linked_locals_component/up_arrow_linked_locals_component_model.dart +++ b/lib/components/organism_components/up_arrow_linked_locals_component/up_arrow_linked_locals_component_model.dart @@ -3,8 +3,7 @@ import 'package:hub/components/organism_components/up_arrow_linked_locals_compon import 'package:hub/flutter_flow/flutter_flow_model.dart'; import 'package:hub/shared/utils/storage_util.dart'; -class UpArrowLinkedLocalsComponentModel - extends FlutterFlowModel { +class UpArrowLinkedLocalsComponentModel extends FlutterFlowModel { late final String devUUID; late final String userUUID; late final String cliUUID; diff --git a/lib/components/organism_components/up_arrow_linked_locals_component/up_arrow_linked_locals_component_widget.dart b/lib/components/organism_components/up_arrow_linked_locals_component/up_arrow_linked_locals_component_widget.dart index 9415e7fc..d371a85b 100644 --- a/lib/components/organism_components/up_arrow_linked_locals_component/up_arrow_linked_locals_component_widget.dart +++ b/lib/components/organism_components/up_arrow_linked_locals_component/up_arrow_linked_locals_component_widget.dart @@ -12,12 +12,10 @@ class UpArrowLinkedLocalsComponentWidget extends StatefulWidget { const UpArrowLinkedLocalsComponentWidget({super.key}); @override - State createState() => - _UpArrowLinkedLocalsComponentWidgetState(); + State createState() => _UpArrowLinkedLocalsComponentWidgetState(); } -class _UpArrowLinkedLocalsComponentWidgetState - extends State { +class _UpArrowLinkedLocalsComponentWidgetState extends State { late UpArrowLinkedLocalsComponentModel _model; @override @@ -107,8 +105,7 @@ class _UpArrowLinkedLocalsComponentWidgetState return GridView.builder( padding: EdgeInsets.zero, - gridDelegate: - const SliverGridDelegateWithFixedCrossAxisCount( + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 1, crossAxisSpacing: 10.0, mainAxisSpacing: 0.0, @@ -117,8 +114,7 @@ class _UpArrowLinkedLocalsComponentWidgetState scrollDirection: Axis.horizontal, itemCount: eachLocals.length, itemBuilder: (context, eachLocalsIndex) { - final eachLocalsItem = - eachLocals[eachLocalsIndex]; + final eachLocalsItem = eachLocals[eachLocalsIndex]; return InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, @@ -141,40 +137,31 @@ class _UpArrowLinkedLocalsComponentWidgetState width: 50.0, height: double.infinity, decoration: const BoxDecoration(), - alignment: - const AlignmentDirectional(0.0, 0.0), + alignment: const AlignmentDirectional(0.0, 0.0), child: Column( mainAxisSize: MainAxisSize.max, - mainAxisAlignment: - MainAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, children: [ Container( width: 100.0, height: 100.0, decoration: BoxDecoration( - color: FlutterFlowTheme.of(context) - .primaryText, - borderRadius: - const BorderRadius.only( + color: FlutterFlowTheme.of(context).primaryText, + borderRadius: const BorderRadius.only( bottomLeft: Radius.circular(25.0), - bottomRight: - Radius.circular(25.0), + bottomRight: Radius.circular(25.0), topLeft: Radius.circular(25.0), topRight: Radius.circular(25.0), ), border: Border.all( - color: - FlutterFlowTheme.of(context) - .secondaryText, + color: FlutterFlowTheme.of(context).secondaryText, width: 3.0, ), ), child: ClipRRect( - borderRadius: - const BorderRadius.only( + borderRadius: const BorderRadius.only( bottomLeft: Radius.circular(25.0), - bottomRight: - Radius.circular(25.0), + bottomRight: Radius.circular(25.0), topLeft: Radius.circular(25.0), topRight: Radius.circular(25.0), ), @@ -187,36 +174,23 @@ class _UpArrowLinkedLocalsComponentWidgetState width: double.infinity, height: double.infinity, fit: BoxFit.fill, - alignment: - const Alignment(0.0, 0.0), + alignment: const Alignment(0.0, 0.0), ), ), ), Padding( - padding: const EdgeInsetsDirectional - .fromSTEB(0.0, 10.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0), child: Text( getJsonField( eachLocalsItem, r'''$.CLI_NOME''', ).toString(), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of( - context) - .bodyMediumFamily, - color: FlutterFlowTheme.of( - context) - .primaryText, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), diff --git a/lib/components/templates_components/access_notification_modal_template_component/access_notification_modal_template_component_model.dart b/lib/components/templates_components/access_notification_modal_template_component/access_notification_modal_template_component_model.dart index 3d747604..dcd91556 100644 --- a/lib/components/templates_components/access_notification_modal_template_component/access_notification_modal_template_component_model.dart +++ b/lib/components/templates_components/access_notification_modal_template_component/access_notification_modal_template_component_model.dart @@ -4,8 +4,7 @@ import 'package:hub/shared/utils/storage_util.dart'; import '/backend/api_requests/api_calls.dart'; import '/flutter_flow/flutter_flow_util.dart'; -import 'access_notification_modal_template_component_widget.dart' - show AccessNotificationModalTemplateComponentWidget; +import 'access_notification_modal_template_component_widget.dart' show AccessNotificationModalTemplateComponentWidget; class AccessNotificationModalTemplateComponentModel extends FlutterFlowModel { diff --git a/lib/components/templates_components/access_notification_modal_template_component/access_notification_modal_template_component_widget.dart b/lib/components/templates_components/access_notification_modal_template_component/access_notification_modal_template_component_widget.dart index 652bdfe6..edb51dba 100644 --- a/lib/components/templates_components/access_notification_modal_template_component/access_notification_modal_template_component_widget.dart +++ b/lib/components/templates_components/access_notification_modal_template_component/access_notification_modal_template_component_widget.dart @@ -41,8 +41,7 @@ class _AccessNotificationModalTemplateComponentWidgetState void initState() { super.initState(); - _model = createModel( - context, () => AccessNotificationModalTemplateComponentModel()); + _model = createModel(context, () => AccessNotificationModalTemplateComponentModel()); _model.textController1 ??= TextEditingController(text: widget.name); _model.textFieldFocusNode1 ??= FocusNode(); @@ -66,11 +65,9 @@ class _AccessNotificationModalTemplateComponentWidgetState @override Widget build(BuildContext context) { - String labelTypeResident = FFLocalizations.of(context) - .getVariableText(enText: 'Resident', ptText: 'Morador'); + String labelTypeResident = FFLocalizations.of(context).getVariableText(enText: 'Resident', ptText: 'Morador'); - String labelTypeVisitor = FFLocalizations.of(context) - .getVariableText(enText: 'Visitor', ptText: 'Visitante'); + String labelTypeVisitor = FFLocalizations.of(context).getVariableText(enText: 'Visitor', ptText: 'Visitante'); return Align( alignment: const AlignmentDirectional(0.0, 0.0), @@ -113,13 +110,10 @@ class _AccessNotificationModalTemplateComponentWidgetState fit: BoxFit.cover, ), ), - ] - .addToStart(const SizedBox(width: 10.0)) - .addToEnd(const SizedBox(width: 10.0)), + ].addToStart(const SizedBox(width: 10.0)).addToEnd(const SizedBox(width: 10.0)), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( controller: _model.textController1, focusNode: _model.textFieldFocusNode1, @@ -132,25 +126,19 @@ class _AccessNotificationModalTemplateComponentWidgetState labelText: FFLocalizations.of(context).getText( 'dvag09pq' /* Nome */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, @@ -162,18 +150,16 @@ class _AccessNotificationModalTemplateComponentWidgetState ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, maxLines: null, keyboardType: TextInputType.name, - validator: - _model.textController1Validator.asValidator(context), + validator: _model.textController1Validator.asValidator(context), ), ), Row( @@ -181,10 +167,8 @@ class _AccessNotificationModalTemplateComponentWidgetState children: [ Expanded( child: TextFormField( - controller: TextEditingController( - text: widget.type == 'O' - ? labelTypeResident - : labelTypeVisitor), + controller: + TextEditingController(text: widget.type == 'O' ? labelTypeResident : labelTypeVisitor), focusNode: _model.textFieldFocusNode2, autofocus: false, textInputAction: TextInputAction.next, @@ -195,27 +179,19 @@ class _AccessNotificationModalTemplateComponentWidgetState labelText: FFLocalizations.of(context).getText( 'h3s0r1he' /* Tipo */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, @@ -227,28 +203,22 @@ class _AccessNotificationModalTemplateComponentWidgetState ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, maxLines: null, keyboardType: TextInputType.name, - validator: _model.textController2Validator - .asValidator(context), + validator: _model.textController2Validator.asValidator(context), ), ), - ] - .addToStart(const SizedBox(width: 24.0)) - .addToEnd(const SizedBox(width: 24.0)), + ].addToStart(const SizedBox(width: 24.0)).addToEnd(const SizedBox(width: 24.0)), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( controller: _model.textController3, focusNode: _model.textFieldFocusNode3, @@ -261,25 +231,19 @@ class _AccessNotificationModalTemplateComponentWidgetState labelText: FFLocalizations.of(context).getText( 'jveeqpdz' /* Acesso */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, @@ -291,23 +255,20 @@ class _AccessNotificationModalTemplateComponentWidgetState ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, maxLines: null, keyboardType: TextInputType.name, - validator: - _model.textController3Validator.asValidator(context), + validator: _model.textController3Validator.asValidator(context), ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( controller: _model.textController4, focusNode: _model.textFieldFocusNode4, @@ -322,24 +283,18 @@ class _AccessNotificationModalTemplateComponentWidgetState enText: 'Access Sector', ptText: 'Setor de Acesso', ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, @@ -351,16 +306,14 @@ class _AccessNotificationModalTemplateComponentWidgetState ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, - validator: - _model.textController4Validator.asValidator(context), + validator: _model.textController4Validator.asValidator(context), ), ), ] diff --git a/lib/components/templates_components/card_item_template_component/card_item_template_component_model.dart b/lib/components/templates_components/card_item_template_component/card_item_template_component_model.dart index 032a1f68..aed57244 100644 --- a/lib/components/templates_components/card_item_template_component/card_item_template_component_model.dart +++ b/lib/components/templates_components/card_item_template_component/card_item_template_component_model.dart @@ -1,14 +1,11 @@ import '/flutter_flow/flutter_flow_util.dart'; -import 'card_item_template_component_widget.dart' - show CardItemTemplateComponentWidget; +import 'card_item_template_component_widget.dart' show CardItemTemplateComponentWidget; import 'package:flutter/material.dart'; - -class CardItemTemplateComponentModel - extends FlutterFlowModel { +class CardItemTemplateComponentModel extends FlutterFlowModel { @override void initState(BuildContext context) {} @override void dispose() {} -} \ No newline at end of file +} diff --git a/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart b/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart index f306eff7..1f38aa99 100644 --- a/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart +++ b/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart @@ -25,12 +25,10 @@ class CardItemTemplateComponentWidget extends StatefulWidget { final Future Function()? onTapCardItemAction; @override - State createState() => - _CardItemTemplateComponentWidgetState(); + State createState() => _CardItemTemplateComponentWidgetState(); } -class _CardItemTemplateComponentWidgetState - extends State { +class _CardItemTemplateComponentWidgetState extends State { late CardItemTemplateComponentModel _model; late LinkedHashMap labelsLinkedHashMap; late List> statusLinkedHashMap; @@ -40,9 +38,7 @@ class _CardItemTemplateComponentWidgetState super.initState(); _model = createModel(context, () => CardItemTemplateComponentModel()); labelsLinkedHashMap = LinkedHashMap.from(widget.labelsHashMap ?? {}); - statusLinkedHashMap = widget.statusHashMap - .map((map) => LinkedHashMap.from(map ?? {})) - .toList(); + statusLinkedHashMap = widget.statusHashMap.map((map) => LinkedHashMap.from(map ?? {})).toList(); } @override @@ -70,8 +66,7 @@ class _CardItemTemplateComponentWidgetState fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), color: FlutterFlowTheme.of(context).primaryText, ), ), @@ -85,8 +80,7 @@ class _CardItemTemplateComponentWidgetState fontSize: 12.5, letterSpacing: 0.0, fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -174,9 +168,7 @@ class _CardItemTemplateComponentWidgetState ), ), _generateImage(), - ] - .addToEnd(const SizedBox(width: 10)) - .addToStart(const SizedBox(width: 10)), + ].addToEnd(const SizedBox(width: 10)).addToStart(const SizedBox(width: 10)), ); } else { return Column( diff --git a/lib/components/templates_components/change_passs_qr_code_pass_key_template_component/change_pass_model.dart b/lib/components/templates_components/change_passs_qr_code_pass_key_template_component/change_pass_model.dart index 716e98ef..ab9bda87 100644 --- a/lib/components/templates_components/change_passs_qr_code_pass_key_template_component/change_pass_model.dart +++ b/lib/components/templates_components/change_passs_qr_code_pass_key_template_component/change_pass_model.dart @@ -1,11 +1,8 @@ import '/flutter_flow/flutter_flow_util.dart'; -import 'change_pass_widget.dart' - show PassKeyTemplateWidget; +import 'change_pass_widget.dart' show PassKeyTemplateWidget; import 'package:flutter/material.dart'; - -class PassKeyTemplateComponentModel - extends FlutterFlowModel { +class PassKeyTemplateComponentModel extends FlutterFlowModel { /// State fields for stateful widgets in this component. final formKey = GlobalKey(); @@ -18,19 +15,18 @@ class PassKeyTemplateComponentModel late bool keyTextFieldVisibility2; String? Function(BuildContext, String?)? keyTextFieldTextControllerValidator1; String? Function(BuildContext, String?)? keyTextFieldTextControllerValidator2; - String? _keyTextFieldTextControllerValidator( - BuildContext context, String? val) { - if (val == null || val.isEmpty ) { + String? _keyTextFieldTextControllerValidator(BuildContext context, String? val) { + if (val == null || val.isEmpty) { return FFLocalizations.of(context).getVariableText( enText: 'This field is required', - ptText: 'Este campo é obrigatório', + ptText: 'Este campo é obrigatório', ); } - if ( val.length < 4 ) { + if (val.length < 4) { return FFLocalizations.of(context).getVariableText( - enText: 'This field must have at least 4 characters', - ptText: 'Este campo deve ter pelo menos 4 caracteres', - ); + enText: 'This field must have at least 4 characters', + ptText: 'Este campo deve ter pelo menos 4 caracteres', + ); } return null; } @@ -50,4 +46,4 @@ class PassKeyTemplateComponentModel keyTextFieldTextController1?.dispose(); keyTextFieldTextController2?.dispose(); } -} \ No newline at end of file +} diff --git a/lib/components/templates_components/change_passs_qr_code_pass_key_template_component/change_pass_widget.dart b/lib/components/templates_components/change_passs_qr_code_pass_key_template_component/change_pass_widget.dart index fb2c4b57..f727fc2c 100644 --- a/lib/components/templates_components/change_passs_qr_code_pass_key_template_component/change_pass_widget.dart +++ b/lib/components/templates_components/change_passs_qr_code_pass_key_template_component/change_pass_widget.dart @@ -81,8 +81,7 @@ class _PassKeyTemplateWidgetState extends State { tablet: false, )) Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 8.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 8.0), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, @@ -95,8 +94,7 @@ class _PassKeyTemplateWidgetState extends State { mainAxisSize: MainAxisSize.max, children: [ const Padding( - padding: EdgeInsetsDirectional.fromSTEB( - 0.0, 12.0, 0.0, 12.0), + padding: EdgeInsetsDirectional.fromSTEB(0.0, 12.0, 0.0, 12.0), child: Icon( Icons.arrow_back_rounded, color: Color(0xFF15161E), @@ -104,20 +102,17 @@ class _PassKeyTemplateWidgetState extends State { ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 12.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 0.0, 0.0), child: Text( '', - style: - FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: 'Plus Jakarta Sans', - color: const Color(0xFF15161E), - fontSize: 14.0, - letterSpacing: 0.0, - fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), - ), + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: 'Plus Jakarta Sans', + color: const Color(0xFF15161E), + fontSize: 14.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w500, + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + ), ), ), ], @@ -125,14 +120,11 @@ class _PassKeyTemplateWidgetState extends State { ), ), Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context).getVariableText( enText: 'INSERT PASSWORD', - ptText: StorageUtil().accessPass != '' - ? 'ALTERAR SENHA' - : 'ADICIONAR SENHA', + ptText: StorageUtil().accessPass != '' ? 'ALTERAR SENHA' : 'ADICIONAR SENHA', ), style: FlutterFlowTheme.of(context).headlineMedium.override( fontFamily: 'Outfit', @@ -145,20 +137,17 @@ class _PassKeyTemplateWidgetState extends State { ), ), Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(16.0, 4.0, 16.0, 4.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 4.0, 16.0, 4.0), child: Text( FFLocalizations.of(context).getVariableText( - enText: 'Enter your password to continue', - ptText: 'Digite sua senha para continuar'), + enText: 'Enter your password to continue', ptText: 'Digite sua senha para continuar'), style: FlutterFlowTheme.of(context).labelMedium.override( fontFamily: 'Plus Jakarta Sans', color: FlutterFlowTheme.of(context).primaryText, fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: - GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), ), ), @@ -168,8 +157,7 @@ class _PassKeyTemplateWidgetState extends State { child: Column( children: [ Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 16.0, 12.0, 16.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 12.0, 16.0, 0.0), child: SizedBox( width: double.infinity, child: TextFormField( @@ -188,36 +176,29 @@ class _PassKeyTemplateWidgetState extends State { obscureText: !_model.keyTextFieldVisibility1, decoration: InputDecoration( isDense: true, - labelText: - FFLocalizations.of(context).getVariableText( + labelText: FFLocalizations.of(context).getVariableText( ptText: 'Senha', enText: 'Password', ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( fontFamily: 'Plus Jakarta Sans', color: FlutterFlowTheme.of(context).primaryText, fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), hintText: FFLocalizations.of(context).getVariableText( ptText: 'Digite a sua senha.....', enText: 'Enter your password.....', ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( fontFamily: 'Plus Jakarta Sans', color: FlutterFlowTheme.of(context).primaryText, fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -248,14 +229,11 @@ class _PassKeyTemplateWidgetState extends State { borderRadius: BorderRadius.circular(12.0), ), filled: true, - fillColor: - FlutterFlowTheme.of(context).primaryBackground, - contentPadding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 24.0, 20.0, 24.0), + fillColor: FlutterFlowTheme.of(context).primaryBackground, + contentPadding: const EdgeInsetsDirectional.fromSTEB(24.0, 24.0, 20.0, 24.0), suffixIcon: InkWell( onTap: () => setState( - () => _model.keyTextFieldVisibility1 = - !_model.keyTextFieldVisibility1, + () => _model.keyTextFieldVisibility1 = !_model.keyTextFieldVisibility1, ), focusNode: FocusNode(skipTraversal: true), child: Icon( @@ -273,20 +251,14 @@ class _PassKeyTemplateWidgetState extends State { fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), maxLength: 4, maxLengthEnforcement: MaxLengthEnforcement.enforced, - buildCounter: (context, - {required currentLength, - required isFocused, - maxLength}) => - null, + buildCounter: (context, {required currentLength, required isFocused, maxLength}) => null, keyboardType: TextInputType.number, cursorColor: FlutterFlowTheme.of(context).primary, - validator: _model.keyTextFieldTextControllerValidator1 - .asValidator(context), + validator: _model.keyTextFieldTextControllerValidator1.asValidator(context), inputFormatters: [ FilteringTextInputFormatter.allow(RegExp('[0-9]')), LengthLimitingTextInputFormatter(4), @@ -300,12 +272,10 @@ class _PassKeyTemplateWidgetState extends State { Align( alignment: const AlignmentDirectional(0.0, 0.0), child: Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(0.0, 24.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 24.0, 0.0, 0.0), child: FFButtonWidget( onPressed: () async { - if (_model.formKey.currentState == null || - !_model.formKey.currentState!.validate()) { + if (_model.formKey.currentState == null || !_model.formKey.currentState!.validate()) { return; } await widget.toggleActionStatus?.call( @@ -317,20 +287,14 @@ class _PassKeyTemplateWidgetState extends State { context.pop(true); }, text: FFLocalizations.of(context).getVariableText( - ptText: StorageUtil().accessPass != '' - ? 'Alterar' - : 'Adicionar', - enText: StorageUtil().accessPass != '' - ? 'Change' - : 'Add', + ptText: StorageUtil().accessPass != '' ? 'Alterar' : 'Adicionar', + enText: StorageUtil().accessPass != '' ? 'Change' : 'Add', ), options: FFButtonOptions( width: 270.0, height: 50.0, - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), color: const Color(0xFF1AAB5F), textStyle: FlutterFlowTheme.of(context).titleSmall.override( fontFamily: 'Plus Jakarta Sans', @@ -338,8 +302,7 @@ class _PassKeyTemplateWidgetState extends State { fontSize: 16.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), elevation: 3.0, borderSide: const BorderSide( diff --git a/lib/components/templates_components/details_component/details_component_widget.dart b/lib/components/templates_components/details_component/details_component_widget.dart index fbfef1cb..1a73a649 100644 --- a/lib/components/templates_components/details_component/details_component_widget.dart +++ b/lib/components/templates_components/details_component/details_component_widget.dart @@ -7,7 +7,6 @@ import 'package:hub/components/templates_components/details_component/details_co import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; - class DetailsComponentWidget extends StatefulWidget { const DetailsComponentWidget({ Key? key, @@ -31,13 +30,10 @@ class DetailsComponentWidget extends StatefulWidget { class _DetailsComponentWidgetState extends State { late DetailsComponentModel _model; - LinkedHashMap get labelsLinkedHashMap => - LinkedHashMap.from(widget.labelsHashMap); + LinkedHashMap get labelsLinkedHashMap => LinkedHashMap.from(widget.labelsHashMap); List> get statusLinkedHashMap => - widget.statusHashMap - .map((map) => LinkedHashMap.from(map ?? {})) - .toList(); + widget.statusHashMap.map((map) => LinkedHashMap.from(map ?? {})).toList(); @override void setState(VoidCallback callback) { @@ -96,8 +92,7 @@ class _DetailsComponentWidgetState extends State { SizedBox(height: MediaQuery.of(context).size.height * 0.03), Row( children: statusLinkedHashMap.expand((linkedHashMap) { - return linkedHashMap.entries - .map((MapEntry item) { + return linkedHashMap.entries.map((MapEntry item) { return Expanded( child: Padding( padding: EdgeInsets.symmetric( @@ -121,29 +116,21 @@ class _DetailsComponentWidgetState extends State { filled: true, fillColor: item.value, labelText: item.key, - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, fontWeight: FontWeight.bold, color: FlutterFlowTheme.of(context).info, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily, + FlutterFlowTheme.of(context).labelMediumFamily, ), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).info, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily, + FlutterFlowTheme.of(context).labelMediumFamily, ), ), focusedBorder: InputBorder.none, @@ -155,8 +142,7 @@ class _DetailsComponentWidgetState extends State { ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).info, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap().containsKey( @@ -166,8 +152,7 @@ class _DetailsComponentWidgetState extends State { textAlign: TextAlign.start, maxLines: null, keyboardType: TextInputType.name, - validator: _model.textController1Validator - .asValidator(context), + validator: _model.textController1Validator.asValidator(context), ), ), ); @@ -187,8 +172,7 @@ class _DetailsComponentWidgetState extends State { readOnly: true, initialValue: '$value', style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap().containsKey( @@ -202,26 +186,19 @@ class _DetailsComponentWidgetState extends State { border: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0), borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .primaryBackground, // Change border color here + color: FlutterFlowTheme.of(context).primaryBackground, // Change border color here ), ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap().containsKey( FlutterFlowTheme.of(context).labelMediumFamily, ), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap().containsKey( @@ -231,29 +208,25 @@ class _DetailsComponentWidgetState extends State { enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0), borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .primaryBackground, // Change border color here + color: FlutterFlowTheme.of(context).primaryBackground, // Change border color here ), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0), borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .primaryBackground, // Change border color here + color: FlutterFlowTheme.of(context).primaryBackground, // Change border color here ), ), errorBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0), borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .primaryBackground, // Change border color here + color: FlutterFlowTheme.of(context).primaryBackground, // Change border color here ), ), focusedErrorBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0), borderSide: BorderSide( - color: FlutterFlowTheme.of(context) - .primaryBackground, // Change border color here + color: FlutterFlowTheme.of(context).primaryBackground, // Change border color here ), ), ), @@ -261,8 +234,7 @@ class _DetailsComponentWidgetState extends State { }, ), SizedBox(height: MediaQuery.of(context).size.height * 0.02), - if (widget.buttons - .isNotEmpty) // Adicione este SizedBox com a altura desejada + if (widget.buttons.isNotEmpty) // Adicione este SizedBox com a altura desejada OverflowBar( overflowAlignment: OverflowBarAlignment.center, overflowSpacing: 2, diff --git a/lib/components/templates_components/forgot_password_template_component/forgot_password_template_component_model.dart b/lib/components/templates_components/forgot_password_template_component/forgot_password_template_component_model.dart index e860162b..aff803ff 100644 --- a/lib/components/templates_components/forgot_password_template_component/forgot_password_template_component_model.dart +++ b/lib/components/templates_components/forgot_password_template_component/forgot_password_template_component_model.dart @@ -2,12 +2,10 @@ import 'package:hub/shared/utils/validator_util.dart'; import '/backend/api_requests/api_calls.dart'; import '/flutter_flow/flutter_flow_util.dart'; -import 'forgot_password_template_component_widget.dart' - show ForgotPasswordTemplateComponentWidget; +import 'forgot_password_template_component_widget.dart' show ForgotPasswordTemplateComponentWidget; import 'package:flutter/material.dart'; -class ForgotPasswordTemplateComponentModel - extends FlutterFlowModel { +class ForgotPasswordTemplateComponentModel extends FlutterFlowModel { /// State fields for stateful widgets in this component. final formKey = GlobalKey(); @@ -15,8 +13,7 @@ class ForgotPasswordTemplateComponentModel FocusNode? emailAddressFocusNode; TextEditingController? emailAddressTextController; String? Function(BuildContext, String?)? emailAddressTextControllerValidator; - String? _emailAddressTextControllerValidator( - BuildContext context, String? val) { + String? _emailAddressTextControllerValidator(BuildContext context, String? val) { if (val == null || val.isEmpty) { return FFLocalizations.of(context).getText( 'snnmkbyc' /* E-mail é Obrigatório */, @@ -44,4 +41,4 @@ class ForgotPasswordTemplateComponentModel emailAddressFocusNode?.dispose(); emailAddressTextController?.dispose(); } -} \ No newline at end of file +} diff --git a/lib/components/templates_components/forgot_password_template_component/forgot_password_template_component_widget.dart b/lib/components/templates_components/forgot_password_template_component/forgot_password_template_component_widget.dart index 70f2ede6..15e84c64 100644 --- a/lib/components/templates_components/forgot_password_template_component/forgot_password_template_component_widget.dart +++ b/lib/components/templates_components/forgot_password_template_component/forgot_password_template_component_widget.dart @@ -1,4 +1,3 @@ - import 'package:easy_debounce/easy_debounce.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; @@ -19,12 +18,10 @@ class ForgotPasswordTemplateComponentWidget extends StatefulWidget { const ForgotPasswordTemplateComponentWidget({super.key}); @override - State createState() => - _ForgotPasswordTemplateComponentWidgetState(); + State createState() => _ForgotPasswordTemplateComponentWidgetState(); } -class _ForgotPasswordTemplateComponentWidgetState - extends State { +class _ForgotPasswordTemplateComponentWidgetState extends State { late ForgotPasswordTemplateComponentModel _model; @override @@ -79,8 +76,7 @@ class _ForgotPasswordTemplateComponentWidgetState tablet: false, )) Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 8.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 8.0), child: InkWell( key: const ValueKey('BackButton'), splashColor: Colors.transparent, @@ -94,8 +90,7 @@ class _ForgotPasswordTemplateComponentWidgetState mainAxisSize: MainAxisSize.max, children: [ const Padding( - padding: EdgeInsetsDirectional.fromSTEB( - 0.0, 12.0, 0.0, 12.0), + padding: EdgeInsetsDirectional.fromSTEB(0.0, 12.0, 0.0, 12.0), child: Icon( Icons.arrow_back_rounded, color: Color(0xFF15161E), @@ -107,13 +102,13 @@ class _ForgotPasswordTemplateComponentWidgetState child: Text( '', style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: 'Plus Jakarta Sans', - color: const Color(0xFF15161E), - fontSize: 14.0, - letterSpacing: 0.0, - fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), - ), + fontFamily: 'Plus Jakarta Sans', + color: const Color(0xFF15161E), + fontSize: 14.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w500, + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + ), ), ), ], @@ -121,8 +116,7 @@ class _ForgotPasswordTemplateComponentWidgetState ), ), Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context).getText('xxm3ajsy' /* ESQUECEU SUA SENHA? */), style: FlutterFlowTheme.of(context).headlineMedium.override( @@ -136,8 +130,7 @@ class _ForgotPasswordTemplateComponentWidgetState ), ), Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(16.0, 4.0, 16.0, 4.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 4.0, 16.0, 4.0), child: Text( FFLocalizations.of(context).getText('wu2f7yzo' /* Não se preucupe nós vamos te a... */), style: FlutterFlowTheme.of(context).labelMedium.override( @@ -146,8 +139,7 @@ class _ForgotPasswordTemplateComponentWidgetState fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: - GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), ), ), @@ -155,8 +147,7 @@ class _ForgotPasswordTemplateComponentWidgetState key: _model.formKey, autovalidateMode: AutovalidateMode.onUserInteraction, child: Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(16.0, 12.0, 16.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 12.0, 16.0, 0.0), child: SizedBox( width: double.infinity, child: TextFormField( @@ -175,14 +166,13 @@ class _ForgotPasswordTemplateComponentWidgetState isDense: true, labelText: FFLocalizations.of(context).getText('mtz8l7ft' /* E-mail */), labelStyle: FlutterFlowTheme.of(context).labelMedium.override( - fontFamily: 'Plus Jakarta Sans', - color: FlutterFlowTheme.of(context).primary, - fontSize: 14.0, - letterSpacing: 0.0, - fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), - ), + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primary, + fontSize: 14.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w500, + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + ), enabledBorder: OutlineInputBorder( borderSide: const BorderSide( color: Colors.black, @@ -211,8 +201,7 @@ class _ForgotPasswordTemplateComponentWidgetState ), borderRadius: BorderRadius.circular(12.0), ), - contentPadding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 24.0, 20.0, 24.0), + contentPadding: const EdgeInsetsDirectional.fromSTEB(24.0, 24.0, 20.0, 24.0), suffixIcon: Icon( Icons.email, color: FlutterFlowTheme.of(context).primary, @@ -225,14 +214,12 @@ class _ForgotPasswordTemplateComponentWidgetState fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), maxLines: null, keyboardType: TextInputType.emailAddress, cursorColor: FlutterFlowTheme.of(context).primary, - validator: _model.emailAddressTextControllerValidator - .asValidator(context), + validator: _model.emailAddressTextControllerValidator.asValidator(context), ), ), ), @@ -240,27 +227,22 @@ class _ForgotPasswordTemplateComponentWidgetState Align( alignment: const AlignmentDirectional(0.0, 0.0), child: Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(0.0, 24.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 24.0, 0.0, 0.0), child: FFButtonWidget( key: const ValueKey('SendButtonWidget'), onPressed: (_model.emailAddressTextController.text == '' || - !ValidatorUtil.isValidEmail( - _model.emailAddressTextController.text)) + !ValidatorUtil.isValidEmail(_model.emailAddressTextController.text)) ? null - : () async => AuthenticationService.forgotPassword(context, _model.emailAddressTextController.text), - - + : () async => + AuthenticationService.forgotPassword(context, _model.emailAddressTextController.text), text: FFLocalizations.of(context).getText( '74rnd5bu' /* Enviar */, ), options: FFButtonOptions( width: 270.0, height: 50.0, - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), color: FlutterFlowTheme.of(context).primary, textStyle: FlutterFlowTheme.of(context).titleSmall.override( fontFamily: 'Plus Jakarta Sans', @@ -268,8 +250,7 @@ class _ForgotPasswordTemplateComponentWidgetState fontSize: 16.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), elevation: 3.0, borderSide: const BorderSide( diff --git a/lib/components/templates_components/liberation_history_item_details_template_component/liberation_history_item_details_template_component_model.dart b/lib/components/templates_components/liberation_history_item_details_template_component/liberation_history_item_details_template_component_model.dart index db1f6d26..86a9bc1d 100644 --- a/lib/components/templates_components/liberation_history_item_details_template_component/liberation_history_item_details_template_component_model.dart +++ b/lib/components/templates_components/liberation_history_item_details_template_component/liberation_history_item_details_template_component_model.dart @@ -4,8 +4,7 @@ import 'package:hub/flutter_flow/flutter_flow_model.dart'; import 'package:hub/shared/utils/storage_util.dart'; class LiberationHistoryItemDetailsTemplateComponentModel - extends FlutterFlowModel< - LiberationHistoryItemDetailsTemplateComponentWidget> { + extends FlutterFlowModel { late final String devUUID; late final String userUUID; late final String cliUUID; diff --git a/lib/components/templates_components/liberation_history_item_details_template_component/liberation_history_item_details_template_component_widget.dart b/lib/components/templates_components/liberation_history_item_details_template_component/liberation_history_item_details_template_component_widget.dart index 539f36eb..5ed0fd82 100644 --- a/lib/components/templates_components/liberation_history_item_details_template_component/liberation_history_item_details_template_component_widget.dart +++ b/lib/components/templates_components/liberation_history_item_details_template_component/liberation_history_item_details_template_component_widget.dart @@ -5,8 +5,7 @@ import 'package:hub/components/templates_components/liberation_history_item_deta import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; -class LiberationHistoryItemDetailsTemplateComponentWidget - extends StatefulWidget { +class LiberationHistoryItemDetailsTemplateComponentWidget extends StatefulWidget { const LiberationHistoryItemDetailsTemplateComponentWidget({ super.key, required this.name, @@ -40,8 +39,7 @@ class _LiberationHistoryItemDetailsTemplateComponentWidgetState @override void initState() { super.initState(); - _model = createModel( - context, () => LiberationHistoryItemDetailsTemplateComponentModel()); + _model = createModel(context, () => LiberationHistoryItemDetailsTemplateComponentModel()); _model.textController1 ??= TextEditingController(text: widget.name); _model.textFieldFocusNode1 ??= FocusNode(); @@ -106,13 +104,10 @@ class _LiberationHistoryItemDetailsTemplateComponentWidgetState fit: BoxFit.cover, ), ), - ] - .addToStart(const SizedBox(width: 10.0)) - .addToEnd(const SizedBox(width: 10.0)), + ].addToStart(const SizedBox(width: 10.0)).addToEnd(const SizedBox(width: 10.0)), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( controller: _model.textController1, focusNode: _model.textFieldFocusNode1, @@ -125,25 +120,19 @@ class _LiberationHistoryItemDetailsTemplateComponentWidgetState labelText: FFLocalizations.of(context).getText( 'dmazrriq' /* Nome */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, @@ -155,18 +144,16 @@ class _LiberationHistoryItemDetailsTemplateComponentWidgetState ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, maxLines: null, keyboardType: TextInputType.name, - validator: - _model.textController1Validator.asValidator(context), + validator: _model.textController1Validator.asValidator(context), ), ), Row( @@ -185,27 +172,19 @@ class _LiberationHistoryItemDetailsTemplateComponentWidgetState labelText: FFLocalizations.of(context).getText( 'xx3ivbr4' /* Tipo */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, @@ -217,28 +196,22 @@ class _LiberationHistoryItemDetailsTemplateComponentWidgetState ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, maxLines: null, keyboardType: TextInputType.name, - validator: _model.textController2Validator - .asValidator(context), + validator: _model.textController2Validator.asValidator(context), ), ), - ] - .addToStart(const SizedBox(width: 24.0)) - .addToEnd(const SizedBox(width: 24.0)), + ].addToStart(const SizedBox(width: 24.0)).addToEnd(const SizedBox(width: 24.0)), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( controller: _model.textController3, focusNode: _model.textFieldFocusNode3, @@ -251,25 +224,19 @@ class _LiberationHistoryItemDetailsTemplateComponentWidgetState labelText: FFLocalizations.of(context).getText( 'rhheok7k' /* Acesso */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, @@ -281,23 +248,20 @@ class _LiberationHistoryItemDetailsTemplateComponentWidgetState ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, maxLines: null, keyboardType: TextInputType.name, - validator: - _model.textController3Validator.asValidator(context), + validator: _model.textController3Validator.asValidator(context), ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( controller: _model.textController4, focusNode: _model.textFieldFocusNode4, @@ -311,24 +275,18 @@ class _LiberationHistoryItemDetailsTemplateComponentWidgetState labelText: FFLocalizations.of(context).getText( 'w3tciqlv' /* Acionamento */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, @@ -340,16 +298,14 @@ class _LiberationHistoryItemDetailsTemplateComponentWidgetState ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, - validator: - _model.textController4Validator.asValidator(context), + validator: _model.textController4Validator.asValidator(context), ), ), ] diff --git a/lib/components/templates_components/message_notificaion_modal_template_component/message_notification_widget.dart b/lib/components/templates_components/message_notificaion_modal_template_component/message_notification_widget.dart index 2055c251..0afdecce 100644 --- a/lib/components/templates_components/message_notificaion_modal_template_component/message_notification_widget.dart +++ b/lib/components/templates_components/message_notificaion_modal_template_component/message_notification_widget.dart @@ -36,8 +36,7 @@ class _MessageNotificationModalTemplateComponentWidgetState @override void initState() { super.initState(); - _model = createModel( - context, () => MessageNotificationModalTemplateComponentModel()); + _model = createModel(context, () => MessageNotificationModalTemplateComponentModel()); _model.textController1 ??= TextEditingController(text: widget.message); _model.textFieldFocusNode1 ??= FocusNode(); @@ -76,8 +75,7 @@ class _MessageNotificationModalTemplateComponentWidgetState mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( controller: _model.textController1, focusNode: _model.textFieldFocusNode1, @@ -92,20 +90,16 @@ class _MessageNotificationModalTemplateComponentWidgetState enText: 'Message', ), labelStyle: FlutterFlowTheme.of(context).labelMedium.override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintStyle: FlutterFlowTheme.of(context).labelMedium.override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, @@ -120,8 +114,7 @@ class _MessageNotificationModalTemplateComponentWidgetState fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, maxLines: null, @@ -146,25 +139,19 @@ class _MessageNotificationModalTemplateComponentWidgetState ptText: 'De', enText: 'From', ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, @@ -176,27 +163,22 @@ class _MessageNotificationModalTemplateComponentWidgetState ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, maxLines: null, keyboardType: TextInputType.name, - validator: - _model.textController2Validator.asValidator(context), + validator: _model.textController2Validator.asValidator(context), ), ), - ] - .addToStart(const SizedBox(width: 24.0)) - .addToEnd(const SizedBox(width: 24.0)), + ].addToStart(const SizedBox(width: 24.0)).addToEnd(const SizedBox(width: 24.0)), ), Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( controller: _model.textController3, focusNode: _model.textFieldFocusNode3, @@ -211,20 +193,16 @@ class _MessageNotificationModalTemplateComponentWidgetState enText: 'To', ), labelStyle: FlutterFlowTheme.of(context).labelMedium.override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintStyle: FlutterFlowTheme.of(context).labelMedium.override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: InputBorder.none, focusedBorder: InputBorder.none, @@ -239,8 +217,7 @@ class _MessageNotificationModalTemplateComponentWidgetState fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, maxLines: null, diff --git a/lib/components/templates_components/provisional_schedule_template/provisional_schedule_template_model.dart b/lib/components/templates_components/provisional_schedule_template/provisional_schedule_template_model.dart index e9a7606c..708ab789 100644 --- a/lib/components/templates_components/provisional_schedule_template/provisional_schedule_template_model.dart +++ b/lib/components/templates_components/provisional_schedule_template/provisional_schedule_template_model.dart @@ -4,8 +4,7 @@ import 'package:hub/components/templates_components/provisional_schedule_templat import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/shared/utils/storage_util.dart'; -class ScheduleProvisionalVisitPageModel - extends FlutterFlowModel { +class ScheduleProvisionalVisitPageModel extends FlutterFlowModel { String cliUUID = ''; String devUUID = ''; String userUUID = ''; @@ -19,25 +18,21 @@ class ScheduleProvisionalVisitPageModel void addToVisitors(dynamic item) => visitors.add(item); void removeFromVisitors(dynamic item) => visitors.remove(item); void removeAtIndexFromVisitors(int index) => visitors.removeAt(index); - void insertAtIndexInVisitors(int index, dynamic item) => - visitors.insert(index, item); - void updateVisitorsAtIndex(int index, Function(dynamic) updateFn) => - visitors[index] = updateFn(visitors[index]); + void insertAtIndexInVisitors(int index, dynamic item) => visitors.insert(index, item); + void updateVisitorsAtIndex(int index, Function(dynamic) updateFn) => visitors[index] = updateFn(visitors[index]); List docs = []; void addToDocs(String item) => docs.add(item); void removeFromDocs(String item) => docs.remove(item); void removeAtIndexFromDocs(int index) => docs.removeAt(index); void insertAtIndexInDocs(int index, String item) => docs.insert(index, item); - void updateDocsAtIndex(int index, Function(String) updateFn) => - docs[index] = updateFn(docs[index]); + void updateDocsAtIndex(int index, Function(String) updateFn) => docs[index] = updateFn(docs[index]); final formKey = GlobalKey(); FocusNode? personNameFocusNode; TextEditingController? personNameTextController; String? Function(BuildContext, String?)? personNameTextControllerValidator; - String? _personNameTextControllerValidator( - BuildContext context, String? val) { + String? _personNameTextControllerValidator(BuildContext context, String? val) { if (val == null || val.isEmpty) { return FFLocalizations.of(context).getText( '3hqg8buh', @@ -110,8 +105,7 @@ class ScheduleProvisionalVisitPageModel } bool isFormValid() { - if (personNameTextController.text == '' || - personNameTextController.text.length > 80) { + if (personNameTextController.text == '' || personNameTextController.text.length > 80) { return false; } @@ -121,12 +115,10 @@ class ScheduleProvisionalVisitPageModel DateTime selectedDateTime; DateTime currentDateTime = DateTime.now(); - selectedDateTime = - DateFormat('dd/MM/yyyy HH:mm:ss').parse(dateTimeTextController.text); + selectedDateTime = DateFormat('dd/MM/yyyy HH:mm:ss').parse(dateTimeTextController.text); try { - selectedDateTime = - DateFormat('dd/MM/yyyy HH:mm:ss').parse(dateTimeTextController.text); + selectedDateTime = DateFormat('dd/MM/yyyy HH:mm:ss').parse(dateTimeTextController.text); } catch (e) { return false; } diff --git a/lib/components/templates_components/provisional_schedule_template/provisional_shcedule_template_widget.dart b/lib/components/templates_components/provisional_schedule_template/provisional_shcedule_template_widget.dart index d5af8a30..f8379f7f 100644 --- a/lib/components/templates_components/provisional_schedule_template/provisional_shcedule_template_widget.dart +++ b/lib/components/templates_components/provisional_schedule_template/provisional_shcedule_template_widget.dart @@ -16,12 +16,10 @@ class ScheduleProvisionalVisitPageWidget extends StatefulWidget { const ScheduleProvisionalVisitPageWidget({super.key}); @override - State createState() => - _ScheduleProvisionalVisitPageWidgetState(); + State createState() => _ScheduleProvisionalVisitPageWidgetState(); } -class _ScheduleProvisionalVisitPageWidgetState - extends State { +class _ScheduleProvisionalVisitPageWidgetState extends State { late ScheduleProvisionalVisitPageModel model; @override @@ -61,25 +59,19 @@ class _ScheduleProvisionalVisitPageWidgetState Align( alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 24.0, 0.0, 24.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 24.0, 0.0, 24.0), child: Text( FFLocalizations.of(context).getText( 'uj8acuab' /* Preencha os Campos Abaixo: */, ), textAlign: TextAlign.start, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, fontSize: 16.0, letterSpacing: 0.0, fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -87,41 +79,31 @@ class _ScheduleProvisionalVisitPageWidgetState Container( width: double.infinity, decoration: BoxDecoration( - color: - FlutterFlowTheme.of(context).primaryBackground, + color: FlutterFlowTheme.of(context).primaryBackground, ), child: Column( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.center, children: [ Align( - alignment: - const AlignmentDirectional(-1.0, 0.0), + alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context).getText( '8d3679lf' /* Propriedade */, ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 10.0, 24.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 10.0, 24.0, 10.0), child: Container( width: double.infinity, height: 50.0, @@ -133,16 +115,14 @@ class _ScheduleProvisionalVisitPageWidgetState topRight: Radius.circular(50.0), ), border: Border.all( - color: FlutterFlowTheme.of(context) - .customColor5, + color: FlutterFlowTheme.of(context).customColor5, ), ), child: Padding( padding: const EdgeInsets.all(5.0), child: Row( mainAxisSize: MainAxisSize.max, - mainAxisAlignment: - MainAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, children: [ ClipRRect( borderRadius: const BorderRadius.only( @@ -152,10 +132,8 @@ class _ScheduleProvisionalVisitPageWidgetState topRight: Radius.circular(50.0), ), child: CachedNetworkImage( - fadeInDuration: const Duration( - milliseconds: 200), - fadeOutDuration: const Duration( - milliseconds: 200), + fadeInDuration: const Duration(milliseconds: 200), + fadeOutDuration: const Duration(milliseconds: 200), imageUrl: 'https://freaccess.com.br/freaccess/Images/Clients/${model.cliUUID}.png', width: 35.0, @@ -166,24 +144,14 @@ class _ScheduleProvisionalVisitPageWidgetState ), ), Padding( - padding: const EdgeInsetsDirectional - .fromSTEB(15.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(15.0, 0.0, 0.0, 0.0), child: Text( model.cliName, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of( - context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -203,27 +171,18 @@ class _ScheduleProvisionalVisitPageWidgetState mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Align( - alignment: - const AlignmentDirectional(-1.0, 0.0), + alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: - const EdgeInsetsDirectional.fromSTEB( - 24.0, 10.0, 0.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 10.0, 0.0, 10.0), child: Text( FFLocalizations.of(context).getText( 'z6aawgqa' /* Dados da Visita */, ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -234,149 +193,85 @@ class _ScheduleProvisionalVisitPageWidgetState Container( height: 80.0, decoration: const BoxDecoration(), - alignment: - const AlignmentDirectional(0.0, 0.0), + alignment: const AlignmentDirectional(0.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional - .fromSTEB(24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: SizedBox( width: double.infinity, child: TextFormField( - controller: - model.personNameTextController, - focusNode: - model.personNameFocusNode, - cursorColor: - FlutterFlowTheme.of(context) - .primary, - onChanged: (_) => - EasyDebounce.debounce( + controller: model.personNameTextController, + focusNode: model.personNameFocusNode, + cursorColor: FlutterFlowTheme.of(context).primary, + onChanged: (_) => EasyDebounce.debounce( 'model.personNameTextController', const Duration(milliseconds: 500), () => setState(() {}), ), autofocus: false, - textInputAction: - TextInputAction.next, + textInputAction: TextInputAction.next, obscureText: false, decoration: InputDecoration( isDense: true, - labelText: - FFLocalizations.of(context) - .getText( + labelText: FFLocalizations.of(context).getText( 'wehvxbz4' /* Nome / Apelido do Visitante */, ), - labelStyle: - FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of( - context) - .bodyMediumFamily, - color: - FlutterFlowTheme.of( - context) - .primaryText, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .bodyMediumFamily), - ), - hintStyle: - FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of( - context) - .labelMediumFamily, - color: - FlutterFlowTheme.of( - context) - .primaryText, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .labelMediumFamily), - ), + labelStyle: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + ), + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of( - context) - .customColor5, + color: FlutterFlowTheme.of(context).customColor5, width: 0.5, ), - borderRadius: - BorderRadius.circular(10.0), + borderRadius: BorderRadius.circular(10.0), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of( - context) - .primary, + color: FlutterFlowTheme.of(context).primary, width: 0.5, ), - borderRadius: - BorderRadius.circular(10.0), + borderRadius: BorderRadius.circular(10.0), ), errorBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of( - context) - .error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), - borderRadius: - BorderRadius.circular(10.0), + borderRadius: BorderRadius.circular(10.0), ), - focusedErrorBorder: - OutlineInputBorder( + focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of( - context) - .error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), - borderRadius: - BorderRadius.circular(10.0), + borderRadius: BorderRadius.circular(10.0), ), suffixIcon: Icon( Icons.person, - color: - FlutterFlowTheme.of(context) - .accent1, + color: FlutterFlowTheme.of(context).accent1, ), ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of( - context) - .bodyMediumFamily, - color: FlutterFlowTheme.of( - context) - .primaryText, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, maxLines: null, - validator: model - .personNameTextControllerValidator - .asValidator(context), + validator: model.personNameTextControllerValidator.asValidator(context), ), ), ), @@ -390,25 +285,17 @@ class _ScheduleProvisionalVisitPageWidgetState SizedBox( height: 80.0, child: Stack( - alignment: const AlignmentDirectional( - 0.0, 0.0), + alignment: const AlignmentDirectional(0.0, 0.0), children: [ Padding( - padding: const EdgeInsetsDirectional - .fromSTEB(24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( - controller: - model.dateTimeTextController, - focusNode: - model.dateTimeFocusNode, - cursorColor: - FlutterFlowTheme.of(context) - .primary, - onChanged: (_) => - EasyDebounce.debounce( + controller: model.dateTimeTextController, + focusNode: model.dateTimeFocusNode, + cursorColor: FlutterFlowTheme.of(context).primary, + onChanged: (_) => EasyDebounce.debounce( 'model.dateTimeTextController', - const Duration( - milliseconds: 500), + const Duration(milliseconds: 500), () => setState(() {}), ), readOnly: true, @@ -416,173 +303,96 @@ class _ScheduleProvisionalVisitPageWidgetState obscureText: false, decoration: InputDecoration( isDense: true, - labelText: - FFLocalizations.of(context) - .getText( + labelText: FFLocalizations.of(context).getText( '8zgsw5so' /* Data / Hora Limite da Visita */, ), - labelStyle: - FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of( - context) - .bodyMediumFamily, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .bodyMediumFamily), - ), - enabledBorder: - OutlineInputBorder( + labelStyle: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + ), + enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of( - context) - .customColor5, + color: FlutterFlowTheme.of(context).customColor5, width: 0.5, ), - borderRadius: - BorderRadius.circular( - 8.0), + borderRadius: BorderRadius.circular(8.0), ), - focusedBorder: - OutlineInputBorder( + focusedBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of( - context) - .primary, + color: FlutterFlowTheme.of(context).primary, width: 0.5, ), - borderRadius: - BorderRadius.circular( - 8.0), + borderRadius: BorderRadius.circular(8.0), ), errorBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of( - context) - .error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), - borderRadius: - BorderRadius.circular( - 8.0), + borderRadius: BorderRadius.circular(8.0), ), - focusedErrorBorder: - OutlineInputBorder( + focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( - color: FlutterFlowTheme.of( - context) - .error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), - borderRadius: - BorderRadius.circular( - 8.0), + borderRadius: BorderRadius.circular(8.0), ), suffixIcon: Icon( Icons.date_range, - color: FlutterFlowTheme.of( - context) - .accent1, + color: FlutterFlowTheme.of(context).accent1, ), ), - style: - FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of( - context) - .bodyMediumFamily, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .bodyMediumFamily), - ), + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + ), textAlign: TextAlign.start, - validator: model - .dateTimeTextControllerValidator - .asValidator(context), + validator: model.dateTimeTextControllerValidator.asValidator(context), ), ), Padding( - padding: const EdgeInsetsDirectional - .fromSTEB(24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, - highlightColor: - Colors.transparent, + highlightColor: Colors.transparent, onTap: () async { - final datePickedDate = - await showDatePicker( + final datePickedDate = await showDatePicker( context: context, - initialDate: - getCurrentTimestamp, - firstDate: - (getCurrentTimestamp), + initialDate: getCurrentTimestamp, + firstDate: (getCurrentTimestamp), lastDate: DateTime(2050), builder: (context, child) { return wrapInMaterialDatePickerTheme( context, child!, - headerBackgroundColor: - FlutterFlowTheme.of( - context) - .primary, - headerForegroundColor: - FlutterFlowTheme.of( - context) - .info, + headerBackgroundColor: FlutterFlowTheme.of(context).primary, + headerForegroundColor: FlutterFlowTheme.of(context).info, headerTextStyle: - FlutterFlowTheme.of( - context) - .headlineLarge - .override( - fontFamily: FlutterFlowTheme.of( - context) - .headlineLargeFamily, + FlutterFlowTheme.of(context).headlineLarge.override( + fontFamily: + FlutterFlowTheme.of(context).headlineLargeFamily, fontSize: 32.0, - letterSpacing: - 0.0, - fontWeight: - FontWeight - .w600, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of(context) - .headlineLargeFamily), + letterSpacing: 0.0, + fontWeight: FontWeight.w600, + useGoogleFonts: GoogleFonts.asMap().containsKey( + FlutterFlowTheme.of(context).headlineLargeFamily), ), pickerBackgroundColor: - FlutterFlowTheme.of( - context) - .secondaryBackground, - pickerForegroundColor: - FlutterFlowTheme.of( - context) - .primaryText, + FlutterFlowTheme.of(context).secondaryBackground, + pickerForegroundColor: FlutterFlowTheme.of(context).primaryText, selectedDateTimeBackgroundColor: - FlutterFlowTheme.of( - context) - .primary, + FlutterFlowTheme.of(context).primary, selectedDateTimeForegroundColor: - FlutterFlowTheme.of( - context) - .info, + FlutterFlowTheme.of(context).info, actionButtonForegroundColor: - FlutterFlowTheme.of( - context) - .primaryText, + FlutterFlowTheme.of(context).primaryText, iconSize: 24.0, ); }, @@ -590,77 +400,43 @@ class _ScheduleProvisionalVisitPageWidgetState TimeOfDay? datePickedTime; if (datePickedDate != null) { - datePickedTime = - await showTimePicker( + datePickedTime = await showTimePicker( context: context, - initialTime: - TimeOfDay.fromDateTime( - getCurrentTimestamp), + initialTime: TimeOfDay.fromDateTime(getCurrentTimestamp), builder: (context, child) { return wrapInMaterialTimePickerTheme( context, child!, - headerBackgroundColor: - FlutterFlowTheme.of( - context) - .primary, - headerForegroundColor: - FlutterFlowTheme.of( - context) - .info, + headerBackgroundColor: FlutterFlowTheme.of(context).primary, + headerForegroundColor: FlutterFlowTheme.of(context).info, headerTextStyle: - FlutterFlowTheme.of( - context) - .headlineLarge - .override( - fontFamily: FlutterFlowTheme.of( - context) - .headlineLargeFamily, - fontSize: - 32.0, - letterSpacing: - 0.0, - fontWeight: - FontWeight - .w600, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of(context) - .headlineLargeFamily), + FlutterFlowTheme.of(context).headlineLarge.override( + fontFamily: + FlutterFlowTheme.of(context).headlineLargeFamily, + fontSize: 32.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w600, + useGoogleFonts: GoogleFonts.asMap().containsKey( + FlutterFlowTheme.of(context).headlineLargeFamily), ), pickerBackgroundColor: - FlutterFlowTheme.of( - context) - .secondaryBackground, - pickerForegroundColor: - FlutterFlowTheme.of( - context) - .info, + FlutterFlowTheme.of(context).secondaryBackground, + pickerForegroundColor: FlutterFlowTheme.of(context).info, selectedDateTimeBackgroundColor: - FlutterFlowTheme.of( - context) - .primary, + FlutterFlowTheme.of(context).primary, pickerDialForegroundColor: - FlutterFlowTheme.of( - context) - .primaryText, + FlutterFlowTheme.of(context).primaryText, selectedDateTimeForegroundColor: - FlutterFlowTheme.of( - context) - .info, + FlutterFlowTheme.of(context).info, actionButtonForegroundColor: - FlutterFlowTheme.of( - context) - .primaryText, + FlutterFlowTheme.of(context).primaryText, iconSize: 24.0, ); }, ); } - if (datePickedDate != null && - datePickedTime != null) { + if (datePickedDate != null && datePickedTime != null) { safeSetState(() { model.datePicked = DateTime( datePickedDate.year, @@ -672,35 +448,23 @@ class _ScheduleProvisionalVisitPageWidgetState }); } setState(() { - model.dateTimeTextController - ?.text = dateTimeFormat( + model.dateTimeTextController?.text = dateTimeFormat( "dd/MM/yyyy HH:mm:ss", model.datePicked, - locale: FFLocalizations.of( - context) - .languageCode, + locale: FFLocalizations.of(context).languageCode, ); - model.dateTimeTextController - ?.selection = - TextSelection.collapsed( - offset: model - .dateTimeTextController! - .text - .length); + model.dateTimeTextController?.selection = TextSelection.collapsed( + offset: model.dateTimeTextController!.text.length); }); }, child: Container( width: double.infinity, height: 50.0, decoration: BoxDecoration( - borderRadius: - BorderRadius.circular( - 8.0), + borderRadius: BorderRadius.circular(8.0), ), - alignment: - const AlignmentDirectional( - 0.0, 0.0), + alignment: const AlignmentDirectional(0.0, 0.0), ), ), ), @@ -710,178 +474,93 @@ class _ScheduleProvisionalVisitPageWidgetState ], ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 10.0, 0.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 10.0), child: Column( mainAxisSize: MainAxisSize.max, children: [ Align( - alignment: const AlignmentDirectional( - 0.0, 0.0), + alignment: const AlignmentDirectional(0.0, 0.0), child: Container( decoration: const BoxDecoration(), - alignment: const AlignmentDirectional( - 0.0, 0.0), + alignment: const AlignmentDirectional(0.0, 0.0), child: Align( - alignment: - const AlignmentDirectional( - 0.0, 0.0), + alignment: const AlignmentDirectional(0.0, 0.0), child: Padding( - padding: - const EdgeInsetsDirectional - .fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: SizedBox( width: double.infinity, child: TextFormField( - controller: - model.notesTextController, - focusNode: - model.notesFocusNode, + controller: model.notesTextController, + focusNode: model.notesFocusNode, autofocus: false, showCursor: true, - cursorColor: - FlutterFlowTheme.of( - context) - .primary, - textInputAction: - TextInputAction.next, + cursorColor: FlutterFlowTheme.of(context).primary, + textInputAction: TextInputAction.next, obscureText: false, decoration: InputDecoration( isDense: true, - labelText: - FFLocalizations.of( - context) - .getText( + labelText: FFLocalizations.of(context).getText( 'cw8b3tbb' /* Observação da Visita */, ), - labelStyle: FlutterFlowTheme - .of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of( - context) - .bodyMediumFamily, - color: FlutterFlowTheme - .of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey( + FlutterFlowTheme.of(context).bodyMediumFamily), ), - hintStyle: FlutterFlowTheme - .of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of( - context) - .labelMediumFamily, - color: FlutterFlowTheme - .of(context) - .primaryText, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey( + FlutterFlowTheme.of(context).labelMediumFamily), ), - enabledBorder: - OutlineInputBorder( + enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .customColor5, + color: FlutterFlowTheme.of(context).customColor5, width: 0.5, ), - borderRadius: - BorderRadius.circular( - 10.0), + borderRadius: BorderRadius.circular(10.0), ), - focusedBorder: - OutlineInputBorder( + focusedBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .primary, + color: FlutterFlowTheme.of(context).primary, width: 0.5, ), - borderRadius: - BorderRadius.circular( - 10.0), + borderRadius: BorderRadius.circular(10.0), ), - errorBorder: - OutlineInputBorder( + errorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), - borderRadius: - BorderRadius.circular( - 10.0), + borderRadius: BorderRadius.circular(10.0), ), - focusedErrorBorder: - OutlineInputBorder( + focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .error, + color: FlutterFlowTheme.of(context).error, width: 0.5, ), - borderRadius: - BorderRadius.circular( - 10.0), + borderRadius: BorderRadius.circular(10.0), ), suffixIcon: Icon( Icons.text_fields, - color: - FlutterFlowTheme.of( - context) - .accent1, + color: FlutterFlowTheme.of(context).accent1, ), ), - style: FlutterFlowTheme.of( - context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of( - context) - .bodyMediumFamily, - color: - FlutterFlowTheme.of( - context) - .primaryText, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, maxLines: 3, maxLength: 100, - maxLengthEnforcement: - MaxLengthEnforcement - .enforced, - validator: model - .notesTextControllerValidator - .asValidator(context), + maxLengthEnforcement: MaxLengthEnforcement.enforced, + validator: model.notesTextControllerValidator.asValidator(context), ), ), ), @@ -900,9 +579,7 @@ class _ScheduleProvisionalVisitPageWidgetState ? null : () async { try { - model.provVisitSchedule = await PhpGroup - .postProvVisitSchedulingCall - .call( + model.provVisitSchedule = await PhpGroup.postProvVisitSchedulingCall.call( data: model.dateTimeTextController.text, motivo: model.notesTextController.text, nome: model.personNameTextController.text, @@ -910,17 +587,13 @@ class _ScheduleProvisionalVisitPageWidgetState ); if (PhpGroup.postProvVisitSchedulingCall - .error((model.provVisitSchedule - ?.jsonBody ?? - '')) == + .error((model.provVisitSchedule?.jsonBody ?? '')) == false) { DialogUtil.success( context, FFLocalizations.of(context).getVariableText( - ptText: - "Agendamento Provisório Realizado com Sucesso!", - enText: - "Provisional Scheduling Successfully Completed")); + ptText: "Agendamento Provisório Realizado com Sucesso!", + enText: "Provisional Scheduling Successfully Completed")); safeSetState(() { model.dateTimeTextController?.clear(); @@ -928,11 +601,8 @@ class _ScheduleProvisionalVisitPageWidgetState model.notesTextController?.clear(); }); } else { - var message = PhpGroup - .postProvVisitSchedulingCall - .msg((model.provVisitSchedule - ?.jsonBody ?? - '')); + var message = PhpGroup.postProvVisitSchedulingCall + .msg((model.provVisitSchedule?.jsonBody ?? '')); if (message != null) { DialogUtil.error(context, message); } else { @@ -944,34 +614,23 @@ class _ScheduleProvisionalVisitPageWidgetState } catch (e, s) { DialogUtil.errorDefault(context); LogUtil.requestAPIFailed( - "processRequest.php", - "", - "Cadastrar Visita Provisória", - e, - s); + "processRequest.php", "", "Cadastrar Visita Provisória", e, s); } }, showLoadingIndicator: true, - text: FFLocalizations.of(context) - .getText('bv5fg9sv' /* Enviar */), + text: FFLocalizations.of(context).getText('bv5fg9sv' /* Enviar */), options: FFButtonOptions( width: 150.0, height: 50.0, - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), color: FlutterFlowTheme.of(context).primary, - textStyle: FlutterFlowTheme.of(context) - .titleSmall - .override( - fontFamily: FlutterFlowTheme.of(context) - .titleSmallFamily, + textStyle: FlutterFlowTheme.of(context).titleSmall.override( + fontFamily: FlutterFlowTheme.of(context).titleSmallFamily, color: Colors.white, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey(FlutterFlowTheme.of(context) - .titleSmallFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).titleSmallFamily), ), elevation: 3.0, borderSide: const BorderSide( @@ -979,8 +638,7 @@ class _ScheduleProvisionalVisitPageWidgetState width: 1.0, ), borderRadius: BorderRadius.circular(8.0), - disabledColor: - FlutterFlowTheme.of(context).customColor5, + disabledColor: FlutterFlowTheme.of(context).customColor5, disabledTextColor: Colors.white, ), ), @@ -990,9 +648,7 @@ class _ScheduleProvisionalVisitPageWidgetState ), ], ), - ] - .addToStart(const SizedBox(height: 4.0)) - .addToEnd(const SizedBox(height: 40.0)), + ].addToStart(const SizedBox(height: 4.0)).addToEnd(const SizedBox(height: 40.0)), ), ), ); diff --git a/lib/components/templates_components/qr_code_pass_key_template_component/qr_code_pass_key_template_component_model.dart b/lib/components/templates_components/qr_code_pass_key_template_component/qr_code_pass_key_template_component_model.dart index 7d6efd50..b9b9a341 100644 --- a/lib/components/templates_components/qr_code_pass_key_template_component/qr_code_pass_key_template_component_model.dart +++ b/lib/components/templates_components/qr_code_pass_key_template_component/qr_code_pass_key_template_component_model.dart @@ -1,10 +1,8 @@ import '/flutter_flow/flutter_flow_util.dart'; -import 'qr_code_pass_key_template_component_widget.dart' - show QrCodePassKeyTemplateComponentWidget; +import 'qr_code_pass_key_template_component_widget.dart' show QrCodePassKeyTemplateComponentWidget; import 'package:flutter/material.dart'; -class QrCodePassKeyTemplateComponentModel - extends FlutterFlowModel { +class QrCodePassKeyTemplateComponentModel extends FlutterFlowModel { /// State fields for stateful widgets in this component. final formKey = GlobalKey(); @@ -13,19 +11,18 @@ class QrCodePassKeyTemplateComponentModel TextEditingController? keyTextFieldTextController; late bool keyTextFieldVisibility; String? Function(BuildContext, String?)? keyTextFieldTextControllerValidator; - String? _keyTextFieldTextControllerValidator( - BuildContext context, String? val) { + String? _keyTextFieldTextControllerValidator(BuildContext context, String? val) { if (val == null || val.isEmpty) { return FFLocalizations.of(context).getVariableText( enText: 'This field is required', - ptText: 'Este campo é obrigatório', + ptText: 'Este campo é obrigatório', ); } if (val.length < 4) { return FFLocalizations.of(context).getVariableText( - enText: 'This field must be at least 4 characters', - ptText: 'Este campo deve ter pelo menos 4 caracteres', - ); + enText: 'This field must be at least 4 characters', + ptText: 'Este campo deve ter pelo menos 4 caracteres', + ); } return null; diff --git a/lib/components/templates_components/qr_code_pass_key_template_component/qr_code_pass_key_template_component_widget.dart b/lib/components/templates_components/qr_code_pass_key_template_component/qr_code_pass_key_template_component_widget.dart index cc89233e..83de7d33 100644 --- a/lib/components/templates_components/qr_code_pass_key_template_component/qr_code_pass_key_template_component_widget.dart +++ b/lib/components/templates_components/qr_code_pass_key_template_component/qr_code_pass_key_template_component_widget.dart @@ -19,12 +19,10 @@ class QrCodePassKeyTemplateComponentWidget extends StatefulWidget { final Future Function(String key)? toggleActionStatus; @override - State createState() => - _QrCodePassKeyTemplateComponentWidgetState(); + State createState() => _QrCodePassKeyTemplateComponentWidgetState(); } -class _QrCodePassKeyTemplateComponentWidgetState - extends State { +class _QrCodePassKeyTemplateComponentWidgetState extends State { late QrCodePassKeyTemplateComponentModel _model; @override @@ -81,8 +79,7 @@ class _QrCodePassKeyTemplateComponentWidgetState tablet: false, )) Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 8.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 8.0), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, @@ -95,8 +92,7 @@ class _QrCodePassKeyTemplateComponentWidgetState mainAxisSize: MainAxisSize.max, children: [ const Padding( - padding: EdgeInsetsDirectional.fromSTEB( - 0.0, 12.0, 0.0, 12.0), + padding: EdgeInsetsDirectional.fromSTEB(0.0, 12.0, 0.0, 12.0), child: Icon( Icons.arrow_back_rounded, color: Color(0xFF15161E), @@ -104,20 +100,17 @@ class _QrCodePassKeyTemplateComponentWidgetState ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 12.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(12.0, 0.0, 0.0, 0.0), child: Text( '', - style: - FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: 'Plus Jakarta Sans', - color: const Color(0xFF15161E), - fontSize: 14.0, - letterSpacing: 0.0, - fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), - ), + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: 'Plus Jakarta Sans', + color: const Color(0xFF15161E), + fontSize: 14.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w500, + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + ), ), ), ], @@ -125,8 +118,7 @@ class _QrCodePassKeyTemplateComponentWidgetState ), ), Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context).getText( 'h1xilful' /* DIGITE A SUA SENHA */, @@ -142,8 +134,7 @@ class _QrCodePassKeyTemplateComponentWidgetState ), ), Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(16.0, 4.0, 16.0, 4.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 4.0, 16.0, 4.0), child: Text( FFLocalizations.of(context).getText( 'ujodm2ci' /* Para gerar o QR Code digite a ... */, @@ -154,8 +145,7 @@ class _QrCodePassKeyTemplateComponentWidgetState fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: - GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), ), ), @@ -163,8 +153,7 @@ class _QrCodePassKeyTemplateComponentWidgetState key: _model.formKey, autovalidateMode: AutovalidateMode.onUserInteraction, child: Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(16.0, 12.0, 16.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 12.0, 16.0, 0.0), child: SizedBox( width: double.infinity, child: TextFormField( @@ -185,29 +174,25 @@ class _QrCodePassKeyTemplateComponentWidgetState labelText: FFLocalizations.of(context).getText( 'rfqrdet7' /* Senha */, ), - labelStyle: - FlutterFlowTheme.of(context).labelMedium.override( - fontFamily: 'Plus Jakarta Sans', - color: FlutterFlowTheme.of(context).primaryText, - fontSize: 14.0, - letterSpacing: 0.0, - fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), - ), + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primaryText, + fontSize: 14.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w500, + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + ), hintText: FFLocalizations.of(context).getText( 'zz1haydj' /* digite a sua senha..... */, ), - hintStyle: - FlutterFlowTheme.of(context).labelMedium.override( - fontFamily: 'Plus Jakarta Sans', - color: FlutterFlowTheme.of(context).primaryText, - fontSize: 14.0, - letterSpacing: 0.0, - fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), - ), + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primaryText, + fontSize: 14.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w500, + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterFlowTheme.of(context).primary, @@ -238,18 +223,14 @@ class _QrCodePassKeyTemplateComponentWidgetState ), filled: true, fillColor: FlutterFlowTheme.of(context).primaryBackground, - contentPadding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 24.0, 20.0, 24.0), + contentPadding: const EdgeInsetsDirectional.fromSTEB(24.0, 24.0, 20.0, 24.0), suffixIcon: InkWell( onTap: () => safeSetState( - () => _model.keyTextFieldVisibility = - !_model.keyTextFieldVisibility, + () => _model.keyTextFieldVisibility = !_model.keyTextFieldVisibility, ), focusNode: FocusNode(skipTraversal: true), child: Icon( - _model.keyTextFieldVisibility - ? Icons.visibility_outlined - : Icons.visibility_off_outlined, + _model.keyTextFieldVisibility ? Icons.visibility_outlined : Icons.visibility_off_outlined, color: FlutterFlowTheme.of(context).accent1, size: 22.0, ), @@ -261,19 +242,13 @@ class _QrCodePassKeyTemplateComponentWidgetState fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), maxLength: 4, maxLengthEnforcement: MaxLengthEnforcement.enforced, - buildCounter: (context, - {required currentLength, - required isFocused, - maxLength}) => - null, + buildCounter: (context, {required currentLength, required isFocused, maxLength}) => null, keyboardType: TextInputType.number, - validator: _model.keyTextFieldTextControllerValidator - .asValidator(context), + validator: _model.keyTextFieldTextControllerValidator.asValidator(context), inputFormatters: [ FilteringTextInputFormatter.allow(RegExp('[0-9]')), LengthLimitingTextInputFormatter(4), @@ -285,12 +260,10 @@ class _QrCodePassKeyTemplateComponentWidgetState Align( alignment: const AlignmentDirectional(0.0, 0.0), child: Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(0.0, 24.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 24.0, 0.0, 0.0), child: FFButtonWidget( onPressed: () async { - if (_model.formKey.currentState == null || - !_model.formKey.currentState!.validate()) { + if (_model.formKey.currentState == null || !_model.formKey.currentState!.validate()) { return; } await widget.toggleActionStatus?.call( @@ -304,10 +277,8 @@ class _QrCodePassKeyTemplateComponentWidgetState options: FFButtonOptions( width: 270.0, height: 50.0, - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), color: const Color(0xFF1AAB5F), textStyle: FlutterFlowTheme.of(context).titleSmall.override( fontFamily: 'Plus Jakarta Sans', @@ -315,8 +286,7 @@ class _QrCodePassKeyTemplateComponentWidgetState fontSize: 16.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap() - .containsKey('Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), elevation: 3.0, borderSide: const BorderSide( diff --git a/lib/components/templates_components/regisiter_vistor_template_component/regisiter_vistor_template_component_model.dart b/lib/components/templates_components/regisiter_vistor_template_component/regisiter_vistor_template_component_model.dart index 0d45259f..cd74c245 100644 --- a/lib/components/templates_components/regisiter_vistor_template_component/regisiter_vistor_template_component_model.dart +++ b/lib/components/templates_components/regisiter_vistor_template_component/regisiter_vistor_template_component_model.dart @@ -9,8 +9,7 @@ import '/flutter_flow/flutter_flow_util.dart'; import '/flutter_flow/form_field_controller.dart'; import 'regisiter_vistor_template_component_widget.dart'; -class RegisiterVistorTemplateComponentModel - extends FlutterFlowModel { +class RegisiterVistorTemplateComponentModel extends FlutterFlowModel { Timer? _debounceTimer; late final String devUUID; late final String userUUID; @@ -18,8 +17,7 @@ class RegisiterVistorTemplateComponentModel final unfocusNode = FocusNode(); bool isDataUploading = false; - FFUploadedFile uploadedLocalFile = - FFUploadedFile(bytes: Uint8List.fromList([])); + FFUploadedFile uploadedLocalFile = FFUploadedFile(bytes: Uint8List.fromList([])); void debounce(Function() fn, Duration time) { if (_debounceTimer != null) { @@ -43,14 +41,12 @@ class RegisiterVistorTemplateComponentModel return null; } - Future getVisitanteByDocument( - String document, BuildContext context) async { + Future getVisitanteByDocument(String document, BuildContext context) async { final response = await PhpGroup.getVisitorByDocCall.call( documento: document, ); - if (response.jsonBody['visitante']['VTE_ID'] != '0' && - response.jsonBody['error'] != 'false') { + if (response.jsonBody['visitante']['VTE_ID'] != '0' && response.jsonBody['error'] != 'false') { return true; } return false; @@ -93,9 +89,7 @@ class RegisiterVistorTemplateComponentModel TextEditingController? textController4; String? Function(BuildContext, String?)? textController4Validator; String? _textController4Validator(BuildContext context, String? val) { - if (val != null && - val.isNotEmpty && - ValidatorUtil.isValidEmail(val) == false) { + if (val != null && val.isNotEmpty && ValidatorUtil.isValidEmail(val) == false) { return FFLocalizations.of(context).getVariableText( enText: 'Invalid email', ptText: 'Email inválido', diff --git a/lib/components/templates_components/regisiter_vistor_template_component/regisiter_vistor_template_component_widget.dart b/lib/components/templates_components/regisiter_vistor_template_component/regisiter_vistor_template_component_widget.dart index efb7adf1..b8802539 100644 --- a/lib/components/templates_components/regisiter_vistor_template_component/regisiter_vistor_template_component_widget.dart +++ b/lib/components/templates_components/regisiter_vistor_template_component/regisiter_vistor_template_component_widget.dart @@ -22,16 +22,13 @@ class RegisiterVistorTemplateComponentWidget extends StatefulWidget { final String source; final String? doc; - const RegisiterVistorTemplateComponentWidget( - {super.key, required this.source, this.doc}); + const RegisiterVistorTemplateComponentWidget({super.key, required this.source, this.doc}); @override - State createState() => - _RegisiterVistorTemplateComponentWidgetState(); + State createState() => _RegisiterVistorTemplateComponentWidgetState(); } -class _RegisiterVistorTemplateComponentWidgetState - extends State { +class _RegisiterVistorTemplateComponentWidgetState extends State { late RegisiterVistorTemplateComponentModel _model; final scaffoldKey = GlobalKey(); @@ -51,8 +48,7 @@ class _RegisiterVistorTemplateComponentWidgetState visitorAlreadyRegistered = BehaviorSubject.seeded(false); - _model = - createModel(context, () => RegisiterVistorTemplateComponentModel()); + _model = createModel(context, () => RegisiterVistorTemplateComponentModel()); _model.textController1 ??= TextEditingController(); _model.textFieldFocusNode1 ??= FocusNode(); @@ -89,19 +85,15 @@ class _RegisiterVistorTemplateComponentWidgetState return false; } - if (_model.textController1.text.isEmpty || - _model.textController1.text == '') { + if (_model.textController1.text.isEmpty || _model.textController1.text == '') { return false; } - if (_model.dropDownValue == null || - _model.dropDownValue!.isEmpty || - _model.dropDownValue == '') { + if (_model.dropDownValue == null || _model.dropDownValue!.isEmpty || _model.dropDownValue == '') { return false; } - if (_model.textController2.text.isEmpty || - _model.textController2.text == '') { + if (_model.textController2.text.isEmpty || _model.textController2.text == '') { return false; } @@ -145,26 +137,23 @@ class _RegisiterVistorTemplateComponentWidgetState Align( alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 20.0, 0.0, 0.0, 15.0), + padding: const EdgeInsetsDirectional.fromSTEB(20.0, 0.0, 0.0, 15.0), child: Text( FFLocalizations.of(context).getText( 'zazj5d8b' /* Preencha o formulário com os d... */, ), textAlign: TextAlign.start, style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: Column(children: [ TextFormField( controller: _model.textController2, @@ -183,26 +172,19 @@ class _RegisiterVistorTemplateComponentWidgetState labelText: FFLocalizations.of(context).getText( 'rl8tvwnr' /* Documento */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + ), + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + letterSpacing: 0.0, + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: - FlutterFlowTheme.of(context).labelMedium.override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey(FlutterFlowTheme.of(context) - .labelMediumFamily), - ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterFlowTheme.of(context).customColor6, @@ -237,24 +219,21 @@ class _RegisiterVistorTemplateComponentWidgetState ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), onChanged: (value) { _model.debounce(() async { - var data = await _model.getVisitanteByDocument( - value, context); + var data = await _model.getVisitanteByDocument(value, context); setState(() { _isVisitorRegistered = data; }); }, const Duration(milliseconds: 500)); }, - validator: - _model.textController2Validator.asValidator(context), + validator: _model.textController2Validator.asValidator(context), inputFormatters: [ FilteringTextInputFormatter.allow(RegExp('[0-9]')), LengthLimitingTextInputFormatter(20) @@ -268,29 +247,17 @@ class _RegisiterVistorTemplateComponentWidgetState mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( - padding: const EdgeInsetsDirectional.only( - top: 5, start: 12), + padding: const EdgeInsetsDirectional.only(top: 5, start: 12), child: Text( - FFLocalizations.of(context) - .getVariableText( + FFLocalizations.of(context).getVariableText( enText: 'Visitor already registered', ptText: 'Visitante já cadastrado', ), - style: FlutterFlowTheme.of(context) - .labelSmall - .override( + style: FlutterFlowTheme.of(context).labelSmall.override( fontFamily: 'Nunito', - color: Theme.of(context) - .brightness == - Brightness.dark - ? Color.alphaBlend( - Colors.white - .withOpacity(0.7), - Colors.red) - : Color.alphaBlend( - Colors.black - .withOpacity(0.25), - Colors.red), + color: Theme.of(context).brightness == Brightness.dark + ? Color.alphaBlend(Colors.white.withOpacity(0.7), Colors.red) + : Color.alphaBlend(Colors.black.withOpacity(0.25), Colors.red), fontSize: 13.0, letterSpacing: 0.0, )), @@ -301,8 +268,7 @@ class _RegisiterVistorTemplateComponentWidgetState ]), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( controller: _model.textController1, autovalidateMode: AutovalidateMode.onUserInteraction, @@ -321,25 +287,19 @@ class _RegisiterVistorTemplateComponentWidgetState labelText: FFLocalizations.of(context).getText( 'v7g73yik' /* Nome */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -375,29 +335,25 @@ class _RegisiterVistorTemplateComponentWidgetState ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), maxLines: null, maxLength: 80, keyboardType: TextInputType.name, inputFormatters: [LengthLimitingTextInputFormatter(80)], - validator: - _model.textController1Validator.asValidator(context), + validator: _model.textController1Validator.asValidator(context), ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 10.0), child: Column( children: [ FlutterFlowDropDown( - controller: _model.dropDownValueController ??= - FormFieldController(null), + controller: _model.dropDownValueController ??= FormFieldController(null), options: [ FFLocalizations.of(context).getText( 'n8vddmcq' /* Visitante */, @@ -406,20 +362,15 @@ class _RegisiterVistorTemplateComponentWidgetState '9luaa09e' /* Prestador de Serviço */, ) ], - onChanged: (val) => - setState(() => _model.dropDownValue = val), + onChanged: (val) => setState(() => _model.dropDownValue = val), width: MediaQuery.sizeOf(context).width * 0.9, // height: 44.0, - textStyle: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + textStyle: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), hintText: FFLocalizations.of(context).getText( 'pmezihb4' /* Selecione... */, @@ -433,39 +384,30 @@ class _RegisiterVistorTemplateComponentWidgetState borderColor: FlutterFlowTheme.of(context).customColor6, borderWidth: 0.5, borderRadius: 8.0, - margin: const EdgeInsetsDirectional.fromSTEB( - 16.0, 0.0, 16.0, 0.0), + margin: const EdgeInsetsDirectional.fromSTEB(16.0, 0.0, 16.0, 0.0), hidesUnderline: true, isOverButton: true, isSearchable: false, isMultiSelect: false, ), - if (_model.dropDownValue == null || - _model.dropDownValue == '') + if (_model.dropDownValue == null || _model.dropDownValue == '') Row( mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.max, children: [ Padding( - padding: const EdgeInsetsDirectional.only( - top: 5, start: 15), + padding: const EdgeInsetsDirectional.only(top: 5, start: 15), child: Text( FFLocalizations.of(context).getVariableText( enText: 'This field is required', ptText: 'Este campo é obrigatório', ), - style: FlutterFlowTheme.of(context) - .bodySmall - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodySmallFamily, - color: FlutterFlowTheme.of(context) - .customColor6, + style: FlutterFlowTheme.of(context).bodySmall.override( + fontFamily: FlutterFlowTheme.of(context).bodySmallFamily, + color: FlutterFlowTheme.of(context).customColor6, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodySmallFamily), + .containsKey(FlutterFlowTheme.of(context).bodySmallFamily), )), ), ], @@ -474,12 +416,10 @@ class _RegisiterVistorTemplateComponentWidgetState ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: Builder( builder: (context) { - if ((_model.uploadedLocalFile.bytes?.isNotEmpty ?? - false)) { + if ((_model.uploadedLocalFile.bytes?.isNotEmpty ?? false)) { return InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, @@ -488,15 +428,13 @@ class _RegisiterVistorTemplateComponentWidgetState onTap: () async { setState(() { _model.isDataUploading = false; - _model.uploadedLocalFile = - FFUploadedFile(bytes: Uint8List.fromList([])); + _model.uploadedLocalFile = FFUploadedFile(bytes: Uint8List.fromList([])); }); }, child: ClipRRect( borderRadius: BorderRadius.circular(8.0), child: Image.memory( - _model.uploadedLocalFile.bytes ?? - Uint8List.fromList([]), + _model.uploadedLocalFile.bytes ?? Uint8List.fromList([]), width: 300.0, height: 200.0, fit: BoxFit.cover, @@ -510,8 +448,7 @@ class _RegisiterVistorTemplateComponentWidgetState alignment: const AlignmentDirectional(0.0, 0.0), child: FFButtonWidget( onPressed: () async { - final selectedMedia = - await selectMediaWithSourceBottomSheetandFaceDetection( + final selectedMedia = await selectMediaWithSourceBottomSheetandFaceDetection( context: context, // maxWidth: 300.00, // maxHeight: 300.00, @@ -524,15 +461,11 @@ class _RegisiterVistorTemplateComponentWidgetState // selectedMedia.every((m) => // validateFileFormat( // m.storagePath, context))) { - setState( - () => _model.isDataUploading = true); - var selectedUploadedFiles = - []; + setState(() => _model.isDataUploading = true); + var selectedUploadedFiles = []; try { - final message = - FFLocalizations.of(context) - .getVariableText( + final message = FFLocalizations.of(context).getVariableText( enText: 'Uploading file...', ptText: 'Enviando arquivo...', ); @@ -543,9 +476,7 @@ class _RegisiterVistorTemplateComponentWidgetState ); selectedUploadedFiles = selectedMedia .map((m) => FFUploadedFile( - name: m.storagePath - .split('/') - .last, + name: m.storagePath.split('/').last, bytes: m.bytes, height: m.dimensions?.height, width: m.dimensions?.width, @@ -553,28 +484,21 @@ class _RegisiterVistorTemplateComponentWidgetState )) .toList(); } finally { - ScaffoldMessenger.of(context) - .hideCurrentSnackBar(); + ScaffoldMessenger.of(context).hideCurrentSnackBar(); _model.isDataUploading = false; } - if (selectedUploadedFiles.length == - selectedMedia.length) { + if (selectedUploadedFiles.length == selectedMedia.length) { setState(() { - _model.uploadedLocalFile = - selectedUploadedFiles.first; + _model.uploadedLocalFile = selectedUploadedFiles.first; }); - final String message = - FFLocalizations.of(context) - .getVariableText( + final String message = FFLocalizations.of(context).getVariableText( enText: 'File uploaded successfully', ptText: 'Arquivo enviado com sucesso', ); showUploadMessage(context, message); } else { setState(() {}); - final String message = - FFLocalizations.of(context) - .getVariableText( + final String message = FFLocalizations.of(context).getVariableText( enText: 'Failed to upload data', ptText: 'Falha ao enviar os dados', ); @@ -592,26 +516,16 @@ class _RegisiterVistorTemplateComponentWidgetState options: FFButtonOptions( width: double.infinity, height: 120.0, - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 20.0), - iconPadding: - const EdgeInsetsDirectional.fromSTEB( - 14.0, 0.0, 0.0, 20.0), - color: FlutterFlowTheme.of(context) - .primaryBackground, - textStyle: FlutterFlowTheme.of(context) - .titleSmall - .override( - fontFamily: FlutterFlowTheme.of(context) - .titleSmallFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 20.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(14.0, 0.0, 0.0, 20.0), + color: FlutterFlowTheme.of(context).primaryBackground, + textStyle: FlutterFlowTheme.of(context).titleSmall.override( + fontFamily: FlutterFlowTheme.of(context).titleSmallFamily, + color: FlutterFlowTheme.of(context).primaryText, fontSize: 16.0, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .titleSmallFamily), + .containsKey(FlutterFlowTheme.of(context).titleSmallFamily), ), borderSide: BorderSide( color: FlutterFlowTheme.of(context).accent1, @@ -624,24 +538,17 @@ class _RegisiterVistorTemplateComponentWidgetState Align( alignment: const AlignmentDirectional(0.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 10.0, 65.0, 10.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(10.0, 65.0, 10.0, 0.0), child: Text( FFLocalizations.of(context).getText( 'p4ftwxcy' /* Clique para adicionar a foto p... */, ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -655,26 +562,23 @@ class _RegisiterVistorTemplateComponentWidgetState Align( alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 20.0, 10.0, 0.0, 15.0), + padding: const EdgeInsetsDirectional.fromSTEB(20.0, 10.0, 0.0, 15.0), child: Text( FFLocalizations.of(context).getText( 'bqpucwh0' /* Contatos */, ), textAlign: TextAlign.start, style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( controller: _model.textController3, focusNode: _model.textFieldFocusNode3, @@ -686,8 +590,7 @@ class _RegisiterVistorTemplateComponentWidgetState maxLength: 25, keyboardType: TextInputType.phone, inputFormatters: [ - FilteringTextInputFormatter.allow( - RegExp('[0-9, +, -, (, )]')), + FilteringTextInputFormatter.allow(RegExp('[0-9, +, -, (, )]')), LengthLimitingTextInputFormatter(25) ], obscureText: false, @@ -697,25 +600,19 @@ class _RegisiterVistorTemplateComponentWidgetState labelText: FFLocalizations.of(context).getText( 'h84ls2r6' /* Telefone */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -751,20 +648,18 @@ class _RegisiterVistorTemplateComponentWidgetState ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), // validator: // _model.textController3Validator.asValidator(context), ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), child: TextFormField( controller: _model.textController4, cursorColor: FlutterFlowTheme.of(context).primary, @@ -784,25 +679,19 @@ class _RegisiterVistorTemplateComponentWidgetState labelText: FFLocalizations.of(context).getText( 'fqp7qmka' /* Email */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: - FlutterFlowTheme.of(context).labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -838,32 +727,27 @@ class _RegisiterVistorTemplateComponentWidgetState ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), keyboardType: TextInputType.emailAddress, inputFormatters: [LengthLimitingTextInputFormatter(80)], - validator: - _model.textController4Validator.asValidator(context), + validator: _model.textController4Validator.asValidator(context), ), ), Padding( - padding: - const EdgeInsetsDirectional.fromSTEB(0.0, 65.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 65.0, 0.0, 0.0), child: FFButtonWidget( onPressed: _isFormValid(context) ? () async { - _model.imgBase64 = - await ImageUtils.convertImageFileToBase64( + _model.imgBase64 = await ImageUtils.convertImageFileToBase64( _model.uploadedLocalFile, ); - _model.scheduleVisitor = - await PhpGroup.postScheduleVisitorCall - .call( + _model.scheduleVisitor = await PhpGroup.postScheduleVisitorCall + .call( documento: _model.textController2.text, nome: _model.textController1.text, tipo: _model.dropDownValue == @@ -874,7 +758,7 @@ class _RegisiterVistorTemplateComponentWidgetState : 'P', foto: 'base64;jpeg,${_model.imgBase64}', ) - .onError((e, s) async { + .onError((e, s) async { return await DialogUtil.errorDefault(context); }); if (PhpGroup.postScheduleVisitorCall.error( @@ -887,21 +771,15 @@ class _RegisiterVistorTemplateComponentWidgetState _model.textController3?.clear(); _model.textController4?.clear(); _model.dropDownValueController?.reset(); - _model.uploadedLocalFile = FFUploadedFile( - bytes: Uint8List.fromList([])); + _model.uploadedLocalFile = FFUploadedFile(bytes: Uint8List.fromList([])); ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( FFLocalizations.of(context).getVariableText( - ptText: - 'Visitante cadastrado com sucesso.', - enText: - 'Visitor successfully registered.'), - style: TextStyle( - color: FlutterFlowTheme.of(context) - .info)), - backgroundColor: - FlutterFlowTheme.of(context).primary, + ptText: 'Visitante cadastrado com sucesso.', + enText: 'Visitor successfully registered.'), + style: TextStyle(color: FlutterFlowTheme.of(context).info)), + backgroundColor: FlutterFlowTheme.of(context).primary, duration: const Duration(seconds: 3), width: MediaQuery.of(context).size.width, behavior: SnackBarBehavior.floating, @@ -914,27 +792,20 @@ class _RegisiterVistorTemplateComponentWidgetState ), ); _formKey.currentState?.reset(); - if (widget.source == - 'VisitorNotFoundComponent') { + if (widget.source == 'VisitorNotFoundComponent') { Navigator.pop(context, true); } }); } else { return DialogUtil.error( context, - PhpGroup.postScheduleVisitorCall.errorMsg( - _model - .scheduleVisitor?.jsonBody) == - null - ? FFLocalizations.of(context) - .getVariableText( - ptText: - 'Erro ao se conectar com o servidor', + PhpGroup.postScheduleVisitorCall.errorMsg(_model.scheduleVisitor?.jsonBody) == null + ? FFLocalizations.of(context).getVariableText( + ptText: 'Erro ao se conectar com o servidor', enText: 'Error connecting to server', ) : PhpGroup.postScheduleVisitorCall - .errorMsg( - _model.scheduleVisitor?.jsonBody) + .errorMsg(_model.scheduleVisitor?.jsonBody) .toString()); } } @@ -946,20 +817,15 @@ class _RegisiterVistorTemplateComponentWidgetState width: 250.0, height: 36.0, disabledColor: FlutterFlowTheme.of(context).customColor5, - padding: const EdgeInsetsDirectional.fromSTEB( - 80.0, 0.0, 80.0, 0.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(80.0, 0.0, 80.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), color: FlutterFlowTheme.of(context).primary, - textStyle: FlutterFlowTheme.of(context) - .titleSmall - .override( - fontFamily: - FlutterFlowTheme.of(context).titleSmallFamily, + textStyle: FlutterFlowTheme.of(context).titleSmall.override( + fontFamily: FlutterFlowTheme.of(context).titleSmallFamily, color: FlutterFlowTheme.of(context).info, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).titleSmallFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).titleSmallFamily), ), borderSide: const BorderSide( color: Colors.transparent, diff --git a/lib/components/templates_components/sign_in_template_component/sign_in_template_component_model.dart b/lib/components/templates_components/sign_in_template_component/sign_in_template_component_model.dart index 21b10011..8614bf00 100644 --- a/lib/components/templates_components/sign_in_template_component/sign_in_template_component_model.dart +++ b/lib/components/templates_components/sign_in_template_component/sign_in_template_component_model.dart @@ -1,12 +1,9 @@ import 'package:flutter/material.dart'; import '/flutter_flow/flutter_flow_util.dart'; -import 'sign_in_template_component_widget.dart' - show SignInTemplateComponentWidget; - -class SignInTemplateComponentModel - extends FlutterFlowModel { +import 'sign_in_template_component_widget.dart' show SignInTemplateComponentWidget; +class SignInTemplateComponentModel extends FlutterFlowModel { final formKey = GlobalKey(); final unfocusNode = FocusNode(); FocusNode? emailAddressFocusNode; @@ -27,6 +24,7 @@ class SignInTemplateComponentModel } return null; } + FocusNode? passwordFocusNode; TextEditingController? passwordTextController; late bool passwordVisibility; @@ -41,11 +39,6 @@ class SignInTemplateComponentModel return null; } - - - - - @override void initState(BuildContext context) { emailAddressTextControllerValidator = _emailAddressTextControllerValidator; diff --git a/lib/components/templates_components/sign_in_template_component/sign_in_template_component_widget.dart b/lib/components/templates_components/sign_in_template_component/sign_in_template_component_widget.dart index 9bd0b5e1..8d314552 100644 --- a/lib/components/templates_components/sign_in_template_component/sign_in_template_component_widget.dart +++ b/lib/components/templates_components/sign_in_template_component/sign_in_template_component_widget.dart @@ -27,12 +27,10 @@ class SignInTemplateComponentWidget extends StatefulWidget { final Future Function()? toggleSignUpPage; @override - State createState() => - _SignInTemplateComponentWidgetState(); + State createState() => _SignInTemplateComponentWidgetState(); } -class _SignInTemplateComponentWidgetState - extends State with TickerProviderStateMixin { +class _SignInTemplateComponentWidgetState extends State with TickerProviderStateMixin { late SignInTemplateComponentModel _model; final animationsMap = {}; @@ -148,9 +146,7 @@ class _SignInTemplateComponentWidgetState enText: 'LET\'S GO! SIGN IN WITH YOUR ACCOUNT', ), textAlign: TextAlign.start, - style: FlutterFlowTheme.of(context) - .displaySmall - .override( + style: FlutterFlowTheme.of(context).displaySmall.override( fontFamily: 'Plus Jakarta Sans', color: FlutterFlowTheme.of(context).primaryText, fontSize: 24.0, @@ -185,7 +181,9 @@ class _SignInTemplateComponentWidgetState padding: const EdgeInsetsDirectional.fromSTEB(34.0, 0.0, 34.0, 0.0), child: Container( width: double.infinity, - constraints: const BoxConstraints(maxWidth: 570.0,), + constraints: const BoxConstraints( + maxWidth: 570.0, + ), decoration: BoxDecoration( color: FlutterFlowTheme.of(context).primaryBackground, borderRadius: BorderRadius.circular(12.0), @@ -201,162 +199,94 @@ class _SignInTemplateComponentWidgetState children: [ Form( key: _model.formKey, - autovalidateMode: - AutovalidateMode.onUserInteraction, + autovalidateMode: AutovalidateMode.onUserInteraction, child: Column( mainAxisSize: MainAxisSize.max, children: [ Padding( - padding: - const EdgeInsetsDirectional - .fromSTEB( - 0.0, 0.0, 0.0, 16.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 16.0), child: SizedBox( width: double.infinity, child: TextFormField( - key: const ValueKey( - 'emailTextFormField'), - controller: _model - .emailAddressTextController, - focusNode: _model - .emailAddressFocusNode, - cursorColor: - FlutterFlowTheme.of( - context) - .primary, - onChanged: (_) => - EasyDebounce.debounce( + key: const ValueKey('emailTextFormField'), + controller: _model.emailAddressTextController, + focusNode: _model.emailAddressFocusNode, + cursorColor: FlutterFlowTheme.of(context).primary, + onChanged: (_) => EasyDebounce.debounce( '_model.emailAddressTextController', - const Duration( - milliseconds: 500), + const Duration(milliseconds: 500), () => setState(() {}), ), autofocus: true, - autofillHints: const [ - AutofillHints.email - ], - textCapitalization: - TextCapitalization.none, - textInputAction: - TextInputAction.next, + autofillHints: const [AutofillHints.email], + textCapitalization: TextCapitalization.none, + textInputAction: TextInputAction.next, obscureText: false, decoration: InputDecoration( isDense: true, - labelText: - FFLocalizations.of( - context) - .getText( + labelText: FFLocalizations.of(context).getText( '1ltg0ylb' /* Email */, ), - labelStyle: FlutterFlowTheme - .of(context) - .labelLarge - .override( - fontFamily: - 'Plus Jakarta Sans', - color: FlutterFlowTheme - .of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelLarge.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primaryText, fontSize: 16.0, letterSpacing: 0.0, - fontWeight: - FontWeight.w500, + fontWeight: FontWeight.w500, useGoogleFonts: - GoogleFonts - .asMap() - .containsKey( - 'Plus Jakarta Sans'), + GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), - enabledBorder: - OutlineInputBorder( + enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .customColor1, + color: FlutterFlowTheme.of(context).customColor1, width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), - focusedBorder: - OutlineInputBorder( + focusedBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .success, + color: FlutterFlowTheme.of(context).success, width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), - errorBorder: - OutlineInputBorder( + errorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .error, + color: FlutterFlowTheme.of(context).error, width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), - focusedErrorBorder: - OutlineInputBorder( + focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .error, + color: FlutterFlowTheme.of(context).error, width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), suffixIcon: Icon( Icons.email, - color: - FlutterFlowTheme.of( - context) - .accent1, + color: FlutterFlowTheme.of(context).accent1, size: 22.0, ), ), - style: FlutterFlowTheme.of( - context) - .bodyLarge - .override( - fontFamily: - 'Plus Jakarta Sans', - color: - FlutterFlowTheme.of( - context) - .primaryText, + style: FlutterFlowTheme.of(context).bodyLarge.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primaryText, fontSize: 16.0, letterSpacing: 0.0, - fontWeight: - FontWeight.w500, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - 'Plus Jakarta Sans'), + fontWeight: FontWeight.w500, + useGoogleFonts: + GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), - keyboardType: TextInputType - .emailAddress, - validator: _model - .emailAddressTextControllerValidator - .asValidator(context), + keyboardType: TextInputType.emailAddress, + validator: + _model.emailAddressTextControllerValidator.asValidator(context), ), ), ), Padding( - padding: const EdgeInsetsDirectional .fromSTEB(0.0, 0.0, 0.0, 16.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 16.0), child: SizedBox( width: double.infinity, child: TextFormField( @@ -365,79 +295,76 @@ class _SignInTemplateComponentWidgetState cursorColor: FlutterFlowTheme.of(context).primary, focusNode: _model.passwordFocusNode, onChanged: (_) => EasyDebounce.debounce( - '_model.passwordTextController', - const Duration(milliseconds: 500), - () => setState(() {}) - ), + '_model.passwordTextController', + const Duration(milliseconds: 500), + () => setState(() {})), autofocus: true, autofillHints: const [AutofillHints.password], textInputAction: TextInputAction.send, obscureText: !_model.passwordVisibility, decoration: InputDecoration( isDense: true, - labelText: FFLocalizations.of(context).getText('2x19ce8k' /* Senha */), - labelStyle: FlutterFlowTheme.of(context) - .labelLarge - .override( - fontFamily: 'Plus Jakarta Sans', - color: FlutterFlowTheme.of(context).primaryText, - fontSize: 16.0, - letterSpacing: 0.0, - fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans')), - enabledBorder: OutlineInputBorder( - borderSide: BorderSide( - color: FlutterFlowTheme.of(context).customColor1, - width: 0.25), - borderRadius: BorderRadius.circular(12.0), - ), - focusedBorder: OutlineInputBorder( - borderSide: const BorderSide( - color:Color(0xFF1AAB5F), - width: 0.25), - borderRadius: BorderRadius.circular(12.0)), - errorBorder: OutlineInputBorder( - borderSide: const BorderSide( - color: Color(0xFFFF5963), - width: 0.25), - borderRadius: BorderRadius.circular(12.0), - ), - focusedErrorBorder: OutlineInputBorder( - borderSide: const BorderSide( - color: Color(0xFFFF5963), - width: 0.25), - borderRadius: BorderRadius.circular(12.0), - ), - filled: true, - fillColor: FlutterFlowTheme.of(context).primaryBackground, - suffixIcon: InkWell( - onTap: () => setState(() => _model.passwordVisibility = !_model.passwordVisibility), - focusNode: FocusNode(skipTraversal: true), - child: Icon( - _model.passwordVisibility ? Icons.visibility_outlined : Icons.visibility_off_outlined, - color:FlutterFlowTheme.of(context).accent1, - size: 24.0), - ), - ), - style: FlutterFlowTheme.of(context) - .bodyLarge - .override( + labelText: + FFLocalizations.of(context).getText('2x19ce8k' /* Senha */), + labelStyle: FlutterFlowTheme.of(context).labelLarge.override( fontFamily: 'Plus Jakarta Sans', color: FlutterFlowTheme.of(context).primaryText, fontSize: 16.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + useGoogleFonts: + GoogleFonts.asMap().containsKey('Plus Jakarta Sans')), + enabledBorder: OutlineInputBorder( + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).customColor1, + width: 0.25), + borderRadius: BorderRadius.circular(12.0), + ), + focusedBorder: OutlineInputBorder( + borderSide: + const BorderSide(color: Color(0xFF1AAB5F), width: 0.25), + borderRadius: BorderRadius.circular(12.0)), + errorBorder: OutlineInputBorder( + borderSide: + const BorderSide(color: Color(0xFFFF5963), width: 0.25), + borderRadius: BorderRadius.circular(12.0), + ), + focusedErrorBorder: OutlineInputBorder( + borderSide: + const BorderSide(color: Color(0xFFFF5963), width: 0.25), + borderRadius: BorderRadius.circular(12.0), + ), + filled: true, + fillColor: FlutterFlowTheme.of(context).primaryBackground, + suffixIcon: InkWell( + onTap: () => setState( + () => _model.passwordVisibility = !_model.passwordVisibility), + focusNode: FocusNode(skipTraversal: true), + child: Icon( + _model.passwordVisibility + ? Icons.visibility_outlined + : Icons.visibility_off_outlined, + color: FlutterFlowTheme.of(context).accent1, + size: 24.0), + ), + ), + style: FlutterFlowTheme.of(context).bodyLarge.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primaryText, + fontSize: 16.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w500, + useGoogleFonts: + GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), - validator: _model.passwordTextControllerValidator.asValidator(context), + validator: + _model.passwordTextControllerValidator.asValidator(context), ), ), ), ], ), ), - - Builder( builder: (context) { if (MediaQuery.sizeOf(context).width < kBreakpointSmall ? true : false) { @@ -451,9 +378,11 @@ class _SignInTemplateComponentWidgetState onPressed: _isFormInvalid() ? null : () async { - await AuthenticationService.signIn(context, _model, - emailAdress: _model.emailAddressTextController.text, - password: _model.passwordTextController.text, + await AuthenticationService.signIn( + context, + _model, + emailAdress: _model.emailAddressTextController.text, + password: _model.passwordTextController.text, ); setState(() {}); }, @@ -461,20 +390,21 @@ class _SignInTemplateComponentWidgetState options: FFButtonOptions( width: double.infinity, height: 44.0, - padding: const EdgeInsetsDirectional.fromSTEB(0.0,0.0, 0.0, 0.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0,0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: + const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), color: FlutterFlowTheme.of(context).primary, textStyle: FlutterFlowTheme.of(context).titleSmall.override( - fontFamily: 'Plus Jakarta Sans', - color: FlutterFlowTheme.of(context).info, - fontSize: 16.0, - letterSpacing: 0.0, - fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans')), + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).info, + fontSize: 16.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w500, + useGoogleFonts: + GoogleFonts.asMap().containsKey('Plus Jakarta Sans')), elevation: 3.0, - borderSide: const BorderSide( - color: Colors.transparent, - width: 1.0), + borderSide: + const BorderSide(color: Colors.transparent, width: 1.0), borderRadius: BorderRadius.circular(12.0), disabledColor: FlutterFlowTheme.of(context).customColor5, disabledTextColor: Colors.white, @@ -487,27 +417,28 @@ class _SignInTemplateComponentWidgetState child: FFButtonWidget( key: const ValueKey('toggleSignUpPage'), onPressed: () async => await widget.toggleSignUpPage?.call(), - text: FFLocalizations.of(context).getText('14u7ipws' /* Cadastrar */, + text: FFLocalizations.of(context).getText( + '14u7ipws' /* Cadastrar */, ), options: FFButtonOptions( width: double.infinity, height: 44.0, - padding: const EdgeInsetsDirectional.fromSTEB(0.0,0.0, 0.0, 0.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: + const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), color: FlutterFlowTheme.of(context).customColor1, - textStyle: - FlutterFlowTheme.of(context) - .titleSmall - .override( - fontFamily: 'Plus Jakarta Sans', - color: FlutterFlowTheme.of(context).secondaryText, - fontSize: 16.0, - letterSpacing: 0.0, - fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), - ), + textStyle: FlutterFlowTheme.of(context).titleSmall.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).secondaryText, + fontSize: 16.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w500, + useGoogleFonts: + GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + ), elevation: 3.0, - borderSide: const BorderSide(color: Colors.transparent, width: 1.0), + borderSide: + const BorderSide(color: Colors.transparent, width: 1.0), borderRadius: BorderRadius.circular(12.0), ), showLoadingIndicator: false, @@ -517,105 +448,107 @@ class _SignInTemplateComponentWidgetState ); } else { return Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Expanded( - child: Padding( - padding: - const EdgeInsetsDirectional - .fromSTEB(0.0, 0.0,0.0, 16.0), - child: FFButtonWidget( - key: const ValueKey('SubmitButtonWidget'), - onPressed: _isFormInvalid() ? null : () async { - try { - await AuthenticationService.signIn( - context, - _model, - emailAdress: _model.emailAddressTextController.text, - password: _model.passwordTextController.text, - ); - setState(() {}); - } catch (e, s) { - await DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed( - 'login.php', - _model.emailAddressTextController.text, - "Login", - e, s); - } - }, - text: FFLocalizations.of(context).getText('1x926nsn'), - options: FFButtonOptions( - width: double.infinity, - height: 44.0, - padding: const EdgeInsetsDirectional.fromSTEB(0.0,0.0, 0.0, 0.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), - color: FlutterFlowTheme.of(context).accent1, - textStyle: FlutterFlowTheme.of(context) - .titleSmall - .override( - fontFamily: 'Plus Jakarta Sans', - color: FlutterFlowTheme.of(context).info, - fontSize: 16.0, - letterSpacing: 0.0, - fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), - ), - elevation: 3.0, - borderSide: const BorderSide( - color: Colors.transparent, - width: 1.0, + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Expanded( + child: Padding( + padding: + const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 16.0), + child: FFButtonWidget( + key: const ValueKey('SubmitButtonWidget'), + onPressed: _isFormInvalid() + ? null + : () async { + try { + await AuthenticationService.signIn( + context, + _model, + emailAdress: _model.emailAddressTextController.text, + password: _model.passwordTextController.text, + ); + setState(() {}); + } catch (e, s) { + await DialogUtil.errorDefault(context); + LogUtil.requestAPIFailed( + 'login.php', + _model.emailAddressTextController.text, + "Login", + e, + s); + } + }, + text: FFLocalizations.of(context).getText('1x926nsn'), + options: FFButtonOptions( + width: double.infinity, + height: 44.0, + padding: + const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: + const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + color: FlutterFlowTheme.of(context).accent1, + textStyle: FlutterFlowTheme.of(context).titleSmall.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).info, + fontSize: 16.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w500, + useGoogleFonts: GoogleFonts.asMap() + .containsKey('Plus Jakarta Sans'), + ), + elevation: 3.0, + borderSide: const BorderSide( + color: Colors.transparent, + width: 1.0, + ), + borderRadius: BorderRadius.circular(12.0), + disabledColor: const Color(0xE81AAB5F), ), - borderRadius: BorderRadius.circular(12.0), - disabledColor: const Color(0xE81AAB5F), + showLoadingIndicator: true, ), - showLoadingIndicator: true, ), ), - ), - Expanded( - child: Padding( - padding: - const EdgeInsetsDirectional - .fromSTEB(0.0, 0.0, - 0.0, 16.0), - child: FFButtonWidget( - key: const ValueKey('toggleSignUpPage'), - onPressed: () async => await widget.toggleSignUpPage?.call(), - text: FFLocalizations.of(context).getText('jwvd4ai1' /* Cadastrar */), - options: FFButtonOptions( - width: double.infinity, - height: 44.0, - padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), - color: FlutterFlowTheme.of(context).customColor1, - textStyle: - FlutterFlowTheme - .of(context) - .titleSmall - .override( - fontFamily: 'Plus Jakarta Sans', - color: FlutterFlowTheme.of(context).secondaryText, - fontSize: 16.0, - letterSpacing: 0.0, - fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), - ), - elevation: 3.0, - borderSide: const BorderSide(color: Colors.transparent,width: 1.0,), - borderRadius: BorderRadius.circular(12.0), + Expanded( + child: Padding( + padding: + const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 16.0), + child: FFButtonWidget( + key: const ValueKey('toggleSignUpPage'), + onPressed: () async => await widget.toggleSignUpPage?.call(), + text: FFLocalizations.of(context) + .getText('jwvd4ai1' /* Cadastrar */), + options: FFButtonOptions( + width: double.infinity, + height: 44.0, + padding: + const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: + const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + color: FlutterFlowTheme.of(context).customColor1, + textStyle: FlutterFlowTheme.of(context).titleSmall.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).secondaryText, + fontSize: 16.0, + letterSpacing: 0.0, + fontWeight: FontWeight.w500, + useGoogleFonts: GoogleFonts.asMap() + .containsKey('Plus Jakarta Sans'), + ), + elevation: 3.0, + borderSide: const BorderSide( + color: Colors.transparent, + width: 1.0, + ), + borderRadius: BorderRadius.circular(12.0), + ), + showLoadingIndicator: false, ), - showLoadingIndicator: false, ), ), - ), - ].divide(const SizedBox(width: 7.0))); + ].divide(const SizedBox(width: 7.0))); } }, ), - - Padding( padding: const EdgeInsetsDirectional.fromSTEB(0.0, 12.0, 0.0, 12.0), child: InkWell( @@ -626,43 +559,46 @@ class _SignInTemplateComponentWidgetState highlightColor: Colors.transparent, onTap: () async { await showModalBottomSheet( - isScrollControlled: true, - backgroundColor: Colors.transparent, - context: context, - builder: (context) { - return Padding( - padding: MediaQuery.viewInsetsOf(context), - child: const ForgotPasswordTemplateComponentWidget(), - ); - }).then((value) => safeSetState(() {})); - }, + isScrollControlled: true, + backgroundColor: Colors.transparent, + context: context, + builder: (context) { + return Padding( + padding: MediaQuery.viewInsetsOf(context), + child: const ForgotPasswordTemplateComponentWidget(), + ); + }).then((value) => safeSetState(() {})); + }, child: RichText( textScaler: MediaQuery.of(context).textScaler, text: TextSpan( children: [ TextSpan( - text: FFLocalizations.of(context).getText('05dx91ku' /* Você esqueceu a sua senha? */,), + text: FFLocalizations.of(context).getText( + '05dx91ku' /* Você esqueceu a sua senha? */, + ), style: TextStyle(color: FlutterFlowTheme.of(context).primaryText), ), TextSpan( - text: FFLocalizations.of(context).getText('p5c6d54y' /* Recupere aqui */), + text: FFLocalizations.of(context) + .getText('p5c6d54y' /* Recupere aqui */), style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: 'Plus Jakarta Sans', color: FlutterFlowTheme.of(context).primary, fontSize: 14.0, letterSpacing: 0.0, fontWeight: FontWeight.normal, - useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + useGoogleFonts: + GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), mouseCursor: SystemMouseCursors.click, ) ], - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily)), + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily)), ), ), ), @@ -672,8 +608,7 @@ class _SignInTemplateComponentWidgetState ), ), ), - ).animateOnPageLoad( - animationsMap['containerOnPageLoadAnimation']!), + ).animateOnPageLoad(animationsMap['containerOnPageLoadAnimation']!), ), ), ], diff --git a/lib/components/templates_components/sign_up_template_component/sign_up_template_component_model.dart b/lib/components/templates_components/sign_up_template_component/sign_up_template_component_model.dart index c07deb16..b6ed0b93 100644 --- a/lib/components/templates_components/sign_up_template_component/sign_up_template_component_model.dart +++ b/lib/components/templates_components/sign_up_template_component/sign_up_template_component_model.dart @@ -1,12 +1,9 @@ import 'package:flutter/material.dart'; import '/flutter_flow/flutter_flow_util.dart'; -import 'sign_up_template_component_widget.dart' - show SignUpTemplateComponentWidget; - -class SignUpTemplateComponentModel - extends FlutterFlowModel { +import 'sign_up_template_component_widget.dart' show SignUpTemplateComponentWidget; +class SignUpTemplateComponentModel extends FlutterFlowModel { final formKey = GlobalKey(); FocusNode? nameRegisterFormFocusNode; TextEditingController? nameRegisterFormTextController; @@ -80,7 +77,4 @@ class SignUpTemplateComponentModel passwordRegisterFormFocusNode?.dispose(); passwordRegisterFormTextController?.dispose(); } - - - } diff --git a/lib/components/templates_components/sign_up_template_component/sign_up_template_component_widget.dart b/lib/components/templates_components/sign_up_template_component/sign_up_template_component_widget.dart index 14003cdb..476cec88 100644 --- a/lib/components/templates_components/sign_up_template_component/sign_up_template_component_widget.dart +++ b/lib/components/templates_components/sign_up_template_component/sign_up_template_component_widget.dart @@ -19,7 +19,8 @@ export 'sign_up_template_component_model.dart'; class SignUpTemplateComponentWidget extends StatefulWidget { const SignUpTemplateComponentWidget({super.key, required this.toggleSignInPage}); final Future Function()? toggleSignInPage; - @override State createState() => _SignUpTemplateComponentWidgetState(); + @override + State createState() => _SignUpTemplateComponentWidgetState(); } class _SignUpTemplateComponentWidgetState extends State with TickerProviderStateMixin { @@ -104,13 +105,11 @@ class _SignUpTemplateComponentWidgetState extends State( - 'nameTextFormField'), - controller: _model - .nameRegisterFormTextController, - focusNode: _model - .nameRegisterFormFocusNode, - onChanged: (_) => - EasyDebounce.debounce( + key: const ValueKey('nameTextFormField'), + controller: _model.nameRegisterFormTextController, + focusNode: _model.nameRegisterFormFocusNode, + onChanged: (_) => EasyDebounce.debounce( '_model.nameRegisterFormTextController', - const Duration( - milliseconds: 500), + const Duration(milliseconds: 500), () => setState(() {}), ), autofocus: false, - autofillHints: const [ - AutofillHints.name - ], + autofillHints: const [AutofillHints.name], obscureText: false, decoration: InputDecoration( isDense: true, - labelText: - FFLocalizations.of( - context) - .getText( + labelText: FFLocalizations.of(context).getText( '3corpwhd' /* Nome */, ), - labelStyle: FlutterFlowTheme - .of(context) - .labelLarge - .override( - fontFamily: - 'Plus Jakarta Sans', - color: FlutterFlowTheme - .of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelLarge.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primaryText, fontSize: 16.0, letterSpacing: 0.0, - fontWeight: - FontWeight.w500, + fontWeight: FontWeight.w500, useGoogleFonts: - GoogleFonts - .asMap() - .containsKey( - 'Plus Jakarta Sans'), + GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), - enabledBorder: - OutlineInputBorder( + enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .customColor1, + color: FlutterFlowTheme.of(context).customColor1, width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), - focusedBorder: - OutlineInputBorder( + focusedBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .success, + color: FlutterFlowTheme.of(context).success, width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), - errorBorder: - OutlineInputBorder( + errorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .error, + color: FlutterFlowTheme.of(context).error, width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), - focusedErrorBorder: - OutlineInputBorder( + focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .error, + color: FlutterFlowTheme.of(context).error, width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), filled: true, - fillColor: - FlutterFlowTheme.of( - context) - .primaryBackground, + fillColor: FlutterFlowTheme.of(context).primaryBackground, suffixIcon: Icon( Icons.person, - color: - FlutterFlowTheme.of( - context) - .accent1, + color: FlutterFlowTheme.of(context).accent1, size: 22.0, ), ), - style: FlutterFlowTheme.of( - context) - .bodyLarge - .override( - fontFamily: - 'Plus Jakarta Sans', - color: - FlutterFlowTheme.of( - context) - .primaryText, + style: FlutterFlowTheme.of(context).bodyLarge.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primaryText, fontSize: 16.0, letterSpacing: 0.0, - fontWeight: - FontWeight.w500, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - 'Plus Jakarta Sans'), + fontWeight: FontWeight.w500, + useGoogleFonts: + GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), - validator: _model - .nameRegisterFormTextControllerValidator + validator: _model.nameRegisterFormTextControllerValidator .asValidator(context), ), ), ), Padding( - padding: - const EdgeInsetsDirectional - .fromSTEB( - 0.0, 0.0, 0.0, 16.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 16.0), child: SizedBox( width: double.infinity, child: TextFormField( - key: const ValueKey( - 'emailTextFormField'), - controller: _model - .emailRegisterFormTextController, - focusNode: _model - .emailRegisterFormFocusNode, - onChanged: (_) => - EasyDebounce.debounce( + key: const ValueKey('emailTextFormField'), + controller: _model.emailRegisterFormTextController, + focusNode: _model.emailRegisterFormFocusNode, + onChanged: (_) => EasyDebounce.debounce( '_model.emailRegisterFormTextController', - const Duration( - milliseconds: 500), + const Duration(milliseconds: 500), () => setState(() {}), ), autofocus: false, - autofillHints: const [ - AutofillHints.email - ], + autofillHints: const [AutofillHints.email], obscureText: false, decoration: InputDecoration( isDense: true, - labelText: - FFLocalizations.of( - context) - .getText( + labelText: FFLocalizations.of(context).getText( '80wonb69' /* Email */, ), - labelStyle: FlutterFlowTheme - .of(context) - .labelLarge - .override( - fontFamily: - 'Plus Jakarta Sans', - color: FlutterFlowTheme - .of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelLarge.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primaryText, fontSize: 16.0, letterSpacing: 0.0, - fontWeight: - FontWeight.w500, + fontWeight: FontWeight.w500, useGoogleFonts: - GoogleFonts - .asMap() - .containsKey( - 'Plus Jakarta Sans'), + GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), - enabledBorder: - OutlineInputBorder( + enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .primaryText, + color: FlutterFlowTheme.of(context).primaryText, width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), - focusedBorder: - OutlineInputBorder( + focusedBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .success, + color: FlutterFlowTheme.of(context).success, width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), - errorBorder: - OutlineInputBorder( + errorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .error, + color: FlutterFlowTheme.of(context).error, width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), - focusedErrorBorder: - OutlineInputBorder( + focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .error, + color: FlutterFlowTheme.of(context).error, width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), filled: true, - fillColor: - FlutterFlowTheme.of( - context) - .primaryBackground, + fillColor: FlutterFlowTheme.of(context).primaryBackground, suffixIcon: Icon( Icons.email, - color: - FlutterFlowTheme.of( - context) - .accent1, + color: FlutterFlowTheme.of(context).accent1, size: 22.0, ), ), - style: FlutterFlowTheme.of( - context) - .bodyLarge - .override( - fontFamily: - 'Plus Jakarta Sans', - color: - FlutterFlowTheme.of( - context) - .customColor1, + style: FlutterFlowTheme.of(context).bodyLarge.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).customColor1, fontSize: 16.0, letterSpacing: 0.0, - fontWeight: - FontWeight.w500, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - 'Plus Jakarta Sans'), + fontWeight: FontWeight.w500, + useGoogleFonts: + GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), - keyboardType: TextInputType - .emailAddress, - validator: _model - .emailRegisterFormTextControllerValidator + keyboardType: TextInputType.emailAddress, + validator: _model.emailRegisterFormTextControllerValidator .asValidator(context), ), ), ), Padding( - padding: - const EdgeInsetsDirectional - .fromSTEB( - 0.0, 0.0, 0.0, 16.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 16.0), child: SizedBox( width: double.infinity, child: TextFormField( - key: const ValueKey( - 'passwordTextFormField'), - controller: _model - .passwordRegisterFormTextController, - focusNode: _model - .passwordRegisterFormFocusNode, - onChanged: (_) => - EasyDebounce.debounce( + key: const ValueKey('passwordTextFormField'), + controller: _model.passwordRegisterFormTextController, + focusNode: _model.passwordRegisterFormFocusNode, + onChanged: (_) => EasyDebounce.debounce( '_model.passwordRegisterFormTextController', - const Duration( - milliseconds: 500), + const Duration(milliseconds: 500), () => setState(() {}), ), autofocus: false, - autofillHints: const [ - AutofillHints.password - ], - obscureText: !_model - .passwordRegisterFormVisibility, + autofillHints: const [AutofillHints.password], + obscureText: !_model.passwordRegisterFormVisibility, decoration: InputDecoration( isDense: true, - labelText: - FFLocalizations.of( - context) - .getText( + labelText: FFLocalizations.of(context).getText( '0firji8l' /* Senha */, ), - labelStyle: FlutterFlowTheme - .of(context) - .labelLarge - .override( - fontFamily: - 'Plus Jakarta Sans', - color: FlutterFlowTheme - .of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelLarge.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primaryText, fontSize: 16.0, letterSpacing: 0.0, - fontWeight: - FontWeight.w500, + fontWeight: FontWeight.w500, useGoogleFonts: - GoogleFonts - .asMap() - .containsKey( - 'Plus Jakarta Sans'), + GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), - enabledBorder: - OutlineInputBorder( + enabledBorder: OutlineInputBorder( borderSide: BorderSide( - color: - FlutterFlowTheme.of( - context) - .customColor1, + color: FlutterFlowTheme.of(context).customColor1, width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), - focusedBorder: - OutlineInputBorder( - borderSide: - const BorderSide( - color: - Color(0xFF1AAB5F), + focusedBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: Color(0xFF1AAB5F), width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), - errorBorder: - OutlineInputBorder( - borderSide: - const BorderSide( - color: - Color(0xFFFF5963), + errorBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: Color(0xFFFF5963), width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), - focusedErrorBorder: - OutlineInputBorder( - borderSide: - const BorderSide( - color: - Color(0xFFFF5963), + focusedErrorBorder: OutlineInputBorder( + borderSide: const BorderSide( + color: Color(0xFFFF5963), width: 0.25, ), - borderRadius: - BorderRadius.circular( - 12.0), + borderRadius: BorderRadius.circular(12.0), ), filled: true, - fillColor: - FlutterFlowTheme.of( - context) - .primaryBackground, + fillColor: FlutterFlowTheme.of(context).primaryBackground, suffixIcon: InkWell( key: const ValueKey('passwordVisibilitySuffixIcon'), onTap: () => setState( - () => _model - .passwordRegisterFormVisibility = - !_model - .passwordRegisterFormVisibility, + () => _model.passwordRegisterFormVisibility = + !_model.passwordRegisterFormVisibility, ), - focusNode: FocusNode( - skipTraversal: true), + focusNode: FocusNode(skipTraversal: true), child: Icon( _model.passwordRegisterFormVisibility - ? Icons - .visibility_outlined - : Icons - .visibility_off_outlined, - color: - FlutterFlowTheme.of( - context) - .accent1, + ? Icons.visibility_outlined + : Icons.visibility_off_outlined, + color: FlutterFlowTheme.of(context).accent1, size: 24.0, ), ), ), - style: FlutterFlowTheme.of( - context) - .bodyLarge - .override( - fontFamily: - 'Plus Jakarta Sans', - color: - FlutterFlowTheme.of( - context) - .primaryText, + style: FlutterFlowTheme.of(context).bodyLarge.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primaryText, fontSize: 16.0, letterSpacing: 0.0, - fontWeight: - FontWeight.w500, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - 'Plus Jakarta Sans'), + fontWeight: FontWeight.w500, + useGoogleFonts: + GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), - validator: _model - .passwordRegisterFormTextControllerValidator + validator: _model.passwordRegisterFormTextControllerValidator .asValidator(context), ), ), @@ -680,70 +474,53 @@ class _SignUpTemplateComponentWidgetState extends State('SubmitButtonWidget'), onPressed: isFormInvalid() ? null : () async { var shouldSetState = false; - _model.register = await AuthenticationService.signUp(context, + _model.register = await AuthenticationService.signUp( + context, email: _model.emailRegisterFormTextController.text, name: _model.nameRegisterFormTextController.text, passwd: _model.passwordRegisterFormTextController.text, device: StorageUtil().deviceType, ); shouldSetState = true; - if (_model.register == true) await widget.toggleSignInPage?.call(); + if (_model.register == true) + await widget.toggleSignInPage?.call(); else { if (shouldSetState) setState(() {}); return; } if (shouldSetState) setState(() {}); }, - text: FFLocalizations.of(context) - .getText( + text: FFLocalizations.of(context).getText( 'rnvdwzei' /* Cadastrar-se */, ), options: FFButtonOptions( width: double.infinity, height: 44.0, - padding: const EdgeInsetsDirectional - .fromSTEB(0.0, 0.0, 0.0, 0.0), - iconPadding: - const EdgeInsetsDirectional - .fromSTEB( - 0.0, 0.0, 0.0, 0.0), - color: FlutterFlowTheme.of(context) - .accent1, - textStyle: FlutterFlowTheme.of( - context) - .titleSmall - .override( - fontFamily: - 'Plus Jakarta Sans', - color: FlutterFlowTheme.of( - context) - .secondaryText, + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + color: FlutterFlowTheme.of(context).accent1, + textStyle: FlutterFlowTheme.of(context).titleSmall.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).secondaryText, fontSize: 16.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - 'Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), elevation: 3.0, borderSide: const BorderSide( color: Colors.transparent, width: 1.0, ), - borderRadius: - BorderRadius.circular(12.0), - disabledColor: - FlutterFlowTheme.of(context) - .customColor5, + borderRadius: BorderRadius.circular(12.0), + disabledColor: FlutterFlowTheme.of(context).customColor5, disabledTextColor: Colors.white, ), showLoadingIndicator: true, @@ -752,8 +529,7 @@ class _SignUpTemplateComponentWidgetState extends State('toggleSignInPage'), splashColor: Colors.transparent, @@ -762,65 +538,38 @@ class _SignUpTemplateComponentWidgetState extends State await widget.toggleSignInPage?.call(), child: RichText( - textScaler: MediaQuery.of(context) - .textScaler, + textScaler: MediaQuery.of(context).textScaler, text: TextSpan( children: [ TextSpan( - text: FFLocalizations.of( - context) - .getText( + text: FFLocalizations.of(context).getText( 'a9smhn5b' /* Você já tem uma conta? */, ), style: TextStyle( - color: FlutterFlowTheme.of( - context) - .primaryText, + color: FlutterFlowTheme.of(context).primaryText, ), ), TextSpan( - text: FFLocalizations.of( - context) - .getText( + text: FFLocalizations.of(context).getText( '09xv5ctc' /* Clique aqui */, ), - style: FlutterFlowTheme.of( - context) - .bodyMedium - .override( - fontFamily: - 'Plus Jakarta Sans', - color: - FlutterFlowTheme.of( - context) - .primary, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primary, fontSize: 14.0, letterSpacing: 0.0, - fontWeight: - FontWeight.w600, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - 'Plus Jakarta Sans'), + fontWeight: FontWeight.w600, + useGoogleFonts: + GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), ) ], - style: - FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of( - context) - .bodyMediumFamily, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .bodyMediumFamily), - ), + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + ), ), ), ), @@ -830,8 +579,7 @@ class _SignUpTemplateComponentWidgetState extends State { // } // }); - _model.textController1 = TextEditingController( - text: widget.visitTempStr == 'null' ? '' : widget.visitTempStr ?? ''); + _model.textController1 = + TextEditingController(text: widget.visitTempStr == 'null' ? '' : widget.visitTempStr ?? ''); _model.textFieldFocusNode1 ??= FocusNode(); - _model.textController2 ??= - TextEditingController(text: widget.visitStartDate); + _model.textController2 ??= TextEditingController(text: widget.visitStartDate); _model.textFieldFocusNode2 ??= FocusNode(); _model.textController3 ??= TextEditingController(text: widget.visitEndDate); _model.textFieldFocusNode3 ??= FocusNode(); - _model.textController4 ??= - TextEditingController(text: widget.visitReasonStr); + _model.textController4 ??= TextEditingController(text: widget.visitReasonStr); _model.textFieldFocusNode4 ??= FocusNode(); - _model.textController5 ??= - TextEditingController(text: widget.visitLevelStr); + _model.textController5 ??= TextEditingController(text: widget.visitLevelStr); _model.textFieldFocusNode5 ??= FocusNode(); _model.textController6 ??= TextEditingController(text: widget.visitObsStr); @@ -117,8 +114,7 @@ class _ViewVisitDetailWidgetState extends State { @override Widget build(BuildContext context) { - var filteredVisitorJsonList = - findVisitorById(widget.visitorJsonList, widget.visitIdStr) ?? 'null'; + var filteredVisitorJsonList = findVisitorById(widget.visitorJsonList, widget.visitIdStr) ?? 'null'; return Padding( padding: const EdgeInsetsDirectional.fromSTEB(0.0, 200.0, 0.0, 0.0), @@ -154,8 +150,7 @@ class _ViewVisitDetailWidgetState extends State { child: Align( alignment: const AlignmentDirectional(1.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 15.0, 0.0, 15.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(15.0, 0.0, 15.0, 0.0), child: FlutterFlowIconButton( borderRadius: 20.0, borderWidth: 1.0, @@ -184,8 +179,7 @@ class _ViewVisitDetailWidgetState extends State { Align( alignment: const AlignmentDirectional(1.0, -1.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 20.0, 20.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 20.0, 20.0), child: Container( width: 100.0, decoration: const BoxDecoration(), @@ -225,10 +219,8 @@ class _ViewVisitDetailWidgetState extends State { child: ClipRRect( borderRadius: BorderRadius.circular(100.0), child: CachedNetworkImage( - fadeInDuration: - const Duration(milliseconds: 500), - fadeOutDuration: - const Duration(milliseconds: 500), + fadeInDuration: const Duration(milliseconds: 500), + fadeOutDuration: const Duration(milliseconds: 500), imageUrl: valueOrDefault( widget.visitorImgPath, 'https://storage.googleapis.com/flutterflow-io-6f20.appspot.com/projects/flutter-freaccess-hub-0xgz9q/assets/7ftdetkzc3s0/360_F_64676383_LdbmhiNM6Ypzb3FM4PPuFP9rHe7ri8Ju.jpg', @@ -247,8 +239,7 @@ class _ViewVisitDetailWidgetState extends State { Container( decoration: const BoxDecoration(), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 8.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 10.0), child: TextFormField( controller: _model.textController1, focusNode: _model.textFieldFocusNode1, @@ -262,27 +253,19 @@ class _ViewVisitDetailWidgetState extends State { labelText: FFLocalizations.of(context).getText( '9yu35pzg' /* Encerramento da Visita */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -314,29 +297,24 @@ class _ViewVisitDetailWidgetState extends State { ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), - validator: _model.textController1Validator - .asValidator(context), + validator: _model.textController1Validator.asValidator(context), ), ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 10.0), child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 8.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0), child: TextFormField( controller: _model.textController2, focusNode: _model.textFieldFocusNode2, @@ -350,34 +328,22 @@ class _ViewVisitDetailWidgetState extends State { labelText: FFLocalizations.of(context).getText( 'aj6scczp' /* Início */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: FFLocalizations.of(context).getText( 'ub084nhy' /* dd/mm/yyyy */, ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -408,27 +374,20 @@ class _ViewVisitDetailWidgetState extends State { borderRadius: BorderRadius.circular(8.0), ), ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.center, - validator: _model.textController2Validator - .asValidator(context), + validator: _model.textController2Validator.asValidator(context), ), ), ), Expanded( child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 8.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0), child: TextFormField( controller: _model.textController3, focusNode: _model.textFieldFocusNode3, @@ -442,34 +401,22 @@ class _ViewVisitDetailWidgetState extends State { labelText: FFLocalizations.of(context).getText( 'rvi5z7wg' /* Término */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: FFLocalizations.of(context).getText( 'ixs67mrz' /* dd/mm/yyyy */, ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -500,20 +447,14 @@ class _ViewVisitDetailWidgetState extends State { borderRadius: BorderRadius.circular(8.0), ), ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.center, - validator: _model.textController3Validator - .asValidator(context), + validator: _model.textController3Validator.asValidator(context), ), ), ), @@ -521,16 +462,14 @@ class _ViewVisitDetailWidgetState extends State { ), ), Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 10.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 10.0), child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 8.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0), child: TextFormField( controller: _model.textController4, focusNode: _model.textFieldFocusNode4, @@ -544,34 +483,22 @@ class _ViewVisitDetailWidgetState extends State { labelText: FFLocalizations.of(context).getText( 'yxilg7ek' /* Motivo da Visita */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: FFLocalizations.of(context).getText( 'ypeydbem' /* Motivo */, ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -602,27 +529,20 @@ class _ViewVisitDetailWidgetState extends State { borderRadius: BorderRadius.circular(8.0), ), ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.center, - validator: _model.textController4Validator - .asValidator(context), + validator: _model.textController4Validator.asValidator(context), ), ), ), Expanded( child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 8.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0), child: TextFormField( controller: _model.textController5, focusNode: _model.textFieldFocusNode5, @@ -636,34 +556,22 @@ class _ViewVisitDetailWidgetState extends State { labelText: FFLocalizations.of(context).getText( 'dgr3pk3a' /* Nível de Acesso */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: FFLocalizations.of(context).getText( 'rs3d4gb8' /* Nível de Acesso */, ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, - color: FlutterFlowTheme.of(context) - .primaryText, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -694,20 +602,14 @@ class _ViewVisitDetailWidgetState extends State { borderRadius: BorderRadius.circular(8.0), ), ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.center, - validator: _model.textController5Validator - .asValidator(context), + validator: _model.textController5Validator.asValidator(context), ), ), ), @@ -717,8 +619,7 @@ class _ViewVisitDetailWidgetState extends State { Container( decoration: const BoxDecoration(), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 8.0, 0.0, 8.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(8.0, 0.0, 8.0, 0.0), child: TextFormField( controller: _model.textController6, focusNode: _model.textFieldFocusNode6, @@ -732,27 +633,19 @@ class _ViewVisitDetailWidgetState extends State { labelText: FFLocalizations.of(context).getText( 'lppn9rxa' /* Observações da Visita */, ), - labelStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + labelStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), - hintStyle: FlutterFlowTheme.of(context) - .labelMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .labelMediumFamily, + hintStyle: FlutterFlowTheme.of(context).labelMedium.override( + fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -784,15 +677,12 @@ class _ViewVisitDetailWidgetState extends State { ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), - validator: _model.textController6Validator - .asValidator(context), + validator: _model.textController6Validator.asValidator(context), ), ), ), @@ -817,8 +707,7 @@ class _ViewVisitDetailWidgetState extends State { size: 24.0, ), onPressed: () async { - _model.deleteVisit = - await PhpGroup.deleteVisitCall.call( + _model.deleteVisit = await PhpGroup.deleteVisitCall.call( idVisita: widget.visitIdStr, ); @@ -828,8 +717,7 @@ class _ViewVisitDetailWidgetState extends State { false) { context.pop(); } else { - final error = - await DialogUtil.errorDefault(context); + final error = await DialogUtil.errorDefault(context); await showModalBottomSheet( isScrollControlled: true, backgroundColor: Colors.transparent, diff --git a/lib/components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_model.dart b/lib/components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_model.dart index 9ec1e19d..c7143f06 100644 --- a/lib/components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_model.dart +++ b/lib/components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_model.dart @@ -1,5 +1,3 @@ - - import 'package:hub/components/organism_components/schedule_visit_detail/schedule_visit_detail_model.dart'; import 'package:hub/components/templates_components/view_visit_detail/view_visit_detail_model.dart'; import 'package:hub/components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_widget.dart'; @@ -7,8 +5,7 @@ import 'package:hub/flutter_flow/flutter_flow_model.dart'; import 'package:flutter/material.dart'; -class VisitDetailsModalTemplateComponentModel - extends FlutterFlowModel { +class VisitDetailsModalTemplateComponentModel extends FlutterFlowModel { /// Local state fields for this component. Color statusColor = const Color(0xff000000); @@ -23,8 +20,7 @@ class VisitDetailsModalTemplateComponentModel @override void initState(BuildContext context) { viewVisitDetailModel = createModel(context, () => ViewVisitDetailModel()); - scheduleVisitDetailModel = - createModel(context, () => ScheduleVisitDetailModel()); + scheduleVisitDetailModel = createModel(context, () => ScheduleVisitDetailModel()); } @override @@ -32,4 +28,4 @@ class VisitDetailsModalTemplateComponentModel viewVisitDetailModel.dispose(); scheduleVisitDetailModel.dispose(); } -} \ No newline at end of file +} diff --git a/lib/components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_widget.dart b/lib/components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_widget.dart index f4864b0b..b6e63072 100644 --- a/lib/components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_widget.dart +++ b/lib/components/templates_components/visit_details_modal_template_component/visit_details_modal_template_component_widget.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:hub/components/organism_components/schedule_visit_detail/schedule_visit_detail_widget.dart'; import 'package:hub/components/templates_components/view_visit_detail/view_visit_detail_widget.dart'; @@ -42,12 +41,10 @@ class VisitDetailsModalTemplateComponentWidget extends StatefulWidget { final Color? visitStatusColor; @override - State createState() => - _VisitDetailsModalTemplateComponentWidgetState(); + State createState() => _VisitDetailsModalTemplateComponentWidgetState(); } -class _VisitDetailsModalTemplateComponentWidgetState - extends State { +class _VisitDetailsModalTemplateComponentWidgetState extends State { late VisitDetailsModalTemplateComponentModel _model; @override @@ -59,8 +56,7 @@ class _VisitDetailsModalTemplateComponentWidgetState @override void initState() { super.initState(); - _model = - createModel(context, () => VisitDetailsModalTemplateComponentModel()); + _model = createModel(context, () => VisitDetailsModalTemplateComponentModel()); } @override diff --git a/lib/components/templates_components/visitor_details_modal_template_component/visitor_details_modal_template_component_model.dart b/lib/components/templates_components/visitor_details_modal_template_component/visitor_details_modal_template_component_model.dart index d0f79706..ee7ec7cf 100644 --- a/lib/components/templates_components/visitor_details_modal_template_component/visitor_details_modal_template_component_model.dart +++ b/lib/components/templates_components/visitor_details_modal_template_component/visitor_details_modal_template_component_model.dart @@ -1,10 +1,8 @@ import '/flutter_flow/flutter_flow_util.dart'; -import 'visitor_details_modal_template_component_widget.dart' - show VisitorDetailsModalTemplateComponentWidget; +import 'visitor_details_modal_template_component_widget.dart' show VisitorDetailsModalTemplateComponentWidget; import 'package:flutter/material.dart'; -class VisitorDetailsModalTemplateComponentModel - extends FlutterFlowModel { +class VisitorDetailsModalTemplateComponentModel extends FlutterFlowModel { @override void initState(BuildContext context) {} diff --git a/lib/components/templates_components/visitor_details_modal_template_component/visitor_details_modal_template_component_widget.dart b/lib/components/templates_components/visitor_details_modal_template_component/visitor_details_modal_template_component_widget.dart index 98309e51..fcd55d7b 100644 --- a/lib/components/templates_components/visitor_details_modal_template_component/visitor_details_modal_template_component_widget.dart +++ b/lib/components/templates_components/visitor_details_modal_template_component/visitor_details_modal_template_component_widget.dart @@ -25,12 +25,10 @@ class VisitorDetailsModalTemplateComponentWidget extends StatefulWidget { final String? visitorEmail; @override - State createState() => - _VisitorDetailsModalTemplateComponentWidgetState(); + State createState() => _VisitorDetailsModalTemplateComponentWidgetState(); } -class _VisitorDetailsModalTemplateComponentWidgetState - extends State { +class _VisitorDetailsModalTemplateComponentWidgetState extends State { late VisitorDetailsModalTemplateComponentModel _model; @override @@ -42,8 +40,7 @@ class _VisitorDetailsModalTemplateComponentWidgetState @override void initState() { super.initState(); - _model = - createModel(context, () => VisitorDetailsModalTemplateComponentModel()); + _model = createModel(context, () => VisitorDetailsModalTemplateComponentModel()); } @override @@ -85,8 +82,7 @@ class _VisitorDetailsModalTemplateComponentWidgetState child: Align( alignment: const AlignmentDirectional(1.0, -1.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 10.0, 5.0, 15.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(10.0, 5.0, 15.0, 0.0), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, @@ -107,21 +103,18 @@ class _VisitorDetailsModalTemplateComponentWidgetState Align( alignment: const AlignmentDirectional(0.0, -1.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 20.0, 40.0, 20.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(20.0, 40.0, 20.0, 0.0), child: Container( decoration: const BoxDecoration( shape: BoxShape.rectangle, ), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 10.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0), child: Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ - if (widget.visitorImageURL != '' && - widget.visitorImageURL != null) + if (widget.visitorImageURL != '' && widget.visitorImageURL != null) Container( width: 100.0, height: 100.0, @@ -137,23 +130,17 @@ class _VisitorDetailsModalTemplateComponentWidgetState Align( alignment: const AlignmentDirectional(0.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 20.0, 0.0, 20.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(20.0, 0.0, 20.0, 0.0), child: Text( widget.visitorName ?? '', textAlign: TextAlign.start, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, fontSize: 24.0, letterSpacing: 0.0, fontWeight: FontWeight.bold, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -161,24 +148,18 @@ class _VisitorDetailsModalTemplateComponentWidgetState Align( alignment: const AlignmentDirectional(0.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 20.0, 0.0, 20.0, 30.0), + padding: const EdgeInsetsDirectional.fromSTEB(20.0, 0.0, 20.0, 30.0), child: Text( FFLocalizations.of(context).getText( 'hz7ivuqn' /* Tipo de Visitante */, ), textAlign: TextAlign.start, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.bold, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -192,28 +173,20 @@ class _VisitorDetailsModalTemplateComponentWidgetState size: 24.0, ), Align( - alignment: - const AlignmentDirectional(-1.0, 0.0), + alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 20.0, 0.0, 20.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(20.0, 0.0, 20.0, 0.0), child: Text( FFLocalizations.of(context).getText( 'rwqn0det' /* (00) 0 0000-0000 */, ), textAlign: TextAlign.start, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.bold, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -229,28 +202,20 @@ class _VisitorDetailsModalTemplateComponentWidgetState size: 24.0, ), Align( - alignment: - const AlignmentDirectional(-1.0, 0.0), + alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 20.0, 0.0, 20.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(20.0, 0.0, 20.0, 0.0), child: Text( FFLocalizations.of(context).getText( '0wqbiekp' /* email@provider.etc */, ), textAlign: TextAlign.start, - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .bodyMediumFamily, + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.bold, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), diff --git a/lib/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_widget.dart b/lib/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_widget.dart index f41722fa..c94da2b3 100644 --- a/lib/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_widget.dart +++ b/lib/components/templates_components/visitor_search_modal_template_component/visitor_search_modal_template_component_widget.dart @@ -29,7 +29,8 @@ class VisitorSearchModalTemplateComponentWidget extends StatefulWidget { State createState() => _VisitorSearchModalTemplateComponentWidgetState(); } -class _VisitorSearchModalTemplateComponentWidgetState extends State with TickerProviderStateMixin { +class _VisitorSearchModalTemplateComponentWidgetState extends State + with TickerProviderStateMixin { late VisitorSearchModalTemplateComponentModel _model; safeSetState(VoidCallback callback) { @@ -103,19 +104,35 @@ class _VisitorSearchModalTemplateComponentWidgetState extends State 0 ? () async => await addVisitor(context).whenComplete(safeSetState(() {})) : () async => await sendVisitors(context), + onPressed: MediaQuery.of(context).viewInsets.bottom > 0 + ? () async => await addVisitor(context).whenComplete(safeSetState(() {})) + : () async => await sendVisitors(context), text: MediaQuery.of(context).viewInsets.bottom > 0 ? FFLocalizations.of(context).getVariableText( enText: 'Add', @@ -290,11 +314,16 @@ class _VisitorSearchModalTemplateComponentWidgetState extends State { +class WelcomeTemplateComponentModel extends FlutterFlowModel { @override void initState(BuildContext context) {} diff --git a/lib/components/templates_components/welcome_template_component/welcome_template_component_widget.dart b/lib/components/templates_components/welcome_template_component/welcome_template_component_widget.dart index 5c0f0aa0..eae60e5c 100644 --- a/lib/components/templates_components/welcome_template_component/welcome_template_component_widget.dart +++ b/lib/components/templates_components/welcome_template_component/welcome_template_component_widget.dart @@ -22,8 +22,7 @@ class WelcomeTemplateComponentWidget extends StatefulWidget { final Future Function()? toggleSignInPage; @override - State createState() => - _WelcomeTemplateComponentWidgetState(); + State createState() => _WelcomeTemplateComponentWidgetState(); } class _WelcomeTemplateComponentWidgetState extends State with TickerProviderStateMixin { @@ -41,39 +40,38 @@ class _WelcomeTemplateComponentWidgetState extends State WelcomeTemplateComponentModel()); - animationsMap.addAll( - { - 'containerOnPageLoadAnimation': AnimationInfo( - trigger: AnimationTrigger.onPageLoad, - effectsBuilder: () => [ - VisibilityEffect(duration: 1.ms), - FadeEffect( - curve: Curves.easeInOut, - delay: 0.0.ms, - duration: 300.0.ms, - begin: 0.0, - end: 1.0, - ), - MoveEffect( - curve: Curves.easeInOut, - delay: 0.0.ms, - duration: 300.0.ms, - begin: const Offset(0.0, 140.0), - end: const Offset(0.0, 0.0), - ), - ScaleEffect( - curve: Curves.easeInOut, - delay: 0.0.ms, - duration: 300.0.ms, - begin: const Offset(0.9, 0.9), - end: const Offset(1.0, 1.0), - ), - TiltEffect( - curve: Curves.easeInOut, - delay: 0.0.ms, - duration: 300.0.ms, - begin: const Offset(-0.349, 0), - end: const Offset(0, 0), + animationsMap.addAll({ + 'containerOnPageLoadAnimation': AnimationInfo( + trigger: AnimationTrigger.onPageLoad, + effectsBuilder: () => [ + VisibilityEffect(duration: 1.ms), + FadeEffect( + curve: Curves.easeInOut, + delay: 0.0.ms, + duration: 300.0.ms, + begin: 0.0, + end: 1.0, + ), + MoveEffect( + curve: Curves.easeInOut, + delay: 0.0.ms, + duration: 300.0.ms, + begin: const Offset(0.0, 140.0), + end: const Offset(0.0, 0.0), + ), + ScaleEffect( + curve: Curves.easeInOut, + delay: 0.0.ms, + duration: 300.0.ms, + begin: const Offset(0.9, 0.9), + end: const Offset(1.0, 1.0), + ), + TiltEffect( + curve: Curves.easeInOut, + delay: 0.0.ms, + duration: 300.0.ms, + begin: const Offset(-0.349, 0), + end: const Offset(0, 0), ), ], ), @@ -112,11 +110,10 @@ class _WelcomeTemplateComponentWidgetState extends State( - 'toggleSignUpPage'), + key: const ValueKey('toggleSignUpPage'), onPressed: () async { await widget.toggleSignUpPage?.call(); }, - text: - FFLocalizations.of(context).getText( + text: FFLocalizations.of(context).getText( 'hha60cg7' /* Cadastrar */, ), options: FFButtonOptions( width: double.infinity, height: 44.0, - padding: const EdgeInsetsDirectional - .fromSTEB(0.0, 0.0, 0.0, 0.0), - iconPadding: - const EdgeInsetsDirectional - .fromSTEB(0.0, 0.0, 0.0, 0.0), - color: FlutterFlowTheme.of(context) - .customColor1, - textStyle: FlutterFlowTheme.of( - context) - .titleSmall - .override( + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + color: FlutterFlowTheme.of(context).customColor1, + textStyle: FlutterFlowTheme.of(context).titleSmall.override( fontFamily: 'Plus Jakarta Sans', - color: - FlutterFlowTheme.of(context) - .primaryBackground, + color: FlutterFlowTheme.of(context).primaryBackground, fontSize: 16.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - 'Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), elevation: 3.0, borderSide: const BorderSide( color: Colors.transparent, width: 1.0, ), - borderRadius: - BorderRadius.circular(12.0), + borderRadius: BorderRadius.circular(12.0), ), showLoadingIndicator: false, ), @@ -289,60 +258,39 @@ class _WelcomeTemplateComponentWidgetState extends State('toggleSignInPage'), - + key: const ValueKey('toggleSignInPage'), onPressed: () async { - - await widget.toggleSignInPage - ?.call(); + await widget.toggleSignInPage?.call(); }, - text: FFLocalizations.of(context) - .getText( + text: FFLocalizations.of(context).getText( 'zvtay8ee' /* Entrar */, ), options: FFButtonOptions( width: double.infinity, height: 44.0, - padding: const EdgeInsetsDirectional - .fromSTEB(0.0, 0.0, 0.0, 0.0), - iconPadding: - const EdgeInsetsDirectional - .fromSTEB( - 0.0, 0.0, 0.0, 0.0), - color: FlutterFlowTheme.of(context) - .primary, - textStyle: FlutterFlowTheme.of( - context) - .titleSmall - .override( - fontFamily: - 'Plus Jakarta Sans', - color: FlutterFlowTheme.of( - context) - .info, + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + color: FlutterFlowTheme.of(context).primary, + textStyle: FlutterFlowTheme.of(context).titleSmall.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).info, fontSize: 16.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - 'Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), elevation: 3.0, borderSide: const BorderSide( color: Colors.transparent, width: 1.0, ), - borderRadius: - BorderRadius.circular(12.0), + borderRadius: BorderRadius.circular(12.0), ), showLoadingIndicator: false, ), @@ -350,53 +298,35 @@ class _WelcomeTemplateComponentWidgetState extends State('toggleSignUpPage'), onPressed: () async { - await widget.toggleSignUpPage - ?.call(); + await widget.toggleSignUpPage?.call(); }, - text: FFLocalizations.of(context) - .getText( + text: FFLocalizations.of(context).getText( 'o6zob50a' /* Cadastrar */, ), options: FFButtonOptions( width: double.infinity, height: 44.0, - padding: const EdgeInsetsDirectional - .fromSTEB(0.0, 0.0, 0.0, 0.0), - iconPadding: - const EdgeInsetsDirectional - .fromSTEB( - 0.0, 0.0, 0.0, 0.0), - color: FlutterFlowTheme.of(context) - .primary, - textStyle: FlutterFlowTheme.of( - context) - .titleSmall - .override( - fontFamily: - 'Plus Jakarta Sans', - color: FlutterFlowTheme.of( - context) - .info, + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), + color: FlutterFlowTheme.of(context).primary, + textStyle: FlutterFlowTheme.of(context).titleSmall.override( + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).info, fontSize: 16.0, letterSpacing: 0.0, fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - 'Plus Jakarta Sans'), + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), ), elevation: 3.0, borderSide: const BorderSide( color: Colors.transparent, width: 1.0, ), - borderRadius: - BorderRadius.circular(12.0), + borderRadius: BorderRadius.circular(12.0), ), showLoadingIndicator: false, ), @@ -411,8 +341,7 @@ class _WelcomeTemplateComponentWidgetState extends State animationInfo.loop - ? controller.repeat(reverse: animationInfo.reverse) - : null, - onComplete: (controller) => !animationInfo.loop && animationInfo.reverse - ? controller.reverse() - : null, + onPlay: (controller) => animationInfo.loop ? controller.repeat(reverse: animationInfo.reverse) : null, + onComplete: (controller) => !animationInfo.loop && animationInfo.reverse ? controller.reverse() : null, ); } @@ -68,11 +63,7 @@ extension AnimatedWidgetExtension on Widget { }) { animationInfo.maybeUpdateEffects(effects); return hasBeenTriggered || animationInfo.applyInitialState - ? Animate( - controller: animationInfo.controller, - autoPlay: false, - effects: animationInfo.effects, - child: this) + ? Animate(controller: animationInfo.controller, autoPlay: false, effects: animationInfo.effects, child: this) : this; } } @@ -109,4 +100,4 @@ class TiltEffect extends Effect { ), ); } -} \ No newline at end of file +} diff --git a/lib/flutter_flow/flutter_flow_button_tabbar.dart b/lib/flutter_flow/flutter_flow_button_tabbar.dart index 4ea6374d..45bee44f 100644 --- a/lib/flutter_flow/flutter_flow_button_tabbar.dart +++ b/lib/flutter_flow/flutter_flow_button_tabbar.dart @@ -6,12 +6,9 @@ import 'package:flutter/gestures.dart' show DragStartBehavior; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; - - const double _kTabHeight = 46.0; -typedef _LayoutCallback = void Function( - List xOffsets, TextDirection textDirection, double width); +typedef _LayoutCallback = void Function(List xOffsets, TextDirection textDirection, double width); class _TabLabelBarRenderer extends RenderFlex { _TabLabelBarRenderer({ @@ -36,8 +33,7 @@ class _TabLabelBarRenderer extends RenderFlex { RenderBox? child = firstChild; final List xOffsets = []; while (child != null) { - final FlexParentData childParentData = - child.parentData! as FlexParentData; + final FlexParentData childParentData = child.parentData! as FlexParentData; xOffsets.add(childParentData.offset.dx); assert(child.parentData == childParentData); child = childParentData.nextSibling; @@ -86,8 +82,7 @@ class _TabLabelBar extends Flex { } @override - void updateRenderObject( - BuildContext context, _TabLabelBarRenderer renderObject) { + void updateRenderObject(BuildContext context, _TabLabelBarRenderer renderObject) { super.updateRenderObject(context, renderObject); renderObject.onPerformLayout = onPerformLayout; } @@ -138,8 +133,7 @@ class _IndicatorPainter extends CustomPainter { assert(_currentTabOffsets!.isNotEmpty); assert(tabIndex >= 0); assert(tabIndex <= maxTabIndex); - return (_currentTabOffsets![tabIndex] + _currentTabOffsets![tabIndex + 1]) / - 2.0; + return (_currentTabOffsets![tabIndex] + _currentTabOffsets![tabIndex + 1]) / 2.0; } @override @@ -194,12 +188,10 @@ class _TabBarScrollPosition extends ScrollPositionWithSingleContext { // ballistic scroll activity. if (!_viewportDimensionWasNonZero || _needsPixelsCorrection) { _needsPixelsCorrection = false; - correctPixels(tabBar._initialScrollOffset( - viewportDimension, minScrollExtent, maxScrollExtent)); + correctPixels(tabBar._initialScrollOffset(viewportDimension, minScrollExtent, maxScrollExtent)); result = false; } - return super.applyContentDimensions(minScrollExtent, maxScrollExtent) && - result; + return super.applyContentDimensions(minScrollExtent, maxScrollExtent) && result; } void markNeedsPixelsCorrection() { @@ -215,8 +207,7 @@ class _TabBarScrollController extends ScrollController { final _FlutterFlowButtonTabBarState tabBar; @override - ScrollPosition createScrollPosition(ScrollPhysics physics, - ScrollContext context, ScrollPosition? oldPosition) { + ScrollPosition createScrollPosition(ScrollPhysics physics, ScrollContext context, ScrollPosition? oldPosition) { return _TabBarScrollPosition( physics: physics, context: context, @@ -227,8 +218,7 @@ class _TabBarScrollController extends ScrollController { } /// A Flutterflow Design widget that displays a horizontal row of tabs. -class FlutterFlowButtonTabBar extends StatefulWidget - implements PreferredSizeWidget { +class FlutterFlowButtonTabBar extends StatefulWidget implements PreferredSizeWidget { /// The [tabs] argument must not be null and its length must match the [controller]'s /// [TabController.length]. /// @@ -362,17 +352,14 @@ class FlutterFlowButtonTabBar extends StatefulWidget maxHeight = math.max(itemHeight, maxHeight); } } - return Size.fromHeight( - maxHeight + labelPadding.vertical + buttonMargin.vertical); + return Size.fromHeight(maxHeight + labelPadding.vertical + buttonMargin.vertical); } @override - State createState() => - _FlutterFlowButtonTabBarState(); + State createState() => _FlutterFlowButtonTabBarState(); } -class _FlutterFlowButtonTabBarState extends State - with TickerProviderStateMixin { +class _FlutterFlowButtonTabBarState extends State with TickerProviderStateMixin { ScrollController? _scrollController; TabController? _controller; _IndicatorPainter? _indicatorPainter; @@ -396,8 +383,7 @@ class _FlutterFlowButtonTabBarState extends State /// The animation duration is 2/3 of the tab scroll animation duration in /// Material design (kTabScrollDuration). - _animationController = AnimationController( - vsync: this, duration: const Duration(milliseconds: 200)); + _animationController = AnimationController(vsync: this, duration: const Duration(milliseconds: 200)); // so the buttons start in their "final" state (color) _animationController @@ -415,8 +401,7 @@ class _FlutterFlowButtonTabBarState extends State bool get _controllerIsValid => _controller?.animation != null; void _updateTabController() { - final TabController? newController = - widget.controller ?? DefaultTabController.maybeOf(context); + final TabController? newController = widget.controller ?? DefaultTabController.maybeOf(context); assert(() { if (newController == null) { throw FlutterError( @@ -501,8 +486,7 @@ class _FlutterFlowButtonTabBarState extends State int get maxTabIndex => _indicatorPainter!.maxTabIndex; - double _tabScrollOffset( - int index, double viewportWidth, double minExtent, double maxExtent) { + double _tabScrollOffset(int index, double viewportWidth, double minExtent, double maxExtent) { if (!widget.isScrollable) { return 0.0; } @@ -518,34 +502,27 @@ class _FlutterFlowButtonTabBarState extends State break; } - return clampDouble( - tabCenter + paddingStart - viewportWidth / 2.0, minExtent, maxExtent); + return clampDouble(tabCenter + paddingStart - viewportWidth / 2.0, minExtent, maxExtent); } double _tabCenteredScrollOffset(int index) { final ScrollPosition position = _scrollController!.position; - return _tabScrollOffset(index, position.viewportDimension, - position.minScrollExtent, position.maxScrollExtent); + return _tabScrollOffset(index, position.viewportDimension, position.minScrollExtent, position.maxScrollExtent); } - double _initialScrollOffset( - double viewportWidth, double minExtent, double maxExtent) { + double _initialScrollOffset(double viewportWidth, double minExtent, double maxExtent) { return _tabScrollOffset(_currentIndex, viewportWidth, minExtent, maxExtent); } void _scrollToCurrentIndex() { final double offset = _tabCenteredScrollOffset(_currentIndex); - _scrollController! - .animateTo(offset, duration: kTabScrollDuration, curve: Curves.ease); + _scrollController!.animateTo(offset, duration: kTabScrollDuration, curve: Curves.ease); } void _scrollToControllerValue() { - final double? leadingPosition = - _currentIndex > 0 ? _tabCenteredScrollOffset(_currentIndex - 1) : null; + final double? leadingPosition = _currentIndex > 0 ? _tabCenteredScrollOffset(_currentIndex - 1) : null; final double middlePosition = _tabCenteredScrollOffset(_currentIndex); - final double? trailingPosition = _currentIndex < maxTabIndex - ? _tabCenteredScrollOffset(_currentIndex + 1) - : null; + final double? trailingPosition = _currentIndex < maxTabIndex ? _tabCenteredScrollOffset(_currentIndex + 1) : null; final double index = _controller!.index.toDouble(); final double value = _controller!.animation!.value; @@ -557,13 +534,9 @@ class _FlutterFlowButtonTabBarState extends State } else if (value == index) { offset = middlePosition; } else if (value < index) { - offset = leadingPosition == null - ? middlePosition - : lerpDouble(middlePosition, leadingPosition, index - value)!; + offset = leadingPosition == null ? middlePosition : lerpDouble(middlePosition, leadingPosition, index - value)!; } else { - offset = trailingPosition == null - ? middlePosition - : lerpDouble(middlePosition, trailingPosition, value - index)!; + offset = trailingPosition == null ? middlePosition : lerpDouble(middlePosition, trailingPosition, value - index)!; } _scrollController!.jumpTo(offset); @@ -601,8 +574,7 @@ class _FlutterFlowButtonTabBarState extends State } // Called each time layout completes. - void _saveTabOffsets( - List tabOffsets, TextDirection textDirection, double width) { + void _saveTabOffsets(List tabOffsets, TextDirection textDirection, double width) { _tabStripWidth = width; _indicatorPainter?.saveTabOffsets(tabOffsets, textDirection); } @@ -626,52 +598,34 @@ class _FlutterFlowButtonTabBarState extends State } final TextStyle? textStyle = TextStyle.lerp( - (widget.unselectedLabelStyle ?? - tabBarTheme.labelStyle ?? - DefaultTextStyle.of(context).style) - .copyWith( + (widget.unselectedLabelStyle ?? tabBarTheme.labelStyle ?? DefaultTextStyle.of(context).style).copyWith( color: widget.unselectedLabelColor, ), - (widget.labelStyle ?? - tabBarTheme.labelStyle ?? - DefaultTextStyle.of(context).style) - .copyWith( + (widget.labelStyle ?? tabBarTheme.labelStyle ?? DefaultTextStyle.of(context).style).copyWith( color: widget.labelColor, ), animationValue); - final Color? textColor = Color.lerp( - widget.unselectedLabelColor, widget.labelColor, animationValue); + final Color? textColor = Color.lerp(widget.unselectedLabelColor, widget.labelColor, animationValue); - final Color? borderColor = Color.lerp( - widget.unselectedBorderColor, widget.borderColor, animationValue); + final Color? borderColor = Color.lerp(widget.unselectedBorderColor, widget.borderColor, animationValue); BoxDecoration? boxDecoration = BoxDecoration.lerp( BoxDecoration( - color: widget.unselectedDecoration?.color ?? - widget.unselectedBackgroundColor ?? - Colors.transparent, + color: widget.unselectedDecoration?.color ?? widget.unselectedBackgroundColor ?? Colors.transparent, boxShadow: widget.unselectedDecoration?.boxShadow, gradient: widget.unselectedDecoration?.gradient, - borderRadius: widget.useToggleButtonStyle - ? null - : BorderRadius.circular(widget.borderRadius), + borderRadius: widget.useToggleButtonStyle ? null : BorderRadius.circular(widget.borderRadius), ), BoxDecoration( - color: widget.decoration?.color ?? - widget.backgroundColor ?? - Colors.transparent, + color: widget.decoration?.color ?? widget.backgroundColor ?? Colors.transparent, boxShadow: widget.decoration?.boxShadow, gradient: widget.decoration?.gradient, - borderRadius: widget.useToggleButtonStyle - ? null - : BorderRadius.circular(widget.borderRadius), + borderRadius: widget.useToggleButtonStyle ? null : BorderRadius.circular(widget.borderRadius), ), animationValue); - if (widget.useToggleButtonStyle && - widget.borderWidth > 0 && - boxDecoration != null) { + if (widget.useToggleButtonStyle && widget.borderWidth > 0 && boxDecoration != null) { if (index == 0) { boxDecoration = boxDecoration.copyWith( border: Border( @@ -705,13 +659,11 @@ class _FlutterFlowButtonTabBarState extends State return Padding( key: _tabKeys[index], // padding for the buttons - padding: - widget.useToggleButtonStyle ? EdgeInsets.zero : widget.buttonMargin, + padding: widget.useToggleButtonStyle ? EdgeInsets.zero : widget.buttonMargin, child: TextButton( onPressed: () => _handleTap(index), style: ButtonStyle( - elevation: WidgetStateProperty.all( - widget.useToggleButtonStyle ? 0 : widget.elevation), + elevation: WidgetStateProperty.all(widget.useToggleButtonStyle ? 0 : widget.elevation), /// give a pretty small minimum size minimumSize: WidgetStateProperty.all(const Size(10, 10)), @@ -777,14 +729,11 @@ class _FlutterFlowButtonTabBarState extends State if (_controller!.length == 0) { return Container( - height: _kTabHeight + - widget.labelPadding.vertical + - widget.buttonMargin.vertical, + height: _kTabHeight + widget.labelPadding.vertical + widget.buttonMargin.vertical, ); } - final List wrappedTabs = - List.generate(widget.tabs.length, (int index) { + final List wrappedTabs = List.generate(widget.tabs.length, (int index) { return _buildStyledTab(widget.tabs[index], index); }); @@ -853,4 +802,4 @@ class _FlutterFlowButtonTabBarState extends State return tabBar; } -} \ No newline at end of file +} diff --git a/lib/flutter_flow/flutter_flow_checkbox_group.dart b/lib/flutter_flow/flutter_flow_checkbox_group.dart index fc089d10..8f367952 100644 --- a/lib/flutter_flow/flutter_flow_checkbox_group.dart +++ b/lib/flutter_flow/flutter_flow_checkbox_group.dart @@ -6,7 +6,6 @@ import 'package:flutter/scheduler.dart'; //// - class FlutterFlowCheckboxGroup extends StatefulWidget { const FlutterFlowCheckboxGroup({ super.key, @@ -38,8 +37,7 @@ class FlutterFlowCheckboxGroup extends StatefulWidget { final TextStyle? unselectedTextStyle; @override - State createState() => - _FlutterFlowCheckboxGroupState(); + State createState() => _FlutterFlowCheckboxGroupState(); } class _FlutterFlowCheckboxGroupState extends State { @@ -87,8 +85,7 @@ class _FlutterFlowCheckboxGroupState extends State { itemBuilder: (context, index) { final option = widget.options[index]; final selected = selectedValues.contains(option); - final unselectedTextStyle = - widget.unselectedTextStyle ?? widget.textStyle; + final unselectedTextStyle = widget.unselectedTextStyle ?? widget.textStyle; return Theme( data: ThemeData(unselectedWidgetColor: widget.checkboxBorderColor), child: Padding( @@ -102,9 +99,7 @@ class _FlutterFlowCheckboxGroupState extends State { if (isSelected == null) { return; } - isSelected - ? checkboxValues.add(option) - : checkboxValues.remove(option); + isSelected ? checkboxValues.add(option) : checkboxValues.remove(option); widget.controller.value = List.from(checkboxValues); setState(() {}); } @@ -112,8 +107,7 @@ class _FlutterFlowCheckboxGroupState extends State { activeColor: widget.activeColor, checkColor: widget.checkColor, shape: RoundedRectangleBorder( - borderRadius: - widget.checkboxBorderRadius ?? BorderRadius.zero, + borderRadius: widget.checkboxBorderRadius ?? BorderRadius.zero, ), materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, visualDensity: VisualDensity.compact, @@ -123,8 +117,7 @@ class _FlutterFlowCheckboxGroupState extends State { padding: widget.labelPadding ?? EdgeInsets.zero, child: Text( widget.options[index], - style: - selected ? widget.textStyle : unselectedTextStyle, + style: selected ? widget.textStyle : unselectedTextStyle, ), ), ), @@ -134,4 +127,4 @@ class _FlutterFlowCheckboxGroupState extends State { ); }, ); -} \ No newline at end of file +} diff --git a/lib/flutter_flow/flutter_flow_drop_down.dart b/lib/flutter_flow/flutter_flow_drop_down.dart index 493a9e50..3988efa6 100644 --- a/lib/flutter_flow/flutter_flow_drop_down.dart +++ b/lib/flutter_flow/flutter_flow_drop_down.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'form_field_controller.dart'; - class FlutterFlowDropDown extends StatefulWidget { const FlutterFlowDropDown({ super.key, @@ -87,13 +86,10 @@ class FlutterFlowDropDown extends StatefulWidget { class _FlutterFlowDropDownState extends State> { bool get isMultiSelect => widget.isMultiSelect; FormFieldController get controller => widget.controller!; - FormFieldController?> get multiSelectController => - widget.multiSelectController!; + FormFieldController?> get multiSelectController => widget.multiSelectController!; T? get currentValue { - final value = isMultiSelect - ? multiSelectController.value?.firstOrNull - : controller.value; + final value = isMultiSelect ? multiSelectController.value?.firstOrNull : controller.value; return widget.options.contains(value) ? value : null; } @@ -101,17 +97,14 @@ class _FlutterFlowDropDownState extends State> { if (!isMultiSelect || multiSelectController.value == null) { return {}; } - return widget.options - .toSet() - .intersection(multiSelectController.value!.toSet()); + return widget.options.toSet().intersection(multiSelectController.value!.toSet()); } Map get optionLabels => Map.fromEntries( widget.options.asMap().entries.map( (option) => MapEntry( option.value, - widget.optionLabels == null || - widget.optionLabels!.length < option.key + 1 + widget.optionLabels == null || widget.optionLabels!.length < option.key + 1 ? option.value.toString() : widget.optionLabels![option.key], ), @@ -130,8 +123,7 @@ class _FlutterFlowDropDownState extends State> { void initState() { super.initState(); if (isMultiSelect) { - _listener = - () => widget.onMultiSelectChanged!(multiSelectController.value); + _listener = () => widget.onMultiSelectChanged!(multiSelectController.value); multiSelectController.addListener(_listener); } else { _listener = () => widget.onChanged!(controller.value); @@ -166,22 +158,16 @@ class _FlutterFlowDropDownState extends State> { ), child: Padding( padding: _useDropdown2() ? EdgeInsets.zero : widget.margin, - child: widget.hidesUnderline - ? DropdownButtonHideUnderline(child: dropdownWidget) - : dropdownWidget, + child: widget.hidesUnderline ? DropdownButtonHideUnderline(child: dropdownWidget) : dropdownWidget, ), ), ); } bool _useDropdown2() => - widget.isMultiSelect || - widget.isSearchable || - !widget.isOverButton || - widget.maxHeight != null; + widget.isMultiSelect || widget.isSearchable || !widget.isOverButton || widget.maxHeight != null; - Widget _buildDropdownWidget() => - _useDropdown2() ? _buildDropdown() : _buildLegacyDropdown(); + Widget _buildDropdownWidget() => _useDropdown2() ? _buildDropdown() : _buildLegacyDropdown(); Widget _buildLegacyDropdown() { return DropdownButtonFormField( @@ -195,20 +181,14 @@ class _FlutterFlowDropDownState extends State> { dropdownColor: widget.fillColor, focusColor: Colors.transparent, decoration: InputDecoration( - labelText: widget.labelText == null || widget.labelText!.isEmpty - ? null - : widget.labelText, + labelText: widget.labelText == null || widget.labelText!.isEmpty ? null : widget.labelText, labelStyle: widget.labelTextStyle, - border: widget.hidesUnderline - ? InputBorder.none - : const UnderlineInputBorder(), + border: widget.hidesUnderline ? InputBorder.none : const UnderlineInputBorder(), ), ); } - Text? _createHintText() => widget.hintText != null - ? Text(widget.hintText!, style: widget.textStyle) - : null; + Text? _createHintText() => widget.hintText != null ? Text(widget.hintText!, style: widget.textStyle) : null; List> _createMenuItems() => widget.options .map( @@ -229,14 +209,11 @@ class _FlutterFlowDropDownState extends State> { enabled: false, child: StatefulBuilder( builder: (context, menuSetState) { - final isSelected = - multiSelectController.value?.contains(item) ?? false; + final isSelected = multiSelectController.value?.contains(item) ?? false; return InkWell( onTap: () { multiSelectController.value ??= []; - isSelected - ? multiSelectController.value!.remove(item) - : multiSelectController.value!.add(item); + isSelected ? multiSelectController.value!.remove(item) : multiSelectController.value!.add(item); multiSelectController.update(); // This rebuilds the StatefulWidget to update the button's text. setState(() {}); @@ -269,11 +246,9 @@ class _FlutterFlowDropDownState extends State> { .toList(); Widget _buildDropdown() { - final overlayColor = WidgetStateProperty.resolveWith((states) => - states.contains(WidgetState.focused) ? Colors.transparent : null); - final iconStyleData = widget.icon != null - ? IconStyleData(icon: widget.icon!) - : const IconStyleData(); + final overlayColor = WidgetStateProperty.resolveWith( + (states) => states.contains(WidgetState.focused) ? Colors.transparent : null); + final iconStyleData = widget.icon != null ? IconStyleData(icon: widget.icon!) : const IconStyleData(); return DropdownButton2( value: currentValue, hint: _createHintText(), @@ -299,19 +274,14 @@ class _FlutterFlowDropDownState extends State> { maxHeight: widget.maxHeight, padding: EdgeInsets.zero, ), - onChanged: widget.disabled - ? null - : (isMultiSelect ? (_) {} : (val) => widget.controller!.value = val), + onChanged: widget.disabled ? null : (isMultiSelect ? (_) {} : (val) => widget.controller!.value = val), isExpanded: true, selectedItemBuilder: (context) => widget.options .map((item) => Align( alignment: AlignmentDirectional.centerStart, child: Text( isMultiSelect - ? currentValues - .where((v) => optionLabels.containsKey(v)) - .map((v) => optionLabels[v]) - .join(', ') + ? currentValues.where((v) => optionLabels.containsKey(v)).map((v) => optionLabels[v]).join(', ') : optionLabels[item]!, style: widget.textStyle, maxLines: 1, @@ -351,9 +321,7 @@ class _FlutterFlowDropDownState extends State> { ), ), searchMatchFn: (item, searchValue) { - return (optionLabels[item.value] ?? '') - .toLowerCase() - .contains(searchValue.toLowerCase()); + return (optionLabels[item.value] ?? '').toLowerCase().contains(searchValue.toLowerCase()); }, ) : null, diff --git a/lib/flutter_flow/flutter_flow_icon_button.dart b/lib/flutter_flow/flutter_flow_icon_button.dart index d41b72bb..69e35057 100644 --- a/lib/flutter_flow/flutter_flow_icon_button.dart +++ b/lib/flutter_flow/flutter_flow_icon_button.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - - class FlutterFlowIconButton extends StatefulWidget { const FlutterFlowIconButton({ super.key, @@ -92,12 +90,10 @@ class _FlutterFlowIconButtonState extends State { ), iconColor: WidgetStateProperty.resolveWith( (states) { - if (states.contains(WidgetState.disabled) && - widget.disabledIconColor != null) { + if (states.contains(WidgetState.disabled) && widget.disabledIconColor != null) { return widget.disabledIconColor; } - if (states.contains(WidgetState.hovered) && - widget.hoverIconColor != null) { + if (states.contains(WidgetState.hovered) && widget.hoverIconColor != null) { return widget.hoverIconColor; } return iconColor; @@ -105,12 +101,10 @@ class _FlutterFlowIconButtonState extends State { ), backgroundColor: WidgetStateProperty.resolveWith( (states) { - if (states.contains(WidgetState.disabled) && - widget.disabledColor != null) { + if (states.contains(WidgetState.disabled) && widget.disabledColor != null) { return widget.disabledColor; } - if (states.contains(WidgetState.hovered) && - widget.hoverColor != null) { + if (states.contains(WidgetState.hovered) && widget.hoverColor != null) { return widget.hoverColor; } @@ -169,4 +163,4 @@ class _FlutterFlowIconButtonState extends State { ), ); } -} \ No newline at end of file +} diff --git a/lib/flutter_flow/flutter_flow_model.dart b/lib/flutter_flow/flutter_flow_model.dart index 93752ff6..f5b7af2e 100644 --- a/lib/flutter_flow/flutter_flow_model.dart +++ b/lib/flutter_flow/flutter_flow_model.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:provider/provider.dart'; - Widget wrapWithModel({ required T model, required Widget child, @@ -112,8 +111,7 @@ class FlutterFlowDynamicModels { } S? getValueAtIndex(int index, S? Function(T) getValue) { - final uniqueKey = - _childrenIndexes.entries.firstWhereOrNull((e) => e.value == index)?.key; + final uniqueKey = _childrenIndexes.entries.firstWhereOrNull((e) => e.value == index)?.key; return getValueForKey(uniqueKey, getValue); } @@ -163,6 +161,5 @@ T? _getDefaultValue() { } extension TextValidationExtensions on String? Function(BuildContext, String?)? { - String? Function(String?)? asValidator(BuildContext context) => - this != null ? (val) => this!(context, val) : null; -} \ No newline at end of file + String? Function(String?)? asValidator(BuildContext context) => this != null ? (val) => this!(context, val) : null; +} diff --git a/lib/flutter_flow/flutter_flow_theme.dart b/lib/flutter_flow/flutter_flow_theme.dart index 0832ea68..fa892eb1 100644 --- a/lib/flutter_flow/flutter_flow_theme.dart +++ b/lib/flutter_flow/flutter_flow_theme.dart @@ -13,6 +13,7 @@ enum DeviceSize { tablet, desktop, } + DeviceSize getDeviceSize(BuildContext context) { final width = MediaQuery.sizeOf(context).width; if (width < 479) { @@ -27,8 +28,7 @@ DeviceSize getDeviceSize(BuildContext context) { abstract class FlutterFlowTheme { static DeviceSize deviceSize = DeviceSize.mobile; - static Future initialize() async => - _prefs = await SharedPreferences.getInstance(); + static Future initialize() async => _prefs = await SharedPreferences.getInstance(); static ThemeMode get themeMode { final darkMode = _prefs?.getBool(kThemeModeKey); return darkMode == null @@ -37,14 +37,12 @@ abstract class FlutterFlowTheme { ? ThemeMode.dark : ThemeMode.light; } - static void saveThemeMode(ThemeMode mode) => mode == ThemeMode.system - ? _prefs?.remove(kThemeModeKey) - : _prefs?.setBool(kThemeModeKey, mode == ThemeMode.dark); + + static void saveThemeMode(ThemeMode mode) => + mode == ThemeMode.system ? _prefs?.remove(kThemeModeKey) : _prefs?.setBool(kThemeModeKey, mode == ThemeMode.dark); static FlutterFlowTheme of(BuildContext context) { deviceSize = getDeviceSize(context); - return Theme.of(context).brightness == Brightness.dark - ? DarkModeTheme() - : LightModeTheme(); + return Theme.of(context).brightness == Brightness.dark ? DarkModeTheme() : LightModeTheme(); } @Deprecated('Use primary instead') @@ -145,6 +143,7 @@ abstract class FlutterFlowTheme { DeviceSize.desktop: DesktopTypography(this), }[deviceSize]!; } + class LightModeTheme extends FlutterFlowTheme { @Deprecated('Use primary instead') Color get primaryColor => primary; @@ -178,6 +177,7 @@ class LightModeTheme extends FlutterFlowTheme { late Color customColor5 = const Color(0xFF979595); late Color customColor6 = const Color(0xFF525252); } + class DarkModeTheme extends FlutterFlowTheme { @Deprecated('Use primary instead') Color get primaryColor => primary; @@ -244,6 +244,7 @@ abstract class Typography { String get bodySmallFamily; TextStyle get bodySmall; } + class MobileTypography extends Typography { MobileTypography(this.theme); @@ -352,8 +353,8 @@ class MobileTypography extends Typography { fontWeight: FontWeight.normal, fontSize: 12.0, ); - } + class TabletTypography extends Typography { TabletTypography(this.theme); final FlutterFlowTheme theme; @@ -462,8 +463,8 @@ class TabletTypography extends Typography { fontSize: 12.0, ); } -class DesktopTypography extends Typography { +class DesktopTypography extends Typography { DesktopTypography(this.theme); final FlutterFlowTheme theme; String get displayLargeFamily => 'Nunito Sans'; diff --git a/lib/flutter_flow/flutter_flow_util.dart b/lib/flutter_flow/flutter_flow_util.dart index 46f249a2..09a7b7f9 100644 --- a/lib/flutter_flow/flutter_flow_util.dart +++ b/lib/flutter_flow/flutter_flow_util.dart @@ -68,8 +68,7 @@ Theme wrapInMaterialDatePickerTheme( required double iconSize, }) { final baseTheme = Theme.of(context); - final dateTimeMaterialStateForegroundColor = - WidgetStateProperty.resolveWith((states) { + final dateTimeMaterialStateForegroundColor = WidgetStateProperty.resolveWith((states) { if (states.contains(WidgetState.disabled)) { return pickerForegroundColor.withOpacity(0.60); } @@ -82,8 +81,7 @@ Theme wrapInMaterialDatePickerTheme( return null; }); - final dateTimeMaterialStateBackgroundColor = - WidgetStateProperty.resolveWith((states) { + final dateTimeMaterialStateBackgroundColor = WidgetStateProperty.resolveWith((states) { if (states.contains(WidgetState.selected)) { return selectedDateTimeBackgroundColor; } @@ -152,8 +150,7 @@ Theme wrapInMaterialDatePickerTheme( if (states.contains(WidgetState.hovered)) { return actionButtonForegroundColor.withOpacity(0.04); } - if (states.contains(WidgetState.focused) || - states.contains(WidgetState.pressed)) { + if (states.contains(WidgetState.focused) || states.contains(WidgetState.pressed)) { return actionButtonForegroundColor.withOpacity(0.12); } return null; @@ -252,8 +249,7 @@ Theme wrapInMaterialTimePickerTheme( if (states.contains(WidgetState.hovered)) { return actionButtonForegroundColor.withOpacity(0.04); } - if (states.contains(WidgetState.focused) || - states.contains(WidgetState.pressed)) { + if (states.contains(WidgetState.focused) || states.contains(WidgetState.pressed)) { return actionButtonForegroundColor.withOpacity(0.12); } return null; @@ -265,20 +261,14 @@ Theme wrapInMaterialTimePickerTheme( hourMinuteTextColor: pickerForegroundColor, dialHandColor: selectedDateTimeBackgroundColor, dialTextColor: WidgetStateColor.resolveWith((states) => - states.contains(WidgetState.selected) - ? selectedDateTimeForegroundColor - : pickerDialForegroundColor), + states.contains(WidgetState.selected) ? selectedDateTimeForegroundColor : pickerDialForegroundColor), dayPeriodBorderSide: BorderSide( color: pickerForegroundColor, ), dayPeriodTextColor: WidgetStateColor.resolveWith((states) => - states.contains(WidgetState.selected) - ? selectedDateTimeForegroundColor - : pickerForegroundColor), - dayPeriodColor: WidgetStateColor.resolveWith((states) => - states.contains(WidgetState.selected) - ? selectedDateTimeBackgroundColor - : Colors.transparent), + states.contains(WidgetState.selected) ? selectedDateTimeForegroundColor : pickerForegroundColor), + dayPeriodColor: WidgetStateColor.resolveWith( + (states) => states.contains(WidgetState.selected) ? selectedDateTimeBackgroundColor : Colors.transparent), entryModeIconColor: pickerForegroundColor, ), ), @@ -361,8 +351,7 @@ String formatNumber( break; case FormatType.custom: final hasLocale = locale != null && locale.isNotEmpty; - formattedValue = - NumberFormat(format, hasLocale ? locale : null).format(value); + formattedValue = NumberFormat(format, hasLocale ? locale : null).format(value); } if (formattedValue.isEmpty) { @@ -370,9 +359,7 @@ String formatNumber( } if (currency != null) { - final currencySymbol = currency.isNotEmpty - ? currency - : NumberFormat.simpleCurrency().format(0.0).substring(0, 1); + final currencySymbol = currency.isNotEmpty ? currency : NumberFormat.simpleCurrency().format(0.0).substring(0, 1); formattedValue = '$currencySymbol$formattedValue'; } @@ -430,9 +417,7 @@ dynamic getJsonField( } final value = field.first.value; if (isForList) { - return value is! Iterable - ? [value] - : (value is List ? value : value.toList()); + return value is! Iterable ? [value] : (value is List ? value : value.toList()); } return value; } @@ -453,8 +438,7 @@ bool get isWeb => kIsWeb; const kBreakpointSmall = 479.0; const kBreakpointMedium = 767.0; const kBreakpointLarge = 991.0; -bool isMobileWidth(BuildContext context) => - MediaQuery.sizeOf(context).width < kBreakpointSmall; +bool isMobileWidth(BuildContext context) => MediaQuery.sizeOf(context).width < kBreakpointSmall; bool responsiveVisibility({ required BuildContext context, bool phone = true, @@ -487,28 +471,21 @@ extension FFTextEditingControllerExt on TextEditingController? { } extension IterableExt on Iterable { - List sortedList( - {S Function(T)? keyOf, bool desc = false}) { - final sortedAscending = toList() - ..sort(keyOf == null ? null : ((a, b) => keyOf(a).compareTo(keyOf(b)))); + List sortedList({S Function(T)? keyOf, bool desc = false}) { + final sortedAscending = toList()..sort(keyOf == null ? null : ((a, b) => keyOf(a).compareTo(keyOf(b)))); if (desc) { return sortedAscending.reversed.toList(); } return sortedAscending; } - List mapIndexed(S Function(int, T) func) => toList() - .asMap() - .map((index, value) => MapEntry(index, func(index, value))) - .values - .toList(); + List mapIndexed(S Function(int, T) func) => + toList().asMap().map((index, value) => MapEntry(index, func(index, value))).values.toList(); } -void setAppLanguage(BuildContext context, String language) => - App.of(context).setLocale(language); +void setAppLanguage(BuildContext context, String language) => App.of(context).setLocale(language); -void setDarkModeSetting(BuildContext context, ThemeMode themeMode) => - App.of(context).setThemeMode(themeMode); +void setDarkModeSetting(BuildContext context, ThemeMode themeMode) => App.of(context).setThemeMode(themeMode); void showSnackbar( BuildContext context, @@ -542,9 +519,7 @@ void showSnackbar( ], ), duration: Duration(seconds: duration), - backgroundColor: error - ? FlutterFlowTheme.of(context).error - : FlutterFlowTheme.of(context).success, + backgroundColor: error ? FlutterFlowTheme.of(context).error : FlutterFlowTheme.of(context).success, behavior: SnackBarBehavior.floating, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(30), @@ -553,8 +528,7 @@ void showSnackbar( ); } -void showAlertDialog(BuildContext context, String title, String content, - Future Function() action) { +void showAlertDialog(BuildContext context, String title, String content, Future Function() action) { showDialog( context: context, builder: (context) { @@ -620,9 +594,7 @@ void showAlertDialog(BuildContext context, String title, String content, extension FFStringExt on String { String maybeHandleOverflow({int? maxChars, String replacement = ''}) => - maxChars != null && length > maxChars - ? replaceRange(maxChars, null, replacement) - : this; + maxChars != null && length > maxChars ? replaceRange(maxChars, null, replacement) : this; } extension ListFilterExt on Iterable { @@ -631,16 +603,13 @@ extension ListFilterExt on Iterable { extension MapFilterExtensions on Map { Map get withoutNulls => Map.fromEntries( - entries - .where((e) => e.value != null) - .map((e) => MapEntry(e.key, e.value as T)), + entries.where((e) => e.value != null).map((e) => MapEntry(e.key, e.value as T)), ); } extension MapListContainsExt on List { - bool containsMap(dynamic map) => map is Map - ? any((e) => e is Map && const DeepCollectionEquality().equals(e, map)) - : contains(map); + bool containsMap(dynamic map) => + map is Map ? any((e) => e is Map && const DeepCollectionEquality().equals(e, map)) : contains(map); } extension ListDivideExt on Iterable { @@ -648,23 +617,17 @@ extension ListDivideExt on Iterable { List divide(Widget t, {bool Function(int)? filterFn}) => isEmpty ? [] - : (enumerate - .map((e) => [e.value, if (filterFn == null || filterFn(e.key)) t]) - .expand((i) => i) - .toList() + : (enumerate.map((e) => [e.value, if (filterFn == null || filterFn(e.key)) t]).expand((i) => i).toList() ..removeLast()); List around(Widget t) => addToStart(t).addToEnd(t); - List addToStart(Widget t) => - enumerate.map((e) => e.value).toList()..insert(0, t); + List addToStart(Widget t) => enumerate.map((e) => e.value).toList()..insert(0, t); - List addToEnd(Widget t) => - enumerate.map((e) => e.value).toList()..add(t); + List addToEnd(Widget t) => enumerate.map((e) => e.value).toList()..add(t); List paddingTopEach(double val) => - map((w) => Padding(padding: EdgeInsets.only(top: val), child: w)) - .toList(); + map((w) => Padding(padding: EdgeInsets.only(top: val), child: w)).toList(); } extension StatefulWidgetExtensions on State { diff --git a/lib/flutter_flow/flutter_flow_widgets.dart b/lib/flutter_flow/flutter_flow_widgets.dart index f9db2be0..e2c5d18e 100644 --- a/lib/flutter_flow/flutter_flow_widgets.dart +++ b/lib/flutter_flow/flutter_flow_widgets.dart @@ -2,7 +2,6 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:flutter/material.dart'; import 'package:auto_size_text/auto_size_text.dart'; - class FFButtonOptions { const FFButtonOptions({ this.textAlign, @@ -75,16 +74,13 @@ class _FFButtonWidgetState extends State { bool loading = false; int get maxLines => widget.options.maxLines ?? 1; - String? get text => - widget.options.textStyle?.fontSize == 0 ? null : widget.text; + String? get text => widget.options.textStyle?.fontSize == 0 ? null : widget.text; @override Widget build(BuildContext context) { Widget textWidget = loading ? SizedBox( - width: widget.options.width == null - ? _getTextWidth(text, widget.options.textStyle, maxLines) - : null, + width: widget.options.width == null ? _getTextWidth(text, widget.options.textStyle, maxLines) : null, child: Center( child: SizedBox( width: 23, @@ -99,8 +95,7 @@ class _FFButtonWidgetState extends State { ) : AutoSizeText( text ?? '', - style: - text == null ? null : widget.options.textStyle?.withoutColor(), + style: text == null ? null : widget.options.textStyle?.withoutColor(), textAlign: widget.options.textAlign, maxLines: maxLines, overflow: TextOverflow.ellipsis, @@ -127,29 +122,24 @@ class _FFButtonWidgetState extends State { ButtonStyle style = ButtonStyle( shape: WidgetStateProperty.resolveWith( (states) { - if (states.contains(WidgetState.hovered) && - widget.options.hoverBorderSide != null) { + if (states.contains(WidgetState.hovered) && widget.options.hoverBorderSide != null) { return RoundedRectangleBorder( - borderRadius: - widget.options.borderRadius ?? BorderRadius.circular(8), + borderRadius: widget.options.borderRadius ?? BorderRadius.circular(8), side: widget.options.hoverBorderSide!, ); } return RoundedRectangleBorder( - borderRadius: - widget.options.borderRadius ?? BorderRadius.circular(8), + borderRadius: widget.options.borderRadius ?? BorderRadius.circular(8), side: widget.options.borderSide ?? BorderSide.none, ); }, ), foregroundColor: WidgetStateProperty.resolveWith( (states) { - if (states.contains(WidgetState.disabled) && - widget.options.disabledTextColor != null) { + if (states.contains(WidgetState.disabled) && widget.options.disabledTextColor != null) { return widget.options.disabledTextColor; } - if (states.contains(WidgetState.hovered) && - widget.options.hoverTextColor != null) { + if (states.contains(WidgetState.hovered) && widget.options.hoverTextColor != null) { return widget.options.hoverTextColor; } return widget.options.textStyle?.color ?? Colors.white; @@ -157,12 +147,10 @@ class _FFButtonWidgetState extends State { ), backgroundColor: WidgetStateProperty.resolveWith( (states) { - if (states.contains(WidgetState.disabled) && - widget.options.disabledColor != null) { + if (states.contains(WidgetState.disabled) && widget.options.disabledColor != null) { return widget.options.disabledColor; } - if (states.contains(WidgetState.hovered) && - widget.options.hoverColor != null) { + if (states.contains(WidgetState.hovered) && widget.options.hoverColor != null) { return widget.options.hoverColor; } return widget.options.color; @@ -174,12 +162,11 @@ class _FFButtonWidgetState extends State { } return widget.options.hoverColor == null ? null : Colors.transparent; }), - padding: WidgetStateProperty.all(widget.options.padding ?? - const EdgeInsets.symmetric(horizontal: 12.0, vertical: 4.0)), + padding: WidgetStateProperty.all( + widget.options.padding ?? const EdgeInsets.symmetric(horizontal: 12.0, vertical: 4.0)), elevation: WidgetStateProperty.resolveWith( (states) { - if (states.contains(WidgetState.hovered) && - widget.options.hoverElevation != null) { + if (states.contains(WidgetState.hovered) && widget.options.hoverElevation != null) { return widget.options.hoverElevation!; } return widget.options.elevation ?? 2.0; @@ -203,8 +190,7 @@ class _FFButtonWidgetState extends State { border: Border.fromBorderSide( widget.options.borderSide ?? BorderSide.none, ), - borderRadius: - widget.options.borderRadius ?? BorderRadius.circular(8), + borderRadius: widget.options.borderRadius ?? BorderRadius.circular(8), ), child: IconButton( splashRadius: 1.0, @@ -277,13 +263,12 @@ extension _WithoutColorExtension on TextStyle { } // Slightly hacky method of getting the layout width of the provided text. -double? _getTextWidth(String? text, TextStyle? style, int maxLines) => - text != null - ? (TextPainter( - text: TextSpan(text: text, style: style), - textDirection: TextDirection.ltr, - maxLines: maxLines, - )..layout()) - .size - .width - : null; \ No newline at end of file +double? _getTextWidth(String? text, TextStyle? style, int maxLines) => text != null + ? (TextPainter( + text: TextSpan(text: text, style: style), + textDirection: TextDirection.ltr, + maxLines: maxLines, + )..layout()) + .size + .width + : null; diff --git a/lib/flutter_flow/form_field_controller.dart b/lib/flutter_flow/form_field_controller.dart index 1d152bb9..b8d79ccb 100644 --- a/lib/flutter_flow/form_field_controller.dart +++ b/lib/flutter_flow/form_field_controller.dart @@ -1,6 +1,5 @@ import 'package:flutter/foundation.dart'; - class FormFieldController extends ValueNotifier { FormFieldController(this.initialValue) : super(initialValue); @@ -16,9 +15,8 @@ class FormFieldController extends ValueNotifier { class FormListFieldController extends FormFieldController> { final List? _initialListValue; - FormListFieldController(super.initialValue) - : _initialListValue = List.from(initialValue ?? []); + FormListFieldController(super.initialValue) : _initialListValue = List.from(initialValue ?? []); @override void reset() => value = List.from(_initialListValue ?? []); -} \ No newline at end of file +} diff --git a/lib/flutter_flow/internationalization.dart b/lib/flutter_flow/internationalization.dart index ffb64dcd..a7fd9712 100644 --- a/lib/flutter_flow/internationalization.dart +++ b/lib/flutter_flow/internationalization.dart @@ -9,16 +9,13 @@ class FFLocalizations { final Locale locale; - static FFLocalizations of(BuildContext context) => - Localizations.of(context, FFLocalizations)!; + static FFLocalizations of(BuildContext context) => Localizations.of(context, FFLocalizations)!; static List languages() => ['pt', 'en']; static late SharedPreferences _prefs; - static Future initialize() async => - _prefs = await SharedPreferences.getInstance(); - static Future storeLocale(String locale) => - _prefs.setString(_kLocaleStorageKey, locale); + static Future initialize() async => _prefs = await SharedPreferences.getInstance(); + static Future storeLocale(String locale) => _prefs.setString(_kLocaleStorageKey, locale); static Locale? getStoredLocale() { final locale = _prefs.getString(_kLocaleStorageKey); return locale != null && locale.isNotEmpty ? createLocale(locale) : null; @@ -26,15 +23,10 @@ class FFLocalizations { String get languageCode => locale.toString(); String? get languageShortCode => - _languagesWithShortCode.contains(locale.toString()) - ? '${locale.toString()}_short' - : null; - int get languageIndex => languages().contains(languageCode) - ? languages().indexOf(languageCode) - : 0; + _languagesWithShortCode.contains(locale.toString()) ? '${locale.toString()}_short' : null; + int get languageIndex => languages().contains(languageCode) ? languages().indexOf(languageCode) : 0; - String getText(String key) => - (kTranslationsMap[key] ?? {})[locale.toString()] ?? ''; + String getText(String key) => (kTranslationsMap[key] ?? {})[locale.toString()] ?? ''; String getVariableText({ String? ptText = '', @@ -83,15 +75,12 @@ class FFLocalizationsDelegate extends LocalizationsDelegate { bool isSupported(Locale locale) { final language = locale.toString(); return FFLocalizations.languages().contains( - language.endsWith('_') - ? language.substring(0, language.length - 1) - : language, + language.endsWith('_') ? language.substring(0, language.length - 1) : language, ); } @override - Future load(Locale locale) => - SynchronousFuture(FFLocalizations(locale)); + Future load(Locale locale) => SynchronousFuture(FFLocalizations(locale)); @override bool shouldReload(FFLocalizationsDelegate old) => false; @@ -1062,10 +1051,8 @@ final kTranslationsMap = >>[ 'en': 'FORGOT YOUR PASSWORD?', }, 'wu2f7yzo': { - 'pt': - 'Não se preucupe nós vamos te ajudar, digite o email cadastrado no aplicativo e clique em enviar.', - 'en': - 'Don\'t worry, we will help you, enter the email registered in the application and click send.', + 'pt': 'Não se preucupe nós vamos te ajudar, digite o email cadastrado no aplicativo e clique em enviar.', + 'en': 'Don\'t worry, we will help you, enter the email registered in the application and click send.', }, 'mtz8l7ft': { 'pt': 'E-mail', @@ -1180,10 +1167,8 @@ final kTranslationsMap = >>[ 'en': 'ENTER YOUR PASSWORD', }, 'ujodm2ci': { - 'pt': - 'Para gerar o QR Code digite a senha cadastrada no aplicativo e clique em enviar.', - 'en': - 'To generate the QR Code, enter the password registered in the application and click send.', + 'pt': 'Para gerar o QR Code digite a senha cadastrada no aplicativo e clique em enviar.', + 'en': 'To generate the QR Code, enter the password registered in the application and click send.', }, 'rfqrdet7': { 'pt': 'Senha', diff --git a/lib/flutter_flow/keep_alive_wrapper.dart b/lib/flutter_flow/keep_alive_wrapper.dart index fd9c5150..464ba0ca 100644 --- a/lib/flutter_flow/keep_alive_wrapper.dart +++ b/lib/flutter_flow/keep_alive_wrapper.dart @@ -12,8 +12,7 @@ class KeepAliveWidgetWrapper extends StatefulWidget { State createState() => _KeepAliveWidgetWrapperState(); } -class _KeepAliveWidgetWrapperState extends State - with AutomaticKeepAliveClientMixin { +class _KeepAliveWidgetWrapperState extends State with AutomaticKeepAliveClientMixin { @override bool get wantKeepAlive => true; @@ -22,4 +21,4 @@ class _KeepAliveWidgetWrapperState extends State super.build(context); return widget.builder(context); } -} \ No newline at end of file +} diff --git a/lib/flutter_flow/lat_lng.dart b/lib/flutter_flow/lat_lng.dart index 68758f91..88ef1eae 100644 --- a/lib/flutter_flow/lat_lng.dart +++ b/lib/flutter_flow/lat_lng.dart @@ -12,8 +12,5 @@ class LatLng { int get hashCode => latitude.hashCode + longitude.hashCode; @override - bool operator ==(other) => - other is LatLng && - latitude == other.latitude && - longitude == other.longitude; -} \ No newline at end of file + bool operator ==(other) => other is LatLng && latitude == other.latitude && longitude == other.longitude; +} diff --git a/lib/flutter_flow/nav/nav.dart b/lib/flutter_flow/nav/nav.dart index bbcd1463..a06834f3 100644 --- a/lib/flutter_flow/nav/nav.dart +++ b/lib/flutter_flow/nav/nav.dart @@ -88,23 +88,65 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) { } }, ), - FFRoute(name: 'forgotPassword', path: '/forgotPassword', builder: (context, params) => ForgotPasswordScreen(key: UniqueKey(), email: params.getParam('email', ParamType.String), token: params.getParam('token', ParamType.String))), + FFRoute( + name: 'forgotPassword', + path: '/forgotPassword', + builder: (context, params) => ForgotPasswordScreen( + key: UniqueKey(), + email: params.getParam('email', ParamType.String), + token: params.getParam('token', ParamType.String))), FFRoute(name: 'homePage', path: '/homePage', builder: (context, params) => HomePageWidget(key: UniqueKey())), - FFRoute(name: 'petsOnThePropertyPage', path: '/petsOnThePropertyPage', builder: (context, params) => Scaffold(body: const PetsHistoryScreen())), - FFRoute(name: 'vehiclesOnThePropertyPage', path: '/vehiclesOnThePropertyPage', builder: (context, params) => const VehicleOnTheProperty()), - FFRoute(name: 'visitsOnThePropertyPage', path: '/visitsOnThePropertyPage', builder: (context, params) => const VisitsOnTheProperty()), + FFRoute( + name: 'petsOnThePropertyPage', + path: '/petsOnThePropertyPage', + builder: (context, params) => Scaffold(body: const PetsHistoryScreen())), + FFRoute( + name: 'vehiclesOnThePropertyPage', + path: '/vehiclesOnThePropertyPage', + builder: (context, params) => const VehicleOnTheProperty()), + FFRoute( + name: 'visitsOnThePropertyPage', + path: '/visitsOnThePropertyPage', + builder: (context, params) => const VisitsOnTheProperty()), FFRoute(name: 'receptionPage', path: '/receptionPage', builder: (context, params) => const ReceptionPageWidget()), - FFRoute(name: 'messageHistoryPage', path: '/messageHistoryPage', builder: (context, params) => const MessageHistoryPageWidget()), - FFRoute(name: 'registerVisitorPage', path: '/registerVisitorPage', builder: (context, params) => const RegisterVisitorPageWidget()), - FFRoute(name: 'scheduleCompleteVisitPage', path: '/scheduleCompleteVisitPage', builder: (context, params) => const ScheduleCompleteVisitPageWidget()), - FFRoute(name: 'deliverySchedule', path: '/deliverySchedule', builder: (context, params) => const DeliverySchedule()), - FFRoute(name: 'provisionalSchedule', path: '/provisionalSchedule', builder: (context, params) => const ProvisionalSchedule()), - FFRoute(name: 'fastPassPage', path: '/fastPassPage', builder: (context, params) => /*const*/ FastPassPageWidget()), - FFRoute(name: 'preferencesSettings', path: '/preferencesSettings', builder: (context, params) => PreferencesPageWidget()), + FFRoute( + name: 'messageHistoryPage', + path: '/messageHistoryPage', + builder: (context, params) => const MessageHistoryPageWidget()), + FFRoute( + name: 'registerVisitorPage', + path: '/registerVisitorPage', + builder: (context, params) => const RegisterVisitorPageWidget()), + FFRoute( + name: 'scheduleCompleteVisitPage', + path: '/scheduleCompleteVisitPage', + builder: (context, params) => const ScheduleCompleteVisitPageWidget()), + FFRoute( + name: 'deliverySchedule', path: '/deliverySchedule', builder: (context, params) => const DeliverySchedule()), + FFRoute( + name: 'provisionalSchedule', + path: '/provisionalSchedule', + builder: (context, params) => const ProvisionalSchedule()), + FFRoute( + name: 'fastPassPage', path: '/fastPassPage', builder: (context, params) => /*const*/ FastPassPageWidget()), + FFRoute( + name: 'preferencesSettings', + path: '/preferencesSettings', + builder: (context, params) => PreferencesPageWidget()), FFRoute(name: 'aboutProperty', path: '/aboutProperty', builder: (context, params) => AboutPropertyPage()), - FFRoute(name: 'peopleOnThePropertyPage', path: '/peopleOnThePropertyPage', builder: (context, params) => PeopleOnThePropertyPage()), - FFRoute(name: 'acessHistoryPage', path: '/acessHistoryPage', builder: (context, params) => AccessHistoryScreen(opt: const {'personType': '.*', 'accessType': '.*', 'search': '.*'})), - FFRoute(name: 'liberationHistory', path: '/liberationHistory', builder: (context, params) => const LiberationHistoryWidget()), + FFRoute( + name: 'peopleOnThePropertyPage', + path: '/peopleOnThePropertyPage', + builder: (context, params) => PeopleOnThePropertyPage()), + FFRoute( + name: 'acessHistoryPage', + path: '/acessHistoryPage', + builder: (context, params) => + AccessHistoryScreen(opt: const {'personType': '.*', 'accessType': '.*', 'search': '.*'})), + FFRoute( + name: 'liberationHistory', + path: '/liberationHistory', + builder: (context, params) => const LiberationHistoryWidget()), FFRoute(name: 'signInPage', path: '/signInPage', builder: (context, params) => const SignInPageWidget()), FFRoute(name: 'signUpPage', path: '/signUpPage', builder: (context, params) => const SignUpPageWidget()), FFRoute(name: 'welcomePage', path: '/welcomePage', builder: (context, params) => const WelcomePageWidget()), @@ -146,13 +188,16 @@ extension _GoRouterStateExtensions on GoRouterState { ..addAll(pathParameters) ..addAll(uri.queryParameters) ..addAll(extraMap); - TransitionInfo get transitionInfo => extraMap.containsKey(kTransitionInfoKey) ? extraMap[kTransitionInfoKey] as TransitionInfo : TransitionInfo.appDefault(); + TransitionInfo get transitionInfo => extraMap.containsKey(kTransitionInfoKey) + ? extraMap[kTransitionInfoKey] as TransitionInfo + : TransitionInfo.appDefault(); } extension GoRouterLocationExtension on GoRouter { String getCurrentLocation() { final RouteMatch lastMatch = routerDelegate.currentConfiguration.last; - final RouteMatchList matchList = lastMatch is ImperativeRouteMatch ? lastMatch.matches : routerDelegate.currentConfiguration; + final RouteMatchList matchList = + lastMatch is ImperativeRouteMatch ? lastMatch.matches : routerDelegate.currentConfiguration; return matchList.uri.toString(); } } @@ -164,7 +209,8 @@ class FFParameters { final Map Function(String)> asyncParams; Map futureParamValues = {}; - bool get isEmpty => state.allParams.isEmpty || (state.allParams.length == 1 && state.extraMap.containsKey(kTransitionInfoKey)); + bool get isEmpty => + state.allParams.isEmpty || (state.allParams.length == 1 && state.extraMap.containsKey(kTransitionInfoKey)); bool isAsyncParam(MapEntry param) => asyncParams.containsKey(param.key) && param.value is String; bool get hasFutures => state.allParams.entries.any(isAsyncParam); Future completeFutures() => Future.wait( @@ -267,5 +313,6 @@ class RootPageContext { return isRootPage && location != '/' && location != rootPageContext?.errorRoute; } - static Widget wrap(Widget child, {String? errorRoute}) => Provider.value(value: RootPageContext(true, errorRoute), child: child); + static Widget wrap(Widget child, {String? errorRoute}) => + Provider.value(value: RootPageContext(true, errorRoute), child: child); } diff --git a/lib/flutter_flow/nav/serialization_util.dart b/lib/flutter_flow/nav/serialization_util.dart index 9ee5ecdb..02f636c4 100644 --- a/lib/flutter_flow/nav/serialization_util.dart +++ b/lib/flutter_flow/nav/serialization_util.dart @@ -27,8 +27,7 @@ String placeToString(FFPlace place) => jsonEncode({ 'zipCode': place.zipCode, }); -String uploadedFileToString(FFUploadedFile uploadedFile) => - uploadedFile.serialize(); +String uploadedFileToString(FFUploadedFile uploadedFile) => uploadedFile.serialize(); String? serializeParam( dynamic param, @@ -137,8 +136,7 @@ FFPlace placeFromString(String placeStr) { ); } -FFUploadedFile uploadedFileFromString(String uploadedFileStr) => - FFUploadedFile.deserialize(uploadedFileStr); +FFUploadedFile uploadedFileFromString(String uploadedFileStr) => FFUploadedFile.deserialize(uploadedFileStr); enum ParamType { int, @@ -196,9 +194,7 @@ dynamic deserializeParam( return param == 'true'; case ParamType.DateTime: final milliseconds = int.tryParse(param); - return milliseconds != null - ? DateTime.fromMillisecondsSinceEpoch(milliseconds) - : null; + return milliseconds != null ? DateTime.fromMillisecondsSinceEpoch(milliseconds) : null; case ParamType.DateTimeRange: return dateTimeRangeFromString(param); case ParamType.LatLng: diff --git a/lib/flutter_flow/permissions_util.dart b/lib/flutter_flow/permissions_util.dart index 10768b17..31c0ad28 100644 --- a/lib/flutter_flow/permissions_util.dart +++ b/lib/flutter_flow/permissions_util.dart @@ -13,5 +13,4 @@ Future getPermissionStatus(Permission setting) async { return kPermissionStateToBool[status]!; } -Future requestPermission(Permission setting) async => - await setting.request(); \ No newline at end of file +Future requestPermission(Permission setting) async => await setting.request(); diff --git a/lib/flutter_flow/place.dart b/lib/flutter_flow/place.dart index 972fb8be..e3589b3b 100644 --- a/lib/flutter_flow/place.dart +++ b/lib/flutter_flow/place.dart @@ -43,4 +43,4 @@ class FFPlace { state == other.state && country == other.country && zipCode == other.zipCode; -} \ No newline at end of file +} diff --git a/lib/flutter_flow/random_data_util.dart b/lib/flutter_flow/random_data_util.dart index fd966a2c..c3e508f7 100644 --- a/lib/flutter_flow/random_data_util.dart +++ b/lib/flutter_flow/random_data_util.dart @@ -29,16 +29,14 @@ String randomString( if (digits) { chars += '0123456789'; } - return List.generate(randomInteger(minLength, maxLength), - (index) => chars[_random.nextInt(chars.length)]).join(); + return List.generate(randomInteger(minLength, maxLength), (index) => chars[_random.nextInt(chars.length)]).join(); } // Random date between 1970 and 2025. DateTime randomDate() { // Random max must be in range 0 < max <= 2^32. // So we have to generate the time in seconds and then convert to milliseconds. - return DateTime.fromMillisecondsSinceEpoch( - randomInteger(0, 1735689600) * 1000); + return DateTime.fromMillisecondsSinceEpoch(randomInteger(0, 1735689600) * 1000); } String randomImageUrl(int width, int height) { @@ -46,6 +44,5 @@ String randomImageUrl(int width, int height) { } Color randomColor() { - return Color.fromARGB( - 255, _random.nextInt(255), _random.nextInt(255), _random.nextInt(255)); -} \ No newline at end of file + return Color.fromARGB(255, _random.nextInt(255), _random.nextInt(255), _random.nextInt(255)); +} diff --git a/lib/flutter_flow/request_manager.dart b/lib/flutter_flow/request_manager.dart index c9b4dcc8..d130fb08 100644 --- a/lib/flutter_flow/request_manager.dart +++ b/lib/flutter_flow/request_manager.dart @@ -24,8 +24,7 @@ class FutureRequestManager { } // Remove the first cached result if we have reached the specified limit, // since we will be adding another. - if (!_requests.containsKey(uniqueQueryKey) && - _requests.length >= cacheLimit) { + if (!_requests.containsKey(uniqueQueryKey) && _requests.length >= cacheLimit) { _requests.remove(_requests.keys.first); } // Return the cached query result or set it to the new value. @@ -69,9 +68,8 @@ class StreamRequestManager { // Create a subscription that stores the latest result in the behavior subject. final streamSubject = BehaviorSubject(); - _requestSubscriptions[uniqueQueryKey] = requestFn() - .asBroadcastStream() - .listen((result) => streamSubject.add(result)); + _requestSubscriptions[uniqueQueryKey] = + requestFn().asBroadcastStream().listen((result) => streamSubject.add(result)); _streamSubjects[uniqueQueryKey] = streamSubject; return streamSubject.stream; @@ -89,5 +87,4 @@ class StreamRequestManager { }.forEach(clearRequest); } -String _requestKey(String? key) => - key == null || key.isEmpty ? '__DEFAULT_KEY__' : key; \ No newline at end of file +String _requestKey(String? key) => key == null || key.isEmpty ? '__DEFAULT_KEY__' : key; diff --git a/lib/flutter_flow/upload_data.dart b/lib/flutter_flow/upload_data.dart index 5673b06a..ae1b780d 100644 --- a/lib/flutter_flow/upload_data.dart +++ b/lib/flutter_flow/upload_data.dart @@ -65,9 +65,7 @@ Future?> selectMediaWithSourceBottomSheetandFaceDetection({ enableLandmarks: true, ), ); - createUploadMediaListTile( - String label, MediaSource mediaSource, IconData icon) => - ListTile( + createUploadMediaListTile(String label, MediaSource mediaSource, IconData icon) => ListTile( title: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -110,15 +108,12 @@ Future?> selectMediaWithSourceBottomSheetandFaceDetection({ padding: const EdgeInsets.fromLTRB(0, 8, 0, 0), child: ListTile( title: Text( - FFLocalizations.of(context).getVariableText( - ptText: "Escolha uma das opções", - enText: "Choose one of the options"), + FFLocalizations.of(context) + .getVariableText(ptText: "Escolha uma das opções", enText: "Choose one of the options"), textAlign: TextAlign.center, style: GoogleFonts.getFont( pickerFontFamily, - color: FlutterFlowTheme.of(context) - .primaryText - .withOpacity(0.65), + color: FlutterFlowTheme.of(context).primaryText.withOpacity(0.65), fontWeight: FontWeight.w500, fontSize: 14, ), @@ -134,40 +129,35 @@ Future?> selectMediaWithSourceBottomSheetandFaceDetection({ if (allowPhoto && allowVideo) ...[ Expanded( child: createUploadMediaListTile( - FFLocalizations.of(context).getVariableText( - ptText: "Galeria (Foto)", - enText: "Gallery (Photo)"), + FFLocalizations.of(context) + .getVariableText(ptText: "Galeria (Foto)", enText: "Gallery (Photo)"), MediaSource.photoGallery, Icons.camera), ), Expanded( child: createUploadMediaListTile( - FFLocalizations.of(context).getVariableText( - ptText: "Galeria (Video)", - enText: "Gallery (Video)"), + FFLocalizations.of(context) + .getVariableText(ptText: "Galeria (Video)", enText: "Gallery (Video)"), MediaSource.videoGallery, Icons.videocam), ) ] else if (allowPhoto) Expanded( child: createUploadMediaListTile( - FFLocalizations.of(context).getVariableText( - ptText: "Galeria", enText: "Gallery"), + FFLocalizations.of(context).getVariableText(ptText: "Galeria", enText: "Gallery"), MediaSource.photoGallery, Icons.photo)) else Expanded( child: createUploadMediaListTile( - FFLocalizations.of(context).getVariableText( - ptText: "Galeria", enText: "Gallery"), + FFLocalizations.of(context).getVariableText(ptText: "Galeria", enText: "Gallery"), MediaSource.videoGallery, Icons.videocam), ), if (!kIsWeb) ...[ Expanded( child: createUploadMediaListTile( - FFLocalizations.of(context).getVariableText( - ptText: "Camera", enText: "Camera"), + FFLocalizations.of(context).getVariableText(ptText: "Camera", enText: "Camera"), MediaSource.camera, Icons.camera_alt), ) @@ -186,8 +176,8 @@ Future?> selectMediaWithSourceBottomSheetandFaceDetection({ maxWidth: maxWidth, maxHeight: maxHeight, imageQuality: imageQuality, - isVideo: mediaSource == MediaSource.videoGallery || - (mediaSource == MediaSource.camera && allowVideo && !allowPhoto), + isVideo: + mediaSource == MediaSource.videoGallery || (mediaSource == MediaSource.camera && allowVideo && !allowPhoto), mediaSource: mediaSource, includeDimensions: includeDimensions, includeBlurHash: includeBlurHash, @@ -202,16 +192,14 @@ Future?> selectMediaWithSourceBottomSheetandFaceDetection({ final inputImage = InputImage.fromFilePath(media.filePath!); final faces = await faceDetector.processImage(inputImage); if (faces.isEmpty) { - final String message = FFLocalizations.of(context).getVariableText( - ptText: "Nenhuma face detectada na imagem", - enText: "No face detected in the image"); + final String message = FFLocalizations.of(context) + .getVariableText(ptText: "Nenhuma face detectada na imagem", enText: "No face detected in the image"); DialogUtil.error(context, message); return null; } if (faces.length > 1) { final String message = FFLocalizations.of(context).getVariableText( - ptText: "Mais de uma face detectada na imagem", - enText: "More than one face detected in the image"); + ptText: "Mais de uma face detectada na imagem", enText: "More than one face detected in the image"); DialogUtil.error(context, message); return null; } @@ -234,9 +222,7 @@ Future?> selectMediaWithSourceBottomSheet({ bool includeDimensions = false, bool includeBlurHash = false, }) async { - createUploadMediaListTile( - String label, MediaSource mediaSource, IconData icon) => - ListTile( + createUploadMediaListTile(String label, MediaSource mediaSource, IconData icon) => ListTile( title: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -280,15 +266,12 @@ Future?> selectMediaWithSourceBottomSheet({ padding: const EdgeInsets.fromLTRB(0, 8, 0, 0), child: ListTile( title: Text( - FFLocalizations.of(context).getVariableText( - ptText: "Escolha uma das opções", - enText: "Choose one of the options"), + FFLocalizations.of(context) + .getVariableText(ptText: "Escolha uma das opções", enText: "Choose one of the options"), textAlign: TextAlign.center, style: GoogleFonts.getFont( pickerFontFamily, - color: FlutterFlowTheme.of(context) - .primaryText - .withOpacity(0.65), + color: FlutterFlowTheme.of(context).primaryText.withOpacity(0.65), fontWeight: FontWeight.w500, fontSize: 14, ), @@ -304,40 +287,35 @@ Future?> selectMediaWithSourceBottomSheet({ if (allowPhoto && allowVideo) ...[ Expanded( child: createUploadMediaListTile( - FFLocalizations.of(context).getVariableText( - ptText: "Galeria (Foto)", - enText: "Gallery (Photo)"), + FFLocalizations.of(context) + .getVariableText(ptText: "Galeria (Foto)", enText: "Gallery (Photo)"), MediaSource.photoGallery, Icons.camera), ), Expanded( child: createUploadMediaListTile( - FFLocalizations.of(context).getVariableText( - ptText: "Galeria (Video)", - enText: "Gallery (Video)"), + FFLocalizations.of(context) + .getVariableText(ptText: "Galeria (Video)", enText: "Gallery (Video)"), MediaSource.videoGallery, Icons.videocam), ) ] else if (allowPhoto) Expanded( child: createUploadMediaListTile( - FFLocalizations.of(context).getVariableText( - ptText: "Galeria", enText: "Gallery"), + FFLocalizations.of(context).getVariableText(ptText: "Galeria", enText: "Gallery"), MediaSource.photoGallery, Icons.photo)) else Expanded( child: createUploadMediaListTile( - FFLocalizations.of(context).getVariableText( - ptText: "Galeria", enText: "Gallery"), + FFLocalizations.of(context).getVariableText(ptText: "Galeria", enText: "Gallery"), MediaSource.videoGallery, Icons.videocam), ), if (!kIsWeb) ...[ Expanded( child: createUploadMediaListTile( - FFLocalizations.of(context).getVariableText( - ptText: "Camera", enText: "Camera"), + FFLocalizations.of(context).getVariableText(ptText: "Camera", enText: "Camera"), MediaSource.camera, Icons.camera_alt), ) @@ -356,8 +334,8 @@ Future?> selectMediaWithSourceBottomSheet({ maxWidth: maxWidth, maxHeight: maxHeight, imageQuality: imageQuality, - isVideo: mediaSource == MediaSource.videoGallery || - (mediaSource == MediaSource.camera && allowVideo && !allowPhoto), + isVideo: + mediaSource == MediaSource.videoGallery || (mediaSource == MediaSource.camera && allowVideo && !allowPhoto), mediaSource: mediaSource, includeDimensions: includeDimensions, includeBlurHash: includeBlurHash, @@ -407,9 +385,7 @@ Future?> selectMedia({ })); } - final source = mediaSource == MediaSource.camera - ? ImageSource.camera - : ImageSource.gallery; + final source = mediaSource == MediaSource.camera ? ImageSource.camera : ImageSource.gallery; final pickedMediaFuture = isVideo ? picker.pickVideo(source: source) : picker.pickImage( @@ -480,8 +456,7 @@ Future?> selectFiles({ return Future.wait(pickedFiles.files.asMap().entries.map((e) async { final index = e.key; final file = e.value; - final storagePath = - _getStoragePath(storageFolderPath, file.name, false, index); + final storagePath = _getStoragePath(storageFolderPath, file.name, false, index); return SelectedFile( storagePath: storagePath, filePath: isWeb ? null : file.path, @@ -578,8 +553,7 @@ void showUploadMessage( padding: const EdgeInsetsDirectional.only(end: 10.0), child: CircularProgressIndicator( valueColor: Theme.of(context).brightness == Brightness.dark - ? AlwaysStoppedAnimation( - FlutterFlowTheme.of(context).info) + ? AlwaysStoppedAnimation(FlutterFlowTheme.of(context).info) : null, ), ), @@ -593,12 +567,10 @@ void showUploadMessage( topRight: Radius.circular(15), ), ), - duration: - showLoading ? const Duration(days: 1) : const Duration(seconds: 4), + duration: showLoading ? const Duration(days: 1) : const Duration(seconds: 4), ), ); } -String? _removeTrailingSlash(String? path) => path != null && path.endsWith('/') - ? path.substring(0, path.length - 1) - : path; +String? _removeTrailingSlash(String? path) => + path != null && path.endsWith('/') ? path.substring(0, path.length - 1) : path; diff --git a/lib/flutter_flow/uploaded_file.dart b/lib/flutter_flow/uploaded_file.dart index cbe68cad..2dfd2ff1 100644 --- a/lib/flutter_flow/uploaded_file.dart +++ b/lib/flutter_flow/uploaded_file.dart @@ -65,4 +65,4 @@ class FFUploadedFile { height == other.height && width == other.width && blurHash == other.blurHash; -} \ No newline at end of file +} diff --git a/lib/index.dart b/lib/index.dart index 3278d9b5..73ea1557 100644 --- a/lib/index.dart +++ b/lib/index.dart @@ -1,15 +1,10 @@ -export 'pages/acess_history_page/acess_history_page_widget.dart' - show AccessHistoryScreen; +export 'pages/acess_history_page/acess_history_page_widget.dart' show AccessHistoryScreen; export 'pages/home_page/home_page_widget.dart' show HomePageWidget; -export 'pages/liberation_history/liberation_history_widget.dart' - show LiberationHistoryWidget; -export 'pages/people_on_the_property_page/people_on_the_property_page_widget.dart' - show PeopleOnThePropertyPageWidget; -export 'pages/preferences_settings_page/preferences_settings_widget.dart' - show PreferencesPageWidget; +export 'pages/liberation_history/liberation_history_widget.dart' show LiberationHistoryWidget; +export 'pages/people_on_the_property_page/people_on_the_property_page_widget.dart' show PeopleOnThePropertyPageWidget; +export 'pages/preferences_settings_page/preferences_settings_widget.dart' show PreferencesPageWidget; export 'pages/qr_code_page/qr_code_page_widget.dart' show QrCodePageWidget; -export 'pages/register_visitor_page/register_visitor_page_widget.dart' - show RegisterVisitorPageWidget; +export 'pages/register_visitor_page/register_visitor_page_widget.dart' show RegisterVisitorPageWidget; export 'pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart' show ScheduleCompleteVisitPageWidget; export 'pages/sign_in_page/sign_in_page_widget.dart' show SignInPageWidget; diff --git a/lib/main.dart b/lib/main.dart index 2f3b9dd5..16e908fc 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -88,7 +88,10 @@ Future _foregroundHandlerMessage(RemoteMessage message) async { StorageUtil().context?.go('/homePage'); } if (!Platform.isIOS) { - NotificationService.show(title: message.notification!.title!, body: message.notification!.body!, payload: Map.from(message.data)); + NotificationService.show( + title: message.notification!.title!, + body: message.notification!.body!, + payload: Map.from(message.data)); } } @@ -263,7 +266,8 @@ class _AppState extends State with WidgetsBindingObserver { FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); _appStateNotifier = AppStateNotifier.instance; _router = createRouter(_appStateNotifier); - Future.delayed(const Duration(milliseconds: 1000), () => setState(() => _appStateNotifier.stopShowingSplashImage())); + Future.delayed( + const Duration(milliseconds: 1000), () => setState(() => _appStateNotifier.stopShowingSplashImage())); _setupFirebaseMessaging(); WidgetsBinding.instance.addPersistentFrameCallback((_) => initDeepLinks()); diff --git a/lib/pages/about_property_page/about_property_screen.dart b/lib/pages/about_property_page/about_property_screen.dart index 7fb40e0f..335863a1 100644 --- a/lib/pages/about_property_page/about_property_screen.dart +++ b/lib/pages/about_property_page/about_property_screen.dart @@ -43,11 +43,15 @@ class _AboutPropertyPageState extends State with SingleTicker @override Widget build(BuildContext context) { - return Scaffold(appBar: _buildAppBar(context), backgroundColor: FlutterFlowTheme.of(context).primaryBackground, body: _buildBody(context)); + return Scaffold( + appBar: _buildAppBar(context), + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, + body: _buildBody(context)); } PreferredSizeWidget _buildAppBar(BuildContext context) { - final String title = FFLocalizations.of(context).getVariableText(ptText: "Sobre a Propriedade", enText: "About the Property"); + final String title = + FFLocalizations.of(context).getVariableText(ptText: "Sobre a Propriedade", enText: "About the Property"); return AppBarUtil( title: title, onBackButtonPressed: () => context.pop(), diff --git a/lib/pages/acess_history_page/acess_history_page_model.dart b/lib/pages/acess_history_page/acess_history_page_model.dart index e32d744e..fe1307e5 100644 --- a/lib/pages/acess_history_page/acess_history_page_model.dart +++ b/lib/pages/acess_history_page/acess_history_page_model.dart @@ -24,8 +24,7 @@ class AcessHistoryPageModel extends FlutterFlowModel { requestFn: requestFn, ); void clearAccessHistoryCache() => _accessHistoryManager.clear(); - void clearAccessHistoryCacheKey(String? uniqueKey) => - _accessHistoryManager.clearRequest(uniqueKey); + void clearAccessHistoryCacheKey(String? uniqueKey) => _accessHistoryManager.clearRequest(uniqueKey); @override void initState(BuildContext context) { diff --git a/lib/pages/acess_history_page/acess_history_page_widget.dart b/lib/pages/acess_history_page/acess_history_page_widget.dart index 9c612497..9f981850 100644 --- a/lib/pages/acess_history_page/acess_history_page_widget.dart +++ b/lib/pages/acess_history_page/acess_history_page_widget.dart @@ -44,8 +44,7 @@ class _AccessHistoryState extends State { late Future _accessFuture; List _accessWrap = []; - _AccessHistoryState(Map opt) - : selectedTypeSubject = BehaviorSubject.seeded(opt) { + _AccessHistoryState(Map opt) : selectedTypeSubject = BehaviorSubject.seeded(opt) { selectedTypeSubject.listen((value) {}); } @@ -57,8 +56,7 @@ class _AccessHistoryState extends State { _scrollController = ScrollController() ..addListener(() { - if (_scrollController.position.atEdge && - _scrollController.position.pixels != 0) { + if (_scrollController.position.atEdge && _scrollController.position.pixels != 0) { _loadMoreAccess(); } }); @@ -117,8 +115,7 @@ class _AccessHistoryState extends State { color: theme.primaryText, fontSize: 16.0, letterSpacing: 0.0, - useGoogleFonts: - GoogleFonts.asMap().containsKey(theme.headlineMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(theme.headlineMediumFamily), ), ); } @@ -132,27 +129,24 @@ class _AccessHistoryState extends State { child: IconButton( icon: const Icon(Icons.filter_list), onPressed: () async { - final Map? selectedFilter = - await showModalBottomSheet>( - isScrollControlled: true, - backgroundColor: Colors.transparent, - context: context, - builder: (context) { - return GestureDetector( - onTap: () => Navigator.of(context).pop(), - child: Container( - color: Colors.transparent, - child: GestureDetector( - onTap: () {}, - child: OptModalWidget( - defaultPersonType: - selectedTypeSubject.value['personType'] ?? - '.*', - ), - ), + final Map? selectedFilter = await showModalBottomSheet>( + isScrollControlled: true, + backgroundColor: Colors.transparent, + context: context, + builder: (context) { + return GestureDetector( + onTap: () => Navigator.of(context).pop(), + child: Container( + color: Colors.transparent, + child: GestureDetector( + onTap: () {}, + child: OptModalWidget( + defaultPersonType: selectedTypeSubject.value['personType'] ?? '.*', ), - ); - }); + ), + ), + ); + }); if (selectedFilter != null) { _updateAccessHistoryAction(selectedFilter); @@ -195,8 +189,7 @@ class _AccessHistoryState extends State { final List accessHistory = response.jsonBody['acessos'] ?? []; List filteredAccess = accessHistory.where((item) { - final personTypeMatches = - _personType == '.*' || item["PES_TIPO"].toString() == _personType; + final personTypeMatches = _personType == '.*' || item["PES_TIPO"].toString() == _personType; return personTypeMatches; }).toList(); @@ -229,8 +222,7 @@ class _AccessHistoryState extends State { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( - FFLocalizations.of(context).getVariableText( - ptText: "Não há mais dados.", enText: "No more data."), + FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data."), ), duration: const Duration(seconds: 3), backgroundColor: FlutterFlowTheme.of(context).primary, @@ -250,9 +242,8 @@ class _AccessHistoryState extends State { children: [ Center( child: Text( - FFLocalizations.of(context).getVariableText( - ptText: "Nenhum histórico encontrado!", - enText: "No history found!"), + FFLocalizations.of(context) + .getVariableText(ptText: "Nenhum histórico encontrado!", enText: "No history found!"), )), ], ), @@ -292,8 +283,7 @@ class _AccessHistoryState extends State { return FutureBuilder( future: _accessFuture, builder: (context, snapshot) { - if (snapshot.connectionState == ConnectionState.waiting && - _accessWrap.isEmpty) { + if (snapshot.connectionState == ConnectionState.waiting && _accessWrap.isEmpty) { return Center( child: SizedBox( width: 50.0, @@ -306,9 +296,8 @@ class _AccessHistoryState extends State { ); } else if (snapshot.hasError) { return Center( - child: Text(FFLocalizations.of(context).getVariableText( - ptText: "Falha ao efetuar operação!", - enText: "Failed to perform operation!")), + child: Text(FFLocalizations.of(context) + .getVariableText(ptText: "Falha ao efetuar operação!", enText: "Failed to perform operation!")), ); } @@ -326,8 +315,7 @@ class _AccessHistoryState extends State { ); } - Widget _accessHistoryCardMoleculeWidget( - BuildContext context, dynamic accessHistoryItem) { + Widget _accessHistoryCardMoleculeWidget(BuildContext context, dynamic accessHistoryItem) { return CardItemTemplateComponentWidget( imagePath: 'https://freaccess.com.br/freaccess/getImage.php?cliID=${_model.cliUUID}&atividade=getFoto&Documento=${accessHistoryItem['PES_ID'] ?? ''}&tipo=${accessHistoryItem['PES_TIPO'] ?? ''}', diff --git a/lib/pages/delivery_schedule_page/delivery_schedule_widget.dart b/lib/pages/delivery_schedule_page/delivery_schedule_widget.dart index 46d3c440..ddc13b91 100644 --- a/lib/pages/delivery_schedule_page/delivery_schedule_widget.dart +++ b/lib/pages/delivery_schedule_page/delivery_schedule_widget.dart @@ -67,7 +67,6 @@ class _DeliveryScheduleState extends State { centerTitle: true, elevation: 0.0, ), - body: const SafeArea( - top: true, child: ScheduleProvisionalVisitPageWidget())); + body: const SafeArea(top: true, child: ScheduleProvisionalVisitPageWidget())); } } diff --git a/lib/pages/fast_pass_page/fast_pass_page_widget.dart b/lib/pages/fast_pass_page/fast_pass_page_widget.dart index 3f2b66fb..04ebc5cc 100644 --- a/lib/pages/fast_pass_page/fast_pass_page_widget.dart +++ b/lib/pages/fast_pass_page/fast_pass_page_widget.dart @@ -53,12 +53,10 @@ class _FastPassPageWidgetState extends State { builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return Center(child: CircularProgressIndicator()); - } else if (snapshot.hasError || - snapshot.hasData == false || - snapshot.data!.isEmpty) { + } else if (snapshot.hasError || snapshot.hasData == false || snapshot.data!.isEmpty) { return Center( - child: Text(FFLocalizations.of(context).getVariableText( - enText: 'Unexpected error', ptText: 'Erro inesperado'))); + child: Text(FFLocalizations.of(context) + .getVariableText(enText: 'Unexpected error', ptText: 'Erro inesperado'))); } else if (snapshot.hasData) { final data = snapshot.data!; final url = data['url']!; @@ -68,12 +66,18 @@ class _FastPassPageWidgetState extends State { return Platform.isIOS ? InAppWebView( initialUrlRequest: URLRequest(url: WebUri(url)), - initialSettings: InAppWebViewSettings(allowsBackForwardNavigationGestures: true, javaScriptEnabled: true,), + initialSettings: InAppWebViewSettings( + allowsBackForwardNavigationGestures: true, + javaScriptEnabled: true, + ), onWebViewCreated: (controller) async => _controllerIOS = controller, onLoadStop: (controller, url) async { - await controller.evaluateJavascript(source: "window.localStorage.setItem('fre-token', '\"$userUUID\"')"); - await controller.evaluateJavascript(source: "window.localStorage.setItem('fre-user-data', '$freUserData')"); - await controller.evaluateJavascript(source: "window.localStorage.setItem('enableBackButton', 'true')"); + await controller.evaluateJavascript( + source: "window.localStorage.setItem('fre-token', '\"$userUUID\"')"); + await controller.evaluateJavascript( + source: "window.localStorage.setItem('fre-user-data', '$freUserData')"); + await controller.evaluateJavascript( + source: "window.localStorage.setItem('enableBackButton', 'true')"); }, onUpdateVisitedHistory: (controller, uri, isVisited) { if (uri.toString().contains('/hub/home')) context.pop(); @@ -89,7 +93,7 @@ class _FastPassPageWidgetState extends State { NavigationDelegate( onProgress: (int progress) {}, onPageStarted: (String url) { - final String token = "localStorage.setItem('fre-token', '\"$userUUID\"');"; + final String token = "localStorage.setItem('fre-token', '\"$userUUID\"');"; final String data = "localStorage.setItem('fre-user-data', '$freUserData');"; const String backNavigation = "localStorage.setItem('enableBackButton', 'true');"; @@ -98,10 +102,8 @@ class _FastPassPageWidgetState extends State { _controllerAndroid.runJavaScript(backNavigation); }, onPageFinished: (String url) { - bool isDarkMode = SchedulerBinding - .instance - .platformDispatcher - .platformBrightness == Brightness.dark; + bool isDarkMode = + SchedulerBinding.instance.platformDispatcher.platformBrightness == Brightness.dark; if (isDarkMode) { _controllerAndroid.runJavaScript(WebviewUtil.jsEnableDarkMode); @@ -111,13 +113,13 @@ class _FastPassPageWidgetState extends State { if (request.url.startsWith('http') || request.url.startsWith('https://api.whatsapp.com/send') || request.url.startsWith('https://wa.me')) { - launchUrlString(request.url); - return NavigationDecision.prevent; - } + launchUrlString(request.url); + return NavigationDecision.prevent; + } return NavigationDecision.prevent; }, onUrlChange: (url) { - if (url.url.toString().contains('/hub/home')) context.pop(); + if (url.url.toString().contains('/hub/home')) context.pop(); }), ) ..loadRequest(Uri.parse(url)), diff --git a/lib/pages/forgot_password_page/forgot_password_model.dart b/lib/pages/forgot_password_page/forgot_password_model.dart index e3df2c9d..56580cac 100644 --- a/lib/pages/forgot_password_page/forgot_password_model.dart +++ b/lib/pages/forgot_password_page/forgot_password_model.dart @@ -53,28 +53,26 @@ class ForgotPasswordScreenModel extends FlutterFlowModel { bool? register; - - - bool isFormInvalid() { final password = passwordRegisterFormTextController?.text ?? ''; final confirmPassword = passwordConfirmFormTextController?.text ?? ''; - return password.isEmpty || confirmPassword.isEmpty || password != confirmPassword - || !ValidatorUtil.isValidPassword(password) || !ValidatorUtil.isValidPassword(confirmPassword); + return password.isEmpty || + confirmPassword.isEmpty || + password != confirmPassword || + !ValidatorUtil.isValidPassword(password) || + !ValidatorUtil.isValidPassword(confirmPassword); } - - - @override void initState(BuildContext context) { - - - + @override + void initState(BuildContext context) { passwordRegisterFormVisibility = false; passwordRegisterFormTextControllerValidator = _passwordRegisterFormTextControllerValidator; passwordConfirmFormVisibility = false; passwordConfirmFormTextControllerValidator = _passwordConfirmFormTextControllerValidator; } - @override void dispose() { + + @override + void dispose() { passwordRegisterFormFocusNode?.dispose(); passwordRegisterFormTextController?.dispose(); passwordConfirmFormFocusNode?.dispose(); diff --git a/lib/pages/forgot_password_page/forgot_password_screen.dart b/lib/pages/forgot_password_page/forgot_password_screen.dart index 7efbac3b..219b30e9 100644 --- a/lib/pages/forgot_password_page/forgot_password_screen.dart +++ b/lib/pages/forgot_password_page/forgot_password_screen.dart @@ -1,5 +1,3 @@ - - import 'package:easy_debounce/easy_debounce.dart'; import 'package:flutter/material.dart'; import 'package:flutter_animate/flutter_animate.dart'; @@ -23,18 +21,22 @@ class ForgotPasswordScreen extends StatefulWidget { final String email; final String token; - @override State createState() => _ForgotPasswordScreenState(); + @override + State createState() => _ForgotPasswordScreenState(); } class _ForgotPasswordScreenState extends State with TickerProviderStateMixin { late ForgotPasswordScreenModel _model; final animationsMap = {}; - @override void setState(VoidCallback callback) { + @override + void setState(VoidCallback callback) { super.setState(callback); _model.onUpdate(); } - @override void initState() { + + @override + void initState() { super.initState(); _model = createModel(context, () => ForgotPasswordScreenModel()); @@ -83,13 +85,16 @@ class _ForgotPasswordScreenState extends State with Ticker ), }); } - @override void dispose() { + + @override + void dispose() { _model.maybeDispose(); super.dispose(); } - @override Widget build(BuildContext context) => buildBody(context); + @override + Widget build(BuildContext context) => buildBody(context); AppBar buildAppBar(BuildContext context) { return AppBar( @@ -111,21 +116,25 @@ class _ForgotPasswordScreenState extends State with Ticker }, ), title: Text( - FFLocalizations.of(context).getVariableText(ptText: 'Recuperar Senha', enText: 'Recover Password',), - style: FlutterFlowTheme.of(context).headlineMedium.override( - fontFamily: 'Nunito', - color: FlutterFlowTheme.of(context).primaryText, - fontSize: 15.0, - fontWeight: FontWeight.bold, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'), + FFLocalizations.of(context).getVariableText( + ptText: 'Recuperar Senha', + enText: 'Recover Password', ), + style: FlutterFlowTheme.of(context).headlineMedium.override( + fontFamily: 'Nunito', + color: FlutterFlowTheme.of(context).primaryText, + fontSize: 15.0, + fontWeight: FontWeight.bold, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'), + ), ), actions: const [], centerTitle: true, elevation: 0.0, ); } + Widget buildBody(BuildContext context) { late final String title = FFLocalizations.of(context).getVariableText( ptText: 'Recuperar Senha', @@ -154,14 +163,18 @@ class _ForgotPasswordScreenState extends State with Ticker mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Center(child: Text(title, style: FlutterFlowTheme.of(context).title1.override( - fontFamily: 'Nunito', - color: FlutterFlowTheme.of(context).primaryText, - fontSize: 24.0, - fontWeight: FontWeight.bold, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'), - ),)), + Center( + child: Text( + title, + style: FlutterFlowTheme.of(context).title1.override( + fontFamily: 'Nunito', + color: FlutterFlowTheme.of(context).primaryText, + fontSize: 24.0, + fontWeight: FontWeight.bold, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap().containsKey('Nunito'), + ), + )), Align( alignment: const AlignmentDirectional(-1.0, 0.0), child: Padding( @@ -170,11 +183,11 @@ class _ForgotPasswordScreenState extends State with Ticker message, textAlign: TextAlign.start, style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, - fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), - ), + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + fontWeight: FontWeight.bold, + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + ), ), ), ), @@ -189,9 +202,12 @@ class _ForgotPasswordScreenState extends State with Ticker controller: _model.passwordRegisterFormTextController, focusNode: _model.passwordRegisterFormFocusNode, visibility: _model.passwordRegisterFormVisibility, - onVisibilityToggle: () => setState(() => _model.passwordRegisterFormVisibility = !_model.passwordRegisterFormVisibility), - label: FFLocalizations.of(context).getVariableText(ptText: 'Nova Senha', enText: 'New Password'), - hint: FFLocalizations.of(context).getVariableText(ptText: 'Insira sua senha', enText: 'Enter your password'), + onVisibilityToggle: () => setState( + () => _model.passwordRegisterFormVisibility = !_model.passwordRegisterFormVisibility), + label: + FFLocalizations.of(context).getVariableText(ptText: 'Nova Senha', enText: 'New Password'), + hint: FFLocalizations.of(context) + .getVariableText(ptText: 'Insira sua senha', enText: 'Enter your password'), asValidator: _model.passwordRegisterFormTextControllerValidator.asValidator(context), ), _buildPasswordField( @@ -199,9 +215,12 @@ class _ForgotPasswordScreenState extends State with Ticker controller: _model.passwordConfirmFormTextController, focusNode: _model.passwordConfirmFormFocusNode, visibility: _model.passwordConfirmFormVisibility, - onVisibilityToggle: () => setState(() => _model.passwordConfirmFormVisibility = !_model.passwordConfirmFormVisibility), - label: FFLocalizations.of(context).getVariableText(ptText: 'Confirme a Senha', enText: 'Confirm Password'), - hint: FFLocalizations.of(context).getVariableText(ptText: 'Confirme sua senha', enText: 'Confirm your password'), + onVisibilityToggle: () => setState( + () => _model.passwordConfirmFormVisibility = !_model.passwordConfirmFormVisibility), + label: FFLocalizations.of(context) + .getVariableText(ptText: 'Confirme a Senha', enText: 'Confirm Password'), + hint: FFLocalizations.of(context) + .getVariableText(ptText: 'Confirme sua senha', enText: 'Confirm your password'), asValidator: _model.passwordConfirmFormTextControllerValidator.asValidator(context), ), ], @@ -211,10 +230,13 @@ class _ForgotPasswordScreenState extends State with Ticker padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 16.0), child: FFButtonWidget( key: const ValueKey('SubmitButtonWidget'), - onPressed: _model.isFormInvalid() ? null : () async { - await AuthenticationService.changePassword(context, widget.email, _model.passwordConfirmFormTextController!.text, widget.token); - setState(() {}); - }, + onPressed: _model.isFormInvalid() + ? null + : () async { + await AuthenticationService.changePassword( + context, widget.email, _model.passwordConfirmFormTextController!.text, widget.token); + setState(() {}); + }, text: FFLocalizations.of(context).getVariableText( ptText: 'Enviar', enText: 'Submit', @@ -246,7 +268,15 @@ class _ForgotPasswordScreenState extends State with Ticker ), ); } - Widget _buildPasswordField(BuildContext context, {required TextEditingController? controller, required FocusNode? focusNode, required bool visibility, required VoidCallback onVisibilityToggle, required String hint, required String label, required String? Function(String?)? asValidator}) { + + Widget _buildPasswordField(BuildContext context, + {required TextEditingController? controller, + required FocusNode? focusNode, + required bool visibility, + required VoidCallback onVisibilityToggle, + required String hint, + required String label, + required String? Function(String?)? asValidator}) { return Padding( padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 16.0), child: SizedBox( @@ -268,12 +298,12 @@ class _ForgotPasswordScreenState extends State with Ticker hintText: hint, labelText: label, labelStyle: FlutterFlowTheme.of(context).labelLarge.override( - fontFamily: 'Plus Jakarta Sans', - color: FlutterFlowTheme.of(context).primaryText, - fontSize: 16.0, - fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), - ), + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primaryText, + fontSize: 16.0, + fontWeight: FontWeight.w500, + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + ), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: FlutterFlowTheme.of(context).customColor1, width: 0.25), borderRadius: BorderRadius.circular(12.0), @@ -304,17 +334,15 @@ class _ForgotPasswordScreenState extends State with Ticker ), ), style: FlutterFlowTheme.of(context).bodyLarge.override( - fontFamily: 'Plus Jakarta Sans', - color: FlutterFlowTheme.of(context).primaryText, - fontSize: 16.0, - fontWeight: FontWeight.w500, - useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), - ), + fontFamily: 'Plus Jakarta Sans', + color: FlutterFlowTheme.of(context).primaryText, + fontSize: 16.0, + fontWeight: FontWeight.w500, + useGoogleFonts: GoogleFonts.asMap().containsKey('Plus Jakarta Sans'), + ), validator: asValidator, ), ), ); } - - -} \ No newline at end of file +} diff --git a/lib/pages/liberation_history/liberation_history_model.dart b/lib/pages/liberation_history/liberation_history_model.dart index cdc1f687..ab7f61f4 100644 --- a/lib/pages/liberation_history/liberation_history_model.dart +++ b/lib/pages/liberation_history/liberation_history_model.dart @@ -27,8 +27,7 @@ class LiberationHistoryModel extends FlutterFlowModel { requestFn: requestFn, ); void clearGetLiberationsCache() => _getLiberationsManager.clear(); - void clearGetLiberationsCacheKey(String? uniqueKey) => - _getLiberationsManager.clearRequest(uniqueKey); + void clearGetLiberationsCacheKey(String? uniqueKey) => _getLiberationsManager.clearRequest(uniqueKey); @override void initState(BuildContext context) { diff --git a/lib/pages/liberation_history/liberation_history_widget.dart b/lib/pages/liberation_history/liberation_history_widget.dart index 6b15532f..edaeae1b 100644 --- a/lib/pages/liberation_history/liberation_history_widget.dart +++ b/lib/pages/liberation_history/liberation_history_widget.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hub/backend/api_requests/api_calls.dart'; @@ -18,8 +17,7 @@ class LiberationHistoryWidget extends StatefulWidget { const LiberationHistoryWidget({super.key}); @override - State createState() => - _LiberationHistoryWidgetState(); + State createState() => _LiberationHistoryWidgetState(); } class _LiberationHistoryWidgetState extends State { @@ -54,15 +52,12 @@ class _LiberationHistoryWidgetState extends State { Map _labelsHashMap(dynamic request, bool details) { return Map.from({ - '${FFLocalizations.of(context).getVariableText(ptText: 'Nome', enText: 'Name')}:': - request['VTE_NOME'], + '${FFLocalizations.of(context).getVariableText(ptText: 'Nome', enText: 'Name')}:': request['VTE_NOME'], '${FFLocalizations.of(context).getVariableText(ptText: 'Dt. Envio', enText: 'Date Send')}:': request['NOT_DTENVIO'] != null - ? ValidatorUtil.toLocalDateTime( - 'yyyy-MM-dd HH:mm:ss', request['NOT_DTENVIO']) + ? ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', request['NOT_DTENVIO']) : '', - '${FFLocalizations.of(context).getVariableText(ptText: 'Motivo', enText: 'Reason')}:': - request['NOT_MOTIVO'], + '${FFLocalizations.of(context).getVariableText(ptText: 'Motivo', enText: 'Reason')}:': request['NOT_MOTIVO'], if (details == true) '${FFLocalizations.of(context).getVariableText(ptText: 'Mensagem', enText: 'Message')}:': request['NOT_MSGENVIO'], @@ -72,17 +67,14 @@ class _LiberationHistoryWidgetState extends State { Map _statusHashMap(dynamic request) { return Map.from({ if (request['NOT_STATUS'] == 'L') - FFLocalizations.of(context).getVariableText( - ptText: 'Finalizado', - enText: 'Finished'): FlutterFlowTheme.of(context).success + FFLocalizations.of(context).getVariableText(ptText: 'Finalizado', enText: 'Finished'): + FlutterFlowTheme.of(context).success else if (request['NOT_STATUS'] == 'B') - FFLocalizations.of(context).getVariableText( - ptText: 'Bloqueado', - enText: 'Blocked'): FlutterFlowTheme.of(context).error + FFLocalizations.of(context).getVariableText(ptText: 'Bloqueado', enText: 'Blocked'): + FlutterFlowTheme.of(context).error else - FFLocalizations.of(context).getVariableText( - ptText: 'Ativo', - enText: 'Active'): FlutterFlowTheme.of(context).warning + FFLocalizations.of(context).getVariableText(ptText: 'Ativo', enText: 'Active'): + FlutterFlowTheme.of(context).warning }); } @@ -148,16 +140,13 @@ class _LiberationHistoryWidgetState extends State { mainAxisSize: MainAxisSize.max, children: [ Center( - child: Text(FFLocalizations.of(context).getVariableText( - ptText: "Nenhuma solicitação encontrada!", - enText: "No requests found")), + child: Text(FFLocalizations.of(context) + .getVariableText(ptText: "Nenhuma solicitação encontrada!", enText: "No requests found")), ) ], ), ) - else if (_hasData == true && - _loading == false && - _requestWrap.isNotEmpty) + else if (_hasData == true && _loading == false && _requestWrap.isNotEmpty) Expanded(child: _listItems(context)), if (_loading == true) Container( @@ -214,8 +203,7 @@ class _LiberationHistoryWidgetState extends State { buttons: [ if (liberationHistoryItem['NOT_STATUS'] == 'S') FFButtonWidget( - text: FFLocalizations.of(context) - .getVariableText(ptText: "Aceitar", enText: "Accept"), + text: FFLocalizations.of(context).getVariableText(ptText: "Aceitar", enText: "Accept"), options: FFButtonOptions( width: 130, height: 40, @@ -243,15 +231,13 @@ class _LiberationHistoryWidgetState extends State { showSnackbar( context, FFLocalizations.of(context).getVariableText( - enText: 'Successfully resolved visit', - ptText: 'Visita resolvida com sucesso'), + enText: 'Successfully resolved visit', ptText: 'Visita resolvida com sucesso'), false); } else { showSnackbar( context, FFLocalizations.of(context).getVariableText( - enText: 'Error resolving visit', - ptText: 'Erro ao resolver visita'), + enText: 'Error resolving visit', ptText: 'Erro ao resolver visita'), true); } }).whenComplete(() { @@ -266,8 +252,7 @@ class _LiberationHistoryWidgetState extends State { ), if (liberationHistoryItem['NOT_STATUS'] == 'S') FFButtonWidget( - text: FFLocalizations.of(context) - .getVariableText(ptText: "Bloquear", enText: "Block"), + text: FFLocalizations.of(context).getVariableText(ptText: "Bloquear", enText: "Block"), options: FFButtonOptions( width: 130, height: 40, @@ -295,8 +280,7 @@ class _LiberationHistoryWidgetState extends State { showSnackbar( context, FFLocalizations.of(context).getVariableText( - enText: 'Successfully resolved visit', - ptText: 'Visita resolvida com sucesso'), + enText: 'Successfully resolved visit', ptText: 'Visita resolvida com sucesso'), false); } else { showSnackbar(context, message, true); @@ -349,8 +333,7 @@ class _LiberationHistoryWidgetState extends State { return null; } catch (e, s) { DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed( - "proccessRequest.php", "", "Consulta de Solicitações", e, s); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Solicitações", e, s); setState(() { _hasData = false; _loading = false; @@ -363,8 +346,7 @@ class _LiberationHistoryWidgetState extends State { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( - FFLocalizations.of(context).getVariableText( - ptText: "Não há mais dados.", enText: "No more data."), + FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data."), ), duration: const Duration(seconds: 3), backgroundColor: FlutterFlowTheme.of(context).primary, diff --git a/lib/pages/message_history_page/message_history_page_model.dart b/lib/pages/message_history_page/message_history_page_model.dart index 21471970..ca0efca3 100644 --- a/lib/pages/message_history_page/message_history_page_model.dart +++ b/lib/pages/message_history_page/message_history_page_model.dart @@ -5,8 +5,7 @@ import 'package:hub/flutter_flow/request_manager.dart'; import 'package:hub/pages/message_history_page/message_history_page_widget.dart'; import 'package:hub/shared/utils/storage_util.dart'; -class MessageHistoryPageModel - extends FlutterFlowModel { +class MessageHistoryPageModel extends FlutterFlowModel { late final String devUUID; late final String userUUID; late final String cliUUID; @@ -17,8 +16,7 @@ class MessageHistoryPageModel String? Function(BuildContext, String?)? textControllerValidator; TabController? tabBarController; - int get tabBarCurrentIndex => - tabBarController != null ? tabBarController!.index : 0; + int get tabBarCurrentIndex => tabBarController != null ? tabBarController!.index : 0; final _getLiberationsManager = StreamRequestManager(); Stream getLiberations({ @@ -32,8 +30,7 @@ class MessageHistoryPageModel requestFn: requestFn, ); void clearGetLiberationsCache() => _getLiberationsManager.clear(); - void clearGetLiberationsCacheKey(String? uniqueKey) => - _getLiberationsManager.clearRequest(uniqueKey); + void clearGetLiberationsCacheKey(String? uniqueKey) => _getLiberationsManager.clearRequest(uniqueKey); @override void initState(BuildContext context) { diff --git a/lib/pages/message_history_page/message_history_page_widget.dart b/lib/pages/message_history_page/message_history_page_widget.dart index e7c83d82..cd424a7a 100644 --- a/lib/pages/message_history_page/message_history_page_widget.dart +++ b/lib/pages/message_history_page/message_history_page_widget.dart @@ -13,12 +13,10 @@ class MessageHistoryPageWidget extends StatefulWidget { const MessageHistoryPageWidget({super.key}); @override - State createState() => - _MessageHistoryPageWidgetState(); + State createState() => _MessageHistoryPageWidgetState(); } -class _MessageHistoryPageWidgetState extends State - with TickerProviderStateMixin { +class _MessageHistoryPageWidgetState extends State with TickerProviderStateMixin { late MessageHistoryPageModel _model; final scaffoldKey = GlobalKey(); @@ -44,27 +42,25 @@ class _MessageHistoryPageWidgetState extends State _scrollController = ScrollController() ..addListener(() { - if (_scrollController.position.atEdge && - _scrollController.position.pixels != 0) { + if (_scrollController.position.atEdge && _scrollController.position.pixels != 0) { _loadMore(); } }); - _model.tabBarController = - TabController(vsync: this, length: 3, initialIndex: 0) - ..addListener(() { - if (_model.tabBarController?.index == 0) { - _destinyType = "P"; - } else if (_model.tabBarController?.index == 1) { - _destinyType = "A"; - } else { - _destinyType = "T"; - } + _model.tabBarController = TabController(vsync: this, length: 3, initialIndex: 0) + ..addListener(() { + if (_model.tabBarController?.index == 0) { + _destinyType = "P"; + } else if (_model.tabBarController?.index == 1) { + _destinyType = "A"; + } else { + _destinyType = "T"; + } - _pageNumber = 1; - _messageWrap = []; - _messageFuture = fetchMessage(); - }); + _pageNumber = 1; + _messageWrap = []; + _messageFuture = fetchMessage(); + }); _model.textController ??= TextEditingController(); _model.textFieldFocusNode ??= FocusNode(); @@ -123,8 +119,7 @@ class _MessageHistoryPageWidgetState extends State return null; } catch (e, s) { DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed( - "proccessRequest.php", "", "Consulta de Mensagems", e, s); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Mensagems", e, s); setState(() { _hasData = false; _loading = false; @@ -193,8 +188,7 @@ class _MessageHistoryPageWidgetState extends State fontFamily: FlutterFlowTheme.of(context).titleMediumFamily, fontSize: 13.0, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).titleMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).titleMediumFamily), ), unselectedLabelStyle: const TextStyle(), indicatorColor: FlutterFlowTheme.of(context).primary, @@ -229,9 +223,8 @@ class _MessageHistoryPageWidgetState extends State mainAxisSize: MainAxisSize.max, children: [ Center( - child: Text(FFLocalizations.of(context).getVariableText( - ptText: "Nenhuma mensagem encontrada!", - enText: "No message found")), + child: Text(FFLocalizations.of(context) + .getVariableText(ptText: "Nenhuma mensagem encontrada!", enText: "No message found")), ) ], ), @@ -273,8 +266,7 @@ class _MessageHistoryPageWidgetState extends State ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( - FFLocalizations.of(context).getVariableText( - ptText: "Não há mais dados.", enText: "No more data."), + FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data."), ), duration: const Duration(seconds: 3), backgroundColor: FlutterFlowTheme.of(context).primary, @@ -333,8 +325,7 @@ class _MessageHistoryPageWidgetState extends State padding: const EdgeInsets.only(left: 5), child: Icon( Icons.history, - color: - FlutterFlowTheme.of(context).customColor6, + color: FlutterFlowTheme.of(context).customColor6, size: 15, ), ), @@ -344,8 +335,7 @@ class _MessageHistoryPageWidgetState extends State style: TextStyle( fontWeight: FontWeight.bold, fontSize: 10, - color: - FlutterFlowTheme.of(context).customColor6, + color: FlutterFlowTheme.of(context).customColor6, ), overflow: TextOverflow.ellipsis, ), @@ -360,8 +350,7 @@ class _MessageHistoryPageWidgetState extends State padding: const EdgeInsets.only(left: 5), child: Icon( Icons.message, - color: - FlutterFlowTheme.of(context).customColor6, + color: FlutterFlowTheme.of(context).customColor6, size: 15, ), ), diff --git a/lib/pages/package_order_page/package_order_page.dart b/lib/pages/package_order_page/package_order_page.dart index f184983f..372e655e 100644 --- a/lib/pages/package_order_page/package_order_page.dart +++ b/lib/pages/package_order_page/package_order_page.dart @@ -54,8 +54,7 @@ class _PackageOrderPage extends State { _scrollController = ScrollController() ..addListener(() { - if (_scrollController.position.atEdge && - _scrollController.position.pixels != 0) { + if (_scrollController.position.atEdge && _scrollController.position.pixels != 0) { _loadMoreOrders(); } }); @@ -78,8 +77,7 @@ class _PackageOrderPage extends State { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( - FFLocalizations.of(context).getVariableText( - ptText: "Não há mais dados.", enText: "No more data."), + FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data."), ), duration: const Duration(seconds: 3), backgroundColor: FlutterFlowTheme.of(context).primary, @@ -159,30 +157,25 @@ class _PackageOrderPage extends State { child: IconButton( icon: const Icon(Icons.filter_list), onPressed: () async { - final Map? selectedFilter = - await showModalBottomSheet>( - isScrollControlled: true, - backgroundColor: Colors.transparent, - context: context, - builder: (context) { - return GestureDetector( - onTap: () => Navigator.of(context).pop(), - child: Container( - color: Colors.transparent, - child: GestureDetector( - onTap: () {}, - child: OrderFilterModalWidget( - defaultAdresseeType: _selectedTypeSubject - .value['adresseeType'] ?? - '.*', - defaultStatus: - _selectedTypeSubject.value['status'] ?? - '.*', - ), - ), + final Map? selectedFilter = await showModalBottomSheet>( + isScrollControlled: true, + backgroundColor: Colors.transparent, + context: context, + builder: (context) { + return GestureDetector( + onTap: () => Navigator.of(context).pop(), + child: Container( + color: Colors.transparent, + child: GestureDetector( + onTap: () {}, + child: OrderFilterModalWidget( + defaultAdresseeType: _selectedTypeSubject.value['adresseeType'] ?? '.*', + defaultStatus: _selectedTypeSubject.value['status'] ?? '.*', ), - ); - }); + ), + ), + ); + }); if (selectedFilter != null) { _updateFilterAction(selectedFilter); @@ -228,9 +221,7 @@ class _PackageOrderPage extends State { return AppBar( backgroundColor: FlutterFlowTheme.of(context).primaryBackground, automaticallyImplyLeading: false, - title: Text( - FFLocalizations.of(context).getVariableText( - enText: 'My Orders', ptText: 'Minhas Encomendas'), + title: Text(FFLocalizations.of(context).getVariableText(enText: 'My Orders', ptText: 'Minhas Encomendas'), style: FlutterFlowTheme.of(context).headlineMedium.override( fontFamily: 'Nunito', color: FlutterFlowTheme.of(context).primaryText, @@ -261,9 +252,8 @@ class _PackageOrderPage extends State { children: [ Center( child: Text( - FFLocalizations.of(context).getVariableText( - ptText: "Nenhuma encomenda encontrada!", - enText: "No orders found!"), + FFLocalizations.of(context) + .getVariableText(ptText: "Nenhuma encomenda encontrada!", enText: "No orders found!"), )), ], ), @@ -315,12 +305,10 @@ class _PackageOrderPage extends State { '${FFLocalizations.of(context).getVariableText(ptText: 'Categoria', enText: 'Category')}:': order['customCategory'], '${FFLocalizations.of(context).getVariableText(ptText: 'Recebido em', enText: 'Received on')}:': - ValidatorUtil.toLocalDateTime( - 'yyyy-MM-dd HH:mm:ss', order['dtReceive']), + ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', order['dtReceive']), if (order['isPending'] == false) '${FFLocalizations.of(context).getVariableText(ptText: 'Retirado em', enText: 'Picked up on')}:': - ValidatorUtil.toLocalDateTime( - 'yyyy-MM-dd HH:mm:ss', order['dtPickUp']), + ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', order['dtPickUp']), }); } @@ -332,25 +320,21 @@ class _PackageOrderPage extends State { '${FFLocalizations.of(context).getVariableText(ptText: 'Categoria', enText: 'Category')}:': order['customCategory'], if (order['code'] != null) - '${FFLocalizations.of(context).getVariableText(ptText: 'Cód. Objeto', enText: 'Object Code')}:': - order['code'], + '${FFLocalizations.of(context).getVariableText(ptText: 'Cód. Objeto', enText: 'Object Code')}:': order['code'], '${FFLocalizations.of(context).getVariableText(ptText: 'Entregue por', enText: 'Delivered by')}:': order['sendedBy'], '${FFLocalizations.of(context).getVariableText(ptText: 'Recebido por', enText: 'Received by')}:': order['receivedBy'], '${FFLocalizations.of(context).getVariableText(ptText: 'Recebido em', enText: 'Received on')}:': - ValidatorUtil.toLocalDateTime( - 'yyyy-MM-dd HH:mm:ss', order['dtReceive']), + ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', order['dtReceive']), if (order['isPending'] == false) '${FFLocalizations.of(context).getVariableText(ptText: 'Retirado por', enText: 'Picked up by')}:': order['pickedUpBy'], if (order['isPending'] == false) '${FFLocalizations.of(context).getVariableText(ptText: 'Retirado em', enText: 'Picked up on')}:': - ValidatorUtil.toLocalDateTime( - 'yyyy-MM-dd HH:mm:ss', order['dtPickUp']), + ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', order['dtPickUp']), if (order['message'] != null) - '${FFLocalizations.of(context).getVariableText(ptText: 'Mensagem', enText: 'Message')}:': - order['message'] + '${FFLocalizations.of(context).getVariableText(ptText: 'Mensagem', enText: 'Message')}:': order['message'] }); } @@ -358,15 +342,13 @@ class _PackageOrderPage extends State { return [ if (order['isPending'] == true) Map.from({ - FFLocalizations.of(context).getVariableText( - ptText: 'Aguardando Retirada', - enText: 'Waiting Pick up'): FlutterFlowTheme.of(context).warning, + FFLocalizations.of(context).getVariableText(ptText: 'Aguardando Retirada', enText: 'Waiting Pick up'): + FlutterFlowTheme.of(context).warning, }) else Map.from({ - FFLocalizations.of(context).getVariableText( - ptText: 'Retirado', - enText: 'Picked up'): FlutterFlowTheme.of(context).primary, + FFLocalizations.of(context).getVariableText(ptText: 'Retirado', enText: 'Picked up'): + FlutterFlowTheme.of(context).primary, }), if (order['adresseeType'] == 'PRO') Map.from({ @@ -403,14 +385,12 @@ class _PackageOrderPage extends State { if (order['isPending'] == true) Map.from({ FFLocalizations.of(context).getVariableText( - ptText: 'Aguardando Retirada', - enText: 'Waiting Pick up'): - FlutterFlowTheme.of(context).warning, + ptText: 'Aguardando Retirada', + enText: 'Waiting Pick up'): FlutterFlowTheme.of(context).warning, }) else Map.from({ - FFLocalizations.of(context).getVariableText( - ptText: 'Retirado', enText: 'Picked up'): + FFLocalizations.of(context).getVariableText(ptText: 'Retirado', enText: 'Picked up'): FlutterFlowTheme.of(context).primary, }), ], diff --git a/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart b/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart index 475d3223..1821dcf5 100644 --- a/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart +++ b/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart @@ -64,7 +64,8 @@ class _PeopleOnThePropertyPageState extends State with mainAxisSize: MainAxisSize.max, children: [ Center( - child: Text(FFLocalizations.of(context).getVariableText(ptText: "Nenhum veículo encontrado!", enText: "No vehicle found")), + child: Text(FFLocalizations.of(context) + .getVariableText(ptText: "Nenhum veículo encontrado!", enText: "No vehicle found")), ) ], ), @@ -196,7 +197,8 @@ class _PeopleOnThePropertyPageState extends State with void _showNoMoreDataSnackBar(BuildContext context) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( - content: Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), + content: + Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), duration: const Duration(seconds: 3), backgroundColor: FlutterFlowTheme.of(context).primary, ), @@ -205,19 +207,21 @@ class _PeopleOnThePropertyPageState extends State with Widget _item(BuildContext context, dynamic uItem) { return CardItemTemplateComponentWidget( - imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${StorageUtil().devUUID}&cliID=${StorageUtil().cliUUID}&atividade=getFoto&Documento=${uItem['documento']}&tipo=Z', + imagePath: + 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${StorageUtil().devUUID}&cliID=${StorageUtil().cliUUID}&atividade=getFoto&Documento=${uItem['documento']}&tipo=Z', labelsHashMap: { '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': uItem['nome'] ?? '', //statusweb - '${FFLocalizations.of(context).getVariableText(ptText: "Possui App", enText: "Has App")}:': uItem['statusweb'] == "A" - ? FFLocalizations.of(context).getVariableText( - ptText: 'Sim', - enText: 'Yes', - ) - : FFLocalizations.of(context).getVariableText( - ptText: 'Não', - enText: 'No', - ), + '${FFLocalizations.of(context).getVariableText(ptText: "Possui App", enText: "Has App")}:': + uItem['statusweb'] == "A" + ? FFLocalizations.of(context).getVariableText( + ptText: 'Sim', + enText: 'Yes', + ) + : FFLocalizations.of(context).getVariableText( + ptText: 'Não', + enText: 'No', + ), }, statusHashMap: [], onTapCardItemAction: () async {}, diff --git a/lib/pages/pets_on_the_property_page/pets_history_screen.dart b/lib/pages/pets_on_the_property_page/pets_history_screen.dart index 95626cc2..26c42d2f 100644 --- a/lib/pages/pets_on_the_property_page/pets_history_screen.dart +++ b/lib/pages/pets_on_the_property_page/pets_history_screen.dart @@ -69,7 +69,8 @@ class _PetsHistoryScreenState extends State with TickerProvid mainAxisSize: MainAxisSize.max, children: [ Center( - child: Text(FFLocalizations.of(context).getVariableText(ptText: "Nenhum Pet encontrado!", enText: "No pets found")), + child: Text(FFLocalizations.of(context) + .getVariableText(ptText: "Nenhum Pet encontrado!", enText: "No pets found")), ) ], ), @@ -90,7 +91,10 @@ class _PetsHistoryScreenState extends State with TickerProvid return Padding( padding: const EdgeInsets.only(right: 30, top: 10), child: Text( - model.petAmountRegister == '0' ? FFLocalizations.of(context).getVariableText(ptText: "Ilimitado", enText: "Unlimited") : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}$count/${model.petAmountRegister}", + model.petAmountRegister == '0' + ? FFLocalizations.of(context) + .getVariableText(ptText: "Ilimitado", enText: "Unlimited") + : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}$count/${model.petAmountRegister}", textAlign: TextAlign.right, ), ); @@ -203,7 +207,8 @@ class _PetsHistoryScreenState extends State with TickerProvid void _showNoMoreDataSnackBar(BuildContext context) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( - content: Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), + content: + Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), duration: const Duration(seconds: 3), backgroundColor: FlutterFlowTheme.of(context).primary, ), @@ -212,7 +217,8 @@ class _PetsHistoryScreenState extends State with TickerProvid Widget _item(BuildContext context, dynamic uItem) { return CardItemTemplateComponentWidget( - imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${model.devUUID}&userUUID=${model.userUUID}&cliID=${model.cliUUID}&atividade=consultaFotoPet&petId=${uItem['id'] ?? ''}', + imagePath: + 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${model.devUUID}&userUUID=${model.userUUID}&cliID=${model.cliUUID}&atividade=consultaFotoPet&petId=${uItem['id'] ?? ''}', labelsHashMap: { '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': uItem['name'] ?? '', '${FFLocalizations.of(context).getVariableText(ptText: "Espécie", enText: "Species")}:': uItem['species'] ?? '', diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index 3ea09c9f..baf1ddc3 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -180,7 +180,8 @@ class PetsPageModel extends FlutterFlowModel { // updateImage!(); (() async { - Response response = await get(Uri.parse('https://freaccess.com.br/freaccess/getImage.php?devUUID=$devUUID&userUUID=$userUUID&cliID=$cliUUID&atividade=consultaFotoPet&petId=$petId')); + Response response = await get(Uri.parse( + 'https://freaccess.com.br/freaccess/getImage.php?devUUID=$devUUID&userUUID=$userUUID&cliID=$cliUUID&atividade=consultaFotoPet&petId=$petId')); String base64 = base64Encode(response.bodyBytes); uploadedTempFile = await ImageUtils.convertToUploadFile(base64); updateImage?.call(); @@ -245,7 +246,8 @@ class PetsPageModel extends FlutterFlowModel { Future updatePet() async { var img = await ImageUtils.convertImageFileToBase64(uploadedLocalFile!); img = "base64;jpeg,$img"; - final url = 'https://freaccess.com.br/freaccess/getImage.php?devUUID=$devUUID&userUUID=$userUUID&cliID=$cliUUID&atividade=consultaFotoPet&petId=$petId'; + final url = + 'https://freaccess.com.br/freaccess/getImage.php?devUUID=$devUUID&userUUID=$userUUID&cliID=$cliUUID&atividade=consultaFotoPet&petId=$petId'; final response = await PhpGroup.updatePet.call( petID: petId, image: img, @@ -491,11 +493,22 @@ class PetsPageModel extends FlutterFlowModel { ], // 'MIN', 'PEQ', 'MED', 'GRA', 'GIG' labelsHashMap: Map.from({ - if (item['species'] != null && item['species'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Espécie", enText: "Species")}:': item['species'].toString().toUpperCase(), - if (item['breed'] != null && item['breed'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Raça", enText: "Breed")}:': item['breed'].toString().toUpperCase(), - if (item['color'] != null && item['color'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Cor", enText: "Color")}:': item['color'].toString().toUpperCase(), - if (item['birthdayDate'] != null && item['birthdayDate'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Data de Nascimento", enText: "Date of Birth")}:': ValidatorUtil.formatDateTimePicker(item['birthdayDate']), - if (item['gender'] != null && item['gender'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Gênero", enText: "Gender")}:': item['gender'] == 'MAC' ? FFLocalizations.of(context).getVariableText(ptText: 'MACHO', enText: 'MALE') : FFLocalizations.of(context).getVariableText(enText: 'FEMALE', ptText: 'FÊMEA'), + if (item['species'] != null && item['species'] != '') + '${FFLocalizations.of(context).getVariableText(ptText: "Espécie", enText: "Species")}:': + item['species'].toString().toUpperCase(), + if (item['breed'] != null && item['breed'] != '') + '${FFLocalizations.of(context).getVariableText(ptText: "Raça", enText: "Breed")}:': + item['breed'].toString().toUpperCase(), + if (item['color'] != null && item['color'] != '') + '${FFLocalizations.of(context).getVariableText(ptText: "Cor", enText: "Color")}:': + item['color'].toString().toUpperCase(), + if (item['birthdayDate'] != null && item['birthdayDate'] != '') + '${FFLocalizations.of(context).getVariableText(ptText: "Data de Nascimento", enText: "Date of Birth")}:': + ValidatorUtil.formatDateTimePicker(item['birthdayDate']), + if (item['gender'] != null && item['gender'] != '') + '${FFLocalizations.of(context).getVariableText(ptText: "Gênero", enText: "Gender")}:': item['gender'] == 'MAC' + ? FFLocalizations.of(context).getVariableText(ptText: 'MACHO', enText: 'MALE') + : FFLocalizations.of(context).getVariableText(enText: 'FEMALE', ptText: 'FÊMEA'), if (item['size'] != null && item['size'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Porte", enText: "Size")}:': item['size'] == 'MIN' ? FFLocalizations.of(context).getVariableText(ptText: 'MINI', enText: 'MINI') @@ -508,9 +521,11 @@ class PetsPageModel extends FlutterFlowModel { : item['size'] == 'GIG' ? FFLocalizations.of(context).getVariableText(ptText: 'GIGANTE', enText: 'GIANT') : '', - if (item['notes'] != null && item['notes'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Observação", enText: "Notes")}:': item['notes'] ?? '', + if (item['notes'] != null && item['notes'] != '') + '${FFLocalizations.of(context).getVariableText(ptText: "Observação", enText: "Notes")}:': item['notes'] ?? '', }), - imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=$devUUID&userUUID=$userUUID&cliID=$cliUUID&atividade=consultaFotoPet&petId=${item['id'] ?? ''}', + imagePath: + 'https://freaccess.com.br/freaccess/getImage.php?devUUID=$devUUID&userUUID=$userUUID&cliID=$cliUUID&atividade=consultaFotoPet&petId=${item['id'] ?? ''}', statusHashMap: [ if (item['gender'] == "MAC") Map.from({ diff --git a/lib/pages/pets_page/pets_page_widget.dart b/lib/pages/pets_page/pets_page_widget.dart index 21664cf9..cf48754f 100644 --- a/lib/pages/pets_page/pets_page_widget.dart +++ b/lib/pages/pets_page/pets_page_widget.dart @@ -65,7 +65,10 @@ class _PetsPageWidgetState extends State with SingleTickerProvid Widget build(BuildContext context) { _model.buildContext = context; - return Scaffold(appBar: _buildAppBar(context), backgroundColor: FlutterFlowTheme.of(context).primaryBackground, body: _buildTabView(context)); + return Scaffold( + appBar: _buildAppBar(context), + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, + body: _buildTabView(context)); } PreferredSizeWidget _buildAppBar(BuildContext context) { @@ -85,7 +88,9 @@ class _PetsPageWidgetState extends State with SingleTickerProvid return TabViewUtil( context: context, model: _model, - labelTab1: _model.isEditing ? FFLocalizations.of(context).getVariableText(ptText: 'Editar', enText: 'Edit') : FFLocalizations.of(context).getVariableText(ptText: 'Cadastrar', enText: 'Register'), + labelTab1: _model.isEditing + ? FFLocalizations.of(context).getVariableText(ptText: 'Editar', enText: 'Edit') + : FFLocalizations.of(context).getVariableText(ptText: 'Cadastrar', enText: 'Register'), labelTab2: FFLocalizations.of(context).getVariableText(ptText: 'Consultar', enText: 'History'), controller: _model.tabBarController, widget1: _model.isEditing ? _buildEditForm(context) : _buildRegisterForm(context), @@ -120,14 +125,16 @@ class _PetsPageWidgetState extends State with SingleTickerProvid Form( key: _model.registerFormKey, autovalidateMode: AutovalidateMode.onUserInteraction, - child: Column(mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ + child: + Column(mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Padding( padding: const EdgeInsets.fromLTRB(0, 10, 0, 20), child: MediaUploadButtonUtil( onUploadComplete: _model.handleUploadComplete, isUploading: _model.isDataUploading, uploadedFiles: _model.uploadedLocalFile, - labelText: FFLocalizations.of(context).getVariableText(ptText: 'Clique para adicionar a foto de seu Pet', enText: 'Click to add your Pet\'s photo'), + labelText: FFLocalizations.of(context).getVariableText( + ptText: 'Clique para adicionar a foto de seu Pet', enText: 'Click to add your Pet\'s photo'), ), ), CustomInputUtil( @@ -146,7 +153,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid validator: _model.textControllerSpeciesValidator.asValidator(context), focusNode: _model.textFieldFocusSpecies, labelText: FFLocalizations.of(context).getVariableText(ptText: 'Espécie', enText: 'Species'), - hintText: FFLocalizations.of(context).getVariableText(ptText: 'Ex: Cachorro, Gato, Papagaio', enText: 'e.g. Dog, Cat, Parrot'), + hintText: FFLocalizations.of(context) + .getVariableText(ptText: 'Ex: Cachorro, Gato, Papagaio', enText: 'e.g. Dog, Cat, Parrot'), suffixIcon: Symbols.sound_detection_dog_barking, haveMaxLength: true, onChanged: (value) => setState(() {}), @@ -159,7 +167,9 @@ class _PetsPageWidgetState extends State with SingleTickerProvid validator: _model.textControllerRaceValidator.asValidator(context), focusNode: _model.textFieldFocusRace, labelText: FFLocalizations.of(context).getVariableText(ptText: 'Raça', enText: 'Race'), - hintText: FFLocalizations.of(context).getVariableText(ptText: 'Ex: Labrador, Poodle, Siamês, Persa', enText: 'e.g. Labrador, Poodle, Siamese, Persian'), + hintText: FFLocalizations.of(context).getVariableText( + ptText: 'Ex: Labrador, Poodle, Siamês, Persa', + enText: 'e.g. Labrador, Poodle, Siamese, Persian'), suffixIcon: Icons.pets_outlined, haveMaxLength: true, onChanged: (value) => setState(() {}), @@ -173,7 +183,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid validator: _model.textControllerColorValidator.asValidator(context), focusNode: _model.textFieldFocusColor, labelText: FFLocalizations.of(context).getVariableText(ptText: 'Cor', enText: 'Color'), - hintText: FFLocalizations.of(context).getVariableText(ptText: 'Ex: Preto, Amarelo, Branco', enText: 'e.g. Black, Yellow, White'), + hintText: FFLocalizations.of(context) + .getVariableText(ptText: 'Ex: Preto, Amarelo, Branco', enText: 'e.g. Black, Yellow, White'), suffixIcon: Symbols.palette, haveMaxLength: true, onChanged: (value) => setState(() {}), @@ -206,7 +217,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: FFLocalizations.of(context).getVariableText( ptText: 'Data de Nascimento', @@ -216,7 +228,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), lineHeight: 1.0, ), enabledBorder: OutlineInputBorder( @@ -255,7 +268,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), lineHeight: 1.8, ), textAlign: TextAlign.start, @@ -286,7 +300,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid fontSize: 32.0, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), ), pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, pickerForegroundColor: FlutterFlowTheme.of(context).primaryText, @@ -347,7 +362,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid fontFamily: FlutterFlowTheme.of(context).bodySmallFamily, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -356,20 +372,26 @@ class _PetsPageWidgetState extends State with SingleTickerProvid padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), child: CustomSelect( options: const ['MAC', 'FEM'], - controller: _model.dropDownValueController1 ??= FormFieldController(_model.dropDownValue1 ??= ''), + controller: _model.dropDownValueController1 ??= + FormFieldController(_model.dropDownValue1 ??= ''), isRequired: true, changed: (val) => safeSetState(() { _model.dropDownValue1 = val; }), dropDownValue: _model.dropDownValue1, - optionsLabel: [FFLocalizations.of(context).getVariableText(ptText: 'Macho', enText: 'Male'), FFLocalizations.of(context).getVariableText(ptText: 'Fêmea', enText: 'Female')], - hintText: FFLocalizations.of(context).getVariableText(ptText: 'Selecione o gênero do Pet', enText: 'Select the gender of the Pet')), + optionsLabel: [ + FFLocalizations.of(context).getVariableText(ptText: 'Macho', enText: 'Male'), + FFLocalizations.of(context).getVariableText(ptText: 'Fêmea', enText: 'Female') + ], + hintText: FFLocalizations.of(context).getVariableText( + ptText: 'Selecione o gênero do Pet', enText: 'Select the gender of the Pet')), ), Padding( padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), child: CustomSelect( options: const ['MIN', 'PEQ', 'MED', 'GRA', 'GIG'], - controller: _model.dropDownValueController2 ??= FormFieldController(_model.dropDownValue2 ??= ''), + controller: _model.dropDownValueController2 ??= + FormFieldController(_model.dropDownValue2 ??= ''), isRequired: true, changed: (val) => safeSetState(() { _model.dropDownValue2 = val; @@ -382,7 +404,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid FFLocalizations.of(context).getVariableText(ptText: 'Grande', enText: 'Big'), FFLocalizations.of(context).getVariableText(ptText: 'Gigante', enText: 'Giant'), ], - hintText: FFLocalizations.of(context).getVariableText(ptText: 'Selecione o porte do Pet', enText: 'Select the size of the Pet')), + hintText: FFLocalizations.of(context) + .getVariableText(ptText: 'Selecione o porte do Pet', enText: 'Select the size of the Pet')), ), Align( alignment: const AlignmentDirectional(-1.0, 0.0), @@ -398,7 +421,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid fontFamily: FlutterFlowTheme.of(context).bodySmallFamily, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -407,8 +431,10 @@ class _PetsPageWidgetState extends State with SingleTickerProvid controller: _model.textControllerObservation, validator: _model.textControllerObservationValidator.asValidator(context), focusNode: _model.textFieldFocusObservation, - labelText: FFLocalizations.of(context).getVariableText(ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'), - hintText: FFLocalizations.of(context).getVariableText(ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'), + labelText: FFLocalizations.of(context).getVariableText( + ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'), + hintText: FFLocalizations.of(context).getVariableText( + ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'), suffixIcon: Icons.text_fields, haveMaxLength: true, onChanged: (value) => setState(() {}), @@ -416,7 +442,9 @@ class _PetsPageWidgetState extends State with SingleTickerProvid ), Padding( padding: const EdgeInsets.fromLTRB(70, 20, 70, 30), - child: SubmitButtonUtil(labelText: FFLocalizations.of(context).getVariableText(ptText: 'Cadastrar', enText: 'Register'), onPressed: _model.isFormValid(context) ? _model.registerPet : null), + child: SubmitButtonUtil( + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Cadastrar', enText: 'Register'), + onPressed: _model.isFormValid(context) ? _model.registerPet : null), ), ])), ], @@ -450,14 +478,16 @@ class _PetsPageWidgetState extends State with SingleTickerProvid Form( key: _model.updateFormKey, autovalidateMode: AutovalidateMode.onUserInteraction, - child: Column(mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ + child: + Column(mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Padding( padding: const EdgeInsets.fromLTRB(0, 10, 0, 20), child: MediaUploadButtonUtil( onUploadComplete: _model.handleUploadComplete, isUploading: _model.isDataUploading, uploadedFiles: _model.uploadedLocalFile, - labelText: FFLocalizations.of(context).getVariableText(ptText: 'Clique para adicionar a foto de seu Pet', enText: 'Click to add your Pet\'s photo'), + labelText: FFLocalizations.of(context).getVariableText( + ptText: 'Clique para adicionar a foto de seu Pet', enText: 'Click to add your Pet\'s photo'), ), ), CustomInputUtil( @@ -478,7 +508,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid validator: _model.textControllerSpeciesValidator.asValidator(context), focusNode: _model.textFieldFocusSpecies, labelText: FFLocalizations.of(context).getVariableText(ptText: 'Espécie', enText: 'Species'), - hintText: FFLocalizations.of(context).getVariableText(ptText: 'Ex: Cachorro, Gato, Papagaio', enText: 'e.g. Dog, Cat, Parrot'), + hintText: FFLocalizations.of(context) + .getVariableText(ptText: 'Ex: Cachorro, Gato, Papagaio', enText: 'e.g. Dog, Cat, Parrot'), suffixIcon: Symbols.sound_detection_dog_barking, haveMaxLength: true, onChanged: (value) => setState(() {}), @@ -492,7 +523,9 @@ class _PetsPageWidgetState extends State with SingleTickerProvid validator: _model.textControllerRaceValidator.asValidator(context), focusNode: _model.textFieldFocusRace, labelText: FFLocalizations.of(context).getVariableText(ptText: 'Raça', enText: 'Race'), - hintText: FFLocalizations.of(context).getVariableText(ptText: 'Ex: Labrador, Poodle, Siamês, Persa', enText: 'e.g. Labrador, Poodle, Siamese, Persian'), + hintText: FFLocalizations.of(context).getVariableText( + ptText: 'Ex: Labrador, Poodle, Siamês, Persa', + enText: 'e.g. Labrador, Poodle, Siamese, Persian'), suffixIcon: Icons.pets_outlined, haveMaxLength: true, onChanged: (value) => setState(() {}), @@ -506,7 +539,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid validator: _model.textControllerColorValidator.asValidator(context), focusNode: _model.textFieldFocusColor, labelText: FFLocalizations.of(context).getVariableText(ptText: 'Cor', enText: 'Color'), - hintText: FFLocalizations.of(context).getVariableText(ptText: 'Ex: Preto, Amarelo, Branco', enText: 'e.g. Black, Yellow, White'), + hintText: FFLocalizations.of(context) + .getVariableText(ptText: 'Ex: Preto, Amarelo, Branco', enText: 'e.g. Black, Yellow, White'), suffixIcon: Symbols.palette, haveMaxLength: true, onChanged: (value) => setState(() {}), @@ -539,7 +573,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: FFLocalizations.of(context).getVariableText( ptText: 'Data de Nascimento', @@ -549,7 +584,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), lineHeight: 1.0, ), enabledBorder: OutlineInputBorder( @@ -588,7 +624,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), lineHeight: 1.8, ), textAlign: TextAlign.start, @@ -619,7 +656,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid fontSize: 32.0, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), ), pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, pickerForegroundColor: FlutterFlowTheme.of(context).primaryText, @@ -680,7 +718,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid fontFamily: FlutterFlowTheme.of(context).bodySmallFamily, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -689,20 +728,26 @@ class _PetsPageWidgetState extends State with SingleTickerProvid padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), child: CustomSelect( options: const ['MAC', 'FEM'], - controller: _model.dropDownValueController1 ??= FormFieldController(_model.dropDownValue1 ??= ''), + controller: _model.dropDownValueController1 ??= + FormFieldController(_model.dropDownValue1 ??= ''), isRequired: true, changed: (val) => safeSetState(() { _model.dropDownValue1 = val; }), dropDownValue: _model.dropDownValue1, - optionsLabel: [FFLocalizations.of(context).getVariableText(ptText: 'Macho', enText: 'Male'), FFLocalizations.of(context).getVariableText(ptText: 'Fêmea', enText: 'Female')], - hintText: FFLocalizations.of(context).getVariableText(ptText: 'Selecione o gênero do Pet', enText: 'Select the gender of the Pet')), + optionsLabel: [ + FFLocalizations.of(context).getVariableText(ptText: 'Macho', enText: 'Male'), + FFLocalizations.of(context).getVariableText(ptText: 'Fêmea', enText: 'Female') + ], + hintText: FFLocalizations.of(context).getVariableText( + ptText: 'Selecione o gênero do Pet', enText: 'Select the gender of the Pet')), ), Padding( padding: const EdgeInsets.fromLTRB(0, 0, 0, 15), child: CustomSelect( options: const ['MIN', 'PEQ', 'MED', 'GRA', 'GIG'], - controller: _model.dropDownValueController2 ??= FormFieldController(_model.dropDownValue2 ??= ''), + controller: _model.dropDownValueController2 ??= + FormFieldController(_model.dropDownValue2 ??= ''), isRequired: true, changed: (val) => safeSetState(() { _model.dropDownValue2 = val; @@ -715,7 +760,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid FFLocalizations.of(context).getVariableText(ptText: 'Grande', enText: 'Big'), FFLocalizations.of(context).getVariableText(ptText: 'Gigante', enText: 'Giant'), ], - hintText: FFLocalizations.of(context).getVariableText(ptText: 'Selecione o porte do Pet', enText: 'Select the size of the Pet')), + hintText: FFLocalizations.of(context) + .getVariableText(ptText: 'Selecione o porte do Pet', enText: 'Select the size of the Pet')), ), Align( alignment: const AlignmentDirectional(-1.0, 0.0), @@ -731,7 +777,8 @@ class _PetsPageWidgetState extends State with SingleTickerProvid fontFamily: FlutterFlowTheme.of(context).bodySmallFamily, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -740,8 +787,10 @@ class _PetsPageWidgetState extends State with SingleTickerProvid controller: _model.textControllerObservation, validator: _model.textControllerObservationValidator.asValidator(context), focusNode: _model.textFieldFocusObservation, - labelText: FFLocalizations.of(context).getVariableText(ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'), - hintText: FFLocalizations.of(context).getVariableText(ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'), + labelText: FFLocalizations.of(context).getVariableText( + ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'), + hintText: FFLocalizations.of(context).getVariableText( + ptText: 'Escreva as suas observações aqui...', enText: 'Write your observations here...'), suffixIcon: Icons.text_fields, haveMaxLength: true, maxLength: 250, @@ -749,7 +798,9 @@ class _PetsPageWidgetState extends State with SingleTickerProvid ), Padding( padding: const EdgeInsets.fromLTRB(70, 20, 70, 30), - child: SubmitButtonUtil(labelText: FFLocalizations.of(context).getVariableText(ptText: 'Salvar', enText: 'Save'), onPressed: _model.isFormValid(context) ? _model.updatePet : null), + child: SubmitButtonUtil( + labelText: FFLocalizations.of(context).getVariableText(ptText: 'Salvar', enText: 'Save'), + onPressed: _model.isFormValid(context) ? _model.updatePet : null), ), ])), ], diff --git a/lib/pages/preferences_settings_page/preferences_settings_model.dart b/lib/pages/preferences_settings_page/preferences_settings_model.dart index 09dfd292..c5a5388a 100644 --- a/lib/pages/preferences_settings_page/preferences_settings_model.dart +++ b/lib/pages/preferences_settings_page/preferences_settings_model.dart @@ -200,13 +200,6 @@ class PreferencesPageModel with ChangeNotifier { showAlertDialog(context, title, content, onConfirm); } - - - - - - - void _showPassKey(BuildContext context, void Function(String) onChange) async { await showModalBottomSheet( isScrollControlled: true, @@ -231,5 +224,4 @@ class PreferencesPageModel with ChangeNotifier { SnackBarUtil.showSnackBar(context, content, isError: true); }).whenComplete(() => notifyListeners()); } - } diff --git a/lib/pages/preferences_settings_page/preferences_settings_widget.dart b/lib/pages/preferences_settings_page/preferences_settings_widget.dart index 945092b9..25b9c3a3 100644 --- a/lib/pages/preferences_settings_page/preferences_settings_widget.dart +++ b/lib/pages/preferences_settings_page/preferences_settings_widget.dart @@ -91,8 +91,7 @@ class _PreferencesPageWidgetState extends State { ); } - Widget _buildIconButton( - BuildContext context, int index, PreferencesPageModel model) { + Widget _buildIconButton(BuildContext context, int index, PreferencesPageModel model) { IconData icon; Function() onPressed = () => {}; bool isEnabled; @@ -104,8 +103,7 @@ class _PreferencesPageWidgetState extends State { onPressed = () => model.toggleFingerprint(context); isEnabled = StorageUtil().fingerprint; content = FFLocalizations.of(context).getVariableText( - ptText: - 'Ative a autenticação por impressão digital para login seguro.', + ptText: 'Ative a autenticação por impressão digital para login seguro.', enText: 'Enable fingerprint authentication for secure login.', ); break; @@ -161,8 +159,7 @@ class _PreferencesPageWidgetState extends State { onPressed = () => model.deleteAccount(context); isEnabled = false; content = FFLocalizations.of(context).getVariableText( - ptText: - 'Delete sua conta e todos os dados associados permanentemente.', + ptText: 'Delete sua conta e todos os dados associados permanentemente.', enText: 'Delete your account and all associated data permanently.', ); break; @@ -172,8 +169,7 @@ class _PreferencesPageWidgetState extends State { isEnabled = false; content = FFLocalizations.of(context).getVariableText( ptText: 'Sair da conta atual e voltar para a tela de login.', - enText: - 'Log out of the current account and return to the login screen.', + enText: 'Log out of the current account and return to the login screen.', ); break; default: @@ -198,14 +194,12 @@ class _PreferencesPageWidgetState extends State { child: Row( children: [ CircleAvatar( - backgroundColor: isEnabled - ? FlutterFlowTheme.of(context).primary - : FlutterFlowTheme.of(context).alternate, + backgroundColor: + isEnabled ? FlutterFlowTheme.of(context).primary : FlutterFlowTheme.of(context).alternate, child: Icon( icon, - color: isEnabled - ? FlutterFlowTheme.of(context).primaryBackground - : FlutterFlowTheme.of(context).primary, + color: + isEnabled ? FlutterFlowTheme.of(context).primaryBackground : FlutterFlowTheme.of(context).primary, ), ), const SizedBox(width: 8.0), @@ -228,6 +222,4 @@ class _PreferencesPageWidgetState extends State { ), ); } - - } diff --git a/lib/pages/provisional_schedule_page/provisional_schedule_widget.dart b/lib/pages/provisional_schedule_page/provisional_schedule_widget.dart index 022822ed..96d35366 100644 --- a/lib/pages/provisional_schedule_page/provisional_schedule_widget.dart +++ b/lib/pages/provisional_schedule_page/provisional_schedule_widget.dart @@ -67,7 +67,6 @@ class _ProvisionalScheduleState extends State { centerTitle: true, elevation: 0.0, ), - body: const SafeArea( - top: true, child: ScheduleProvisionalVisitPageWidget())); + body: const SafeArea(top: true, child: ScheduleProvisionalVisitPageWidget())); } } diff --git a/lib/pages/qr_code_page/qr_code_page_model.dart b/lib/pages/qr_code_page/qr_code_page_model.dart index a69c39eb..81bf7cc1 100644 --- a/lib/pages/qr_code_page/qr_code_page_model.dart +++ b/lib/pages/qr_code_page/qr_code_page_model.dart @@ -37,8 +37,7 @@ class QrCodePageModel extends FlutterFlowModel { unfocusNode.dispose(); } - Uint8List assembleQRPacket( - int direction, String identifier, String password) { + Uint8List assembleQRPacket(int direction, String identifier, String password) { List packet = [direction]; String paddedBadge = identifier.padLeft(30, '0'); @@ -56,8 +55,7 @@ class QrCodePageModel extends FlutterFlowModel { int sum = year + month + day + hour + minute; - if (sum == int.parse('0D', radix: 16) || - sum == int.parse('0A', radix: 16)) { + if (sum == int.parse('0D', radix: 16) || sum == int.parse('0A', radix: 16)) { packet.add(int.parse('FF', radix: 16)); } else { packet.add(sum); @@ -75,16 +73,13 @@ class QrCodePageModel extends FlutterFlowModel { check ^= b; } - if (check == int.parse('0D', radix: 16) || - check == int.parse('0A', radix: 16)) { + if (check == int.parse('0D', radix: 16) || check == int.parse('0A', radix: 16)) { packet.add(int.parse('FF', radix: 16)); } else { packet.add(check); } - var bytes = packet - .map((byte) => byte.toRadixString(16).padLeft(2, '0')) - .join((' ')); + var bytes = packet.map((byte) => byte.toRadixString(16).padLeft(2, '0')).join((' ')); return Uint8List.fromList(packet); } @@ -93,16 +88,13 @@ class QrCodePageModel extends FlutterFlowModel { int len = s.length; Uint8List data = Uint8List(len ~/ 2); for (int i = 0; i < len; i += 2) { - data[i ~/ 2] = - ((int.parse(s[i], radix: 16) << 4) + int.parse(s[i + 1], radix: 16)); + data[i ~/ 2] = ((int.parse(s[i], radix: 16) << 4) + int.parse(s[i + 1], radix: 16)); } return data; } String byteToHexa(Uint8List pDados) { - return pDados - .map((byte) => byte.toRadixString(16).padLeft(2, '0').toUpperCase()) - .join(); + return pDados.map((byte) => byte.toRadixString(16).padLeft(2, '0').toUpperCase()).join(); } Future byteToString(Uint8List bytes) async { @@ -120,8 +112,7 @@ class QrCodePageModel extends FlutterFlowModel { const Color foregroundColor = Colors.black; return QrImageView.withQr( qr: QrCode.fromUint8List( - data: assembleQRPacket(direction, identifier, pass), - errorCorrectLevel: errorCorrectLevel), + data: assembleQRPacket(direction, identifier, pass), errorCorrectLevel: errorCorrectLevel), size: dimension, padding: const EdgeInsets.all(10), backgroundColor: backgroundColor, diff --git a/lib/pages/qr_code_page/qr_code_page_widget.dart b/lib/pages/qr_code_page/qr_code_page_widget.dart index 32ae343c..8a116e1c 100644 --- a/lib/pages/qr_code_page/qr_code_page_widget.dart +++ b/lib/pages/qr_code_page/qr_code_page_widget.dart @@ -28,8 +28,7 @@ class QrCodePageWidget extends StatefulWidget { State createState() => _QrCodePageWidgetState(); } -class _QrCodePageWidgetState extends State - with TickerProviderStateMixin { +class _QrCodePageWidgetState extends State with TickerProviderStateMixin { late QrCodePageModel _model; final scaffoldKey = GlobalKey(); @@ -65,9 +64,7 @@ class _QrCodePageWidgetState extends State ), }); setupAnimations( - animationsMap.values.where((anim) => - anim.trigger == AnimationTrigger.onActionTrigger || - !anim.applyInitialState), + animationsMap.values.where((anim) => anim.trigger == AnimationTrigger.onActionTrigger || !anim.applyInitialState), this, ); @@ -84,9 +81,7 @@ class _QrCodePageWidgetState extends State void dispose() { // Removendo o ouvinte antes de chamar super.dispose para evitar vazamentos de memória if (animationsMap['barcodeOnActionTriggerAnimation'] != null) { - animationsMap['barcodeOnActionTriggerAnimation']! - .controller - .removeStatusListener((status) {}); + animationsMap['barcodeOnActionTriggerAnimation']!.controller.removeStatusListener((status) {}); } super.dispose(); @@ -105,8 +100,7 @@ class _QrCodePageWidgetState extends State Widget buildBody(BuildContext context) { double screenWidth = MediaQuery.of(context).size.width; double screenHeight = MediaQuery.of(context).size.height; - double smallerDimension = - screenWidth < screenHeight ? screenWidth : screenHeight; + double smallerDimension = screenWidth < screenHeight ? screenWidth : screenHeight; double dimension = smallerDimension * 0.75; double totalTimeInSeconds = 100.0; return SafeArea( @@ -126,8 +120,7 @@ class _QrCodePageWidgetState extends State fontSize: 20.0, letterSpacing: 0.0, fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), Stack( @@ -141,9 +134,7 @@ class _QrCodePageWidgetState extends State _resetAnimationAndToggleAccess(); }); - _model.isFingerprint - ? await _showBiometricsAuth(context) - : await _showQrCodeBottomSheet(context); + _model.isFingerprint ? await _showBiometricsAuth(context) : await _showQrCodeBottomSheet(context); }, child: _model.buildQrCode( dimension: dimension, @@ -206,21 +197,15 @@ class _QrCodePageWidgetState extends State ), options: FFButtonOptions( height: 40.0, - padding: const EdgeInsetsDirectional.fromSTEB( - 24.0, 0.0, 24.0, 0.0), - iconPadding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(24.0, 0.0, 24.0, 0.0), + iconPadding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0), color: FlutterFlowTheme.of(context).primary, - textStyle: FlutterFlowTheme.of(context) - .titleSmall - .override( - fontFamily: FlutterFlowTheme.of(context) - .titleSmallFamily, + textStyle: FlutterFlowTheme.of(context).titleSmall.override( + fontFamily: FlutterFlowTheme.of(context).titleSmallFamily, color: Colors.white, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap() - .containsKey(FlutterFlowTheme.of(context) - .titleSmallFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).titleSmallFamily), ), elevation: 3.0, borderSide: const BorderSide( @@ -244,17 +229,14 @@ class _QrCodePageWidgetState extends State visible: _model.isAccess == true, child: Text( FFLocalizations.of(context).getVariableText( - ptText: - 'Certifique-se de que o QRCode está visivel para o leitor', + ptText: 'Certifique-se de que o QRCode está visivel para o leitor', enText: 'Make sure the QRCode is visible to the reader', // '6z6kvmhl' /* Certifique-se de que o QRCode ... */, ), style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -274,8 +256,7 @@ class _QrCodePageWidgetState extends State children: [ Expanded( child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 10.0, 0.0, 0.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(10.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context).getVariableText( ptText: 'Expirando QR code em', @@ -284,13 +265,11 @@ class _QrCodePageWidgetState extends State ), textAlign: TextAlign.center, style: FlutterFlowTheme.of(context).bodyMedium.override( - fontFamily: - FlutterFlowTheme.of(context).bodyMediumFamily, + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context) - .bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -298,13 +277,11 @@ class _QrCodePageWidgetState extends State Align( alignment: const AlignmentDirectional(0.0, 0.0), child: Padding( - padding: const EdgeInsetsDirectional.fromSTEB( - 0.0, 0.0, 20.0, 0.0), + padding: const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 20.0, 0.0), child: StreamBuilder( stream: getProgressValue(), builder: (context, snapshot) { - if (snapshot.connectionState == - ConnectionState.waiting) { + if (snapshot.connectionState == ConnectionState.waiting) { return const CircularProgressIndicator(); } else if (snapshot.hasError) { return Text('Error: ${snapshot.error}'); @@ -323,23 +300,16 @@ class _QrCodePageWidgetState extends State onAnimationEnd: () { _resetAnimationAndToggleAccess(); }, - progressColor: - FlutterFlowTheme.of(context).primary, - backgroundColor: - FlutterFlowTheme.of(context).primaryText, + progressColor: FlutterFlowTheme.of(context).primary, + backgroundColor: FlutterFlowTheme.of(context).primaryText, center: Text( '${(progress * totalTimeInSeconds / 5).toStringAsFixed(1)}s', - style: FlutterFlowTheme.of(context) - .headlineSmall - .override( - fontFamily: FlutterFlowTheme.of(context) - .headlineSmallFamily, + style: FlutterFlowTheme.of(context).headlineSmall.override( + fontFamily: FlutterFlowTheme.of(context).headlineSmallFamily, fontSize: 14.0, letterSpacing: 0.0, useGoogleFonts: GoogleFonts.asMap() - .containsKey( - FlutterFlowTheme.of(context) - .headlineSmallFamily), + .containsKey(FlutterFlowTheme.of(context).headlineSmallFamily), ), ), startAngle: 20.0, @@ -362,12 +332,8 @@ class _QrCodePageWidgetState extends State .then((value) => BiometricHelper.authenticateBiometric().then((value) { safeSetState(() { if (animationsMap['barcodeOnActionTriggerAnimation'] != null) { - animationsMap['barcodeOnActionTriggerAnimation']! - .controller - .stop(); - animationsMap['barcodeOnActionTriggerAnimation']! - .controller - .reverse(); + animationsMap['barcodeOnActionTriggerAnimation']!.controller.stop(); + animationsMap['barcodeOnActionTriggerAnimation']!.controller.reverse(); } _model.isAccess = !_model.isAccess; _model.key = StorageUtil().fingerprintPass; @@ -394,14 +360,9 @@ class _QrCodePageWidgetState extends State child: QrCodePassKeyTemplateComponentWidget( toggleActionStatus: (key) async { safeSetState(() { - if (animationsMap['barcodeOnActionTriggerAnimation'] != - null) { - animationsMap['barcodeOnActionTriggerAnimation']! - .controller - .stop(); - animationsMap['barcodeOnActionTriggerAnimation']! - .controller - .reverse(); + if (animationsMap['barcodeOnActionTriggerAnimation'] != null) { + animationsMap['barcodeOnActionTriggerAnimation']!.controller.stop(); + animationsMap['barcodeOnActionTriggerAnimation']!.controller.reverse(); } _model.isAccess = !_model.isAccess; _model.key = key; @@ -464,8 +425,7 @@ class _QrCodePageWidgetState extends State fontSize: 15.0, fontWeight: FontWeight.bold, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).headlineMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineMediumFamily), ), ), actions: const [], diff --git a/lib/pages/reception_page/reception_page_widget.dart b/lib/pages/reception_page/reception_page_widget.dart index 10529ad4..355b0aa5 100644 --- a/lib/pages/reception_page/reception_page_widget.dart +++ b/lib/pages/reception_page/reception_page_widget.dart @@ -71,7 +71,9 @@ class _ReceptionPageWidgetState extends State with WidgetsB Padding( padding: const EdgeInsets.fromLTRB(45, 0, 45, 15.0), child: Text( - FFLocalizations.of(context).getVariableText(ptText: 'Falta pouco para você utilizar o FRE Access Hub...', enText: 'You are close to using the FRE Access Hub...'), + FFLocalizations.of(context).getVariableText( + ptText: 'Falta pouco para você utilizar o FRE Access Hub...', + enText: 'You are close to using the FRE Access Hub...'), textAlign: TextAlign.center, style: FlutterFlowTheme.of(context).displayLarge.override( fontFamily: 'Plus Jakarta Sans', @@ -87,7 +89,10 @@ class _ReceptionPageWidgetState extends State with WidgetsB Padding( padding: const EdgeInsets.fromLTRB(70, 30, 70.0, 60), child: Text( - FFLocalizations.of(context).getVariableText(ptText: 'Envie seu identificador para seu condomínio para vincularem sua conta aos nossos sistemas.', enText: 'Send your identifier to your condominium to link your account to our systems.'), + FFLocalizations.of(context).getVariableText( + ptText: + 'Envie seu identificador para seu condomínio para vincularem sua conta aos nossos sistemas.', + enText: 'Send your identifier to your condominium to link your account to our systems.'), textAlign: TextAlign.center, style: FlutterFlowTheme.of(context).displaySmall.override( fontFamily: 'Nunito Sans', @@ -106,7 +111,10 @@ class _ReceptionPageWidgetState extends State with WidgetsB Padding( padding: const EdgeInsets.fromLTRB(60, 0, 60, 10), child: Tooltip( - message: FFLocalizations.of(context).getVariableText(ptText: 'Seu identificador é utilizado para efetuar\no vínculo do seu APP com o condominio.', enText: 'My Identifier'), + message: FFLocalizations.of(context).getVariableText( + ptText: + 'Seu identificador é utilizado para efetuar\no vínculo do seu APP com o condominio.', + enText: 'My Identifier'), textStyle: FlutterFlowTheme.of(context).labelSmall.override( fontFamily: 'Nunito Sans', color: FlutterFlowTheme.of(context).secondaryText, @@ -117,7 +125,8 @@ class _ReceptionPageWidgetState extends State with WidgetsB ), child: FFButtonWidget( onPressed: () => model.getIdenfifier(context), - text: FFLocalizations.of(context).getVariableText(ptText: 'Meu Identificador', enText: 'My Identifier'), + text: FFLocalizations.of(context) + .getVariableText(ptText: 'Meu Identificador', enText: 'My Identifier'), options: FFButtonOptions( width: double.infinity, height: 44.0, @@ -151,7 +160,8 @@ class _ReceptionPageWidgetState extends State with WidgetsB AuthenticationService.signOut(context); setState(() {}); }, - text: FFLocalizations.of(context).getVariableText(ptText: 'Sair da Conta', enText: 'Logout'), + text: FFLocalizations.of(context) + .getVariableText(ptText: 'Sair da Conta', enText: 'Logout'), options: FFButtonOptions( width: double.infinity, height: 44.0, diff --git a/lib/pages/register_visitor_page/register_visitor_page_model.dart b/lib/pages/register_visitor_page/register_visitor_page_model.dart index 9c813fc5..e6db1afb 100644 --- a/lib/pages/register_visitor_page/register_visitor_page_model.dart +++ b/lib/pages/register_visitor_page/register_visitor_page_model.dart @@ -4,12 +4,10 @@ import '/flutter_flow/flutter_flow_util.dart'; import 'register_visitor_page_widget.dart' show RegisterVisitorPageWidget; import 'package:flutter/material.dart'; -class RegisterVisitorPageModel - extends FlutterFlowModel { +class RegisterVisitorPageModel extends FlutterFlowModel { /// State fields for stateful widgets in this page. - late RegisiterVistorTemplateComponentModel - regisiterVistorTemplateComponentModel; + late RegisiterVistorTemplateComponentModel regisiterVistorTemplateComponentModel; @override void initState(BuildContext context) {} diff --git a/lib/pages/register_visitor_page/register_visitor_page_widget.dart b/lib/pages/register_visitor_page/register_visitor_page_widget.dart index 483364bf..50e11f96 100644 --- a/lib/pages/register_visitor_page/register_visitor_page_widget.dart +++ b/lib/pages/register_visitor_page/register_visitor_page_widget.dart @@ -14,8 +14,7 @@ class RegisterVisitorPageWidget extends StatefulWidget { const RegisterVisitorPageWidget({super.key}); @override - State createState() => - _RegisterVisitorPageWidgetState(); + State createState() => _RegisterVisitorPageWidgetState(); } class _RegisterVisitorPageWidgetState extends State { @@ -66,8 +65,7 @@ class _RegisterVisitorPageWidgetState extends State { fontSize: 15.0, fontWeight: FontWeight.bold, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey( - FlutterFlowTheme.of(context).headlineMediumFamily), + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineMediumFamily), ), ), actions: const [], diff --git a/lib/pages/reservation_page/reservation_page_widget.dart b/lib/pages/reservation_page/reservation_page_widget.dart index 5c430325..e083e070 100644 --- a/lib/pages/reservation_page/reservation_page_widget.dart +++ b/lib/pages/reservation_page/reservation_page_widget.dart @@ -54,12 +54,10 @@ class _ReservationPageWidgetState extends State { builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const Center(child: CircularProgressIndicator()); - } else if (snapshot.hasError || - snapshot.hasData == false || - snapshot.data!.isEmpty) { + } else if (snapshot.hasError || snapshot.hasData == false || snapshot.data!.isEmpty) { return Center( - child: Text(FFLocalizations.of(context).getVariableText( - enText: 'Unexpected error', ptText: 'Erro inesperado'))); + child: Text(FFLocalizations.of(context) + .getVariableText(enText: 'Unexpected error', ptText: 'Erro inesperado'))); } else if (snapshot.hasData) { final data = snapshot.data!; final url = data['url']!; @@ -73,18 +71,14 @@ class _ReservationPageWidgetState extends State { allowsBackForwardNavigationGestures: true, javaScriptEnabled: true, ), - onWebViewCreated: (controller) async { - }, + onWebViewCreated: (controller) async {}, onLoadStop: (controller, url) async { await controller.evaluateJavascript( - source: - "window.localStorage.setItem('fre-token', '\"$userUUID\"')"); + source: "window.localStorage.setItem('fre-token', '\"$userUUID\"')"); await controller.evaluateJavascript( - source: - "window.localStorage.setItem('fre-user-data', '$freUserData')"); + source: "window.localStorage.setItem('fre-user-data', '$freUserData')"); await controller.evaluateJavascript( - source: - "window.localStorage.setItem('enableBackButton', 'true')"); + source: "window.localStorage.setItem('enableBackButton', 'true')"); }, onUpdateVisitedHistory: (controller, uri, isVisited) { if (uri.toString().contains('/hub/home')) { @@ -102,33 +96,25 @@ class _ReservationPageWidgetState extends State { NavigationDelegate( onProgress: (int progress) {}, onPageStarted: (String url) { - final String token = - "localStorage.setItem('fre-token', '\"$userUUID\"');"; - final String data = - "localStorage.setItem('fre-user-data', '$freUserData');"; - const String backNavigation = - "localStorage.setItem('enableBackButton', 'true');"; + final String token = "localStorage.setItem('fre-token', '\"$userUUID\"');"; + final String data = "localStorage.setItem('fre-user-data', '$freUserData');"; + const String backNavigation = "localStorage.setItem('enableBackButton', 'true');"; _controllerAll.runJavaScript(token); _controllerAll.runJavaScript(data); _controllerAll.runJavaScript(backNavigation); }, onPageFinished: (String url) { - bool isDarkMode = SchedulerBinding - .instance - .platformDispatcher - .platformBrightness == - Brightness.dark; + bool isDarkMode = + SchedulerBinding.instance.platformDispatcher.platformBrightness == Brightness.dark; if (isDarkMode) { - _controllerAll.runJavaScript( - WebviewUtil.jsEnableDarkMode); + _controllerAll.runJavaScript(WebviewUtil.jsEnableDarkMode); } }, onNavigationRequest: (NavigationRequest request) { if (request.url.startsWith('http') || - request.url.startsWith( - 'https://api.whatsapp.com/send') || + request.url.startsWith('https://api.whatsapp.com/send') || request.url.startsWith('https://wa.me')) { launchUrlString(request.url); return NavigationDecision.prevent; diff --git a/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_model.dart b/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_model.dart index 5e7de008..6e7c3d7a 100644 --- a/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_model.dart +++ b/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_model.dart @@ -14,8 +14,7 @@ import 'package:share_plus/share_plus.dart'; import '../../shared/utils/validator_util.dart'; -class ScheduleCompleteVisitPageModel - extends FlutterFlowModel { +class ScheduleCompleteVisitPageModel extends FlutterFlowModel { late VoidCallback safeSetState; late Function(Function) updateState; final _visitHistoryManager = FutureRequestManager(); @@ -41,16 +40,14 @@ class ScheduleCompleteVisitPageModel requestFn: requestFn, ); void clearVisitHistoryCache() => _visitHistoryManager.clear(); - void clearVisitHistoryCacheKey(String? uniqueKey) => - _visitHistoryManager.clearRequest(uniqueKey); + void clearVisitHistoryCacheKey(String? uniqueKey) => _visitHistoryManager.clearRequest(uniqueKey); String convertDateFormat(String dateStr) { try { DateFormat originalFormat = DateFormat('dd/MM/yyyy HH:mm:ss'); DateFormat newFormat = DateFormat('y-M-d H:mm:ss'); - if (!RegExp(r'^\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{2}:\d{2}$') - .hasMatch(dateStr)) { + if (!RegExp(r'^\d{1,2}/\d{1,2}/\d{4} \d{1,2}:\d{2}:\d{2}$').hasMatch(dateStr)) { return 'Invalid date format'; } @@ -65,10 +62,8 @@ class ScheduleCompleteVisitPageModel void addToVisitorJsonList(dynamic item) => visitorJsonList.add(item); void removeFromVisitorJsonList(dynamic item) => visitorJsonList.remove(item); - void removeAtIndexFromVisitorJsonList(int index) => - visitorJsonList.removeAt(index); - void insertAtIndexInVisitorJsonList(int index, dynamic item) => - visitorJsonList.insert(index, item); + void removeAtIndexFromVisitorJsonList(int index) => visitorJsonList.removeAt(index); + void insertAtIndexInVisitorJsonList(int index, dynamic item) => visitorJsonList.insert(index, item); void updateVisitorJsonListAtIndex(int index, Function(dynamic) updateFn) => visitorJsonList[index] = updateFn(visitorJsonList[index]); @@ -91,14 +86,11 @@ class ScheduleCompleteVisitPageModel DateTime selectedDateTime1; DateTime selectedDateTime2; - DateTime currentDateTime = - DateTime.now().subtract(const Duration(minutes: 10)); + DateTime currentDateTime = DateTime.now().subtract(const Duration(minutes: 10)); try { - selectedDateTime1 = - DateFormat('dd/MM/yyyy HH:mm:ss').parse(textController1.text); - selectedDateTime2 = - DateFormat('dd/MM/yyyy HH:mm:ss').parse(textController2.text); + selectedDateTime1 = DateFormat('dd/MM/yyyy HH:mm:ss').parse(textController1.text); + selectedDateTime2 = DateFormat('dd/MM/yyyy HH:mm:ss').parse(textController2.text); } catch (e) { return false; } @@ -120,8 +112,7 @@ class ScheduleCompleteVisitPageModel final unfocusNode = FocusNode(); TabController? tabBarController; - int get tabBarCurrentIndex => - tabBarController != null ? tabBarController!.index : 0; + int get tabBarCurrentIndex => tabBarController != null ? tabBarController!.index : 0; FocusNode? textFieldFocusNode1; TextEditingController? textController1; @@ -136,16 +127,14 @@ class ScheduleCompleteVisitPageModel if (val != '0') { try { DateTime startDate = DateFormat('dd/MM/yyyy HH:mm:ss').parse(val); - DateTime endDate = - DateFormat('dd/MM/yyyy HH:mm:ss').parse(textController2!.text); + DateTime endDate = DateFormat('dd/MM/yyyy HH:mm:ss').parse(textController2!.text); if (startDate.isAfter(endDate)) { return FFLocalizations.of(context).getVariableText( ptText: 'A data de início deve ser anterior à data de término.', enText: 'Start date must be before end date.', ); } - if (startDate - .isBefore(DateTime.now().subtract(const Duration(minutes: 10)))) { + if (startDate.isBefore(DateTime.now().subtract(const Duration(minutes: 10)))) { return FFLocalizations.of(context).getVariableText( enText: 'Start date must be after current date.', ptText: 'A data de início deve ser posterior à data atual.', @@ -180,8 +169,7 @@ class ScheduleCompleteVisitPageModel if (val != '0') { try { DateTime endDate = DateFormat('dd/MM/yyyy HH:mm:ss').parse(val); - DateTime startDate = - DateFormat('dd/MM/yyyy HH:mm:ss').parse(textController1!.text); + DateTime startDate = DateFormat('dd/MM/yyyy HH:mm:ss').parse(textController1!.text); if (endDate.isBefore(startDate)) { return FFLocalizations.of(context).getVariableText( @@ -189,8 +177,7 @@ class ScheduleCompleteVisitPageModel ptText: 'A data de término deve ser posterior à data de início.', ); } - if (startDate - .isBefore(DateTime.now().subtract(const Duration(minutes: 10)))) { + if (startDate.isBefore(DateTime.now().subtract(const Duration(minutes: 10)))) { return FFLocalizations.of(context).getVariableText( enText: 'End date must be after current date.', ptText: 'A data de término deve ser posterior à data atual.', @@ -259,10 +246,8 @@ class ScheduleCompleteVisitPageModel textController3 = TextEditingController(); textController3Validator = _textController3Validator; - dropDownValueController1 ??= - FormFieldController(dropDownValue1 ??= ''); - dropDownValueController2 ??= - FormFieldController(dropDownValue2 ??= ''); + dropDownValueController1 ??= FormFieldController(dropDownValue1 ??= ''); + dropDownValueController2 ??= FormFieldController(dropDownValue2 ??= ''); } // Updated variables for dropdowns @@ -278,11 +263,8 @@ class ScheduleCompleteVisitPageModel void processDropDown1(List reasonsJsonList) { if (dropDownValue1 != null && dropDownValue1!.isNotEmpty) { String value = dropDownValue1!; - if (!(value.contains('{') && - value.contains('}') && - value.contains(':'))) { - var item = reasonsJsonList.where((reason) => - reason['MOT_DESCRICAO'].toString().contains(dropDownValue1!)); + if (!(value.contains('{') && value.contains('}') && value.contains(':'))) { + var item = reasonsJsonList.where((reason) => reason['MOT_DESCRICAO'].toString().contains(dropDownValue1!)); dropDownValue1 = item.firstOrNull?.toString() ?? ''; dropDownValueController1?.value = dropDownValue1!; } @@ -294,11 +276,8 @@ class ScheduleCompleteVisitPageModel void processDropDown2(List lavelList) { if (dropDownValue2 != null && dropDownValue2!.isNotEmpty) { String value = dropDownValue2!; - if (!(value.contains('{') && - value.contains('}') && - value.contains(':'))) { - var item = lavelList.where((level) => - level['NAC_DESCRICAO'].toString().contains(dropDownValue2!)); + if (!(value.contains('{') && value.contains('}') && value.contains(':'))) { + var item = lavelList.where((level) => level['NAC_DESCRICAO'].toString().contains(dropDownValue2!)); dropDownValue2 = item.firstOrNull?.toString() ?? ''; dropDownValueController2?.value = dropDownValue2!; } @@ -350,10 +329,7 @@ class ScheduleCompleteVisitPageModel } Future visitCancelAction(BuildContext context, - {required int? idDestino, - required int? idVisita, - required String? accessKey, - required String? email}) async { + {required int? idDestino, required int? idVisita, required String? accessKey, required String? email}) async { final ApiCallResponse? response; final CancelaVisita callback = PhpGroup.cancelaVisita; @@ -425,8 +401,7 @@ class ScheduleCompleteVisitPageModel Widget buildVisitDetails({ required dynamic item, required BuildContext context, - required Future Function(BuildContext, int, int, String, String) - changeStatusAction, + required Future Function(BuildContext, int, int, String, String) changeStatusAction, required String devUUID, required String userUUID, required String cliUUID, @@ -434,8 +409,7 @@ class ScheduleCompleteVisitPageModel }) { return DetailsComponentWidget( buttons: [ - if (Status.getStatus(item['VAW_STATUS']) == - StatusEnum.active) // REJECT ACTION + if (Status.getStatus(item['VAW_STATUS']) == StatusEnum.active) // REJECT ACTION FFButtonWidget( text: FFLocalizations.of(context).getVariableText( ptText: 'Cancelar', @@ -512,8 +486,7 @@ class ScheduleCompleteVisitPageModel // borderRadius: 12, ), ), - if (Status.getStatus(item['VAW_STATUS']) != - StatusEnum.active) // RECALL ACTION + if (Status.getStatus(item['VAW_STATUS']) != StatusEnum.active) // RECALL ACTION FFButtonWidget( text: FFLocalizations.of(context).getVariableText( ptText: 'Reagendar', @@ -546,8 +519,7 @@ class ScheduleCompleteVisitPageModel // borderRadius: 12, ), ), - if (Status.getStatus(item['VAW_STATUS']) == - StatusEnum.active) // SHARE ACTION + if (Status.getStatus(item['VAW_STATUS']) == StatusEnum.active) // SHARE ACTION FFButtonWidget( text: FFLocalizations.of(context).getVariableText( ptText: 'Compartilhar', @@ -582,17 +554,14 @@ URL do Convite: https://visita.freaccess.com.br/${item['VAW_ID']}/$cliUUID/${ite ), ], labelsHashMap: Map.from({ - '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': - item['VTE_NOME'] ?? '', + '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': item['VTE_NOME'] ?? '', '${FFLocalizations.of(context).getVariableText(ptText: "Inicio", enText: "Start")}:': item['VAW_DTINICIO'] != '' && item['VAW_DTINICIO'] != null - ? ValidatorUtil.toLocalDateTime( - 'yyyy-MM-dd HH:mm:ss', item['VAW_DTINICIO']) + ? ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', item['VAW_DTINICIO']) : '', '${FFLocalizations.of(context).getVariableText(ptText: "Fim", enText: "End")}:': item['VAW_DTFIM'] != '' && item['VAW_DTFIM'] != null - ? ValidatorUtil.toLocalDateTime( - 'yyyy-MM-dd HH:mm:ss', item['VAW_DTFIM']) + ? ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', item['VAW_DTFIM']) : '', }), imagePath: diff --git a/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart b/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart index e58a5934..a59897e7 100644 --- a/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart +++ b/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart @@ -37,7 +37,8 @@ class ScheduleCompleteVisitPageWidget extends ScheduleComplete { State createState() => _ScheduleCompleteVisitPageWidgetState(); } -class _ScheduleCompleteVisitPageWidgetState extends State with TickerProviderStateMixin { +class _ScheduleCompleteVisitPageWidgetState extends State + with TickerProviderStateMixin { late ScheduleCompleteVisitPageModel _model; int _visitHistoryLoadingIdx = 0; final int _visitHistoryLoadingCount = 10; @@ -101,7 +102,9 @@ class _ScheduleCompleteVisitPageWidgetState extends State _model.unfocusNode.canRequestFocus ? FocusScope.of(context).requestFocus(_model.unfocusNode) : FocusScope.of(context).unfocus(), + onTap: () => _model.unfocusNode.canRequestFocus + ? FocusScope.of(context).requestFocus(_model.unfocusNode) + : FocusScope.of(context).unfocus(), child: Scaffold( key: scaffoldKey, backgroundColor: FlutterFlowTheme.of(context).primaryBackground, @@ -221,7 +224,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -249,7 +253,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: FFLocalizations.of(context).getText( '53cbwqh9', @@ -258,7 +263,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), lineHeight: 1.0, ), enabledBorder: OutlineInputBorder( @@ -297,7 +303,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), lineHeight: 1.8, ), textAlign: TextAlign.start, @@ -327,7 +334,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontSize: 32.0, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), ), pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, pickerForegroundColor: FlutterFlowTheme.of(context).primaryText, @@ -355,7 +363,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontSize: 32.0, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), ), pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, pickerForegroundColor: FlutterFlowTheme.of(context).info, @@ -386,7 +395,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, model.datePicked1, locale: FFLocalizations.of(context).languageCode, ); - model.textController1?.selection = TextSelection.collapsed(offset: model.textController1!.text.length); + model.textController1?.selection = + TextSelection.collapsed(offset: model.textController1!.text.length); }); }, child: Container( @@ -426,7 +436,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: FFLocalizations.of(context).getText( 'xpgc5e8d', @@ -435,7 +446,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), lineHeight: 1.0, ), enabledBorder: OutlineInputBorder( @@ -474,7 +486,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), lineHeight: 1.8, ), textAlign: TextAlign.start, @@ -505,7 +518,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontSize: 32.0, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), ), pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, pickerForegroundColor: FlutterFlowTheme.of(context).primaryText, @@ -533,7 +547,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontSize: 32.0, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).headlineLargeFamily), ), pickerBackgroundColor: FlutterFlowTheme.of(context).primaryBackground, pickerForegroundColor: FlutterFlowTheme.of(context).info, @@ -564,7 +579,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, model.datePicked2, locale: FFLocalizations.of(context).languageCode, ); - model.textController2?.selection = TextSelection.collapsed(offset: model.textController2!.text.length); + model.textController2?.selection = + TextSelection.collapsed(offset: model.textController2!.text.length); }); }, child: Container( @@ -598,7 +614,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -642,7 +659,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, child: CachedNetworkImage( fadeInDuration: const Duration(milliseconds: 500), fadeOutDuration: const Duration(milliseconds: 500), - imageUrl: "https://freaccess.com.br/freaccess/getImage.php?devUUID=${model.devUUID}&userUUID=${model.userUUID}&cliID=${model.cliUUID}&atividade=getFoto&Documento=${getJsonField(visitorListViewItem, r'''$.VTE_DOCUMENTO''').toString()}&tipo=E", + imageUrl: + "https://freaccess.com.br/freaccess/getImage.php?devUUID=${model.devUUID}&userUUID=${model.userUUID}&cliID=${model.cliUUID}&atividade=getFoto&Documento=${getJsonField(visitorListViewItem, r'''$.VTE_DOCUMENTO''').toString()}&tipo=E", fit: BoxFit.cover, ), ), @@ -654,7 +672,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), overflow: TextOverflow.ellipsis, ), @@ -695,7 +714,9 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, context: context, builder: (context) { return GestureDetector( - onTap: () => model.unfocusNode.canRequestFocus ? FocusScope.of(context).requestFocus(model.unfocusNode) : FocusScope.of(context).unfocus(), + onTap: () => model.unfocusNode.canRequestFocus + ? FocusScope.of(context).requestFocus(model.unfocusNode) + : FocusScope.of(context).unfocus(), child: SizedBox( height: MediaQuery.of(context).size.height * 0.7, width: MediaQuery.of(context).size.width, @@ -734,7 +755,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, color: FlutterFlowTheme.of(context).primaryText, fontSize: 16.0, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).titleSmallFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).titleSmallFamily), ), borderSide: BorderSide( color: FlutterFlowTheme.of(context).accent4, @@ -763,7 +785,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -790,7 +813,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -823,8 +847,10 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, ); } - final reasonsJsonList = PhpGroup.getDadosCall.reasonsJsonList(snapshot.data!.jsonBody); - final reasonsOptionLabels = PhpGroup.getDadosCall.reasonsMotDescStrList(snapshot.data!.jsonBody); + final reasonsJsonList = + PhpGroup.getDadosCall.reasonsJsonList(snapshot.data!.jsonBody); + final reasonsOptionLabels = + PhpGroup.getDadosCall.reasonsMotDescStrList(snapshot.data!.jsonBody); model.processDropDown1(reasonsJsonList!); @@ -839,7 +865,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, textStyle: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), hintText: FFLocalizations.of(context).getText( '6p3e0bzr', @@ -913,7 +940,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, } final lavelsJsonList = PhpGroup.getDadosCall.levelJsonList(snapshot.data!.jsonBody); - final lavelsOptionLabels = PhpGroup.getDadosCall.levelNACDescricaoStrList(snapshot.data!.jsonBody); + final lavelsOptionLabels = + PhpGroup.getDadosCall.levelNACDescricaoStrList(snapshot.data!.jsonBody); model.processDropDown2(lavelsJsonList!); return FlutterFlowDropDown( @@ -926,7 +954,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, textStyle: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: GoogleFonts.asMap() + .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), hintText: FFLocalizations.of(context).getText( '2wun8p6c', @@ -990,7 +1019,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.bold, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -1013,7 +1043,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -1075,7 +1106,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, letterSpacing: 0.0, fontWeight: FontWeight.w600, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), ), ), @@ -1100,7 +1132,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintText: FFLocalizations.of(context).getText( 'w18iztdm', @@ -1109,7 +1142,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide( @@ -1148,7 +1182,8 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, color: FlutterFlowTheme.of(context).primaryText, letterSpacing: 0.0, - useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + useGoogleFonts: + GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), textAlign: TextAlign.start, maxLines: null, @@ -1201,7 +1236,11 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, model.visitorStrList = ''; model.visitorJsonList = []; - ToastUtil.showToast(message: FFLocalizations.of(context).getVariableText(ptText: 'Visitante já adicionado!', enText: 'Visitor already added!'), gravity: ToastGravity.TOP, backgroundColor: Colors.green); + ToastUtil.showToast( + message: FFLocalizations.of(context) + .getVariableText(ptText: 'Visitante já adicionado!', enText: 'Visitor already added!'), + gravity: ToastGravity.TOP, + backgroundColor: Colors.green); await ShareUtil.showShare(value.jsonBody); } else { @@ -1230,7 +1269,9 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, context: context, builder: (context) { return GestureDetector( - onTap: () => model.unfocusNode.canRequestFocus ? FocusScope.of(context).requestFocus(model.unfocusNode) : FocusScope.of(context).unfocus(), + onTap: () => model.unfocusNode.canRequestFocus + ? FocusScope.of(context).requestFocus(model.unfocusNode) + : FocusScope.of(context).unfocus(), child: Dialog( alignment: Alignment.topCenter, child: SizedBox( @@ -1258,13 +1299,22 @@ Widget scheduleVisit(BuildContext context, ScheduleCompleteVisitPageModel model, ), ), ], - imagePath: 'https://freaccess.com.br/freaccess/getImage.php?cliID=${model.cliUUID}&atividade=getFoto&Documento=${model.visitorJsonList[0]['VTE_DOCUMENTO'] ?? ''}&tipo=E', + imagePath: + 'https://freaccess.com.br/freaccess/getImage.php?cliID=${model.cliUUID}&atividade=getFoto&Documento=${model.visitorJsonList[0]['VTE_DOCUMENTO'] ?? ''}&tipo=E', labelsHashMap: { 'Nome': model.visitorJsonList[0]['VTE_NOME'], 'Start': model.textController1.text, 'End': model.textController2.text, - 'Reason': (RegExp(r'MOT_DESCRICAO:\s*([^,]+)').firstMatch(model.dropDownValue1.toString())?.group(1).toString()) ?? '', - 'Level': (RegExp(r'NAC_DESCRICAO:\s*([^,]+)').firstMatch(model.dropDownValue2.toString())?.group(1).toString()) ?? '', + 'Reason': (RegExp(r'MOT_DESCRICAO:\s*([^,]+)') + .firstMatch(model.dropDownValue1.toString()) + ?.group(1) + .toString()) ?? + '', + 'Level': (RegExp(r'NAC_DESCRICAO:\s*([^,]+)') + .firstMatch(model.dropDownValue2.toString()) + ?.group(1) + .toString()) ?? + '', 'Single Visit': model.switchValue == true ? 'S' : 'N', if (model.textController3.text.isNotEmpty) 'Observation': model.textController3.text, }, diff --git a/lib/pages/schedule_complete_visit_page/visit_history_page_widget.dart b/lib/pages/schedule_complete_visit_page/visit_history_page_widget.dart index 8dd2f534..db5c6795 100644 --- a/lib/pages/schedule_complete_visit_page/visit_history_page_widget.dart +++ b/lib/pages/schedule_complete_visit_page/visit_history_page_widget.dart @@ -18,8 +18,7 @@ class VisitHistoryWidget extends ScheduleComplete { _VisitHistoryWidgetState createState() => _VisitHistoryWidgetState(); } -class _VisitHistoryWidgetState extends State - with TickerProviderStateMixin, Status { +class _VisitHistoryWidgetState extends State with TickerProviderStateMixin, Status { late final String devUUID; late final String userUUID; late final String cliUUID; @@ -49,8 +48,7 @@ class _VisitHistoryWidgetState extends State _scrollController = ScrollController() ..addListener(() { - if (_scrollController.position.atEdge && - _scrollController.position.pixels != 0) { + if (_scrollController.position.atEdge && _scrollController.position.pixels != 0) { _loadMore(); } }); @@ -95,8 +93,7 @@ class _VisitHistoryWidgetState extends State return null; } catch (e, s) { DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed( - "proccessRequest.php", "", "Consulta de Visitas", e, s); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Visitas", e, s); setState(() { _hasData = false; _loading = false; @@ -116,8 +113,7 @@ class _VisitHistoryWidgetState extends State ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( - FFLocalizations.of(context).getVariableText( - ptText: "Não há mais dados.", enText: "No more data."), + FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data."), ), duration: const Duration(seconds: 3), backgroundColor: FlutterFlowTheme.of(context).primary, @@ -138,9 +134,8 @@ class _VisitHistoryWidgetState extends State mainAxisSize: MainAxisSize.max, children: [ Center( - child: Text(FFLocalizations.of(context).getVariableText( - ptText: "Nenhuma visita encontrada!", - enText: "No visit found")), + child: Text(FFLocalizations.of(context) + .getVariableText(ptText: "Nenhuma visita encontrada!", enText: "No visit found")), ) ], ), @@ -184,16 +179,12 @@ class _VisitHistoryWidgetState extends State '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': visitaWrapItem['VTE_NOME'] ?? '', '${FFLocalizations.of(context).getVariableText(ptText: "Inicio", enText: "Start")}:': - visitaWrapItem['VAW_DTINICIO'] != '' && - visitaWrapItem['VAW_DTINICIO'] != null - ? ValidatorUtil.toLocalDateTime( - 'yyyy-MM-dd HH:mm:ss', visitaWrapItem['VAW_DTINICIO']) + visitaWrapItem['VAW_DTINICIO'] != '' && visitaWrapItem['VAW_DTINICIO'] != null + ? ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', visitaWrapItem['VAW_DTINICIO']) : '', '${FFLocalizations.of(context).getVariableText(ptText: "Fim", enText: "End")}:': - visitaWrapItem['VAW_DTFIM'] != '' && - visitaWrapItem['VAW_DTFIM'] != null - ? ValidatorUtil.toLocalDateTime( - 'yyyy-MM-dd HH:mm:ss', visitaWrapItem['VAW_DTFIM']) + visitaWrapItem['VAW_DTFIM'] != '' && visitaWrapItem['VAW_DTFIM'] != null + ? ValidatorUtil.toLocalDateTime('yyyy-MM-dd HH:mm:ss', visitaWrapItem['VAW_DTFIM']) : '', }, statusHashMap: [ @@ -204,40 +195,35 @@ class _VisitHistoryWidgetState extends State enText: 'Active', ): FlutterFlowTheme.of(context).warning, }, - if (Status.getStatus(visitaWrapItem['VAW_STATUS']) == - StatusEnum.finished) + if (Status.getStatus(visitaWrapItem['VAW_STATUS']) == StatusEnum.finished) { FFLocalizations.of(context).getVariableText( ptText: 'Finalizado', enText: 'Finished', ): FlutterFlowTheme.of(context).success, }, - if (Status.getStatus(visitaWrapItem['VAW_STATUS']) == - StatusEnum.unknown) + if (Status.getStatus(visitaWrapItem['VAW_STATUS']) == StatusEnum.unknown) { FFLocalizations.of(context).getVariableText( ptText: 'Desconhecido', enText: 'Unknown', ): FlutterFlowTheme.of(context).alternate, }, - if (Status.getStatus(visitaWrapItem['VAW_STATUS']) == - StatusEnum.canceled) + if (Status.getStatus(visitaWrapItem['VAW_STATUS']) == StatusEnum.canceled) { FFLocalizations.of(context).getVariableText( ptText: 'Cancelado', enText: 'Canceled', ): FlutterFlowTheme.of(context).error, }, - if (Status.getStatus(visitaWrapItem['VAW_STATUS']) == - StatusEnum.blocked) + if (Status.getStatus(visitaWrapItem['VAW_STATUS']) == StatusEnum.blocked) { FFLocalizations.of(context).getVariableText( ptText: 'Bloqueado', enText: 'Blocked', ): FlutterFlowTheme.of(context).error, }, - if (Status.getStatus(visitaWrapItem['VAW_STATUS']) == - StatusEnum.inactive) + if (Status.getStatus(visitaWrapItem['VAW_STATUS']) == StatusEnum.inactive) { FFLocalizations.of(context).getVariableText( ptText: 'Inativo', @@ -276,8 +262,7 @@ class _VisitHistoryWidgetState extends State }); }).catchError((e, s) { DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed( - "proccessRequest.php", "", "Consulta de Visitas", e, s); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Visitas", e, s); safeSetState(() { _hasData = false; _loading = false; diff --git a/lib/pages/sign_in_page/sign_in_page_model.dart b/lib/pages/sign_in_page/sign_in_page_model.dart index 6cea2517..8642b98d 100644 --- a/lib/pages/sign_in_page/sign_in_page_model.dart +++ b/lib/pages/sign_in_page/sign_in_page_model.dart @@ -12,8 +12,7 @@ class SignInPageModel extends FlutterFlowModel { @override void initState(BuildContext context) { - signInTemplateComponentModel = - createModel(context, () => SignInTemplateComponentModel()); + signInTemplateComponentModel = createModel(context, () => SignInTemplateComponentModel()); } @override @@ -21,4 +20,4 @@ class SignInPageModel extends FlutterFlowModel { unfocusNode.dispose(); signInTemplateComponentModel.dispose(); } -} \ No newline at end of file +} diff --git a/lib/pages/sign_up_page/sign_up_page_model.dart b/lib/pages/sign_up_page/sign_up_page_model.dart index 349ee990..ff69d9b5 100644 --- a/lib/pages/sign_up_page/sign_up_page_model.dart +++ b/lib/pages/sign_up_page/sign_up_page_model.dart @@ -12,8 +12,7 @@ class SignUpPageModel extends FlutterFlowModel { @override void initState(BuildContext context) { - signUpTemplateComponentModel = - createModel(context, () => SignUpTemplateComponentModel()); + signUpTemplateComponentModel = createModel(context, () => SignUpTemplateComponentModel()); } @override @@ -21,4 +20,4 @@ class SignUpPageModel extends FlutterFlowModel { unfocusNode.dispose(); signUpTemplateComponentModel.dispose(); } -} \ No newline at end of file +} diff --git a/lib/pages/vehicles_on_the_property/vehicle_model.dart b/lib/pages/vehicles_on_the_property/vehicle_model.dart index 2e14ce08..8218c2e7 100644 --- a/lib/pages/vehicles_on_the_property/vehicle_model.dart +++ b/lib/pages/vehicles_on_the_property/vehicle_model.dart @@ -35,11 +35,21 @@ class VehicleModel extends FlutterFlowModel { return DetailsComponentWidget( buttons: [], labelsHashMap: Map.from({ - if (item['model'] != null && item['model'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Modelo", enText: "Model")}:': item['model'].toString().toUpperCase(), - if (item['licensePlate'] != null && item['licensePlate'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Placa", enText: "License Plate")}:': item['licensePlate'].toString().toUpperCase(), - if (item['color'] != null && item['color'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Cor", enText: "Color")}:': item['color'].toString().toUpperCase(), - if (item['personName'] != null && item['personName'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Proprietário", enText: "Owner")}:': item['personName'].toString().toUpperCase(), - if (item['tag'] != null && item['tag'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Tag", enText: "Tag")}:': item['tag'].toString().toUpperCase(), + if (item['model'] != null && item['model'] != '') + '${FFLocalizations.of(context).getVariableText(ptText: "Modelo", enText: "Model")}:': + item['model'].toString().toUpperCase(), + if (item['licensePlate'] != null && item['licensePlate'] != '') + '${FFLocalizations.of(context).getVariableText(ptText: "Placa", enText: "License Plate")}:': + item['licensePlate'].toString().toUpperCase(), + if (item['color'] != null && item['color'] != '') + '${FFLocalizations.of(context).getVariableText(ptText: "Cor", enText: "Color")}:': + item['color'].toString().toUpperCase(), + if (item['personName'] != null && item['personName'] != '') + '${FFLocalizations.of(context).getVariableText(ptText: "Proprietário", enText: "Owner")}:': + item['personName'].toString().toUpperCase(), + if (item['tag'] != null && item['tag'] != '') + '${FFLocalizations.of(context).getVariableText(ptText: "Tag", enText: "Tag")}:': + item['tag'].toString().toUpperCase(), }), imagePath: 'https://freaccess.com.br/freaccess/Images/Clients/${StorageUtil().cliUUID}.png', statusHashMap: [ diff --git a/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart b/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart index 3bfb5704..abe6b8c1 100644 --- a/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart +++ b/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart @@ -63,7 +63,8 @@ class _VehicleOnThePropertyState extends State with Ticker mainAxisSize: MainAxisSize.max, children: [ Center( - child: Text(FFLocalizations.of(context).getVariableText(ptText: "Nenhum veículo encontrado!", enText: "No vehicle found")), + child: Text(FFLocalizations.of(context) + .getVariableText(ptText: "Nenhum veículo encontrado!", enText: "No vehicle found")), ) ], ), @@ -195,7 +196,8 @@ class _VehicleOnThePropertyState extends State with Ticker void _showNoMoreDataSnackBar(BuildContext context) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( - content: Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), + content: + Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), duration: const Duration(seconds: 3), backgroundColor: FlutterFlowTheme.of(context).primary, ), @@ -206,7 +208,8 @@ class _VehicleOnThePropertyState extends State with Ticker return CardItemTemplateComponentWidget( imagePath: '', labelsHashMap: { - '${FFLocalizations.of(context).getVariableText(ptText: "Placa", enText: "License Plate")}:': uItem['licensePlate'] ?? '', + '${FFLocalizations.of(context).getVariableText(ptText: "Placa", enText: "License Plate")}:': + uItem['licensePlate'] ?? '', '${FFLocalizations.of(context).getVariableText(ptText: "Modelo", enText: "Model")}:': uItem['model'] ?? '', '${FFLocalizations.of(context).getVariableText(ptText: "Tag", enText: "Tag")}:': uItem['tag'] ?? '', }, diff --git a/lib/pages/visits_on_the_property/model.dart b/lib/pages/visits_on_the_property/model.dart index 4fa15bb9..1ed96af0 100644 --- a/lib/pages/visits_on_the_property/model.dart +++ b/lib/pages/visits_on_the_property/model.dart @@ -69,9 +69,12 @@ class VisitsModel extends FlutterFlowModel { enText: "No", ), }), - imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${StorageUtil().devUUID}&cliID=${StorageUtil().cliUUID}&atividade=getFoto&Documento=${item['VDO_DOCUMENTO']}&tipo=E', + imagePath: + 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${StorageUtil().devUUID}&cliID=${StorageUtil().cliUUID}&atividade=getFoto&Documento=${item['VDO_DOCUMENTO']}&tipo=E', statusHashMap: [ - if (item['MOT_DESCRICAO'] != null) Map.from({item['MOT_DESCRICAO'].toString().toUpperCase(): FlutterFlowTheme.of(context).primary}), + if (item['MOT_DESCRICAO'] != null) + Map.from( + {item['MOT_DESCRICAO'].toString().toUpperCase(): FlutterFlowTheme.of(context).primary}), ], ); } diff --git a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart index 33ef6286..7bcac793 100644 --- a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart +++ b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart @@ -64,7 +64,8 @@ class _VisitsOnThePropertyState extends State with TickerPr mainAxisSize: MainAxisSize.max, children: [ Center( - child: Text(FFLocalizations.of(context).getVariableText(ptText: "Nenhuma visita em aberto encontrada!", enText: "No opened visits found")), + child: Text(FFLocalizations.of(context).getVariableText( + ptText: "Nenhuma visita em aberto encontrada!", enText: "No opened visits found")), ) ], ), @@ -196,7 +197,8 @@ class _VisitsOnThePropertyState extends State with TickerPr void _showNoMoreDataSnackBar(BuildContext context) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( - content: Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), + content: + Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), duration: const Duration(seconds: 3), backgroundColor: FlutterFlowTheme.of(context).primary, ), @@ -205,12 +207,16 @@ class _VisitsOnThePropertyState extends State with TickerPr Widget _item(BuildContext context, dynamic uItem) { return CardItemTemplateComponentWidget( - imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${StorageUtil().devUUID}&cliID=${StorageUtil().cliUUID}&atividade=getFoto&Documento=${uItem['VDO_DOCUMENTO']}&tipo=E', + imagePath: + 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${StorageUtil().devUUID}&cliID=${StorageUtil().cliUUID}&atividade=getFoto&Documento=${uItem['VDO_DOCUMENTO']}&tipo=E', labelsHashMap: { '${FFLocalizations.of(context).getVariableText(ptText: "Nome", enText: "Name")}:': uItem['VTA_NOME'] ?? '', - '${FFLocalizations.of(context).getVariableText(ptText: "Validade", enText: "Valids")}:': uItem['VTA_VALIDADE'] ?? '', - '${FFLocalizations.of(context).getVariableText(ptText: "Motivo", enText: "Reason")}:': uItem['MOT_DESCRICAO'][0].toUpperCase() + uItem['MOT_DESCRICAO'].substring(1).toLowerCase(), - if (uItem['VTA_DTFIM'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Saída", enText: "Exit")}:': uItem['VTA_DTFIM'] ?? '', + '${FFLocalizations.of(context).getVariableText(ptText: "Validade", enText: "Valids")}:': + uItem['VTA_VALIDADE'] ?? '', + '${FFLocalizations.of(context).getVariableText(ptText: "Motivo", enText: "Reason")}:': + uItem['MOT_DESCRICAO'][0].toUpperCase() + uItem['MOT_DESCRICAO'].substring(1).toLowerCase(), + if (uItem['VTA_DTFIM'] != '') + '${FFLocalizations.of(context).getVariableText(ptText: "Saída", enText: "Exit")}:': uItem['VTA_DTFIM'] ?? '', }, statusHashMap: [ if (uItem['VTA_FIXA'] == true) diff --git a/lib/pages/welcome_page/welcome_page_model.dart b/lib/pages/welcome_page/welcome_page_model.dart index 4c08929e..7823f2b2 100644 --- a/lib/pages/welcome_page/welcome_page_model.dart +++ b/lib/pages/welcome_page/welcome_page_model.dart @@ -16,8 +16,7 @@ class WelcomePageModel extends FlutterFlowModel { @override void initState(BuildContext context) { - welcomeTemplateComponentModel = - createModel(context, () => WelcomeTemplateComponentModel()); + welcomeTemplateComponentModel = createModel(context, () => WelcomeTemplateComponentModel()); } @override @@ -25,4 +24,4 @@ class WelcomePageModel extends FlutterFlowModel { unfocusNode.dispose(); welcomeTemplateComponentModel.dispose(); } -} \ No newline at end of file +} diff --git a/lib/pages/welcome_page/welcome_page_widget.dart b/lib/pages/welcome_page/welcome_page_widget.dart index 544ef3a7..9434aacf 100644 --- a/lib/pages/welcome_page/welcome_page_widget.dart +++ b/lib/pages/welcome_page/welcome_page_widget.dart @@ -26,7 +26,8 @@ class _WelcomePageWidgetState extends State { final scaffoldKey = GlobalKey(); - @override void initState() { + @override + void initState() { super.initState(); _model = createModel(context, () => WelcomePageModel()); @@ -45,14 +46,13 @@ class _WelcomePageWidgetState extends State { }); } - @override void dispose() { + @override + void dispose() { _model.dispose(); super.dispose(); } - - @override Widget build(BuildContext context) { StorageUtil().context = context; diff --git a/lib/shared/components/atoms/atom_terms_of_use.dart b/lib/shared/components/atoms/atom_terms_of_use.dart index e1f29b9b..cf1f8c1a 100644 --- a/lib/shared/components/atoms/atom_terms_of_use.dart +++ b/lib/shared/components/atoms/atom_terms_of_use.dart @@ -5,7 +5,6 @@ import '../../../flutter_flow/flutter_flow_theme.dart'; import '../../../flutter_flow/flutter_flow_util.dart'; class AtomTermsOfUse extends StatelessWidget { - const AtomTermsOfUse({super.key}); @override @@ -15,26 +14,15 @@ class AtomTermsOfUse extends StatelessWidget { FFLocalizations.of(context).getText( 'olf967cj' /* Termo de Uso */, ), - style: FlutterFlowTheme.of(context) - .bodyMedium - .override( - fontFamily: - FlutterFlowTheme.of(context) - .bodyMediumFamily, - color: - FlutterFlowTheme.of(context) - .primaryText, - fontSize: 14.0, - letterSpacing: 0.0, - useGoogleFonts: GoogleFonts - .asMap() - .containsKey( - FlutterFlowTheme.of( - context) - .bodyMediumFamily), - ), + style: FlutterFlowTheme.of(context).bodyMedium.override( + fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, + color: FlutterFlowTheme.of(context).primaryText, + fontSize: 14.0, + letterSpacing: 0.0, + useGoogleFonts: GoogleFonts.asMap().containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), + ), ), onTap: () => launchURL('https://freaccess.com.br/pp'), ); } -} \ No newline at end of file +} diff --git a/lib/shared/enums/enum_throw_exception.dart b/lib/shared/enums/enum_throw_exception.dart index f1bf2a08..d8c19af1 100644 --- a/lib/shared/enums/enum_throw_exception.dart +++ b/lib/shared/enums/enum_throw_exception.dart @@ -1,5 +1 @@ -enum EnumThrowException { - success, - error, - warning -} \ No newline at end of file +enum EnumThrowException { success, error, warning } diff --git a/lib/shared/extensions/dialog_extensions.dart b/lib/shared/extensions/dialog_extensions.dart index b4c4e86b..222154dc 100644 --- a/lib/shared/extensions/dialog_extensions.dart +++ b/lib/shared/extensions/dialog_extensions.dart @@ -16,8 +16,7 @@ extension DialogUnavailable on DialogUtil { static Future unavailableCredentials(BuildContext context) { final message = FFLocalizations.of(context).getVariableText( - ptText: - "Credenciais inválidas. Selecione um local ou faça o login novamente.", + ptText: "Credenciais inválidas. Selecione um local ou faça o login novamente.", enText: "Invalid credentials. Select a location or log in again.", ); return DialogUtil.warning(context, message); diff --git a/lib/shared/extensions/flutter_secure_storage_extensions.dart b/lib/shared/extensions/flutter_secure_storage_extensions.dart index 8bba2507..e689535d 100644 --- a/lib/shared/extensions/flutter_secure_storage_extensions.dart +++ b/lib/shared/extensions/flutter_secure_storage_extensions.dart @@ -6,30 +6,23 @@ import 'package:synchronized/synchronized.dart'; extension FlutterSecureStorageExtensions on FlutterSecureStorage { static final _lock = Lock(); - Future writeSync({required String key, String? value}) async => - await _lock.synchronized(() async { + Future writeSync({required String key, String? value}) async => await _lock.synchronized(() async { await write(key: key, value: value); }); void remove(String key) => delete(key: key); Future getString(String key) async => await read(key: key); - Future setString(String key, String value) async => - await writeSync(key: key, value: value); + Future setString(String key, String value) async => await writeSync(key: key, value: value); Future getBool(String key) async => (await read(key: key)) == 'true'; - Future setBool(String key, bool? value) async => - await writeSync(key: key, value: value.toString()); + Future setBool(String key, bool? value) async => await writeSync(key: key, value: value.toString()); - Future getInt(String key) async => - int.tryParse(await read(key: key) ?? ''); - Future setInt(String key, int value) async => - await writeSync(key: key, value: value.toString()); + Future getInt(String key) async => int.tryParse(await read(key: key) ?? ''); + Future setInt(String key, int value) async => await writeSync(key: key, value: value.toString()); - Future getDouble(String key) async => - double.tryParse(await read(key: key) ?? ''); - Future setDouble(String key, double value) async => - await writeSync(key: key, value: value.toString()); + Future getDouble(String key) async => double.tryParse(await read(key: key) ?? ''); + Future setDouble(String key, double value) async => await writeSync(key: key, value: value.toString()); Future getObject(String key) async { final value = await read(key: key); @@ -39,18 +32,12 @@ extension FlutterSecureStorageExtensions on FlutterSecureStorage { return value as BuildContext; } - Future?> getStringList(String key) async => - await read(key: key).then((result) { + Future?> getStringList(String key) async => await read(key: key).then((result) { if (result == null || result.isEmpty) { return null; } - return const CsvToListConverter() - .convert(result) - .first - .map((e) => e.toString()) - .toList(); + return const CsvToListConverter().convert(result).first.map((e) => e.toString()).toList(); }); Future setStringList(String key, List value) async => - await writeSync( - key: key, value: const ListToCsvConverter().convert([value])); + await writeSync(key: key, value: const ListToCsvConverter().convert([value])); } diff --git a/lib/shared/helpers/secure_storage_helper.dart b/lib/shared/helpers/secure_storage_helper.dart index 5cf403ab..7e483bde 100644 --- a/lib/shared/helpers/secure_storage_helper.dart +++ b/lib/shared/helpers/secure_storage_helper.dart @@ -15,24 +15,21 @@ class SecureStorageHelper extends ChangeNotifier implements Storage { static SecureStorageHelper get instance => _instance; - Future setAndCacheString( - String key, String value, Function(String) cacheSetter) async { + Future setAndCacheString(String key, String value, Function(String) cacheSetter) async { log('SecureStorageHelper -> setAndCacheString value for key: $key to $value'); await _secureStorage.write(key: key, value: value); CacheUtil.instance.set(key, value); cacheSetter(value); } - Future setAndCacheBool( - String key, bool value, Function(bool) cacheSetter) async { + Future setAndCacheBool(String key, bool value, Function(bool) cacheSetter) async { log('SecureStorageHelper -> setAndCacheBool value for key: $key to $value'); await _secureStorage.write(key: key, value: value.toString()); CacheUtil.instance.set(key, value); cacheSetter(value); } - Future setAndCacheObject( - String key, String value, Function(String) cacheSetter) async { + Future setAndCacheObject(String key, String value, Function(String) cacheSetter) async { log('SecureStorageHelper -> setAndCacheObject value for key: $key to $value'); await _secureStorage.write(key: key, value: value); CacheUtil.instance.set(key, value); @@ -72,8 +69,7 @@ class SecureStorageHelper extends ChangeNotifier implements Storage { } @override - Future set( - String key, dynamic value, Function(dynamic) cacheSetter) async { + Future set(String key, dynamic value, Function(dynamic) cacheSetter) async { if (value is String? || value is String) { await setAndCacheString(key, value!, cacheSetter); } else if (value is bool? || value is bool) { diff --git a/lib/shared/helpers/shared_preferences_storage_helper.dart b/lib/shared/helpers/shared_preferences_storage_helper.dart index 635e61be..c7764748 100644 --- a/lib/shared/helpers/shared_preferences_storage_helper.dart +++ b/lib/shared/helpers/shared_preferences_storage_helper.dart @@ -4,8 +4,7 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:hub/shared/utils/cache_util.dart'; class SharedPreferencesStorageHelper implements Storage { - static final SharedPreferencesStorageHelper _instance = - SharedPreferencesStorageHelper._internal(); + static final SharedPreferencesStorageHelper _instance = SharedPreferencesStorageHelper._internal(); SharedPreferences? _prefs; SharedPreferences? get prefs => _prefs; @@ -17,38 +16,43 @@ class SharedPreferencesStorageHelper implements Storage { static SharedPreferencesStorageHelper get instance => _instance; - Future initialize() async => _prefs = await SharedPreferences.getInstance(); - + Future initialize() async => _prefs = await SharedPreferences.getInstance(); - Future _setAndCache(String key, T value, Function(T) cacheSetter, Future Function(String, T) setFunc) async { + Future _setAndCache( + String key, T value, Function(T) cacheSetter, Future Function(String, T) setFunc) async { log('setAndCache value for key: $key to $value'); await setFunc(key, value); CacheUtil.instance.set(key, value); cacheSetter(value); } + Future _setAndCacheString(String key, String value, Function(String) cacheSetter) async { log('setAndCacheString value for key: $key to $value'); await _setAndCache(key, value, cacheSetter, _prefs!.setString); } + Future _setAndCacheBool(String key, bool value, Function(bool) cacheSetter) async { log('setAndCacheBool value for key: $key to $value'); await _setAndCache(key, value, cacheSetter, _prefs!.setBool); } + Future _setAndCacheInt(String key, int value, Function(int) cacheSetter) async { log('setAndCacheInt value for key: $key to $value'); await _setAndCache(key, value, cacheSetter, _prefs!.setInt); } + Future _setAndCacheDouble(String key, double value, Function(double) cacheSetter) async { log('setAndCacheDouble value for key: $key to $value'); await _setAndCache(key, value, cacheSetter, _prefs!.setDouble); } + Future _setAndCacheStringList(String key, List value, Function(List) cacheSetter) async { log('setAndCacheStringList value for key: $key to $value'); await _setAndCache(key, value, cacheSetter, _prefs!.setStringList); } - - @override Future set(String key, dynamic value, Function(dynamic) cacheSetter) async { + @override + Future set(String key, dynamic value, Function(dynamic) cacheSetter) async { if (value is bool) { log('() => setAndCacheBool $key to $value'); await _prefs?.setBool(key, value); @@ -63,7 +67,9 @@ class SharedPreferencesStorageHelper implements Storage { } CacheUtil.instance.set(key, value); } - @override Future get(String key) async { + + @override + Future get(String key) async { log('Getting value for key: $key'); var value = CacheUtil.instance.get(key); if (value == null) { @@ -72,16 +78,18 @@ class SharedPreferencesStorageHelper implements Storage { } return value; } - @override Future delete(String key) async { + + @override + Future delete(String key) async { log('Deleting value for key: $key'); await _prefs?.remove(key); CacheUtil.instance.delete(key); } - @override Future purge() async { + + @override + Future purge() async { log('Purging shared preferences'); await _prefs?.clear(); CacheUtil.instance.clear(); } - - } diff --git a/lib/shared/helpers/sqlite_storage_helper.dart b/lib/shared/helpers/sqlite_storage_helper.dart index 3deda5a5..724f9df8 100644 --- a/lib/shared/helpers/sqlite_storage_helper.dart +++ b/lib/shared/helpers/sqlite_storage_helper.dart @@ -143,7 +143,27 @@ class SQLiteStorageHelper implements Storage { log('Setting up local variables'); try { await _database?.transaction((txn) async { - final keys = ['devUUID', 'userUUID', 'userDevUUID', 'status', 'userName', 'cliUUID', 'ownerUUID', 'cliName', 'petAmountRegister', 'whatsapp', 'provisional', 'pets', 'local', 'notify', 'fingerprint', 'access', 'panic', 'person', 'requestOSnotification']; + final keys = [ + 'devUUID', + 'userUUID', + 'userDevUUID', + 'status', + 'userName', + 'cliUUID', + 'ownerUUID', + 'cliName', + 'petAmountRegister', + 'whatsapp', + 'provisional', + 'pets', + 'local', + 'notify', + 'fingerprint', + 'access', + 'panic', + 'person', + 'requestOSnotification' + ]; for (var key in keys) { log('Fetching value for key: $key'); diff --git a/lib/shared/services/authentication/authentication_service.dart b/lib/shared/services/authentication/authentication_service.dart index 07545d83..90830254 100644 --- a/lib/shared/services/authentication/authentication_service.dart +++ b/lib/shared/services/authentication/authentication_service.dart @@ -104,7 +104,9 @@ class AuthenticationService { }) async { try { ApiCallResponse? response; - if ((email != null && email != '') && (passwd != null && passwd != '' && passwd.length > 7) && (name != null && name != '')) { + if ((email != null && email != '') && + (passwd != null && passwd != '' && passwd.length > 7) && + (name != null && name != '')) { response = await PhpGroup.registerCall.call( name: name, password: passwd, @@ -147,7 +149,8 @@ class AuthenticationService { try { final ApiCallResponse? response; final ForgotPasswordCall callback = PhpGroup.forgotPasswordCall; - final String message = FFLocalizations.of(context).getVariableText(enText: "Send E-mail Successful!", ptText: "E-mail Enviado com Sucesso!"); + final String message = FFLocalizations.of(context) + .getVariableText(enText: "Send E-mail Successful!", ptText: "E-mail Enviado com Sucesso!"); response = await callback.call(email: email); @@ -164,7 +167,8 @@ class AuthenticationService { static Future changePassword(BuildContext context, String email, String password, String token) async { try { - final ApiCallResponse response = await PhpGroup.changePasswordCall.call(email: email, psswd: password, token: token); + final ApiCallResponse response = + await PhpGroup.changePasswordCall.call(email: email, psswd: password, token: token); if (response.jsonBody['error'] == false) { final String message = FFLocalizations.of(context).getVariableText( diff --git a/lib/shared/services/localization/localization_service.dart b/lib/shared/services/localization/localization_service.dart index aede3570..60666fe0 100644 --- a/lib/shared/services/localization/localization_service.dart +++ b/lib/shared/services/localization/localization_service.dart @@ -204,7 +204,8 @@ class LocalizationService { log('() => isLinked: $errorMsg'); if (isNotAuthenticated || isLinked) AuthenticationService.signOut(context); DialogUtil.error(context, errorMsg); - LogUtil.requestAPIFailed('getLocals.php', '{devUUID: ${StorageUtil().devUUID}, cliUUID: ${StorageUtil().userUUID}}', 'Get Locals', errorMsg, StackTrace.current); + LogUtil.requestAPIFailed('getLocals.php', '{devUUID: ${StorageUtil().devUUID}, cliUUID: ${StorageUtil().userUUID}}', + 'Get Locals', errorMsg, StackTrace.current); } static Future _handleUnavailable(BuildContext context, List locals) async { @@ -273,7 +274,8 @@ class LocalizationService { StorageUtil().whatsapp = jsonBody['whatsapp'] ?? false; StorageUtil().provisional = jsonBody['provisional'] ?? false; StorageUtil().pets = jsonBody['pet'] ?? false; - StorageUtil().petAmountRegister = jsonBody['petAmountRegister'].toString().isEmpty ? '0' : jsonBody['petAmountRegister'].toString(); + StorageUtil().petAmountRegister = + jsonBody['petAmountRegister'].toString().isEmpty ? '0' : jsonBody['petAmountRegister'].toString(); StorageUtil().userName = jsonBody['visitado']['VDO_NOME']; } } diff --git a/lib/shared/utils/cache_util.dart b/lib/shared/utils/cache_util.dart index 4baf2128..c28e0fb8 100644 --- a/lib/shared/utils/cache_util.dart +++ b/lib/shared/utils/cache_util.dart @@ -31,4 +31,4 @@ class CacheUtil { void clear() { _cache.clear(); } -} \ No newline at end of file +} diff --git a/lib/shared/utils/device_util.dart b/lib/shared/utils/device_util.dart index 1009e9e7..8d52fcc2 100644 --- a/lib/shared/utils/device_util.dart +++ b/lib/shared/utils/device_util.dart @@ -1,4 +1,3 @@ - import 'dart:io'; import 'package:device_info_plus/device_info_plus.dart'; @@ -40,6 +39,5 @@ class DeviceUtil { return androidDeviceInfo.version.release; // unique ID on Android. e.g . 11 } return null; - - } + } } diff --git a/lib/shared/utils/dialog_util.dart b/lib/shared/utils/dialog_util.dart index 24fe1a78..d9f1c64d 100644 --- a/lib/shared/utils/dialog_util.dart +++ b/lib/shared/utils/dialog_util.dart @@ -28,13 +28,11 @@ class DialogUtil { context: context, builder: (context) { return Dialog( - child: SizedBox( height: _height, child: Padding( padding: MediaQuery.viewInsetsOf(context), - child: ThrowExceptionWidget( - msg: message, type: EnumThrowException.error)))); + child: ThrowExceptionWidget(msg: message, type: EnumThrowException.error)))); }); } @@ -47,8 +45,7 @@ class DialogUtil { height: _height, child: Padding( padding: MediaQuery.viewInsetsOf(context), - child: ThrowExceptionWidget( - msg: message, type: EnumThrowException.warning)))); + child: ThrowExceptionWidget(msg: message, type: EnumThrowException.warning)))); }); } @@ -61,8 +58,7 @@ class DialogUtil { height: _height, child: Padding( padding: MediaQuery.viewInsetsOf(context), - child: ThrowExceptionWidget( - msg: message, type: EnumThrowException.success)))); + child: ThrowExceptionWidget(msg: message, type: EnumThrowException.success)))); }); } } diff --git a/lib/shared/utils/image_util.dart b/lib/shared/utils/image_util.dart index 4c55c0dd..f180004e 100644 --- a/lib/shared/utils/image_util.dart +++ b/lib/shared/utils/image_util.dart @@ -9,8 +9,7 @@ import 'package:path_provider/path_provider.dart'; import '../../flutter_flow/uploaded_file.dart'; class ImageUtils { - static Future convertImageFileToBase64( - FFUploadedFile imageFile) async { + static Future convertImageFileToBase64(FFUploadedFile imageFile) async { List? imageBytes = imageFile.bytes; if (imageBytes != null) { String base64Image = base64Encode(imageBytes); diff --git a/lib/shared/utils/log_util.dart b/lib/shared/utils/log_util.dart index d4db4569..5b9e2dc2 100644 --- a/lib/shared/utils/log_util.dart +++ b/lib/shared/utils/log_util.dart @@ -5,18 +5,15 @@ import 'package:hub/backend/api_requests/api_calls.dart'; class LogUtil { static void requestAPIFailed(String url, String body, String reason, dynamic error, StackTrace stack) async { - log("URL: ${PhpGroup.getBaseUrl()}/$url"); log("Body: $body"); log("Motivo: $reason"); log("Error: ${error.toString()}"); log("Stack: ${stack.toString()}"); - FirebaseCrashlytics.instance - .setCustomKey('URL', "${PhpGroup.getBaseUrl()}/$url"); + FirebaseCrashlytics.instance.setCustomKey('URL', "${PhpGroup.getBaseUrl()}/$url"); FirebaseCrashlytics.instance.setCustomKey('Body', body); - await FirebaseCrashlytics.instance - .recordError(error, stack, reason: reason); + await FirebaseCrashlytics.instance.recordError(error, stack, reason: reason); } } diff --git a/lib/shared/utils/snackbar_util.dart b/lib/shared/utils/snackbar_util.dart index 60618d7a..27150db6 100644 --- a/lib/shared/utils/snackbar_util.dart +++ b/lib/shared/utils/snackbar_util.dart @@ -3,8 +3,6 @@ import 'package:flutter/material.dart'; import '../../flutter_flow/flutter_flow_theme.dart'; class SnackBarUtil { - - static void showSnackBar(BuildContext context, String text, {bool isError = false}) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -12,9 +10,7 @@ class SnackBarUtil { text, style: TextStyle(color: FlutterFlowTheme.of(context).info), ), - backgroundColor: isError - ? FlutterFlowTheme.of(context).error - : FlutterFlowTheme.of(context).success, + backgroundColor: isError ? FlutterFlowTheme.of(context).error : FlutterFlowTheme.of(context).success, duration: const Duration(seconds: 3), behavior: SnackBarBehavior.floating, shape: RoundedRectangleBorder( @@ -23,6 +19,4 @@ class SnackBarUtil { ), ); } - - -} \ No newline at end of file +} diff --git a/lib/shared/utils/validator_util.dart b/lib/shared/utils/validator_util.dart index 41fafcd7..51abce74 100644 --- a/lib/shared/utils/validator_util.dart +++ b/lib/shared/utils/validator_util.dart @@ -1,4 +1,3 @@ - import 'package:intl/intl.dart'; class ValidatorUtil { diff --git a/lib/shared/widgets/menu.dart b/lib/shared/widgets/menu.dart index affa655f..7624f6e3 100644 --- a/lib/shared/widgets/menu.dart +++ b/lib/shared/widgets/menu.dart @@ -1,7 +1,5 @@ - - // // LinkedHashMap menu = LinkedHashMap.from({ -// "Schedule": +// "Schedule": // [{ // "title": "Schedule\nVisit", // "icon": Icons.settings, @@ -22,7 +20,7 @@ // "icon": Icons.calendar_today, // "route": "/Fast", // }], -// "Consult": +// "Consult": // [{ // "title": "Consult", // "icon": Icons.search, @@ -48,11 +46,11 @@ // "icon": Icons.search, // "route": "/qrcode", // }], -// "Preferences": +// "Preferences": // [{ // "title": "Preferences", // "icon": Icons.settings, // "route": "/preferences", // }], -// }); \ No newline at end of file +// }); From 7f7159776b6bd2e95e97b7e51132af2aaa34228e Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 4 Nov 2024 15:58:12 -0300 Subject: [PATCH 09/33] WIP --- .../visits_on_the_property_screen.dart | 16 ---------------- lib/shared/helpers/sqlite_storage_helper.dart | 6 +----- 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart index 7bcac793..c18a298d 100644 --- a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart +++ b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart @@ -215,8 +215,6 @@ class _VisitsOnThePropertyState extends State with TickerPr uItem['VTA_VALIDADE'] ?? '', '${FFLocalizations.of(context).getVariableText(ptText: "Motivo", enText: "Reason")}:': uItem['MOT_DESCRICAO'][0].toUpperCase() + uItem['MOT_DESCRICAO'].substring(1).toLowerCase(), - if (uItem['VTA_DTFIM'] != '') - '${FFLocalizations.of(context).getVariableText(ptText: "Saída", enText: "Exit")}:': uItem['VTA_DTFIM'] ?? '', }, statusHashMap: [ if (uItem['VTA_FIXA'] == true) @@ -233,20 +231,6 @@ class _VisitsOnThePropertyState extends State with TickerPr enText: 'Single Entry', ): FlutterFlowTheme.of(context).success, }, - if (uItem['VTA_DTFIM'] != '') - { - FFLocalizations.of(context).getVariableText( - ptText: 'Finalizada', - enText: 'Finished', - ): FlutterFlowTheme.of(context).success, - }, - if (uItem['VTA_DTFIM'] == '') - { - FFLocalizations.of(context).getVariableText( - ptText: 'Em aberto', - enText: 'Opened', - ): FlutterFlowTheme.of(context).warning, - }, ], onTapCardItemAction: () async { await showDialog( diff --git a/lib/shared/helpers/sqlite_storage_helper.dart b/lib/shared/helpers/sqlite_storage_helper.dart index 724f9df8..af542cb4 100644 --- a/lib/shared/helpers/sqlite_storage_helper.dart +++ b/lib/shared/helpers/sqlite_storage_helper.dart @@ -231,11 +231,7 @@ class SQLiteStorageHelper implements Storage { DatabaseConfig.columnCreatedAt: DateTime.now().toIso8601String(), }; - final result = await db.insert( - DatabaseConfig.tableKeychain, - data, - conflictAlgorithm: ConflictAlgorithm.replace, - ); + final result = await db.insert(DatabaseConfig.tableKeychain, data, conflictAlgorithm: ConflictAlgorithm.replace); log('Value $value set for key: $key with result: $result'); return result; } From edeb00a8bd83bf0560521559671b252b19b13000 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 4 Nov 2024 16:00:05 -0300 Subject: [PATCH 10/33] WIP --- .../visits_on_the_property_screen.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart index c18a298d..ef787e5a 100644 --- a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart +++ b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart @@ -220,15 +220,15 @@ class _VisitsOnThePropertyState extends State with TickerPr if (uItem['VTA_FIXA'] == true) { FFLocalizations.of(context).getVariableText( - ptText: 'Entrada Recorrente', - enText: 'Recurrent Entry', + ptText: 'Recorrente', + enText: 'Recurrent', ): FlutterFlowTheme.of(context).warning, }, if (uItem['VTA_FIXA'] == false) { FFLocalizations.of(context).getVariableText( - ptText: 'Entrada Única', - enText: 'Single Entry', + ptText: 'Única', + enText: 'Single', ): FlutterFlowTheme.of(context).success, }, ], From 493c55cd59ee71c425d73d13c008231a96798c96 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 4 Nov 2024 16:23:34 -0300 Subject: [PATCH 11/33] remove VTA_DTFIM --- lib/pages/visits_on_the_property/model.dart | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lib/pages/visits_on_the_property/model.dart b/lib/pages/visits_on_the_property/model.dart index 1ed96af0..8c5ba18a 100644 --- a/lib/pages/visits_on_the_property/model.dart +++ b/lib/pages/visits_on_the_property/model.dart @@ -45,11 +45,6 @@ class VisitsModel extends FlutterFlowModel { ptText: "Data de Início", enText: "Start Date", )}:': item['VTA_DTINICIO'].toString().toUpperCase(), - if (item['VTA_DTFIM'] != null && item['VTA_DTFIM'] != '') - '${FFLocalizations.of(context).getVariableText( - ptText: "Data de Fim", - enText: "End Date", - )}:': item['VTA_DTFIM'].toString().toUpperCase(), if (item['VTA_VALIDADE'] != null && item['VTA_VALIDADE'] != '') '${FFLocalizations.of(context).getVariableText( ptText: "Validade", From abf2827afea050635b2c62266a96cf1f4c858875 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Tue, 5 Nov 2024 09:56:46 -0300 Subject: [PATCH 12/33] fix label visita em aberto --- lib/pages/visits_on_the_property/model.dart | 12 ++++++------ .../authentication/authentication_service.dart | 2 -- lib/shared/utils/storage_util.dart | 4 +--- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/lib/pages/visits_on_the_property/model.dart b/lib/pages/visits_on_the_property/model.dart index 8c5ba18a..c086c92c 100644 --- a/lib/pages/visits_on_the_property/model.dart +++ b/lib/pages/visits_on_the_property/model.dart @@ -35,11 +35,11 @@ class VisitsModel extends FlutterFlowModel { return DetailsComponentWidget( buttons: [], labelsHashMap: Map.from({ - if (item['VTA_NOME'] != null && item['VTA_NOME'] != '') + if (item['MOT_DESCRICAO'] != null && item['MOT_DESCRICAO'] != '') '${FFLocalizations.of(context).getVariableText( - ptText: "Nome", - enText: "Name", - )}:': item['VTA_NOME'].toString().toUpperCase(), + ptText: "Motivo", + enText: "Reason", + )}:': item['MOT_DESCRICAO'].toString().toUpperCase(), if (item['VTA_DTINICIO'] != null && item['VTA_DTINICIO'] != '') '${FFLocalizations.of(context).getVariableText( ptText: "Data de Início", @@ -67,9 +67,9 @@ class VisitsModel extends FlutterFlowModel { imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${StorageUtil().devUUID}&cliID=${StorageUtil().cliUUID}&atividade=getFoto&Documento=${item['VDO_DOCUMENTO']}&tipo=E', statusHashMap: [ - if (item['MOT_DESCRICAO'] != null) + if (item['VTA_NOME'] != null) Map.from( - {item['MOT_DESCRICAO'].toString().toUpperCase(): FlutterFlowTheme.of(context).primary}), + {item['VTA_NOME'].toString().toUpperCase(): FlutterFlowTheme.of(context).warning}), ], ); } diff --git a/lib/shared/services/authentication/authentication_service.dart b/lib/shared/services/authentication/authentication_service.dart index 391a625f..8b1d14f0 100644 --- a/lib/shared/services/authentication/authentication_service.dart +++ b/lib/shared/services/authentication/authentication_service.dart @@ -163,7 +163,6 @@ class AuthenticationService { } catch (e, s) { DialogUtil.errorDefault(context); LogUtil.requestAPIFailed('forgotPassword.php', email, "Forgot Password", e, s); - LogUtil.requestAPIFailed('forgotPassword.php', email, "Forgot Password", e, s); } } @@ -185,7 +184,6 @@ class AuthenticationService { } catch (e, s) { DialogUtil.errorDefault(context); LogUtil.requestAPIFailed('changePassword.php', email, "Change Password", e, s); - LogUtil.requestAPIFailed('changePassword.php', email, "Change Password", e, s); } } diff --git a/lib/shared/utils/storage_util.dart b/lib/shared/utils/storage_util.dart index ec0dcb3d..3aef0f98 100644 --- a/lib/shared/utils/storage_util.dart +++ b/lib/shared/utils/storage_util.dart @@ -123,7 +123,7 @@ class StorageUtil { if (!_initialized) return true; if (_initialized) await SharedPreferencesStorageHelper().initialize(); if (_initialized) _secureStorage = SecureStorageHelper(); - if (_initialized) _sqliteStorage = SQLiteStorageHelper(); + if (_initialized) _sharedPreferences = SharedPreferencesStorageHelper(); if (_initialized) _sqliteStorage = SQLiteStorageHelper(); await initSecureStorage(); await initSharedPreferences(); @@ -161,7 +161,6 @@ class StorageUtil { Future initSecureStorage() async { log('SecureStorageHelper: Starting initialization'); try { - if (_initialized) _secureStorage = SecureStorageHelper(); if (_initialized) _secureStorage = SecureStorageHelper(); _email = await _secureStorage.getString('fre_email'); _passwd = await _secureStorage.getString('fre_passwd'); @@ -173,7 +172,6 @@ class StorageUtil { _fingerprintPass = await _secureStorage.getString('fre_fingerprintPass'); _haveLocal = await _secureStorage.getBool('fre_have_local') ?? false; _deviceDescription = await _secureStorage.getString('fre_deviceDescription'); - _deviceDescription = await _secureStorage.getString('fre_deviceDescription'); } catch (e, s) { log('SecureStorageHelper: Error during initialization: $e'); LogUtil.requestAPIFailed('$UniqueKey', '$UniqueKey', 'SecureStorageHelper', e, s); From a29cd60c2670ce0f0df47e40b86a1b11305fb4b4 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Tue, 5 Nov 2024 11:13:25 -0300 Subject: [PATCH 13/33] fix modal de meus veiculos --- .../details_component/details_component_widget.dart | 11 +++++------ lib/pages/vehicles_on_the_property/vehicle_model.dart | 2 -- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/lib/components/templates_components/details_component/details_component_widget.dart b/lib/components/templates_components/details_component/details_component_widget.dart index 1a73a649..01c05798 100644 --- a/lib/components/templates_components/details_component/details_component_widget.dart +++ b/lib/components/templates_components/details_component/details_component_widget.dart @@ -12,7 +12,7 @@ class DetailsComponentWidget extends StatefulWidget { Key? key, required this.labelsHashMap, required this.statusHashMap, - required this.imagePath, + this.imagePath, this.onTapCardItemAction, required this.buttons, }); @@ -74,7 +74,7 @@ class _DetailsComponentWidgetState extends State { mainAxisAlignment: MainAxisAlignment.start, children: [ SizedBox(height: MediaQuery.of(context).size.height * 0.02), - Container( + if(widget.imagePath != null) Container( width: MediaQuery.of(context).size.width * 0.3, height: MediaQuery.of(context).size.width * 0.3, clipBehavior: Clip.antiAlias, @@ -89,6 +89,7 @@ class _DetailsComponentWidgetState extends State { useOldImageOnUrlChange: true, ), ), + SizedBox(height: MediaQuery.of(context).size.height * 0.03), Row( children: statusLinkedHashMap.expand((linkedHashMap) { @@ -99,8 +100,6 @@ class _DetailsComponentWidgetState extends State { horizontal: MediaQuery.of(context).size.width * 0.05, ), child: TextFormField( - // controller: _model.textControllerStatus, - // focusNode: _model.textFieldFocusNodeStatus, autofocus: false, canRequestFocus: false, readOnly: true, @@ -115,7 +114,7 @@ class _DetailsComponentWidgetState extends State { ), filled: true, fillColor: item.value, - labelText: item.key, + labelText: item.key, labelStyle: FlutterFlowTheme.of(context).labelMedium.override( fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, fontWeight: FontWeight.bold, @@ -149,7 +148,7 @@ class _DetailsComponentWidgetState extends State { FlutterFlowTheme.of(context).bodyMediumFamily, ), ), - textAlign: TextAlign.start, + textAlign: TextAlign.center, maxLines: null, keyboardType: TextInputType.name, validator: _model.textController1Validator.asValidator(context), diff --git a/lib/pages/vehicles_on_the_property/vehicle_model.dart b/lib/pages/vehicles_on_the_property/vehicle_model.dart index 8218c2e7..7d896079 100644 --- a/lib/pages/vehicles_on_the_property/vehicle_model.dart +++ b/lib/pages/vehicles_on_the_property/vehicle_model.dart @@ -51,9 +51,7 @@ class VehicleModel extends FlutterFlowModel { '${FFLocalizations.of(context).getVariableText(ptText: "Tag", enText: "Tag")}:': item['tag'].toString().toUpperCase(), }), - imagePath: 'https://freaccess.com.br/freaccess/Images/Clients/${StorageUtil().cliUUID}.png', statusHashMap: [ - if (item['model'] != null) Map.from({item['model']: FlutterFlowTheme.of(context).primary}), ], ); } From 8d9678ede1f7b6c1c1e816bcc18980a92f5d0575 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Tue, 5 Nov 2024 12:42:36 -0300 Subject: [PATCH 14/33] misc --- lib/main.dart | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 16e908fc..1b04827a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -42,19 +42,15 @@ Future initializeApp() async { _initializeSystemSettings(); await _initializeFlutterFlow(); } - Future _initializeStorageHelpers() async { await StorageUtil().ensureInitialization(); } - Future _initializeTracking() async { await AppTrackingTransparency.requestTrackingAuthorization(); } - Future _initializeFirebase() async { await Firebase.initializeApp(); } - Future _initializeNotificationService() async { await NotificationService.initialize(); } @@ -62,7 +58,6 @@ Future _initializeNotificationService() async { void _initializeUrlStrategy() { setUrlStrategy(PathUrlStrategy()); } - void _initializeSystemSettings() { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); if (kDebugMode) { @@ -81,7 +76,6 @@ Future _initializeFlutterFlow() async { GoRouter.optionURLReflectsImperativeAPIs = true; usePathUrlStrategy(); } - Future _foregroundHandlerMessage(RemoteMessage message) async { if (message.data['click_action'] == 'enroll_cond') { StorageUtil().haveLocal = true; @@ -94,7 +88,6 @@ Future _foregroundHandlerMessage(RemoteMessage message) async { payload: Map.from(message.data)); } } - Future _backgroundHandlerMessage(RemoteMessage message) async { if (message.data['click_action'] == 'enroll_cond') { log('backgroundHandlerMessage'); @@ -111,7 +104,6 @@ class App extends StatefulWidget { static _AppState of(BuildContext context) => context.findAncestorStateOfType<_AppState>()!; } - class _AppState extends State with WidgetsBindingObserver { Locale? _locale = FFLocalizations.getStoredLocale(); ThemeMode _themeMode = FlutterFlowTheme.themeMode; @@ -302,3 +294,4 @@ class _AppState extends State with WidgetsBindingObserver { ); } } + From 5d5251a89cfb28b5cb0fb8005b42c9c5f528b5fc Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Wed, 6 Nov 2024 15:10:50 -0300 Subject: [PATCH 15/33] =?UTF-8?q?fix:=20velocidade=20da=20navega=C3=A7?= =?UTF-8?q?=C3=A3o=20e=20webview=20clean=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../menu_button_item_widget.dart | 16 +- .../menu_card_item/menu_card_item.dart | 16 +- .../fast_pass_page/fast_pass_page_widget.dart | 158 +++++++++-------- .../reservation_page_widget.dart | 161 ++++++++---------- lib/pages/test_page/test_page.dart | 62 ------- 5 files changed, 156 insertions(+), 257 deletions(-) delete mode 100644 lib/pages/test_page/test_page.dart diff --git a/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart b/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart index a95d4de8..68c1ae18 100644 --- a/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart +++ b/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart @@ -40,19 +40,9 @@ class _MenuButtonWidgetState extends State { onTap: _isProcessing ? null : () async { - setState(() { - _isProcessing = true; - }); - await LocalizationService.processLocals(context).then((value) async { - if (value) { - await widget.action.call(); - } else { - DialogUnavailable.unavailableCredentials(context); - } - }); - setState(() { - _isProcessing = false; - }); + setState(() { _isProcessing = true; }); + await widget.action.call(); + setState(() { _isProcessing = false; }); }, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 0), diff --git a/lib/components/atomic_components/menu_card_item/menu_card_item.dart b/lib/components/atomic_components/menu_card_item/menu_card_item.dart index 0bd0b0f3..f066b36d 100644 --- a/lib/components/atomic_components/menu_card_item/menu_card_item.dart +++ b/lib/components/atomic_components/menu_card_item/menu_card_item.dart @@ -40,19 +40,9 @@ class _MenuCardItemState extends State { onTap: _isProcessing ? null : () async { - setState(() { - _isProcessing = true; - }); - await LocalizationService.processLocals(context).then((value) async { - if (value) { - await widget.action.call(); - } else { - DialogUnavailable.unavailableCredentials(context); - } - }); - setState(() { - _isProcessing = false; - }); + setState(() { _isProcessing = true; }); + await widget.action.call(); + setState(() { _isProcessing = false; }); }, child: Card( elevation: 0, diff --git a/lib/pages/fast_pass_page/fast_pass_page_widget.dart b/lib/pages/fast_pass_page/fast_pass_page_widget.dart index 58906122..a8ce35df 100644 --- a/lib/pages/fast_pass_page/fast_pass_page_widget.dart +++ b/lib/pages/fast_pass_page/fast_pass_page_widget.dart @@ -23,20 +23,14 @@ class _FastPassPageWidgetState extends State { late InAppWebViewController _controllerIOS; Future> initVariables() async { - final email = (await StorageHelper().get(hub.SecureStorageKey.email.value, hub.Storage.SecureStorage)) ?? ''; - final name = - (await StorageHelper().get(hub.SQLiteStorageKey.userName.value, hub.Storage.SQLiteStorage)) ?? ''; - final devUUID = - (await StorageHelper().get(hub.SQLiteStorageKey.devUUID.value, hub.Storage.SQLiteStorage)) ?? ''; - final userUUID = - (await StorageHelper().get(hub.SQLiteStorageKey.userUUID.value, hub.Storage.SQLiteStorage)) ?? ''; - final cliUUID = - (await StorageHelper().get(hub.SQLiteStorageKey.clientUUID.value, hub.Storage.SQLiteStorage)) ?? ''; + final email = await StorageHelper().get(hub.SecureStorageKey.email.value, hub.Storage.SecureStorage) ?? ''; + final name = await StorageHelper().get(hub.SQLiteStorageKey.userName.value, hub.Storage.SQLiteStorage) ?? ''; + final devUUID = await StorageHelper().get(hub.SQLiteStorageKey.devUUID.value, hub.Storage.SQLiteStorage) ?? ''; + final userUUID = await StorageHelper().get(hub.SQLiteStorageKey.userUUID.value, hub.Storage.SQLiteStorage) ?? ''; + final cliUUID = await StorageHelper().get(hub.SQLiteStorageKey.clientUUID.value, hub.Storage.SQLiteStorage) ?? ''; const createdAt = '0000-00-00 00:00:00'; final url = 'https://hub.freaccess.com.br/hub/fast-pass/$cliUUID'; - final freUserData = - "{\"name\": \"$name\", \"email\": \"$email\",\"dev_id\": \"$devUUID\",\"created_at\":\"$createdAt\",\"updated_at\": \"0000-00-00 00:00:00\",\"status\": \"A\" }"; - + final freUserData = "{\"name\": \"$name\", \"email\": \"$email\",\"dev_id\": \"$devUUID\",\"created_at\":\"$createdAt\",\"updated_at\": \"0000-00-00 00:00:00\",\"status\": \"A\" }"; return { 'url': url, 'name': name, @@ -57,84 +51,84 @@ class _FastPassPageWidgetState extends State { future: initVariables(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { - return Center(child: CircularProgressIndicator()); - } else if (snapshot.hasError || snapshot.hasData == false || snapshot.data!.isEmpty) { - return Center( - child: Text(FFLocalizations.of(context) - .getVariableText(enText: 'Unexpected error', ptText: 'Erro inesperado'))); - } else if (snapshot.hasData) { + return const Center(child: CircularProgressIndicator()); + } else if (snapshot.hasError || !snapshot.hasData || snapshot.data!.isEmpty) { + return Center(child: Text(FFLocalizations.of(context).getVariableText(enText: 'Unexpected error', ptText: 'Erro inesperado'))); + } else { final data = snapshot.data!; final url = data['url']!; final userUUID = data['userUUID']!; final freUserData = data['freUserData']!; - return Platform.isIOS - ? InAppWebView( - initialUrlRequest: URLRequest(url: WebUri(url)), - initialSettings: InAppWebViewSettings( - allowsBackForwardNavigationGestures: true, - javaScriptEnabled: true, - ), - onWebViewCreated: (controller) async => _controllerIOS = controller, - onLoadStop: (controller, url) async { - await controller.evaluateJavascript( - source: "window.localStorage.setItem('fre-token', '\"$userUUID\"')"); - await controller.evaluateJavascript( - source: "window.localStorage.setItem('fre-user-data', '$freUserData')"); - await controller.evaluateJavascript( - source: "window.localStorage.setItem('enableBackButton', 'true')"); - }, - onUpdateVisitedHistory: (controller, uri, isVisited) { - if (uri.toString().contains('/hub/home')) context.pop(); - }, - ) - : WebViewWidget( - controller: _controllerAndroid = WebViewController() - ..clearCache() - ..clearLocalStorage() - ..setJavaScriptMode(JavaScriptMode.unrestricted) - ..setBackgroundColor(const Color(0x00000000)) - ..setNavigationDelegate( - NavigationDelegate( - onProgress: (int progress) {}, - onPageStarted: (String url) { - final String token = "localStorage.setItem('fre-token', '\"$userUUID\"');"; - final String data = "localStorage.setItem('fre-user-data', '$freUserData');"; - const String backNavigation = "localStorage.setItem('enableBackButton', 'true');"; - - _controllerAndroid.runJavaScript(token); - _controllerAndroid.runJavaScript(data); - _controllerAndroid.runJavaScript(backNavigation); - }, - onPageFinished: (String url) { - bool isDarkMode = - SchedulerBinding.instance.platformDispatcher.platformBrightness == Brightness.dark; - - if (isDarkMode) { - _controllerAndroid.runJavaScript(WebviewUtil.jsEnableDarkMode); - } - }, - onNavigationRequest: (NavigationRequest request) { - if (request.url.startsWith('http') || - request.url.startsWith('https://api.whatsapp.com/send') || - request.url.startsWith('https://wa.me')) { - launchUrlString(request.url); - return NavigationDecision.prevent; - } - return NavigationDecision.prevent; - }, - onUrlChange: (url) { - if (url.url.toString().contains('/hub/home')) context.pop(); - }), - ) - ..loadRequest(Uri.parse(url)), - ); - } else { - return const Center(child: Text('Unexpected error')); + ? _buildIOSWebView(url, userUUID, freUserData) + : _buildAndroidWebView(url, userUUID, freUserData); } }, ), ), ); } -} + + Widget _buildIOSWebView(String url, String userUUID, String freUserData) { + return InAppWebView( + initialUrlRequest: URLRequest(url: WebUri(url)), + onLoadStart: (controller, url) {}, + initialSettings: InAppWebViewSettings( + allowsBackForwardNavigationGestures: true, + javaScriptEnabled: true, + ), + onWebViewCreated: (controller) async => _controllerIOS = controller, + onLoadStop: (controller, url) async { + await controller.evaluateJavascript(source: "window.localStorage.setItem('fre-token', '\"$userUUID\"')"); + await controller.evaluateJavascript(source: "window.localStorage.setItem('fre-user-data', '$freUserData')"); + await controller.evaluateJavascript(source: "window.localStorage.setItem('enableBackButton', 'true')"); + }, + onUpdateVisitedHistory: (controller, uri, isVisited) { + if (uri.toString().contains('/hub/home')) context.pop(); + }, + ); + } + + Widget _buildAndroidWebView(String url, String userUUID, String freUserData) { + return WebViewWidget( + controller: _controllerAndroid = WebViewController() + ..clearCache() + ..clearLocalStorage() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setBackgroundColor(const Color(0x00000000)) + ..setNavigationDelegate( + NavigationDelegate( + onPageStarted: (String url) { + final String token = "localStorage.setItem('fre-token', '\"$userUUID\"');"; + final String data = "localStorage.setItem('fre-user-data', '$freUserData');"; + const String backNavigation = "localStorage.setItem('enableBackButton', 'true');"; + + _controllerAndroid.runJavaScript(token); + _controllerAndroid.runJavaScript(data); + _controllerAndroid.runJavaScript(backNavigation); + }, + onPageFinished: (String url) { + bool isDarkMode = SchedulerBinding.instance.platformDispatcher.platformBrightness == Brightness.dark; + + if (isDarkMode) { + _controllerAndroid.runJavaScript(WebviewUtil.jsEnableDarkMode); + } + }, + onNavigationRequest: (NavigationRequest request) { + if (request.url.startsWith('http') || + request.url.startsWith('https://api.whatsapp.com/send') || + request.url.startsWith('https://wa.me')) { + launchUrlString(request.url); + return NavigationDecision.prevent; + } + return NavigationDecision.prevent; + }, + onUrlChange: (url) { + if (url.url.toString().contains('/hub/home')) context.pop(); + }, + ), + ) + ..loadRequest(Uri.parse(url)), + ); + } +} \ No newline at end of file diff --git a/lib/pages/reservation_page/reservation_page_widget.dart b/lib/pages/reservation_page/reservation_page_widget.dart index 246b8b48..2cc86d47 100644 --- a/lib/pages/reservation_page/reservation_page_widget.dart +++ b/lib/pages/reservation_page/reservation_page_widget.dart @@ -22,22 +22,14 @@ class _ReservationPageWidgetState extends State { late WebViewController _controllerAll; Future> initVariables() async { - final email = (await StorageHelper().get(hub.SecureStorageKey.email.value, hub.Storage.SecureStorage)) ?? ''; - final name = - (await StorageHelper().get(hub.SQLiteStorageKey.userName.value, hub.Storage.SQLiteStorage)) ?? ''; - final devUUID = - (await StorageHelper().get(hub.SQLiteStorageKey.devUUID.value, hub.Storage.SQLiteStorage)) ?? ''; - final userUUID = - (await StorageHelper().get(hub.SQLiteStorageKey.userUUID.value, hub.Storage.SQLiteStorage)) ?? ''; - final clientId = - (await StorageHelper().get(hub.SQLiteStorageKey.clientUUID.value, hub.Storage.SQLiteStorage)) ?? ''; + final email = await StorageHelper().get(hub.SecureStorageKey.email.value, hub.Storage.SecureStorage) ?? ''; + final name = await StorageHelper().get(hub.SQLiteStorageKey.userName.value, hub.Storage.SQLiteStorage) ?? ''; + final devUUID = await StorageHelper().get(hub.SQLiteStorageKey.devUUID.value, hub.Storage.SQLiteStorage) ?? ''; + final userUUID = await StorageHelper().get(hub.SQLiteStorageKey.userUUID.value, hub.Storage.SQLiteStorage) ?? ''; + final clientId = await StorageHelper().get(hub.SQLiteStorageKey.clientUUID.value, hub.Storage.SQLiteStorage) ?? ''; const createdAt = '0000-00-00 00:00:00'; - final url = 'https://hub.freaccess.com.br/hub/reservation/$clientId'; - - final freUserData = - "{\"name\": \"$name\", \"email\": \"$email\",\"dev_id\": \"$devUUID\",\"created_at\": \"0000-00-00 00:00:00\",\"updated_at\": \"0000-00-00 00:00:00\",\"status\": \"A\" }"; - + final freUserData = "{\"name\": \"$name\", \"email\": \"$email\",\"dev_id\": \"$devUUID\",\"created_at\": \"$createdAt\",\"updated_at\": \"0000-00-00 00:00:00\",\"status\": \"A\" }"; return { 'url': url, 'name': name, @@ -59,87 +51,82 @@ class _ReservationPageWidgetState extends State { builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const Center(child: CircularProgressIndicator()); - } else if (snapshot.hasError || snapshot.hasData == false || snapshot.data!.isEmpty) { - return Center( - child: Text(FFLocalizations.of(context) - .getVariableText(enText: 'Unexpected error', ptText: 'Erro inesperado'))); - } else if (snapshot.hasData) { + } else if (snapshot.hasError || !snapshot.hasData || snapshot.data!.isEmpty) { + return Center(child: Text(FFLocalizations.of(context).getVariableText(enText: 'Unexpected error', ptText: 'Erro inesperado'))); + } else { final data = snapshot.data!; final url = data['url']!; final userUUID = data['userUUID']!; final freUserData = data['freUserData']!; - return Platform.isIOS - ? InAppWebView( - initialUrlRequest: URLRequest(url: WebUri(url)), - initialSettings: InAppWebViewSettings( - allowsBackForwardNavigationGestures: true, - javaScriptEnabled: true, - ), - onWebViewCreated: (controller) async {}, - onLoadStop: (controller, url) async { - await controller.evaluateJavascript( - source: "window.localStorage.setItem('fre-token', '\"$userUUID\"')"); - await controller.evaluateJavascript( - source: "window.localStorage.setItem('fre-user-data', '$freUserData')"); - await controller.evaluateJavascript( - source: "window.localStorage.setItem('enableBackButton', 'true')"); - }, - onUpdateVisitedHistory: (controller, uri, isVisited) { - if (uri.toString().contains('/hub/home')) { - context.pop(); - } - }, - ) - : WebViewWidget( - controller: _controllerAll = WebViewController() - ..clearCache() - ..clearLocalStorage() - ..setJavaScriptMode(JavaScriptMode.unrestricted) - ..setBackgroundColor(const Color(0x00000000)) - ..setNavigationDelegate( - NavigationDelegate( - onProgress: (int progress) {}, - onPageStarted: (String url) { - final String token = "localStorage.setItem('fre-token', '\"$userUUID\"');"; - final String data = "localStorage.setItem('fre-user-data', '$freUserData');"; - const String backNavigation = "localStorage.setItem('enableBackButton', 'true');"; - - _controllerAll.runJavaScript(token); - _controllerAll.runJavaScript(data); - _controllerAll.runJavaScript(backNavigation); - }, - onPageFinished: (String url) { - bool isDarkMode = - SchedulerBinding.instance.platformDispatcher.platformBrightness == Brightness.dark; - - if (isDarkMode) { - _controllerAll.runJavaScript(WebviewUtil.jsEnableDarkMode); - } - }, - onNavigationRequest: (NavigationRequest request) { - if (request.url.startsWith('http') || - request.url.startsWith('https://api.whatsapp.com/send') || - request.url.startsWith('https://wa.me')) { - launchUrlString(request.url); - return NavigationDecision.prevent; - } - return NavigationDecision.prevent; - }, - onUrlChange: (url) { - if (url.url.toString().contains('/hub/home')) { - context.pop(); - } - }), - ) - ..loadRequest(Uri.parse(url)), - ); - } else { - return const Center(child: Text('Unexpected error')); + ? _buildIOSWebView(url, userUUID, freUserData) + : _buildAndroidWebView(url, userUUID, freUserData); } }, ), ), ); } -} + + Widget _buildIOSWebView(String url, String userUUID, String freUserData) { + return InAppWebView( + initialUrlRequest: URLRequest(url: WebUri(url)), + initialSettings: InAppWebViewSettings( + allowsBackForwardNavigationGestures: true, + javaScriptEnabled: true, + ), + onWebViewCreated: (controller) async {}, + onLoadStop: (controller, url) async { + await controller.evaluateJavascript(source: "window.localStorage.setItem('fre-token', '\"$userUUID\"')"); + await controller.evaluateJavascript(source: "window.localStorage.setItem('fre-user-data', '$freUserData')"); + await controller.evaluateJavascript(source: "window.localStorage.setItem('enableBackButton', 'true')"); + }, + onUpdateVisitedHistory: (controller, uri, isVisited) { + if (uri.toString().contains('/hub/home')) context.pop(); + }, + ); + } + + Widget _buildAndroidWebView(String url, String userUUID, String freUserData) { + return WebViewWidget( + controller: _controllerAll = WebViewController() + ..clearCache() + ..clearLocalStorage() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setBackgroundColor(const Color(0x00000000)) + ..setNavigationDelegate( + NavigationDelegate( + onPageStarted: (String url) { + final String token = "localStorage.setItem('fre-token', '\"$userUUID\"');"; + final String data = "localStorage.setItem('fre-user-data', '$freUserData');"; + const String backNavigation = "localStorage.setItem('enableBackButton', 'true');"; + + _controllerAll.runJavaScript(token); + _controllerAll.runJavaScript(data); + _controllerAll.runJavaScript(backNavigation); + }, + onPageFinished: (String url) { + bool isDarkMode = SchedulerBinding.instance.platformDispatcher.platformBrightness == Brightness.dark; + + if (isDarkMode) { + _controllerAll.runJavaScript(WebviewUtil.jsEnableDarkMode); + } + }, + onNavigationRequest: (NavigationRequest request) { + if (request.url.startsWith('http') || + request.url.startsWith('https://api.whatsapp.com/send') || + request.url.startsWith('https://wa.me')) { + launchUrlString(request.url); + return NavigationDecision.prevent; + } + return NavigationDecision.prevent; + }, + onUrlChange: (url) { + if (url.url.toString().contains('/hub/home')) context.pop(); + }, + ), + ) + ..loadRequest(Uri.parse(url)), + ); + } +} \ No newline at end of file diff --git a/lib/pages/test_page/test_page.dart b/lib/pages/test_page/test_page.dart deleted file mode 100644 index b7a0e8db..00000000 --- a/lib/pages/test_page/test_page.dart +++ /dev/null @@ -1,62 +0,0 @@ -// import 'dart:developer'; - -// import 'package:f_r_e_hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart'; -// import 'package:f_r_e_hub/flutter_flow/flutter_flow_theme.dart'; -// import 'package:flutter/material.dart'; - -// class TestPage extends StatelessWidget { -// const TestPage({Key? key}) : super(key: key); - -// @override -// Widget build(BuildContext context) { -// // Exemplo de dados para os HashMaps -// final Map labelsHashMap = { -// 'Nome:': 'Gabriel da Silva', -// 'Entrada:': '08:00 AM 01/01/2022', -// 'Saída:': '17:00 PM 01/01/2022', -// }; - -// // Ajuste para o novo tipo esperado pelo componente -// final Map statusHashMap = { -// 'Ativo': FlutterFlowTheme.of(context).success, -// }; - -// // função set statusHashMap que recebe um String status faz um switch case e retorna um Map -// Map getStatusHashMap(String status) { -// switch (status) { -// case 'Ativo': -// return {'Ativo': FlutterFlowTheme.of(context).success}; -// case 'Inativo': -// return {'Inativo': FlutterFlowTheme.of(context).error}; -// default: -// return {'Desconhecido': FlutterFlowTheme.of(context).primaryColor}; -// } -// } - -// // Ajuste para passar os valores corretos para a URL da imagem -// final Map imageKeyValue = { -// 'key': 'docID', -// 'value': 'imageType', -// }; - -// return Scaffold( -// appBar: AppBar( -// title: const Text('Test Page'), -// ), -// body: Center( -// child: ListView.builder( -// itemCount: 10, -// itemBuilder: (context, index) { -// return CardItemTemplateComponentWidget( -// labelsHashMap: labelsHashMap, -// statusHashMap: statusHashMap, -// imageHashMap: imageKeyValue, -// onTapCardItemAction: () async { -// // Ação ao tocar no card -// }, -// ); -// }), -// ), -// ); -// } -// } From c393fbb32c27c609b02307b45a3fe8a7bb736051 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Wed, 6 Nov 2024 17:49:03 -0300 Subject: [PATCH 16/33] fix: remove unused imports in menu component files --- .../menu_component/menu_component_model.dart | 2 -- .../menu_component/menu_component_widget.dart | 4 +--- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/components/organism_components/menu_component/menu_component_model.dart b/lib/components/organism_components/menu_component/menu_component_model.dart index 6b6017ea..c605ce5a 100644 --- a/lib/components/organism_components/menu_component/menu_component_model.dart +++ b/lib/components/organism_components/menu_component/menu_component_model.dart @@ -15,9 +15,7 @@ import 'package:hub/shared/helpers/storage_helper.dart'; import 'package:hub/shared/services/authentication/authentication_service.dart'; import 'package:material_symbols_icons/symbols.dart'; -import '/components/molecular_components/option_selection_modal/option_selection_modal_widget.dart'; import '/components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart'; -import '/flutter_flow/flutter_flow_util.dart'; import 'menu_component_widget.dart' show MenuComponentWidget; class MenuComponentModel extends FlutterFlowModel { diff --git a/lib/components/organism_components/menu_component/menu_component_widget.dart b/lib/components/organism_components/menu_component/menu_component_widget.dart index 50e1a7c7..d3686874 100644 --- a/lib/components/organism_components/menu_component/menu_component_widget.dart +++ b/lib/components/organism_components/menu_component/menu_component_widget.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:hub/backend/schema/enums/enums.dart'; -import 'package:hub/components/atomic_components/menu_button_item/menu_button_item_widget.dart'; -import 'package:hub/components/atomic_components/menu_card_item/menu_card_item.dart'; -import 'package:hub/components/molecular_components/menu_item/menu_item.dart'; + import '/components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart'; import '/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart'; From a45a746f4d15412754abf13031218b0fa54e0454 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Fri, 8 Nov 2024 10:09:36 -0300 Subject: [PATCH 17/33] =?UTF-8?q?Trocar=20o=20Label=20de=20=E2=80=9CMoram?= =?UTF-8?q?=20Comigo"=20para=20"Moradores=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Troca o Label da Visualização de “Pessoa na Propriedade" para “Moradores" Trocar o Label de “Meus Veiculos" para “Veiculos" Remover o icone de “I" do card de Veiculo Trocar o Label de “Minha Encomendas" para “Encomendas" Trocar a Label de "Meus Pets“ para “Pets" Traduzir o Label de Visitas em Aberto para Ingles Qtd. de Pets esta diferente na tela de consulta de pets par de cadastro Ações de Editar/Excluir no modal de pets não está aparecendo. consulta de pets esta com 2 headers Deixar o menu de sonbre a propriedade como pnultima opção --- .../menu_component/menu_component_model.dart | 22 +++++++++---------- .../card_item_template_component_widget.dart | 2 +- lib/flutter_flow/nav/nav.dart | 2 +- .../people_on_the_property_page_widget.dart | 2 +- .../pets_history_screen.dart | 7 +++--- lib/pages/pets_page/pets_page_widget.dart | 2 +- .../vehicles_on_the_property.dart | 4 ++-- 7 files changed, 21 insertions(+), 20 deletions(-) diff --git a/lib/components/organism_components/menu_component/menu_component_model.dart b/lib/components/organism_components/menu_component/menu_component_model.dart index c605ce5a..4b3bb3a7 100644 --- a/lib/components/organism_components/menu_component/menu_component_model.dart +++ b/lib/components/organism_components/menu_component/menu_component_model.dart @@ -109,16 +109,8 @@ class MenuComponentModel extends FlutterFlowModel { }); /// ABOUT THE PROPERTY - if (options.contains(MenuOption.AboutProperty)) - addMenuEntry(Icons.home, 'About Property', 'Sobre a Propriedade', () async { - if (await StorageHelper().get(SQLiteStorageKey.whatsapp.value, Storage.SQLiteStorage) == 'true') - await open(context, '/aboutProperty'); - else - DialogUnavailable.unavailableFeature(context); - safeSetState; - }); if (options.contains(MenuOption.PetsOnTheProperty)) - addMenuEntry(Icons.pets, 'My Pets', 'Meus Pets', () async { + addMenuEntry(Icons.pets, 'Pets', 'Pets', () async { if (await StorageHelper().get(SQLiteStorageKey.pets.value, Storage.SQLiteStorage) == 'true') await open(context, '/petsOnThePropertyPage'); else @@ -126,12 +118,12 @@ class MenuComponentModel extends FlutterFlowModel { safeSetState; }); if (options.contains(MenuOption.ResidentsOnTheProperty)) - addMenuEntry(Icons.groups, 'Live With Me', 'Moram Comigo', () async { + addMenuEntry(Icons.groups, 'Residents', 'Moradores', () async { await open(context, '/peopleOnThePropertyPage'); safeSetState; }); if (options.contains(MenuOption.VehiclesOnTheProperty)) - addMenuEntry(Symbols.directions_car, 'My Vehicles', 'Meus Veículos', () async { + addMenuEntry(Symbols.directions_car, 'Vehicles', 'Veículos', () async { await open(context, '/vehiclesOnThePropertyPage'); safeSetState; }); @@ -189,6 +181,14 @@ class MenuComponentModel extends FlutterFlowModel { }); /// ABOUT THE SYSTEM + if (options.contains(MenuOption.AboutProperty)) + addMenuEntry(Icons.home, 'About Property', 'Sobre a Propriedade', () async { + if (await StorageHelper().get(SQLiteStorageKey.whatsapp.value, Storage.SQLiteStorage) == 'true') + await open(context, '/aboutProperty'); + else + DialogUnavailable.unavailableFeature(context); + safeSetState; + }); if (options.contains(MenuOption.SettingsOnTheApp)) addMenuEntry(Icons.settings, 'System Settings', 'Opções do Sistema', () async { await open(context, '/preferencesSettings'); diff --git a/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart b/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart index 1f38aa99..e4cdb519 100644 --- a/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart +++ b/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart @@ -167,7 +167,7 @@ class _CardItemTemplateComponentWidgetState extends State Scaffold(body: const PetsHistoryScreen())), + builder: (context, params) => Scaffold(body: const PetsHistoryScreen(isApp: true))), FFRoute( name: 'vehiclesOnThePropertyPage', path: '/vehiclesOnThePropertyPage', diff --git a/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart b/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart index 37aace3e..82d70229 100644 --- a/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart +++ b/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart @@ -120,7 +120,7 @@ class _PeopleOnThePropertyPageState extends State with return AppBar( backgroundColor: FlutterFlowTheme.of(context).primaryBackground, automaticallyImplyLeading: false, - title: Text(FFLocalizations.of(context).getVariableText(ptText: 'Moram Comigo', enText: 'People on the property'), + title: Text(FFLocalizations.of(context).getVariableText(ptText: 'Moradores', enText: 'Residents'), style: FlutterFlowTheme.of(context).headlineMedium.override( fontFamily: 'Nunito', color: FlutterFlowTheme.of(context).primaryText, diff --git a/lib/pages/pets_on_the_property_page/pets_history_screen.dart b/lib/pages/pets_on_the_property_page/pets_history_screen.dart index e902bd2f..a547372c 100644 --- a/lib/pages/pets_on_the_property_page/pets_history_screen.dart +++ b/lib/pages/pets_on_the_property_page/pets_history_screen.dart @@ -14,7 +14,8 @@ import 'package:hub/shared/utils/dialog_util.dart'; import 'package:hub/shared/utils/log_util.dart'; class PetsHistoryScreen extends StatefulWidget { - const PetsHistoryScreen({super.key, this.model}); + const PetsHistoryScreen({super.key, this.model, required this.isApp}); + final bool isApp; final PetsPageModel? model; @override _PetsHistoryScreenState createState() => _PetsHistoryScreenState(); @@ -58,7 +59,7 @@ class _PetsHistoryScreenState extends State with TickerProvid @override Widget build(BuildContext context) => Scaffold( backgroundColor: FlutterFlowTheme.of(context).primaryBackground, - appBar: _appBar(context), + appBar: widget.isApp ? _appBar(context) : null, body: Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, @@ -125,7 +126,7 @@ class _PetsHistoryScreenState extends State with TickerProvid return AppBar( backgroundColor: FlutterFlowTheme.of(context).primaryBackground, automaticallyImplyLeading: false, - title: Text(FFLocalizations.of(context).getVariableText(enText: 'My Pets', ptText: 'Meus Pets'), + title: Text(FFLocalizations.of(context).getVariableText(enText: 'Pets', ptText: 'Pets'), style: FlutterFlowTheme.of(context).headlineMedium.override( fontFamily: 'Nunito', color: FlutterFlowTheme.of(context).primaryText, diff --git a/lib/pages/pets_page/pets_page_widget.dart b/lib/pages/pets_page/pets_page_widget.dart index cf48754f..48ed3198 100644 --- a/lib/pages/pets_page/pets_page_widget.dart +++ b/lib/pages/pets_page/pets_page_widget.dart @@ -94,7 +94,7 @@ class _PetsPageWidgetState extends State with SingleTickerProvid labelTab2: FFLocalizations.of(context).getVariableText(ptText: 'Consultar', enText: 'History'), controller: _model.tabBarController, widget1: _model.isEditing ? _buildEditForm(context) : _buildRegisterForm(context), - widget2: PetsHistoryScreen(model: _model), + widget2: PetsHistoryScreen(model: _model, isApp: false), onEditingChanged: onEditingChanged, ); } diff --git a/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart b/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart index abe6b8c1..186a8fa0 100644 --- a/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart +++ b/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart @@ -116,7 +116,7 @@ class _VehicleOnThePropertyState extends State with Ticker return AppBar( backgroundColor: FlutterFlowTheme.of(context).primaryBackground, automaticallyImplyLeading: false, - title: Text(FFLocalizations.of(context).getVariableText(enText: 'My Vehicles', ptText: 'Meus Veículos'), + title: Text(FFLocalizations.of(context).getVariableText(enText: 'Vehicles', ptText: 'Veículos'), style: FlutterFlowTheme.of(context).headlineMedium.override( fontFamily: 'Nunito', color: FlutterFlowTheme.of(context).primaryText, @@ -206,7 +206,7 @@ class _VehicleOnThePropertyState extends State with Ticker Widget _item(BuildContext context, dynamic uItem) { return CardItemTemplateComponentWidget( - imagePath: '', + imagePath: null, labelsHashMap: { '${FFLocalizations.of(context).getVariableText(ptText: "Placa", enText: "License Plate")}:': uItem['licensePlate'] ?? '', From 5fd43b48f334ea6100455289a34d355dfbc023fc Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Fri, 8 Nov 2024 14:49:26 -0300 Subject: [PATCH 18/33] =?UTF-8?q?hotfix=20considera=C3=A7=C3=B5es=20finais?= =?UTF-8?q?=20do=20pr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../people_on_the_property_page_widget.dart | 25 ++++++++-------- .../vehicles_on_the_property.dart | 29 +++++++++---------- lib/pages/visits_on_the_property/model.dart | 15 ++++++---- .../visits_on_the_property_screen.dart | 29 +++++++++---------- 4 files changed, 49 insertions(+), 49 deletions(-) diff --git a/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart b/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart index 82d70229..96de721d 100644 --- a/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart +++ b/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart @@ -28,15 +28,15 @@ class _PeopleOnThePropertyPageState extends State with late final PeopleOnThePropertyPageModel model; - late Future _petsFuture; - List _petsWrap = []; + late Future _future; + List _wrap = []; @override void initState() { super.initState(); model = createModel(context, () => PeopleOnThePropertyPageModel(onRefresh: () => safeSetState(() {}))); - _petsFuture = _fetchVisits(); + _future = _fetchVisits(); _scrollController = ScrollController() ..addListener(() { @@ -68,7 +68,7 @@ class _PeopleOnThePropertyPageState extends State with children: [ Center( child: Text(FFLocalizations.of(context) - .getVariableText(ptText: "Nenhum veículo encontrado!", enText: "No vehicle found")), + .getVariableText(ptText: "Nenhum morador encontrado!", enText: "No residents found!")), ) ], ), @@ -76,26 +76,25 @@ class _PeopleOnThePropertyPageState extends State with else if (_hasData == true || _pageNumber >= 1) Expanded( child: FutureBuilder( - future: _petsFuture, + future: _future, builder: (context, snapshot) { return ListView.builder( shrinkWrap: true, physics: const BouncingScrollPhysics(), controller: _scrollController, - itemCount: _petsWrap.length + 1, + itemCount: _wrap.length + 1, itemBuilder: (context, index) { if (index == 0) { // Add your item here return Padding( padding: const EdgeInsets.only(right: 30, top: 10), child: Text( - // model.petAmountRegister == '0' ? FFLocalizations.of(context).getVariableText(ptText: "Ilimitado", enText: "Unlimited") : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}$count/${model.petAmountRegister}", '', textAlign: TextAlign.right, ), ); } else { - final item = _petsWrap[index - 1]; + final item = _wrap[index - 1]; return _item(context, item); } }); @@ -157,12 +156,12 @@ class _PeopleOnThePropertyPageState extends State with var response = await PhpGroup.getResidentsByProperty.call(_pageNumber.toString()); - final List pets = response.jsonBody['residents'] ?? []; + final List residents = response.jsonBody['residents'] ?? []; safeSetState(() => count = response.jsonBody['total_rows'] ?? 0); - if (pets.isNotEmpty) { + if (residents.isNotEmpty) { setState(() { - _petsWrap.addAll(pets); + _wrap.addAll(residents); _hasData = true; _loading = false; }); @@ -180,7 +179,7 @@ class _PeopleOnThePropertyPageState extends State with return null; } catch (e, s) { DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets", e, s); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de moradores", e, s); setState(() { _hasData = false; _loading = false; @@ -193,7 +192,7 @@ class _PeopleOnThePropertyPageState extends State with if (_hasData == true) { _pageNumber++; - _petsFuture = _fetchVisits(); + _future = _fetchVisits(); } } diff --git a/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart b/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart index 186a8fa0..6b4b8afc 100644 --- a/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart +++ b/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart @@ -25,14 +25,14 @@ class _VehicleOnThePropertyState extends State with Ticker int count = 0; late final VehicleModel model; - late Future _petsFuture; - List _petsWrap = []; + late Future _future; + List _wrap = []; @override void initState() { super.initState(); model = createModel(context, () => VehicleModel()); - _petsFuture = _fetchVisits(); + _future = _fetchVisits(); _scrollController = ScrollController() ..addListener(() { @@ -72,26 +72,25 @@ class _VehicleOnThePropertyState extends State with Ticker else if (_hasData == true || _pageNumber >= 1) Expanded( child: FutureBuilder( - future: _petsFuture, + future: _future, builder: (context, snapshot) { return ListView.builder( shrinkWrap: true, physics: const BouncingScrollPhysics(), controller: _scrollController, - itemCount: _petsWrap.length + 1, + itemCount: _wrap.length + 1, itemBuilder: (context, index) { if (index == 0) { // Add your item here return Padding( padding: const EdgeInsets.only(right: 30, top: 10), child: Text( - // model.petAmountRegister == '0' ? FFLocalizations.of(context).getVariableText(ptText: "Ilimitado", enText: "Unlimited") : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}$count/${model.petAmountRegister}", '', textAlign: TextAlign.right, ), ); } else { - final item = _petsWrap[index - 1]; + final item = _wrap[index - 1]; return _item(context, item); } }); @@ -153,12 +152,12 @@ class _VehicleOnThePropertyState extends State with Ticker var response = await PhpGroup.getVehiclesByProperty.call(_pageNumber.toString()); - final List pets = response.jsonBody['vehicles'] ?? []; + final List vehicles = response.jsonBody['vehicles'] ?? []; safeSetState(() => count = response.jsonBody['total_rows'] ?? 0); - if (pets.isNotEmpty) { + if (vehicles.isNotEmpty) { setState(() { - _petsWrap.addAll(pets); + _wrap.addAll(vehicles); _hasData = true; _loading = false; }); @@ -176,7 +175,7 @@ class _VehicleOnThePropertyState extends State with Ticker return null; } catch (e, s) { DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets", e, s); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Veículo", e, s); setState(() { _hasData = false; _loading = false; @@ -189,7 +188,7 @@ class _VehicleOnThePropertyState extends State with Ticker if (_hasData == true) { _pageNumber++; - _petsFuture = _fetchVisits(); + _future = _fetchVisits(); } } @@ -231,12 +230,12 @@ class _VehicleOnThePropertyState extends State with Ticker ).whenComplete(() { safeSetState(() { _pageNumber = 1; - _petsWrap = []; - _petsFuture = _fetchVisits().then((value) => value!.jsonBody['pets'] ?? []); + _wrap = []; + _future = _fetchVisits().then((value) => value!.jsonBody['vehicles'] ?? []); }); }).catchError((e, s) { DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets", e, s); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Veículos", e, s); safeSetState(() { _hasData = false; _loading = false; diff --git a/lib/pages/visits_on_the_property/model.dart b/lib/pages/visits_on_the_property/model.dart index 458af347..455b44cd 100644 --- a/lib/pages/visits_on_the_property/model.dart +++ b/lib/pages/visits_on_the_property/model.dart @@ -78,10 +78,13 @@ class VisitsModel extends FlutterFlowModel { imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${devUUID}&cliID=${cliUUID}&atividade=getFoto&Documento=${item['VDO_DOCUMENTO']}&tipo=E', statusHashMap: [ - if (item['VTA_NOME'] != null) - Map.from( - {item['VTA_NOME'].toString().toUpperCase(): FlutterFlowTheme.of(context).warning}), - ], - ); - } + if (item['VTA_FIXA'] != null) + Map.from({ + item['VTA_FIXA'] + ? FFLocalizations.of(context).getVariableText(ptText: "Entrada Única", enText: "Single Entry") + : FFLocalizations.of(context).getVariableText(ptText: "Entrada Recorrente", enText: "Recurrent Entry") + : FlutterFlowTheme.of(context).warning + }), + ]); + } } diff --git a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart index 0245f199..477a5958 100644 --- a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart +++ b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart @@ -25,14 +25,14 @@ class _VisitsOnThePropertyState extends State with TickerPr int count = 0; late final VisitsModel model; - late Future _visitsFuture; - List _visitsList = []; + late Future _future; + List _list = []; @override void initState() { super.initState(); model = createModel(context, () => VisitsModel(onRefresh: () => safeSetState((){}))); - _visitsFuture = _fetchVisits(); + _future = _fetchVisits(); _scrollController = ScrollController() ..addListener(() { @@ -72,26 +72,25 @@ class _VisitsOnThePropertyState extends State with TickerPr else if (_hasData == true || _pageNumber >= 1) Expanded( child: FutureBuilder( - future: _visitsFuture, + future: _future, builder: (context, snapshot) { return ListView.builder( shrinkWrap: true, physics: const BouncingScrollPhysics(), controller: _scrollController, - itemCount: _visitsList.length + 1, + itemCount: _list.length + 1, itemBuilder: (context, index) { if (index == 0) { // Add your item here return Padding( padding: const EdgeInsets.only(right: 30, top: 10), child: Text( - // model.petAmountRegister == '0' ? FFLocalizations.of(context).getVariableText(ptText: "Ilimitado", enText: "Unlimited") : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}$count/${model.petAmountRegister}", '', textAlign: TextAlign.right, ), ); } else { - final item = _visitsList[index - 1]; + final item = _list[index - 1]; return _item(context, item); } }); @@ -153,12 +152,12 @@ class _VisitsOnThePropertyState extends State with TickerPr var response = await PhpGroup.getOpenedVisits.call(_pageNumber.toString()); - final List pets = response.jsonBody['visitas'] ?? []; + final List visits = response.jsonBody['visitas'] ?? []; safeSetState(() => count = response.jsonBody['total_rows'] ?? 0); - if (pets.isNotEmpty) { + if (visits.isNotEmpty) { setState(() { - _visitsList.addAll(pets); + _list.addAll(visits); _hasData = true; _loading = false; }); @@ -176,7 +175,7 @@ class _VisitsOnThePropertyState extends State with TickerPr return null; } catch (e, s) { DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets", e, s); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Visitas", e, s); setState(() { _hasData = false; _loading = false; @@ -189,7 +188,7 @@ class _VisitsOnThePropertyState extends State with TickerPr if (_hasData == true) { _pageNumber++; - _visitsFuture = _fetchVisits(); + _future = _fetchVisits(); } } @@ -248,12 +247,12 @@ class _VisitsOnThePropertyState extends State with TickerPr ).whenComplete(() { safeSetState(() { _pageNumber = 1; - _visitsList = []; - _visitsFuture = _fetchVisits().then((value) => value!.jsonBody['pets'] ?? []); + _list = []; + _future = _fetchVisits().then((value) => value!.jsonBody['visitas'] ?? []); }); }).catchError((e, s) { DialogUtil.errorDefault(context); - LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets", e, s); + LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Visitas", e, s); safeSetState(() { _hasData = false; _loading = false; From 02740f974e4a6d08c5198f8bc2305fc1841acb34 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 11 Nov 2024 08:34:59 -0300 Subject: [PATCH 19/33] WIP --- android/app/src/main/AndroidManifest.xml | 1 + lib/shared/services/localization/localization_service.dart | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 46d26daf..0264e87d 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -10,6 +10,7 @@ + processLocals(BuildContext context) async { try { + final GetLocalsCall callback = PhpGroup.getLocalsCall; final ApiCallResponse response = await callback.call(); final bool isError = response.jsonBody['error']; @@ -136,6 +138,8 @@ class LocalizationService { } static Future selectLocal(BuildContext context) async { + final String? devUUID = await DeviceUtil.getSerialNumber(); + log('() A => ${devUUID}'); return await showModalBottomSheet( isScrollControlled: true, backgroundColor: Colors.transparent, From 5e10f6cc65da0e4de55e782de67082d4e9dd15e1 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 11 Nov 2024 17:32:03 -0300 Subject: [PATCH 20/33] fix: reponsividade das novas telas --- lib/backend/api_requests/api_calls.dart | 3 +- .../menu_button_item_widget.dart | 2 - .../menu_card_item/menu_card_item.dart | 2 - .../media_upload_button.dart | 1 - lib/main.dart | 1 - .../fast_pass_page/fast_pass_page_widget.dart | 2 + lib/pages/home_page/home_page_widget.dart | 2 - .../package_order_page.dart | 1 + .../people_on_the_property_page_widget.dart | 146 +++++++----- .../pets_history_screen.dart | 218 ++++++------------ lib/pages/pets_page/pets_page_model.dart | 124 +++++----- .../reception_page/reception_page_widget.dart | 2 - .../schedule_complete_visit_page_widget.dart | 3 - .../vehicles_on_the_property.dart | 142 +++++++----- lib/pages/visits_on_the_property/model.dart | 1 - .../visits_on_the_property_screen.dart | 139 ++++++----- lib/shared/helpers/secure_storage.dart | 1 - .../helpers/shared_preferences_storage.dart | 1 - 18 files changed, 378 insertions(+), 413 deletions(-) diff --git a/lib/backend/api_requests/api_calls.dart b/lib/backend/api_requests/api_calls.dart index dce2dffa..e92107cf 100644 --- a/lib/backend/api_requests/api_calls.dart +++ b/lib/backend/api_requests/api_calls.dart @@ -6,7 +6,6 @@ import 'package:flutter/foundation.dart'; import 'package:hub/backend/notifications/firebase_messaging_service.dart'; import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/storage_helper.dart'; -import 'package:hub/shared/utils/dialog_util.dart'; import 'package:hub/shared/utils/log_util.dart'; import 'package:hub/shared/utils/validator_util.dart'; @@ -731,7 +730,7 @@ class LoginCall { late final String token; try { token = await FirebaseMessagingService.getToken(); - if (token == null || token.isEmpty) throw Exception('Token is empty'); + if (token == 'null' || token.isEmpty) throw Exception('Token is empty'); } catch (e, s) { token = ''; log('Error getting token', error: e, stackTrace: s); diff --git a/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart b/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart index f780b292..758a3f5b 100644 --- a/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart +++ b/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart @@ -3,8 +3,6 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:hub/components/molecular_components/menu_item/menu_item.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart'; -import '../../../shared/extensions/dialog_extensions.dart'; -import '../../../shared/services/localization/localization_service.dart'; class MenuButtonWidget extends MenuEntry { const MenuButtonWidget({ diff --git a/lib/components/atomic_components/menu_card_item/menu_card_item.dart b/lib/components/atomic_components/menu_card_item/menu_card_item.dart index 552db839..906dee28 100644 --- a/lib/components/atomic_components/menu_card_item/menu_card_item.dart +++ b/lib/components/atomic_components/menu_card_item/menu_card_item.dart @@ -3,8 +3,6 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:hub/components/molecular_components/menu_item/menu_item.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart'; -import '../../../shared/extensions/dialog_extensions.dart'; -import '../../../shared/services/localization/localization_service.dart'; class MenuCardItem extends MenuEntry { const MenuCardItem({ diff --git a/lib/components/atomic_components/shared_components_atoms/media_upload_button.dart b/lib/components/atomic_components/shared_components_atoms/media_upload_button.dart index 7b712455..2977f7cb 100644 --- a/lib/components/atomic_components/shared_components_atoms/media_upload_button.dart +++ b/lib/components/atomic_components/shared_components_atoms/media_upload_button.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; -import 'package:hub/flutter_flow/flutter_flow_widgets.dart'; import 'package:hub/flutter_flow/upload_data.dart'; import 'package:hub/shared/utils/limited_text_size.dart'; diff --git a/lib/main.dart b/lib/main.dart index 24ebdf9b..38828b06 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -21,7 +21,6 @@ import 'package:hub/pages/forgot_password_page/forgot_password_screen.dart'; import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/storage_helper.dart'; import 'package:hub/shared/services/localization/localization_service.dart'; -import 'package:hub/shared/utils/device_util.dart'; import 'package:responsive_framework/responsive_framework.dart'; import 'backend/notifications/firebase_messaging_service.dart'; diff --git a/lib/pages/fast_pass_page/fast_pass_page_widget.dart b/lib/pages/fast_pass_page/fast_pass_page_widget.dart index a8ce35df..7764c3ed 100644 --- a/lib/pages/fast_pass_page/fast_pass_page_widget.dart +++ b/lib/pages/fast_pass_page/fast_pass_page_widget.dart @@ -1,3 +1,5 @@ +// ignore_for_file: unused_field + import 'dart:io' show Platform; import 'package:flutter/material.dart'; diff --git a/lib/pages/home_page/home_page_widget.dart b/lib/pages/home_page/home_page_widget.dart index 7976be2f..dd271180 100644 --- a/lib/pages/home_page/home_page_widget.dart +++ b/lib/pages/home_page/home_page_widget.dart @@ -1,8 +1,6 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:hub/backend/notifications/firebase_messaging_service.dart'; -import 'package:hub/backend/schema/enums/enums.dart'; import 'package:hub/components/organism_components/local_profile_component/local_profile_component_widget.dart'; import 'package:hub/components/organism_components/menu_component/menu_component_widget.dart'; import 'package:hub/flutter_flow/flutter_flow_icon_button.dart'; diff --git a/lib/pages/package_order_page/package_order_page.dart b/lib/pages/package_order_page/package_order_page.dart index 4e2f1246..c82cfff6 100644 --- a/lib/pages/package_order_page/package_order_page.dart +++ b/lib/pages/package_order_page/package_order_page.dart @@ -412,6 +412,7 @@ class _PackageOrderPage extends State { @override Widget build(BuildContext context) { return Scaffold( + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, appBar: _appBar(context), body: _appBody(context), ); diff --git a/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart b/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart index 96de721d..be16c18d 100644 --- a/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart +++ b/lib/pages/people_on_the_property_page/people_on_the_property_page_widget.dart @@ -7,6 +7,7 @@ import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/pages/people_on_the_property_page/people_on_the_property_page_model.dart'; import 'package:hub/shared/utils/dialog_util.dart'; +import 'package:hub/shared/utils/limited_text_size.dart'; import 'package:hub/shared/utils/log_util.dart'; class PeopleOnThePropertyPage extends StatefulWidget { @@ -23,8 +24,6 @@ class _PeopleOnThePropertyPageState extends State with bool _hasData = false; bool _loading = false; int count = 0; - - late final PeopleOnThePropertyPageModel model; @@ -35,7 +34,6 @@ class _PeopleOnThePropertyPageState extends State with void initState() { super.initState(); model = createModel(context, () => PeopleOnThePropertyPageModel(onRefresh: () => safeSetState(() {}))); - _future = _fetchVisits(); _scrollController = ScrollController() @@ -53,67 +51,79 @@ class _PeopleOnThePropertyPageState extends State with } @override - Widget build(BuildContext context) => Scaffold( - appBar: _appBar(context), - backgroundColor: FlutterFlowTheme.of(context).primaryBackground, - body: Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - if (_hasData == false && _pageNumber <= 1 && _loading == false) - Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - children: [ - Center( - child: Text(FFLocalizations.of(context) - .getVariableText(ptText: "Nenhum morador encontrado!", enText: "No residents found!")), - ) - ], - ), - ) - else if (_hasData == true || _pageNumber >= 1) - Expanded( - child: FutureBuilder( - future: _future, - builder: (context, snapshot) { - return ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - controller: _scrollController, - itemCount: _wrap.length + 1, - itemBuilder: (context, index) { - if (index == 0) { - // Add your item here - return Padding( - padding: const EdgeInsets.only(right: 30, top: 10), - child: Text( - '', - textAlign: TextAlign.right, - ), - ); - } else { - final item = _wrap[index - 1]; - return _item(context, item); - } - }); - }, - )), - if (_hasData == true && _loading == true) - Container( - padding: const EdgeInsets.only(top: 15, bottom: 15), - child: Center( - child: CircularProgressIndicator( - valueColor: AlwaysStoppedAnimation( - FlutterFlowTheme.of(context).primary, + Widget build(BuildContext context) { + late final limitedHeaderTextSize = LimitedFontSizeUtil.getHeaderFontSize(context); + + return Scaffold( + appBar: _appBar(context), + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, + body: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + if (_hasData == false && _pageNumber <= 1 && _loading == false) + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Center( + child: Text( + FFLocalizations.of(context).getVariableText( + ptText: "Nenhum morador encontrado!", + enText: "No residents found!", + ), + style: TextStyle( + fontFamily: 'Nunito', + fontSize: limitedHeaderTextSize, + ), ), + ) + ], + ), + ) + else if (_hasData == true || _pageNumber >= 1) + Expanded( + child: FutureBuilder( + future: _future, + builder: (context, snapshot) { + return ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + controller: _scrollController, + itemCount: _wrap.length + 1, + itemBuilder: (context, index) { + if (index == 0) { + // Add your item here + return Padding( + padding: const EdgeInsets.only(right: 30, top: 10), + child: Text( + '', + textAlign: TextAlign.right, + ), + ); + } else { + final item = _wrap[index - 1]; + return _item(context, item); + } + }); + }, + )), + if (_hasData == true && _loading == true) + Container( + padding: const EdgeInsets.only(top: 15, bottom: 15), + child: Center( + child: CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation( + FlutterFlowTheme.of(context).primary, ), ), - ) - ].addToStart(const SizedBox(height: 0)), - ), - ); + ), + ) + ].addToStart(const SizedBox(height: 0)), + ), + ); + } PreferredSizeWidget _appBar(BuildContext context) { return AppBar( @@ -199,15 +209,23 @@ class _PeopleOnThePropertyPageState extends State with void _showNoMoreDataSnackBar(BuildContext context) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( - content: - Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), + content: Text( + FFLocalizations.of(context).getVariableText( + ptText: "Não há mais dados.", + enText: "No more data.", + ), + style: TextStyle( + color: Colors.white, + fontSize: LimitedFontSizeUtil.getBodyFontSize(context), + ), + ), duration: const Duration(seconds: 3), backgroundColor: FlutterFlowTheme.of(context).primary, ), ); } - Widget _item(BuildContext context, dynamic uItem) { + Widget _item(BuildContext context, dynamic uItem) { return CardItemTemplateComponentWidget( imagePath: 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${model.devUUID}&cliID=${model.cliUUID}&atividade=getFoto&Documento=${uItem['documento']}&tipo=Z', diff --git a/lib/pages/pets_on_the_property_page/pets_history_screen.dart b/lib/pages/pets_on_the_property_page/pets_history_screen.dart index d80593bc..9458923c 100644 --- a/lib/pages/pets_on_the_property_page/pets_history_screen.dart +++ b/lib/pages/pets_on_the_property_page/pets_history_screen.dart @@ -19,7 +19,8 @@ class PetsHistoryScreen extends StatefulWidget { final bool isApp; final PetsPageModel? model; - @override _PetsHistoryScreenState createState() => _PetsHistoryScreenState(); + @override + _PetsHistoryScreenState createState() => _PetsHistoryScreenState(); } class _PetsHistoryScreenState extends State with TickerProviderStateMixin { @@ -31,7 +32,6 @@ class _PetsHistoryScreenState extends State with TickerProvid bool _loading = false; int count = 0; late final PetsPageModel model; - late Future _petsFuture; List _petsWrap = []; @@ -39,10 +39,7 @@ class _PetsHistoryScreenState extends State with TickerProvid void initState() { super.initState(); model = widget.model ?? createModel(context, () => PetsPageModel()); - model.petAmountRegister = '0'; _petsFuture = _fetchVisits(); - - _scrollController = ScrollController() ..addListener(() { if (_scrollController.position.atEdge && _scrollController.position.pixels != 0) { @@ -57,81 +54,6 @@ class _PetsHistoryScreenState extends State with TickerProvid super.dispose(); } - @override - Widget build(BuildContext context) { - double limitedBodyTextSize = LimitedFontSizeUtil.getBodyFontSize(context); - double limitedHeaderTextSize = LimitedFontSizeUtil.getHeaderFontSize(context); - - return Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - if (_hasData == false && _pageNumber <= 1 && _loading == false) - Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - children: [ - Center( - child: Text(FFLocalizations.of(context).getVariableText( - ptText: "Nenhum Pet encontrado!", - enText: "No pets found"), - style: TextStyle( - fontFamily: 'Nunito', - fontSize: limitedHeaderTextSize,) - ), - ) - ], - ), - ) - else if (_hasData == true || _pageNumber >= 1) - Expanded( - child: FutureBuilder( - future: _petsFuture, - builder: (context, snapshot) { - return ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - controller: _scrollController, - itemCount: _petsWrap.length + 1, - itemBuilder: (context, index) { - if (index == 0) { - // Add your item here - return Padding( - padding: const EdgeInsets.only(right: 30, top: 10), - child: Text( - widget.model?.petAmountRegister == '0' - ? FFLocalizations.of(context).getVariableText(ptText: "Ilimitado", enText: "Unlimited") - : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}$count/${widget.model?.petAmountRegister}", - textAlign: TextAlign.right, - style: TextStyle( - fontFamily: 'Nunito', - fontSize: limitedBodyTextSize, - ), - ), - ); - } else { - final item = _petsWrap[index - 1]; - return _item(context, item); - } - }); - }, - )), - if (_hasData == true && _loading == true) - Container( - padding: const EdgeInsets.only(top: 15, bottom: 15), - child: Center( - child: CircularProgressIndicator( - valueColor: AlwaysStoppedAnimation( - FlutterFlowTheme.of(context).primary, - ), - ), - ), - ) - ].addToStart(const SizedBox(height: 0)), - ); - } - PreferredSizeWidget _appBar(BuildContext context) { return AppBar( backgroundColor: FlutterFlowTheme.of(context).primaryBackground, @@ -234,76 +156,80 @@ class _PetsHistoryScreenState extends State with TickerProvid @override Widget build(BuildContext context) { - double limitedBodyTextSize = LimitedFontSizeUtil.getBodyFontSize(context); - double limitedHeaderTextSize = LimitedFontSizeUtil.getHeaderFontSize(context); + late final double limitedBodyTextSize = LimitedFontSizeUtil.getBodyFontSize(context); + late final double limitedHeaderTextSize = LimitedFontSizeUtil.getHeaderFontSize(context); - return Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - if (_hasData == false && _pageNumber <= 1 && _loading == false) - Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - children: [ - Center( - child: Text( - FFLocalizations.of(context) - .getVariableText(ptText: "Nenhum Pet encontrado!", enText: "No pets found"), - style: TextStyle( - fontFamily: 'Nunito', - fontSize: limitedHeaderTextSize, - )), - ) - ], - ), - ) - else if (_hasData == true || _pageNumber >= 1) - Expanded( - child: FutureBuilder( - future: _petsFuture, - builder: (context, snapshot) { - return ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - controller: _scrollController, - itemCount: _petsWrap.length + 1, - itemBuilder: (context, index) { - if (index == 0) { - // Add your item here - return Padding( - padding: const EdgeInsets.only(right: 30, top: 10), - child: Text( - widget.model.petAmountRegister == '0' - ? FFLocalizations.of(context).getVariableText(ptText: "Ilimitado", enText: "Unlimited") - : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}$count/${widget.model.petAmountRegister}", - textAlign: TextAlign.right, - style: TextStyle( - fontFamily: 'Nunito', - fontSize: limitedBodyTextSize, + return Scaffold( + appBar: widget.isApp ? _appBar(context) : null, + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, + body: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + if (_hasData == false && _pageNumber <= 1 && _loading == false) + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Center( + child: Text( + FFLocalizations.of(context) + .getVariableText(ptText: "Nenhum Pet encontrado!", enText: "No pets found"), + style: TextStyle( + fontFamily: 'Nunito', + fontSize: limitedHeaderTextSize, + )), + ) + ], + ), + ) + else if (_hasData == true || _pageNumber >= 1) + Expanded( + child: FutureBuilder( + future: _petsFuture, + builder: (context, snapshot) { + return ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + controller: _scrollController, + itemCount: _petsWrap.length + 1, + itemBuilder: (context, index) { + if (index == 0) { + // Add your item here + return Padding( + padding: const EdgeInsets.only(right: 30, top: 10), + child: Text( + model.petAmountRegister == '0' + ? FFLocalizations.of(context).getVariableText(ptText: "Ilimitado", enText: "Unlimited") + : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}$count/${model.petAmountRegister}", + textAlign: TextAlign.right, + style: TextStyle( + fontFamily: 'Nunito', + fontSize: limitedBodyTextSize, + ), ), - ), - ); - } else { - final item = _petsWrap[index - 1]; - return _item(context, item); - } - }); - }, - )), - if (_hasData == true && _loading == true) - Container( - padding: const EdgeInsets.only(top: 15, bottom: 15), - child: Center( - child: CircularProgressIndicator( - valueColor: AlwaysStoppedAnimation( - FlutterFlowTheme.of(context).primary, + ); + } else { + final item = _petsWrap[index - 1]; + return _item(context, item); + } + }); + }, + )), + if (_hasData == true && _loading == true) + Container( + padding: const EdgeInsets.only(top: 15, bottom: 15), + child: Center( + child: CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation( + FlutterFlowTheme.of(context).primary, + ), ), ), - ), - ) - ].addToStart(const SizedBox(height: 0)), + ) + ].addToStart(const SizedBox(height: 0)), + ), ); } diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index 7746b489..fd099522 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -28,7 +28,7 @@ class PetsPageModel extends FlutterFlowModel { late final String devUUID; late final String userUUID; late final String cliUUID; - late String petAmountRegister; + late String petAmountRegister = '0'; dynamic item; late final TabController tabBarController; @@ -111,13 +111,14 @@ class PetsPageModel extends FlutterFlowModel { devUUID = (await StorageHelper().get(SQLiteStorageKey.devUUID.value, Storage.SQLiteStorage)) ?? ''; userUUID = (await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage)) ?? ''; cliUUID = (await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage)) ?? ''; - petAmountRegister = (await StorageHelper().get(SQLiteStorageKey.petAmount.value, Storage.SQLiteStorage)) ?? ''; + petAmountRegister = await StorageHelper().get(SQLiteStorageKey.petAmount.value, Storage.SQLiteStorage) ?? '0'; safeSetState?.call(); } @override void initState(BuildContext context) { + initAsync(); resetInstance(); tabBarController = TabController( vsync: Navigator.of(context), @@ -145,8 +146,6 @@ class PetsPageModel extends FlutterFlowModel { dropDownValueController1 = FormFieldController(dropDownValue1 ??= 'Selecione uma opção'); dropDownValueController2 = FormFieldController(dropDownValue2 ??= 'Selecione uma opção'); - - initAsync(); } @override @@ -175,7 +174,6 @@ class PetsPageModel extends FlutterFlowModel { dropDownValueController2?.dispose(); } - void setEditForm() { log('item: $item'); @@ -395,29 +393,29 @@ class PetsPageModel extends FlutterFlowModel { onPressed: () async { context.pop(); - model.isEditing = true; - model.item = item; - model.switchTab(0); - model.setEditForm(); - // model.safeSetState!(); - }, - options: FFButtonOptions( - width: 100, - height: 40, - color: FlutterFlowTheme.of(context).primaryBackground, - elevation: 0, - textStyle: TextStyle( - color: FlutterFlowTheme.of(context).primaryText, - fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), - ), - splashColor: const Color.fromARGB(95, 0, 146, 5), - borderSide: BorderSide( + model.isEditing = true; + model.item = item; + model.switchTab(0); + model.setEditForm(); + // model.safeSetState!(); + }, + options: FFButtonOptions( + width: 100, + height: 40, color: FlutterFlowTheme.of(context).primaryBackground, - width: 1, + elevation: 0, + textStyle: TextStyle( + color: FlutterFlowTheme.of(context).primaryText, + fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), + ), + splashColor: const Color.fromARGB(95, 0, 146, 5), + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).primaryBackground, + width: 1, + ), + // borderRadius: 12, ), - // borderRadius: 12, ), - ), // DELETE ACTION if (isInteractive) @@ -448,55 +446,55 @@ class PetsPageModel extends FlutterFlowModel { context.pop(value); context.pop(value); - if (value == false) { + if (value == false) { + showSnackbar( + context, + FFLocalizations.of(context).getVariableText( + ptText: 'Erro ao excluir pet', + enText: 'Error deleting pet', + ), + true, + ); + } else if (value == true) { + showSnackbar( + context, + FFLocalizations.of(context).getVariableText( + enText: 'Success deleting pet', + ptText: 'Succeso ao excluir pet', + ), + false, + ); + } + }).catchError((err, stack) { + context.pop(); showSnackbar( context, FFLocalizations.of(context).getVariableText( - ptText: 'Erro ao excluir pet', enText: 'Error deleting pet', + ptText: 'Erro ao excluir pet', ), true, ); - } else if (value == true) { - showSnackbar( - context, - FFLocalizations.of(context).getVariableText( - enText: 'Success deleting pet', - ptText: 'Succeso ao excluir pet', - ), - false, - ); - } - }).catchError((err, stack) { - context.pop(); - showSnackbar( - context, - FFLocalizations.of(context).getVariableText( - enText: 'Error deleting pet', - ptText: 'Erro ao excluir pet', - ), - true, - ); + }); }); - }); - }, - options: FFButtonOptions( - width: 100, - height: 40, - color: FlutterFlowTheme.of(context).primaryBackground, - elevation: 0, - textStyle: TextStyle( - color: FlutterFlowTheme.of(context).primaryText, - fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), - ), - splashColor: const Color.fromARGB(131, 255, 17, 0), - borderSide: BorderSide( + }, + options: FFButtonOptions( + width: 100, + height: 40, color: FlutterFlowTheme.of(context).primaryBackground, - width: 1, + elevation: 0, + textStyle: TextStyle( + color: FlutterFlowTheme.of(context).primaryText, + fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), + ), + splashColor: const Color.fromARGB(131, 255, 17, 0), + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).primaryBackground, + width: 1, + ), + // borderRadius: 12, ), - // borderRadius: 12, ), - ), ], // 'MIN', 'PEQ', 'MED', 'GRA', 'GIG' labelsHashMap: Map.from({ diff --git a/lib/pages/reception_page/reception_page_widget.dart b/lib/pages/reception_page/reception_page_widget.dart index 1bdc0f2a..77d4c65f 100644 --- a/lib/pages/reception_page/reception_page_widget.dart +++ b/lib/pages/reception_page/reception_page_widget.dart @@ -9,9 +9,7 @@ import 'package:hub/components/atomic_components/shared_components_atoms/atom_im import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/flutter_flow_widgets.dart'; -import 'package:hub/flutter_flow/nav/nav.dart'; import 'package:hub/pages/reception_page/reception_page_model.dart'; -import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/storage_helper.dart'; import 'package:hub/shared/services/authentication/authentication_service.dart'; import 'package:hub/shared/services/localization/localization_service.dart'; diff --git a/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart b/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart index e8635cd9..7b8dc738 100644 --- a/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart +++ b/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart @@ -1,4 +1,3 @@ -import 'package:auto_size_text/auto_size_text.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; @@ -751,12 +750,10 @@ class _ScheduleCompleteVisitPageWidgetState extends State(); model.visitorJsonList = visitorsParam!.toList().cast(); safeSetState(() {}); }, getDocs: (docsParam) async { - model.visitorStrList = strListToStr(docsParam!.toList()); model.visitorStrList = strListToStr(docsParam!.toList()); safeSetState(() {}); }, diff --git a/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart b/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart index 6b4b8afc..263eb263 100644 --- a/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart +++ b/lib/pages/vehicles_on_the_property/vehicles_on_the_property.dart @@ -7,6 +7,7 @@ import 'package:hub/flutter_flow/flutter_flow_theme.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/pages/vehicles_on_the_property/vehicle_model.dart'; import 'package:hub/shared/utils/dialog_util.dart'; +import 'package:hub/shared/utils/limited_text_size.dart'; import 'package:hub/shared/utils/log_util.dart'; class VehicleOnTheProperty extends StatefulWidget { @@ -33,7 +34,6 @@ class _VehicleOnThePropertyState extends State with Ticker super.initState(); model = createModel(context, () => VehicleModel()); _future = _fetchVisits(); - _scrollController = ScrollController() ..addListener(() { if (_scrollController.position.atEdge && _scrollController.position.pixels != 0) { @@ -49,67 +49,79 @@ class _VehicleOnThePropertyState extends State with Ticker } @override - Widget build(BuildContext context) => Scaffold( - backgroundColor: FlutterFlowTheme.of(context).primaryBackground, - appBar: _appBar(context), - body: Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - if (_hasData == false && _pageNumber <= 1 && _loading == false) - Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - children: [ - Center( - child: Text(FFLocalizations.of(context) - .getVariableText(ptText: "Nenhum veículo encontrado!", enText: "No vehicle found")), - ) - ], - ), - ) - else if (_hasData == true || _pageNumber >= 1) - Expanded( - child: FutureBuilder( - future: _future, - builder: (context, snapshot) { - return ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - controller: _scrollController, - itemCount: _wrap.length + 1, - itemBuilder: (context, index) { - if (index == 0) { - // Add your item here - return Padding( - padding: const EdgeInsets.only(right: 30, top: 10), - child: Text( - '', - textAlign: TextAlign.right, - ), - ); - } else { - final item = _wrap[index - 1]; - return _item(context, item); - } - }); - }, - )), - if (_hasData == true && _loading == true) - Container( - padding: const EdgeInsets.only(top: 15, bottom: 15), - child: Center( - child: CircularProgressIndicator( - valueColor: AlwaysStoppedAnimation( - FlutterFlowTheme.of(context).primary, + Widget build(BuildContext context) { + late final limitedHeaderTextSize = LimitedFontSizeUtil.getHeaderFontSize(context); + + return Scaffold( + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, + appBar: _appBar(context), + body: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + if (_hasData == false && _pageNumber <= 1 && _loading == false) + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Center( + child: Text( + FFLocalizations.of(context).getVariableText( + ptText: "Nenhum veículo encontrado!", + enText: "No vehicle found", + ), + style: TextStyle( + fontFamily: 'Nunito', + fontSize: limitedHeaderTextSize, + ), ), + ) + ], + ), + ) + else if (_hasData == true || _pageNumber >= 1) + Expanded( + child: FutureBuilder( + future: _future, + builder: (context, snapshot) { + return ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + controller: _scrollController, + itemCount: _wrap.length + 1, + itemBuilder: (context, index) { + if (index == 0) { + // Add your item here + return Padding( + padding: const EdgeInsets.only(right: 30, top: 10), + child: Text( + '', + textAlign: TextAlign.right, + ), + ); + } else { + final item = _wrap[index - 1]; + return _item(context, item); + } + }); + }, + )), + if (_hasData == true && _loading == true) + Container( + padding: const EdgeInsets.only(top: 15, bottom: 15), + child: Center( + child: CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation( + FlutterFlowTheme.of(context).primary, ), ), - ) - ].addToStart(const SizedBox(height: 0)), - ), - ); + ), + ) + ].addToStart(const SizedBox(height: 0)), + ), + ); + } PreferredSizeWidget _appBar(BuildContext context) { return AppBar( @@ -195,8 +207,16 @@ class _VehicleOnThePropertyState extends State with Ticker void _showNoMoreDataSnackBar(BuildContext context) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( - content: - Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), + content: Text( + FFLocalizations.of(context).getVariableText( + ptText: "Não há mais dados.", + enText: "No more data.", + ), + style: TextStyle( + color: Colors.white, + fontSize: LimitedFontSizeUtil.getBodyFontSize(context), + ), + ), duration: const Duration(seconds: 3), backgroundColor: FlutterFlowTheme.of(context).primary, ), diff --git a/lib/pages/visits_on_the_property/model.dart b/lib/pages/visits_on_the_property/model.dart index 455b44cd..5b4db026 100644 --- a/lib/pages/visits_on_the_property/model.dart +++ b/lib/pages/visits_on_the_property/model.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:hub/backend/api_requests/api_manager.dart'; import 'package:hub/components/templates_components/details_component/details_component_widget.dart'; import 'package:hub/flutter_flow/flutter_flow_model.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart'; diff --git a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart index 477a5958..7fe9ca0d 100644 --- a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart +++ b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart @@ -8,6 +8,7 @@ import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/pages/visits_on_the_property/model.dart'; import 'package:hub/shared/utils/dialog_util.dart'; import 'package:hub/shared/utils/log_util.dart'; +import 'package:hub/shared/utils/limited_text_size.dart'; class VisitsOnTheProperty extends StatefulWidget { const VisitsOnTheProperty({super.key}); @@ -31,7 +32,7 @@ class _VisitsOnThePropertyState extends State with TickerPr @override void initState() { super.initState(); - model = createModel(context, () => VisitsModel(onRefresh: () => safeSetState((){}))); + model = createModel(context, () => VisitsModel(onRefresh: () => safeSetState(() {}))); _future = _fetchVisits(); _scrollController = ScrollController() @@ -49,67 +50,78 @@ class _VisitsOnThePropertyState extends State with TickerPr } @override - Widget build(BuildContext context) => Scaffold( - appBar: _appBar(context), - backgroundColor: FlutterFlowTheme.of(context).primaryBackground, - body: Column( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - if (_hasData == false && _pageNumber <= 1 && _loading == false) - Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - mainAxisSize: MainAxisSize.max, - children: [ - Center( - child: Text(FFLocalizations.of(context).getVariableText( - ptText: "Nenhuma visita em aberto encontrada!", enText: "No opened visits found")), - ) - ], - ), - ) - else if (_hasData == true || _pageNumber >= 1) - Expanded( - child: FutureBuilder( - future: _future, - builder: (context, snapshot) { - return ListView.builder( - shrinkWrap: true, - physics: const BouncingScrollPhysics(), - controller: _scrollController, - itemCount: _list.length + 1, - itemBuilder: (context, index) { - if (index == 0) { - // Add your item here - return Padding( - padding: const EdgeInsets.only(right: 30, top: 10), - child: Text( - '', - textAlign: TextAlign.right, - ), - ); - } else { - final item = _list[index - 1]; - return _item(context, item); - } - }); - }, - )), - if (_hasData == true && _loading == true) - Container( - padding: const EdgeInsets.only(top: 15, bottom: 15), - child: Center( - child: CircularProgressIndicator( - valueColor: AlwaysStoppedAnimation( - FlutterFlowTheme.of(context).primary, + Widget build(BuildContext context) { + late final limitedBodyTextSize = LimitedFontSizeUtil.getBodyFontSize(context); + late final limitedHeaderTextSize = LimitedFontSizeUtil.getHeaderFontSize(context); + + return Scaffold( + appBar: _appBar(context), + backgroundColor: FlutterFlowTheme.of(context).primaryBackground, + body: Column( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + if (_hasData == false && _pageNumber <= 1 && _loading == false) + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + Center( + child: Text( + FFLocalizations.of(context).getVariableText( + ptText: "Nenhuma visita em aberto encontrada!", enText: "No opened visits found"), + style: TextStyle( + fontFamily: 'Nunito', + fontSize: limitedHeaderTextSize, + ), ), + ) + ], + ), + ) + else if (_hasData == true || _pageNumber >= 1) + Expanded( + child: FutureBuilder( + future: _future, + builder: (context, snapshot) { + return ListView.builder( + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + controller: _scrollController, + itemCount: _list.length + 1, + itemBuilder: (context, index) { + if (index == 0) { + // Add your item here + return Padding( + padding: const EdgeInsets.only(right: 30, top: 10), + child: Text( + '', + textAlign: TextAlign.right, + ), + ); + } else { + final item = _list[index - 1]; + return _item(context, item); + } + }); + }, + )), + if (_hasData == true && _loading == true) + Container( + padding: const EdgeInsets.only(top: 15, bottom: 15), + child: Center( + child: CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation( + FlutterFlowTheme.of(context).primary, ), ), - ) - ].addToStart(const SizedBox(height: 0)), - ), - ); + ), + ) + ].addToStart(const SizedBox(height: 0)), + ), + ); + } PreferredSizeWidget _appBar(BuildContext context) { return AppBar( @@ -195,8 +207,13 @@ class _VisitsOnThePropertyState extends State with TickerPr void _showNoMoreDataSnackBar(BuildContext context) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( - content: - Text(FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data.")), + content: Text( + FFLocalizations.of(context).getVariableText(ptText: "Não há mais dados.", enText: "No more data."), + style: TextStyle( + color: Colors.white, + fontSize: LimitedFontSizeUtil.getBodyFontSize(context), + ), + ), duration: const Duration(seconds: 3), backgroundColor: FlutterFlowTheme.of(context).primary, ), diff --git a/lib/shared/helpers/secure_storage.dart b/lib/shared/helpers/secure_storage.dart index 0313b583..b1ac5cf0 100644 --- a/lib/shared/helpers/secure_storage.dart +++ b/lib/shared/helpers/secure_storage.dart @@ -1,4 +1,3 @@ -import 'package:flutter/material.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:hub/shared/helpers/base_storage.dart'; diff --git a/lib/shared/helpers/shared_preferences_storage.dart b/lib/shared/helpers/shared_preferences_storage.dart index c7d10cd5..e419a570 100644 --- a/lib/shared/helpers/shared_preferences_storage.dart +++ b/lib/shared/helpers/shared_preferences_storage.dart @@ -1,4 +1,3 @@ -import 'package:flutter/material.dart'; import 'package:hub/shared/helpers/base_storage.dart'; import 'package:shared_preferences/shared_preferences.dart'; From b88cd3e8bdfe255d5ca4a26369d3808c71b5e6c3 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 11 Nov 2024 17:32:32 -0300 Subject: [PATCH 21/33] format --- lib/backend/api_requests/api_calls.dart | 27 ++---- .../menu_button_item_widget.dart | 1 - .../menu_card_item/menu_card_item.dart | 1 - .../menu_component/menu_component_model.dart | 2 +- .../menu_component/menu_component_widget.dart | 1 - .../card_item_template_component_widget.dart | 2 +- .../details_component_widget.dart | 32 +++---- lib/flutter_flow/nav/nav.dart | 1 - .../fast_pass_page/fast_pass_page_widget.dart | 9 +- lib/pages/home_page/home_page_model.dart | 2 +- lib/pages/home_page/home_page_widget.dart | 2 +- .../people_on_the_property_page_model.dart | 12 ++- .../reservation_page_widget.dart | 9 +- .../schedule_complete_visit_page_model.dart | 2 +- .../schedule_complete_visit_page_widget.dart | 14 +-- .../vehicle_model.dart | 3 +- lib/pages/visits_on_the_property/model.dart | 88 +++++++++---------- .../localization/localization_service.dart | 1 - 18 files changed, 100 insertions(+), 109 deletions(-) diff --git a/lib/backend/api_requests/api_calls.dart b/lib/backend/api_requests/api_calls.dart index e92107cf..65e74d1a 100644 --- a/lib/backend/api_requests/api_calls.dart +++ b/lib/backend/api_requests/api_calls.dart @@ -63,12 +63,9 @@ class PhpGroup { class GetOpenedVisits { Future call(final String page) async { final String baseUrl = PhpGroup.getBaseUrl(); - final String devUUID = - (await StorageHelper().get(SQLiteStorageKey.devUUID.value, Storage.SQLiteStorage)) ?? ''; - final String userUUID = - (await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage)) ?? ''; - final String cliID = - (await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage)) ?? ''; + final String devUUID = (await StorageHelper().get(SQLiteStorageKey.devUUID.value, Storage.SQLiteStorage)) ?? ''; + final String userUUID = (await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage)) ?? ''; + final String cliID = (await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage)) ?? ''; const String atividade = 'getOpenedVisits'; const String pageSize = '10'; return ApiManager.instance.makeApiCall( @@ -98,12 +95,9 @@ class GetOpenedVisits { class GetResidentsByProperty { Future call(final String page) async { final String baseUrl = PhpGroup.getBaseUrl(); - final String devUUID = - (await StorageHelper().get(SQLiteStorageKey.devUUID.value, Storage.SQLiteStorage)) ?? ''; - final String userUUID = - (await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage)) ?? ''; - final String cliID = - (await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage)) ?? ''; + final String devUUID = (await StorageHelper().get(SQLiteStorageKey.devUUID.value, Storage.SQLiteStorage)) ?? ''; + final String userUUID = (await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage)) ?? ''; + final String cliID = (await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage)) ?? ''; const String atividade = 'getResidentsByProperty'; const String pageSize = '10'; return ApiManager.instance.makeApiCall( @@ -132,12 +126,9 @@ class GetResidentsByProperty { class GetVehiclesByProperty { Future call(final String page) async { final String baseUrl = PhpGroup.getBaseUrl(); - final String devUUID = - (await StorageHelper().get(SQLiteStorageKey.devUUID.value, Storage.SQLiteStorage)) ?? ''; - final String userUUID = - (await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage)) ?? ''; - final String cliID = - (await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage)) ?? ''; + final String devUUID = (await StorageHelper().get(SQLiteStorageKey.devUUID.value, Storage.SQLiteStorage)) ?? ''; + final String userUUID = (await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage)) ?? ''; + final String cliID = (await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage)) ?? ''; const String atividade = 'getVehiclesByProperty'; const String pageSize = '10'; return ApiManager.instance.makeApiCall( diff --git a/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart b/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart index 758a3f5b..ced0373e 100644 --- a/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart +++ b/lib/components/atomic_components/menu_button_item/menu_button_item_widget.dart @@ -3,7 +3,6 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:hub/components/molecular_components/menu_item/menu_item.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart'; - class MenuButtonWidget extends MenuEntry { const MenuButtonWidget({ super.key, diff --git a/lib/components/atomic_components/menu_card_item/menu_card_item.dart b/lib/components/atomic_components/menu_card_item/menu_card_item.dart index 906dee28..5696f83a 100644 --- a/lib/components/atomic_components/menu_card_item/menu_card_item.dart +++ b/lib/components/atomic_components/menu_card_item/menu_card_item.dart @@ -3,7 +3,6 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:hub/components/molecular_components/menu_item/menu_item.dart'; import 'package:hub/flutter_flow/flutter_flow_theme.dart'; - class MenuCardItem extends MenuEntry { const MenuCardItem({ super.key, diff --git a/lib/components/organism_components/menu_component/menu_component_model.dart b/lib/components/organism_components/menu_component/menu_component_model.dart index 4b3bb3a7..bb46b0c1 100644 --- a/lib/components/organism_components/menu_component/menu_component_model.dart +++ b/lib/components/organism_components/menu_component/menu_component_model.dart @@ -216,7 +216,7 @@ class MenuComponentModel extends FlutterFlowModel { ); } - Future out(BuildContext context) async { + Future out(BuildContext context) async { final String title = FFLocalizations.of(context).getVariableText( ptText: 'Sair', enText: 'Logout', diff --git a/lib/components/organism_components/menu_component/menu_component_widget.dart b/lib/components/organism_components/menu_component/menu_component_widget.dart index d3686874..795982cd 100644 --- a/lib/components/organism_components/menu_component/menu_component_widget.dart +++ b/lib/components/organism_components/menu_component/menu_component_widget.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:hub/backend/schema/enums/enums.dart'; - import '/components/organism_components/menu_list_view_component/menu_list_view_component_widget.dart'; import '/components/organism_components/menu_staggered_view_component/menu_staggered_view_component_widget.dart'; import '/flutter_flow/flutter_flow_util.dart'; diff --git a/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart b/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart index 0216eaff..c73c5e20 100644 --- a/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart +++ b/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart @@ -175,7 +175,7 @@ class _CardItemTemplateComponentWidgetState extends State { mainAxisAlignment: MainAxisAlignment.start, children: [ SizedBox(height: MediaQuery.of(context).size.height * 0.02), - if(widget.imagePath != null) Container( - width: MediaQuery.of(context).size.width * 0.3, - height: MediaQuery.of(context).size.width * 0.3, - clipBehavior: Clip.antiAlias, - decoration: const BoxDecoration( - shape: BoxShape.circle, + if (widget.imagePath != null) + Container( + width: MediaQuery.of(context).size.width * 0.3, + height: MediaQuery.of(context).size.width * 0.3, + clipBehavior: Clip.antiAlias, + decoration: const BoxDecoration( + shape: BoxShape.circle, + ), + child: CachedNetworkImage( + fadeInDuration: const Duration(milliseconds: 100), + fadeOutDuration: const Duration(milliseconds: 100), + imageUrl: widget.imagePath ?? '', + fit: BoxFit.cover, + useOldImageOnUrlChange: true, + ), ), - child: CachedNetworkImage( - fadeInDuration: const Duration(milliseconds: 100), - fadeOutDuration: const Duration(milliseconds: 100), - imageUrl: widget.imagePath ?? '', - fit: BoxFit.cover, - useOldImageOnUrlChange: true, - ), - ), - SizedBox(height: MediaQuery.of(context).size.height * 0.03), Row( children: statusLinkedHashMap.expand((linkedHashMap) { @@ -115,7 +115,7 @@ class _DetailsComponentWidgetState extends State { ), filled: true, fillColor: item.value, - labelText: item.key, + labelText: item.key, labelStyle: FlutterFlowTheme.of(context).labelMedium.override( fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, fontWeight: FontWeight.bold, diff --git a/lib/flutter_flow/nav/nav.dart b/lib/flutter_flow/nav/nav.dart index 3deb7ddf..5200e876 100644 --- a/lib/flutter_flow/nav/nav.dart +++ b/lib/flutter_flow/nav/nav.dart @@ -54,7 +54,6 @@ class AppStateNotifier extends ChangeNotifier { } GoRouter createRouter(AppStateNotifier appStateNotifier) { - return GoRouter( initialLocation: '/', debugLogDiagnostics: true, diff --git a/lib/pages/fast_pass_page/fast_pass_page_widget.dart b/lib/pages/fast_pass_page/fast_pass_page_widget.dart index 7764c3ed..087752bd 100644 --- a/lib/pages/fast_pass_page/fast_pass_page_widget.dart +++ b/lib/pages/fast_pass_page/fast_pass_page_widget.dart @@ -32,7 +32,8 @@ class _FastPassPageWidgetState extends State { final cliUUID = await StorageHelper().get(hub.SQLiteStorageKey.clientUUID.value, hub.Storage.SQLiteStorage) ?? ''; const createdAt = '0000-00-00 00:00:00'; final url = 'https://hub.freaccess.com.br/hub/fast-pass/$cliUUID'; - final freUserData = "{\"name\": \"$name\", \"email\": \"$email\",\"dev_id\": \"$devUUID\",\"created_at\":\"$createdAt\",\"updated_at\": \"0000-00-00 00:00:00\",\"status\": \"A\" }"; + final freUserData = + "{\"name\": \"$name\", \"email\": \"$email\",\"dev_id\": \"$devUUID\",\"created_at\":\"$createdAt\",\"updated_at\": \"0000-00-00 00:00:00\",\"status\": \"A\" }"; return { 'url': url, 'name': name, @@ -55,7 +56,9 @@ class _FastPassPageWidgetState extends State { if (snapshot.connectionState == ConnectionState.waiting) { return const Center(child: CircularProgressIndicator()); } else if (snapshot.hasError || !snapshot.hasData || snapshot.data!.isEmpty) { - return Center(child: Text(FFLocalizations.of(context).getVariableText(enText: 'Unexpected error', ptText: 'Erro inesperado'))); + return Center( + child: Text(FFLocalizations.of(context) + .getVariableText(enText: 'Unexpected error', ptText: 'Erro inesperado'))); } else { final data = snapshot.data!; final url = data['url']!; @@ -133,4 +136,4 @@ class _FastPassPageWidgetState extends State { ..loadRequest(Uri.parse(url)), ); } -} \ No newline at end of file +} diff --git a/lib/pages/home_page/home_page_model.dart b/lib/pages/home_page/home_page_model.dart index 6dea5f8b..6fb86a4d 100644 --- a/lib/pages/home_page/home_page_model.dart +++ b/lib/pages/home_page/home_page_model.dart @@ -23,7 +23,7 @@ class HomePageModel extends FlutterFlowModel { final unfocusNode = FocusNode(); FocusNode? textFieldFocusNode; TextEditingController? textController; - String? Function(BuildContext, String?)? textControllerValidator; + String? Function(BuildContext, String?)? textControllerValidator; late LocalProfileComponentModel localComponentModel; late MenuComponentModel homeMenuComponentModel; late MenuComponentModel drawerMenuComponentModel; diff --git a/lib/pages/home_page/home_page_widget.dart b/lib/pages/home_page/home_page_widget.dart index dd271180..ca2ff3ce 100644 --- a/lib/pages/home_page/home_page_widget.dart +++ b/lib/pages/home_page/home_page_widget.dart @@ -37,7 +37,7 @@ class _HomePageWidgetState extends State { void initState() { super.initState(); - _model = createModel(context, () => HomePageModel(safeSetState: () => safeSetState((){}))); + _model = createModel(context, () => HomePageModel(safeSetState: () => safeSetState(() {}))); _model.textController ??= TextEditingController(); _model.textFieldFocusNode ??= FocusNode(); diff --git a/lib/pages/people_on_the_property_page/people_on_the_property_page_model.dart b/lib/pages/people_on_the_property_page/people_on_the_property_page_model.dart index 0fb0d19b..6e7114f8 100644 --- a/lib/pages/people_on_the_property_page/people_on_the_property_page_model.dart +++ b/lib/pages/people_on_the_property_page/people_on_the_property_page_model.dart @@ -5,18 +5,16 @@ import 'package:hub/shared/helpers/base_storage.dart'; import 'package:hub/shared/helpers/storage_helper.dart'; class PeopleOnThePropertyPageModel extends FlutterFlowModel { - PeopleOnThePropertyPageModel({this.onRefresh}); - late final VoidCallback? onRefresh; - + PeopleOnThePropertyPageModel({this.onRefresh}); + late final VoidCallback? onRefresh; final unfocusNode = FocusNode(); - late final String devUUID; - late final String cliUUID; + late final String devUUID; + late final String cliUUID; @override void initState(BuildContext context) { - initVariables(); - + initVariables(); } void initVariables() async { diff --git a/lib/pages/reservation_page/reservation_page_widget.dart b/lib/pages/reservation_page/reservation_page_widget.dart index 2cc86d47..31422dfd 100644 --- a/lib/pages/reservation_page/reservation_page_widget.dart +++ b/lib/pages/reservation_page/reservation_page_widget.dart @@ -29,7 +29,8 @@ class _ReservationPageWidgetState extends State { final clientId = await StorageHelper().get(hub.SQLiteStorageKey.clientUUID.value, hub.Storage.SQLiteStorage) ?? ''; const createdAt = '0000-00-00 00:00:00'; final url = 'https://hub.freaccess.com.br/hub/reservation/$clientId'; - final freUserData = "{\"name\": \"$name\", \"email\": \"$email\",\"dev_id\": \"$devUUID\",\"created_at\": \"$createdAt\",\"updated_at\": \"0000-00-00 00:00:00\",\"status\": \"A\" }"; + final freUserData = + "{\"name\": \"$name\", \"email\": \"$email\",\"dev_id\": \"$devUUID\",\"created_at\": \"$createdAt\",\"updated_at\": \"0000-00-00 00:00:00\",\"status\": \"A\" }"; return { 'url': url, 'name': name, @@ -52,7 +53,9 @@ class _ReservationPageWidgetState extends State { if (snapshot.connectionState == ConnectionState.waiting) { return const Center(child: CircularProgressIndicator()); } else if (snapshot.hasError || !snapshot.hasData || snapshot.data!.isEmpty) { - return Center(child: Text(FFLocalizations.of(context).getVariableText(enText: 'Unexpected error', ptText: 'Erro inesperado'))); + return Center( + child: Text(FFLocalizations.of(context) + .getVariableText(enText: 'Unexpected error', ptText: 'Erro inesperado'))); } else { final data = snapshot.data!; final url = data['url']!; @@ -129,4 +132,4 @@ class _ReservationPageWidgetState extends State { ..loadRequest(Uri.parse(url)), ); } -} \ No newline at end of file +} diff --git a/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_model.dart b/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_model.dart index 65f672ff..c5c93bae 100644 --- a/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_model.dart +++ b/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_model.dart @@ -17,7 +17,7 @@ import 'package:share_plus/share_plus.dart'; import '../../shared/utils/validator_util.dart'; class ScheduleCompleteVisitPageModel extends FlutterFlowModel { - ScheduleCompleteVisitPageModel({ this.safeSetState}); + ScheduleCompleteVisitPageModel({this.safeSetState}); late VoidCallback? safeSetState; late Function(Function) updateState; diff --git a/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart b/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart index 7b8dc738..2cf0c1cb 100644 --- a/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart +++ b/lib/pages/schedule_complete_visit_page/schedule_complete_visit_page_widget.dart @@ -24,13 +24,15 @@ import 'package:hub/shared/utils/share_util.dart'; class ScheduleComplete extends StatefulWidget { const ScheduleComplete({super.key}); - @override State createState() => throw UnimplementedError(); + @override + State createState() => throw UnimplementedError(); } class ScheduleCompleteVisitPageWidget extends ScheduleComplete { const ScheduleCompleteVisitPageWidget({super.key}); - @override State createState() => _ScheduleCompleteVisitPageWidgetState(); + @override + State createState() => _ScheduleCompleteVisitPageWidgetState(); } class _ScheduleCompleteVisitPageWidgetState extends State @@ -44,9 +46,10 @@ class _ScheduleCompleteVisitPageWidgetState extends State(); - @override void initState() { + @override + void initState() { super.initState(); - _model = createModel(context, () => ScheduleCompleteVisitPageModel(safeSetState: () => safeSetState((){}))); + _model = createModel(context, () => ScheduleCompleteVisitPageModel(safeSetState: () => safeSetState(() {}))); _model.updateState = (Function fn) => safeSetState(fn()); _model.tabBarController = TabController( @@ -94,7 +97,8 @@ class _ScheduleCompleteVisitPageWidgetState extends State _model.unfocusNode.canRequestFocus ? FocusScope.of(context).requestFocus(_model.unfocusNode) diff --git a/lib/pages/vehicles_on_the_property/vehicle_model.dart b/lib/pages/vehicles_on_the_property/vehicle_model.dart index 52b6cea0..826095f5 100644 --- a/lib/pages/vehicles_on_the_property/vehicle_model.dart +++ b/lib/pages/vehicles_on_the_property/vehicle_model.dart @@ -48,8 +48,7 @@ class VehicleModel extends FlutterFlowModel { '${FFLocalizations.of(context).getVariableText(ptText: "Tag", enText: "Tag")}:': item['tag'].toString().toUpperCase(), }), - statusHashMap: [ - ], + statusHashMap: [], ); } } diff --git a/lib/pages/visits_on_the_property/model.dart b/lib/pages/visits_on_the_property/model.dart index 5b4db026..fe59a038 100644 --- a/lib/pages/visits_on_the_property/model.dart +++ b/lib/pages/visits_on_the_property/model.dart @@ -18,8 +18,6 @@ class VisitsModel extends FlutterFlowModel { late final String cliUUID; dynamic item; - - @override void initState(BuildContext context) { @@ -43,47 +41,47 @@ class VisitsModel extends FlutterFlowModel { required VisitsModel model, }) { return DetailsComponentWidget( - buttons: [], - labelsHashMap: Map.from({ - if (item['MOT_DESCRICAO'] != null && item['MOT_DESCRICAO'] != '') - '${FFLocalizations.of(context).getVariableText( - ptText: "Motivo", - enText: "Reason", - )}:': item['MOT_DESCRICAO'].toString().toUpperCase(), - if (item['VTA_DTINICIO'] != null && item['VTA_DTINICIO'] != '') - '${FFLocalizations.of(context).getVariableText( - ptText: "Data de Início", - enText: "Start Date", - )}:': item['VTA_DTINICIO'].toString().toUpperCase(), - if (item['VTA_VALIDADE'] != null && item['VTA_VALIDADE'] != '') - '${FFLocalizations.of(context).getVariableText( - ptText: "Validade", - enText: "Validity", - )}:': item['VTA_VALIDADE'].toString().toUpperCase(), - if (item['VTA_FIXA'] != null && item['VTA_FIXA'] != '') - '${FFLocalizations.of(context).getVariableText( - ptText: "Entrada Única", - enText: "Single Entry", - )}:': item['VTA_FIXA'] == true - ? FFLocalizations.of(context).getVariableText( - ptText: "Sim", - enText: "Yes", - ) - : FFLocalizations.of(context).getVariableText( - ptText: "Não", - enText: "No", - ), - }), - imagePath: - 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${devUUID}&cliID=${cliUUID}&atividade=getFoto&Documento=${item['VDO_DOCUMENTO']}&tipo=E', - statusHashMap: [ - if (item['VTA_FIXA'] != null) - Map.from({ - item['VTA_FIXA'] - ? FFLocalizations.of(context).getVariableText(ptText: "Entrada Única", enText: "Single Entry") - : FFLocalizations.of(context).getVariableText(ptText: "Entrada Recorrente", enText: "Recurrent Entry") - : FlutterFlowTheme.of(context).warning - }), - ]); - } + buttons: [], + labelsHashMap: Map.from({ + if (item['MOT_DESCRICAO'] != null && item['MOT_DESCRICAO'] != '') + '${FFLocalizations.of(context).getVariableText( + ptText: "Motivo", + enText: "Reason", + )}:': item['MOT_DESCRICAO'].toString().toUpperCase(), + if (item['VTA_DTINICIO'] != null && item['VTA_DTINICIO'] != '') + '${FFLocalizations.of(context).getVariableText( + ptText: "Data de Início", + enText: "Start Date", + )}:': item['VTA_DTINICIO'].toString().toUpperCase(), + if (item['VTA_VALIDADE'] != null && item['VTA_VALIDADE'] != '') + '${FFLocalizations.of(context).getVariableText( + ptText: "Validade", + enText: "Validity", + )}:': item['VTA_VALIDADE'].toString().toUpperCase(), + if (item['VTA_FIXA'] != null && item['VTA_FIXA'] != '') + '${FFLocalizations.of(context).getVariableText( + ptText: "Entrada Única", + enText: "Single Entry", + )}:': item['VTA_FIXA'] == true + ? FFLocalizations.of(context).getVariableText( + ptText: "Sim", + enText: "Yes", + ) + : FFLocalizations.of(context).getVariableText( + ptText: "Não", + enText: "No", + ), + }), + imagePath: + 'https://freaccess.com.br/freaccess/getImage.php?devUUID=${devUUID}&cliID=${cliUUID}&atividade=getFoto&Documento=${item['VDO_DOCUMENTO']}&tipo=E', + statusHashMap: [ + if (item['VTA_FIXA'] != null) + Map.from({ + item['VTA_FIXA'] + ? FFLocalizations.of(context).getVariableText(ptText: "Entrada Única", enText: "Single Entry") + : FFLocalizations.of(context).getVariableText( + ptText: "Entrada Recorrente", enText: "Recurrent Entry"): FlutterFlowTheme.of(context).warning + }), + ]); + } } diff --git a/lib/shared/services/localization/localization_service.dart b/lib/shared/services/localization/localization_service.dart index 3dfbd1f1..8f9c6ae4 100644 --- a/lib/shared/services/localization/localization_service.dart +++ b/lib/shared/services/localization/localization_service.dart @@ -48,7 +48,6 @@ class LocalizationService { static Future processLocals(BuildContext context) async { try { - final GetLocalsCall callback = PhpGroup.getLocalsCall; final ApiCallResponse response = await callback.call(); final bool isError = response.jsonBody['error']; From ac22cf25c81b3560365d8304a16851df41272a3c Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Tue, 12 Nov 2024 13:13:05 -0300 Subject: [PATCH 22/33] fix merge --- lib/pages/pets_page/pets_page_model.dart | 317 +++++++++++------------ 1 file changed, 152 insertions(+), 165 deletions(-) diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index 53d8cda3..fd099522 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -20,9 +20,14 @@ import 'package:hub/shared/utils/limited_text_size.dart'; import 'package:hub/shared/utils/validator_util.dart'; class PetsPageModel extends FlutterFlowModel { - late String devUUID = ''; - late String userUUID = ''; - late String cliUUID = ''; + static PetsPageModel? _instance = PetsPageModel._internal(); + PetsPageModel._internal(); + factory PetsPageModel() => _instance ?? PetsPageModel._internal(); + static void resetInstance() => _instance = null; + + late final String devUUID; + late final String userUUID; + late final String cliUUID; late String petAmountRegister = '0'; dynamic item; @@ -45,8 +50,6 @@ class PetsPageModel extends FlutterFlowModel { FFUploadedFile? uploadedTempFile; String? imgBase64; - late String defaultDropDownText = ''; - String? dropDownValue1; FormFieldController? dropDownValueController1; @@ -105,27 +108,18 @@ class PetsPageModel extends FlutterFlowModel { String? Function(BuildContext, String?)? textControllerObservationValidator; Future initAsync() async { - defaultDropDownText = FFLocalizations.of(buildContext!).getVariableText( - enText: 'Select an option', - ptText: 'Selecione uma opção', - ); - dropDownValueController1 = FormFieldController(dropDownValue1 ??= defaultDropDownText); - dropDownValueController2 = FormFieldController(dropDownValue2 ??= defaultDropDownText); - log('() => ): $devUUID'); - - WidgetsBinding.instance.addPostFrameCallback((_) async { - devUUID = await StorageHelper().get(SQLiteStorageKey.devUUID.value, Storage.SQLiteStorage) ?? ''; - userUUID = await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage) ?? ''; - cliUUID = await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage) ?? ''; - petAmountRegister = await StorageHelper().get(SQLiteStorageKey.petAmount.value, Storage.SQLiteStorage) ?? ''; - }); + devUUID = (await StorageHelper().get(SQLiteStorageKey.devUUID.value, Storage.SQLiteStorage)) ?? ''; + userUUID = (await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage)) ?? ''; + cliUUID = (await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage)) ?? ''; + petAmountRegister = await StorageHelper().get(SQLiteStorageKey.petAmount.value, Storage.SQLiteStorage) ?? '0'; safeSetState?.call(); - log('() => ): $devUUID'); } @override void initState(BuildContext context) { + initAsync(); + resetInstance(); tabBarController = TabController( vsync: Navigator.of(context), length: 2, @@ -149,7 +143,35 @@ class PetsPageModel extends FlutterFlowModel { textFieldFocusObservation = FocusNode(); textControllerObservation = TextEditingController(); - initAsync(); + dropDownValueController1 = FormFieldController(dropDownValue1 ??= 'Selecione uma opção'); + + dropDownValueController2 = FormFieldController(dropDownValue2 ??= 'Selecione uma opção'); + } + + @override + void dispose() { + tabBarController.dispose(); + + textFieldFocusName?.dispose(); + textControllerName?.dispose(); + + textFieldFocusSpecies?.dispose(); + textControllerSpecies?.dispose(); + + textFieldFocusRace?.dispose(); + textControllerRace?.dispose(); + + textFieldFocusColor?.dispose(); + textControllerColor?.dispose(); + + textFieldFocusData?.dispose(); + textControllerData?.dispose(); + + textFieldFocusObservation?.dispose(); + textControllerObservation?.dispose(); + + dropDownValueController1?.dispose(); + dropDownValueController2?.dispose(); } void setEditForm() { @@ -199,65 +221,26 @@ class PetsPageModel extends FlutterFlowModel { dropDownValueController2 = FormFieldController(dropDownValue2); } - @override - void dispose() { - tabBarController.dispose(); - - textFieldFocusName?.dispose(); - textControllerName?.dispose(); - - textFieldFocusSpecies?.dispose(); - textControllerSpecies?.dispose(); - - textFieldFocusRace?.dispose(); - textControllerRace?.dispose(); - - textFieldFocusColor?.dispose(); - textControllerColor?.dispose(); - - textFieldFocusData?.dispose(); - textControllerData?.dispose(); - - textFieldFocusObservation?.dispose(); - textControllerObservation?.dispose(); - - dropDownValueController1?.dispose(); - dropDownValueController2?.dispose(); - } - bool isFormValid(BuildContext context) { if (uploadedLocalFile == null || uploadedLocalFile!.bytes!.isEmpty) { return false; } - if (textControllerName.text.isEmpty || textControllerName.text.length > 80 || textControllerName.text == '') { + if (textControllerName!.text.isEmpty || textControllerName!.text.length > 80 || textControllerName!.text == '') { return false; } - if (textControllerSpecies.text.isEmpty || textControllerSpecies.text == '') { + if (textControllerSpecies!.text.isEmpty || textControllerSpecies!.text == '') { return false; } - if (textControllerRace.text.isEmpty || textControllerRace.text == '') { + if (textControllerRace!.text.isEmpty || textControllerRace!.text == '') { return false; } - if (dropDownValueController1!.value == defaultDropDownText || - dropDownValueController1!.value == '' || - dropDownValueController1!.value == null) { + if (dropDownValue1 == null || dropDownValue1!.isEmpty || dropDownValue1 == '') { return false; } - if (dropDownValueController2!.value == defaultDropDownText || - dropDownValueController2!.value == '' || - dropDownValueController2!.value == null) { + if (dropDownValue2 == null || dropDownValue2!.isEmpty || dropDownValue2 == '') { return false; } - - if (dropDownValue1 == 'Selecione uma opção' || dropDownValue1 == null || dropDownValue1 == '') { - return false; - } - - if (dropDownValue2 == 'Selecione uma opção' || dropDownValue2 == null || dropDownValue2 == '') { - return false; - } - return true; } @@ -280,7 +263,7 @@ class PetsPageModel extends FlutterFlowModel { ); if (response.jsonBody['error'] == false) { - await DialogUtil.success( + DialogUtil.success( buildContext!, FFLocalizations.of(buildContext!).getVariableText( enText: 'Pet successfully updated', @@ -301,7 +284,7 @@ class PetsPageModel extends FlutterFlowModel { ptText: 'Falha ao atualizar o pet', ); } - await DialogUtil.error(buildContext!, errorMessage); + DialogUtil.error(buildContext!, errorMessage); } } @@ -321,7 +304,7 @@ class PetsPageModel extends FlutterFlowModel { ); if (response.jsonBody['error'] == false) { - await DialogUtil.success( + DialogUtil.success( buildContext!, FFLocalizations.of(buildContext!).getVariableText( enText: 'Pet successfully registered', @@ -333,16 +316,15 @@ class PetsPageModel extends FlutterFlowModel { String errorMessage; try { errorMessage = jsonDecode(response.jsonBody['error_msg'])[0]['message'].toString(); - await DialogUtil.error(buildContext!, errorMessage); } catch (e) { if (response.jsonBody['error_msg'] == "Limite de Cadastro de Pet Atingido.") { errorMessage = FFLocalizations.of(buildContext!).getVariableText( enText: 'Pet registration limit reached', ptText: 'Limite de cadastro de pets atingido', ); - await DialogUtil.error(buildContext!, errorMessage); + DialogUtil.error(buildContext!, errorMessage); } else { - await DialogUtil.errorDefault(buildContext!); + DialogUtil.errorDefault(buildContext!); } } } @@ -382,8 +364,10 @@ class PetsPageModel extends FlutterFlowModel { // dropDownValue1 = ''; // dropDownValue2 = ''; - // dropDownValueController1 = FormFieldController('Selecione uma opção'); - // dropDownValueController2 = FormFieldController('Selecione uma opção'); + // dropDownValueController1 = + // FormFieldController('Selecione uma opção'); + // dropDownValueController2 = + // FormFieldController('Selecione uma opção'); } Widget buildPetDetails({ @@ -394,120 +378,123 @@ class PetsPageModel extends FlutterFlowModel { required String cliUUID, required String cliName, required PetsPageModel model, + bool isInteractive = true, }) { return DetailsComponentWidget( buttons: [ // EDIT ACTION - FFButtonWidget( - text: FFLocalizations.of(context).getVariableText( - ptText: 'Editar', - enText: 'Edit', - ), - icon: const Icon(Icons.edit), - onPressed: () async { - context.pop(); + if (isInteractive) + FFButtonWidget( + text: FFLocalizations.of(context).getVariableText( + ptText: 'Editar', + enText: 'Edit', + ), + icon: const Icon(Icons.edit), + onPressed: () async { + context.pop(); - model.isEditing = true; - model.item = item; - model.switchTab(0); - model.setEditForm(); - // model.safeSetState!(); - }, - options: FFButtonOptions( - width: 100, - height: 40, - color: FlutterFlowTheme.of(context).primaryBackground, - elevation: 0, - textStyle: TextStyle( - color: FlutterFlowTheme.of(context).primaryText, - fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), - ), - splashColor: const Color.fromARGB(95, 0, 146, 5), - borderSide: BorderSide( + model.isEditing = true; + model.item = item; + model.switchTab(0); + model.setEditForm(); + // model.safeSetState!(); + }, + options: FFButtonOptions( + width: 100, + height: 40, color: FlutterFlowTheme.of(context).primaryBackground, - width: 1, + elevation: 0, + textStyle: TextStyle( + color: FlutterFlowTheme.of(context).primaryText, + fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), + ), + splashColor: const Color.fromARGB(95, 0, 146, 5), + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).primaryBackground, + width: 1, + ), + // borderRadius: 12, ), - // borderRadius: 12, ), - ), // DELETE ACTION - FFButtonWidget( - text: FFLocalizations.of(context).getVariableText( - ptText: 'Excluir', - enText: 'Delete', - ), - icon: const Icon(Icons.close), - onPressed: () async { - showAlertDialog( - context, - FFLocalizations.of(context).getVariableText( - ptText: 'Excluir Pet', - enText: 'Delete Pet', - ), - FFLocalizations.of(context).getVariableText( - ptText: 'Você tem certeza que deseja excluir esse pet?', - enText: 'Are you sure you want to delete this pet?', - ), () async { - int id = item['id']; - await PhpGroup.deletePet - .call( - petID: id, - ) - .then((value) { - // Navigator.pop(context, value); - context.pop(value); - context.pop(value); + if (isInteractive) + FFButtonWidget( + text: FFLocalizations.of(context).getVariableText( + ptText: 'Excluir', + enText: 'Delete', + ), + icon: const Icon(Icons.close), + onPressed: () async { + showAlertDialog( + context, + FFLocalizations.of(context).getVariableText( + ptText: 'Excluir Pet', + enText: 'Delete Pet', + ), + FFLocalizations.of(context).getVariableText( + ptText: 'Você tem certeza que deseja excluir esse pet?', + enText: 'Are you sure you want to delete this pet?', + ), () async { + int id = item['id']; + await PhpGroup.deletePet + .call( + petID: id, + ) + .then((value) { + // Navigator.pop(context, value); + context.pop(value); + context.pop(value); - if (value == false) { + if (value == false) { + showSnackbar( + context, + FFLocalizations.of(context).getVariableText( + ptText: 'Erro ao excluir pet', + enText: 'Error deleting pet', + ), + true, + ); + } else if (value == true) { + showSnackbar( + context, + FFLocalizations.of(context).getVariableText( + enText: 'Success deleting pet', + ptText: 'Succeso ao excluir pet', + ), + false, + ); + } + }).catchError((err, stack) { + context.pop(); showSnackbar( context, FFLocalizations.of(context).getVariableText( - ptText: 'Erro ao excluir pet', enText: 'Error deleting pet', + ptText: 'Erro ao excluir pet', ), true, ); - } else if (value == true) { - showSnackbar( - context, - FFLocalizations.of(context).getVariableText( - enText: 'Success deleting pet', - ptText: 'Succeso ao excluir pet', - ), - false, - ); - } - }).catchError((err, stack) { - context.pop(); - showSnackbar( - context, - FFLocalizations.of(context).getVariableText( - enText: 'Error deleting pet', - ptText: 'Erro ao excluir pet', - ), - true, - ); + }); }); - }); - }, - options: FFButtonOptions( - width: 100, - height: 40, - color: FlutterFlowTheme.of(context).primaryBackground, - elevation: 0, - textStyle: TextStyle( - color: FlutterFlowTheme.of(context).primaryText, - fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), - ), - splashColor: const Color.fromARGB(131, 255, 17, 0), - borderSide: BorderSide( + }, + options: FFButtonOptions( + width: 100, + height: 40, color: FlutterFlowTheme.of(context).primaryBackground, - width: 1, + elevation: 0, + textStyle: TextStyle( + color: FlutterFlowTheme.of(context).primaryText, + fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), + ), + splashColor: const Color.fromARGB(131, 255, 17, 0), + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).primaryBackground, + width: 1, + ), + // borderRadius: 12, ), - // borderRadius: 12, ), - ), ], // 'MIN', 'PEQ', 'MED', 'GRA', 'GIG' labelsHashMap: Map.from({ From b4f36c96bb4673b195729c1b17f961a883df4eaf Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Tue, 12 Nov 2024 13:21:32 -0300 Subject: [PATCH 23/33] WIP --- lib/pages/pets_on_the_property_page/pets_history_screen.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pages/pets_on_the_property_page/pets_history_screen.dart b/lib/pages/pets_on_the_property_page/pets_history_screen.dart index 9458923c..63a11f90 100644 --- a/lib/pages/pets_on_the_property_page/pets_history_screen.dart +++ b/lib/pages/pets_on_the_property_page/pets_history_screen.dart @@ -309,7 +309,7 @@ class _PetsHistoryScreenState extends State with TickerProvid cliUUID: cliUUID, cliName: cliName, model: model, - isInteractive: false, + isInteractive: true, ), ); }, From 82940f4a5a6c05af5d199434196b4f57d6519926 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Tue, 12 Nov 2024 13:34:30 -0300 Subject: [PATCH 24/33] WIP --- lib/pages/pets_page/pets_page_model.dart | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index fd099522..644e2593 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -107,18 +107,10 @@ class PetsPageModel extends FlutterFlowModel { TextEditingController? textControllerObservation; String? Function(BuildContext, String?)? textControllerObservationValidator; - Future initAsync() async { - devUUID = (await StorageHelper().get(SQLiteStorageKey.devUUID.value, Storage.SQLiteStorage)) ?? ''; - userUUID = (await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage)) ?? ''; - cliUUID = (await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage)) ?? ''; - petAmountRegister = await StorageHelper().get(SQLiteStorageKey.petAmount.value, Storage.SQLiteStorage) ?? '0'; - safeSetState?.call(); - } @override void initState(BuildContext context) { - initAsync(); resetInstance(); tabBarController = TabController( vsync: Navigator.of(context), @@ -144,8 +136,15 @@ class PetsPageModel extends FlutterFlowModel { textControllerObservation = TextEditingController(); dropDownValueController1 = FormFieldController(dropDownValue1 ??= 'Selecione uma opção'); - dropDownValueController2 = FormFieldController(dropDownValue2 ??= 'Selecione uma opção'); + + WidgetsBinding.instance.addPostFrameCallback((_) async { + devUUID = await StorageHelper().get(SQLiteStorageKey.devUUID.value, Storage.SQLiteStorage) ?? ''; + userUUID = await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage) ?? ''; + cliUUID = await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage) ?? ''; + petAmountRegister = await StorageHelper().get(SQLiteStorageKey.petAmount.value, Storage.SQLiteStorage) ?? ''; + safeSetState?.call(); + }); } @override From e355cd67fbb9d26d477ec93d9a4c966035185f38 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Tue, 12 Nov 2024 13:42:18 -0300 Subject: [PATCH 25/33] fix merge pet --- lib/pages/pets_page/pets_page_model.dart | 36 +++++++++++++++++++----- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index 644e2593..d5025502 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -31,6 +31,7 @@ class PetsPageModel extends FlutterFlowModel { late String petAmountRegister = '0'; dynamic item; + late String defaultDropDownText = ''; late final TabController tabBarController; VoidCallback? onUpdatePet; VoidCallback? onRegisterPet; @@ -107,8 +108,6 @@ class PetsPageModel extends FlutterFlowModel { TextEditingController? textControllerObservation; String? Function(BuildContext, String?)? textControllerObservationValidator; - - @override void initState(BuildContext context) { resetInstance(); @@ -135,10 +134,8 @@ class PetsPageModel extends FlutterFlowModel { textFieldFocusObservation = FocusNode(); textControllerObservation = TextEditingController(); - dropDownValueController1 = FormFieldController(dropDownValue1 ??= 'Selecione uma opção'); - dropDownValueController2 = FormFieldController(dropDownValue2 ??= 'Selecione uma opção'); - WidgetsBinding.instance.addPostFrameCallback((_) async { + await initAsync(); devUUID = await StorageHelper().get(SQLiteStorageKey.devUUID.value, Storage.SQLiteStorage) ?? ''; userUUID = await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage) ?? ''; cliUUID = await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage) ?? ''; @@ -147,6 +144,19 @@ class PetsPageModel extends FlutterFlowModel { }); } + Future initAsync() async { + defaultDropDownText = FFLocalizations.of(buildContext!).getVariableText( + enText: 'Select an option', + ptText: 'Selecione uma opção', + ); + dropDownValueController1 = FormFieldController(dropDownValue1 ??= defaultDropDownText); + dropDownValueController2 = FormFieldController(dropDownValue2 ??= defaultDropDownText); + log('() => ): $devUUID'); + + safeSetState?.call(); + log('() => ): $devUUID'); + } + @override void dispose() { tabBarController.dispose(); @@ -234,10 +244,22 @@ class PetsPageModel extends FlutterFlowModel { return false; } - if (dropDownValue1 == null || dropDownValue1!.isEmpty || dropDownValue1 == '') { + if (dropDownValueController1!.value == defaultDropDownText || + dropDownValueController1!.value == '' || + dropDownValueController1!.value == null) { return false; } - if (dropDownValue2 == null || dropDownValue2!.isEmpty || dropDownValue2 == '') { + if (dropDownValueController2!.value == defaultDropDownText || + dropDownValueController2!.value == '' || + dropDownValueController2!.value == null) { + return false; + } + + if (dropDownValue1 == 'Selecione uma opção' || dropDownValue1 == null || dropDownValue1 == '') { + return false; + } + + if (dropDownValue2 == 'Selecione uma opção' || dropDownValue2 == null || dropDownValue2 == '') { return false; } return true; From 37ad7952eb3d891a793a537cbcb90d5e792bbdb9 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Tue, 12 Nov 2024 13:47:39 -0300 Subject: [PATCH 26/33] remove isInteractive parameter from PetsHistoryScreen widget --- .../pets_history_screen.dart | 1 - lib/pages/pets_page/pets_page_model.dart | 315 +++++++++--------- 2 files changed, 152 insertions(+), 164 deletions(-) diff --git a/lib/pages/pets_on_the_property_page/pets_history_screen.dart b/lib/pages/pets_on_the_property_page/pets_history_screen.dart index 63a11f90..efb7c396 100644 --- a/lib/pages/pets_on_the_property_page/pets_history_screen.dart +++ b/lib/pages/pets_on_the_property_page/pets_history_screen.dart @@ -309,7 +309,6 @@ class _PetsHistoryScreenState extends State with TickerProvid cliUUID: cliUUID, cliName: cliName, model: model, - isInteractive: true, ), ); }, diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index d5025502..00701a8f 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -20,18 +20,12 @@ import 'package:hub/shared/utils/limited_text_size.dart'; import 'package:hub/shared/utils/validator_util.dart'; class PetsPageModel extends FlutterFlowModel { - static PetsPageModel? _instance = PetsPageModel._internal(); - PetsPageModel._internal(); - factory PetsPageModel() => _instance ?? PetsPageModel._internal(); - static void resetInstance() => _instance = null; - - late final String devUUID; - late final String userUUID; - late final String cliUUID; + late String devUUID = ''; + late String userUUID = ''; + late String cliUUID = ''; late String petAmountRegister = '0'; dynamic item; - late String defaultDropDownText = ''; late final TabController tabBarController; VoidCallback? onUpdatePet; VoidCallback? onRegisterPet; @@ -51,6 +45,8 @@ class PetsPageModel extends FlutterFlowModel { FFUploadedFile? uploadedTempFile; String? imgBase64; + late String defaultDropDownText = ''; + String? dropDownValue1; FormFieldController? dropDownValueController1; @@ -108,9 +104,21 @@ class PetsPageModel extends FlutterFlowModel { TextEditingController? textControllerObservation; String? Function(BuildContext, String?)? textControllerObservationValidator; + Future initAsync() async { + defaultDropDownText = FFLocalizations.of(buildContext!).getVariableText( + enText: 'Select an option', + ptText: 'Selecione uma opção', + ); + dropDownValueController1 = FormFieldController(dropDownValue1 ??= defaultDropDownText); + dropDownValueController2 = FormFieldController(dropDownValue2 ??= defaultDropDownText); + log('() => ): $devUUID'); + + safeSetState?.call(); + log('() => ): $devUUID'); + } + @override void initState(BuildContext context) { - resetInstance(); tabBarController = TabController( vsync: Navigator.of(context), length: 2, @@ -140,49 +148,9 @@ class PetsPageModel extends FlutterFlowModel { userUUID = await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage) ?? ''; cliUUID = await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage) ?? ''; petAmountRegister = await StorageHelper().get(SQLiteStorageKey.petAmount.value, Storage.SQLiteStorage) ?? ''; - safeSetState?.call(); }); } - Future initAsync() async { - defaultDropDownText = FFLocalizations.of(buildContext!).getVariableText( - enText: 'Select an option', - ptText: 'Selecione uma opção', - ); - dropDownValueController1 = FormFieldController(dropDownValue1 ??= defaultDropDownText); - dropDownValueController2 = FormFieldController(dropDownValue2 ??= defaultDropDownText); - log('() => ): $devUUID'); - - safeSetState?.call(); - log('() => ): $devUUID'); - } - - @override - void dispose() { - tabBarController.dispose(); - - textFieldFocusName?.dispose(); - textControllerName?.dispose(); - - textFieldFocusSpecies?.dispose(); - textControllerSpecies?.dispose(); - - textFieldFocusRace?.dispose(); - textControllerRace?.dispose(); - - textFieldFocusColor?.dispose(); - textControllerColor?.dispose(); - - textFieldFocusData?.dispose(); - textControllerData?.dispose(); - - textFieldFocusObservation?.dispose(); - textControllerObservation?.dispose(); - - dropDownValueController1?.dispose(); - dropDownValueController2?.dispose(); - } - void setEditForm() { log('item: $item'); @@ -222,25 +190,49 @@ class PetsPageModel extends FlutterFlowModel { textFieldFocusObservation = FocusNode(); item != null ? dropDownValue1 = item['gender'] ?? '' : dropDownValue1 = ''; - item != null ? dropDownValue2 = item['size'] ?? '' : dropDownValue2 = ''; dropDownValueController1 = FormFieldController(dropDownValue1); - dropDownValueController2 = FormFieldController(dropDownValue2); } + @override + void dispose() { + tabBarController.dispose(); + + textFieldFocusName?.dispose(); + textControllerName?.dispose(); + + textFieldFocusSpecies?.dispose(); + textControllerSpecies?.dispose(); + + textFieldFocusRace?.dispose(); + textControllerRace?.dispose(); + + textFieldFocusColor?.dispose(); + textControllerColor?.dispose(); + + textFieldFocusData?.dispose(); + textControllerData?.dispose(); + + textFieldFocusObservation?.dispose(); + textControllerObservation?.dispose(); + + dropDownValueController1?.dispose(); + dropDownValueController2?.dispose(); + } + bool isFormValid(BuildContext context) { if (uploadedLocalFile == null || uploadedLocalFile!.bytes!.isEmpty) { return false; } - if (textControllerName!.text.isEmpty || textControllerName!.text.length > 80 || textControllerName!.text == '') { + if (textControllerName.text.isEmpty || textControllerName.text.length > 80 || textControllerName.text == '') { return false; } - if (textControllerSpecies!.text.isEmpty || textControllerSpecies!.text == '') { + if (textControllerSpecies.text.isEmpty || textControllerSpecies.text == '') { return false; } - if (textControllerRace!.text.isEmpty || textControllerRace!.text == '') { + if (textControllerRace.text.isEmpty || textControllerRace.text == '') { return false; } @@ -262,6 +254,7 @@ class PetsPageModel extends FlutterFlowModel { if (dropDownValue2 == 'Selecione uma opção' || dropDownValue2 == null || dropDownValue2 == '') { return false; } + return true; } @@ -284,7 +277,7 @@ class PetsPageModel extends FlutterFlowModel { ); if (response.jsonBody['error'] == false) { - DialogUtil.success( + await DialogUtil.success( buildContext!, FFLocalizations.of(buildContext!).getVariableText( enText: 'Pet successfully updated', @@ -305,7 +298,7 @@ class PetsPageModel extends FlutterFlowModel { ptText: 'Falha ao atualizar o pet', ); } - DialogUtil.error(buildContext!, errorMessage); + await DialogUtil.error(buildContext!, errorMessage); } } @@ -325,7 +318,7 @@ class PetsPageModel extends FlutterFlowModel { ); if (response.jsonBody['error'] == false) { - DialogUtil.success( + await DialogUtil.success( buildContext!, FFLocalizations.of(buildContext!).getVariableText( enText: 'Pet successfully registered', @@ -337,15 +330,16 @@ class PetsPageModel extends FlutterFlowModel { String errorMessage; try { errorMessage = jsonDecode(response.jsonBody['error_msg'])[0]['message'].toString(); + await DialogUtil.error(buildContext!, errorMessage); } catch (e) { if (response.jsonBody['error_msg'] == "Limite de Cadastro de Pet Atingido.") { errorMessage = FFLocalizations.of(buildContext!).getVariableText( enText: 'Pet registration limit reached', ptText: 'Limite de cadastro de pets atingido', ); - DialogUtil.error(buildContext!, errorMessage); + await DialogUtil.error(buildContext!, errorMessage); } else { - DialogUtil.errorDefault(buildContext!); + await DialogUtil.errorDefault(buildContext!); } } } @@ -385,10 +379,8 @@ class PetsPageModel extends FlutterFlowModel { // dropDownValue1 = ''; // dropDownValue2 = ''; - // dropDownValueController1 = - // FormFieldController('Selecione uma opção'); - // dropDownValueController2 = - // FormFieldController('Selecione uma opção'); + // dropDownValueController1 = FormFieldController('Selecione uma opção'); + // dropDownValueController2 = FormFieldController('Selecione uma opção'); } Widget buildPetDetails({ @@ -399,123 +391,120 @@ class PetsPageModel extends FlutterFlowModel { required String cliUUID, required String cliName, required PetsPageModel model, - bool isInteractive = true, }) { return DetailsComponentWidget( buttons: [ // EDIT ACTION - if (isInteractive) - FFButtonWidget( - text: FFLocalizations.of(context).getVariableText( - ptText: 'Editar', - enText: 'Edit', - ), - icon: const Icon(Icons.edit), - onPressed: () async { - context.pop(); - - model.isEditing = true; - model.item = item; - model.switchTab(0); - model.setEditForm(); - // model.safeSetState!(); - }, - options: FFButtonOptions( - width: 100, - height: 40, - color: FlutterFlowTheme.of(context).primaryBackground, - elevation: 0, - textStyle: TextStyle( - color: FlutterFlowTheme.of(context).primaryText, - fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), - ), - splashColor: const Color.fromARGB(95, 0, 146, 5), - borderSide: BorderSide( - color: FlutterFlowTheme.of(context).primaryBackground, - width: 1, - ), - // borderRadius: 12, - ), + FFButtonWidget( + text: FFLocalizations.of(context).getVariableText( + ptText: 'Editar', + enText: 'Edit', ), + icon: const Icon(Icons.edit), + onPressed: () async { + context.pop(); + + model.isEditing = true; + model.item = item; + model.switchTab(0); + model.setEditForm(); + // model.safeSetState!(); + }, + options: FFButtonOptions( + width: 100, + height: 40, + color: FlutterFlowTheme.of(context).primaryBackground, + elevation: 0, + textStyle: TextStyle( + color: FlutterFlowTheme.of(context).primaryText, + fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), + ), + splashColor: const Color.fromARGB(95, 0, 146, 5), + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).primaryBackground, + width: 1, + ), + // borderRadius: 12, + ), + ), // DELETE ACTION - if (isInteractive) - FFButtonWidget( - text: FFLocalizations.of(context).getVariableText( - ptText: 'Excluir', - enText: 'Delete', - ), - icon: const Icon(Icons.close), - onPressed: () async { - showAlertDialog( - context, - FFLocalizations.of(context).getVariableText( - ptText: 'Excluir Pet', - enText: 'Delete Pet', - ), - FFLocalizations.of(context).getVariableText( - ptText: 'Você tem certeza que deseja excluir esse pet?', - enText: 'Are you sure you want to delete this pet?', - ), () async { - int id = item['id']; - await PhpGroup.deletePet - .call( - petID: id, - ) - .then((value) { - // Navigator.pop(context, value); - context.pop(value); - context.pop(value); + FFButtonWidget( + text: FFLocalizations.of(context).getVariableText( + ptText: 'Excluir', + enText: 'Delete', + ), + icon: const Icon(Icons.close), + onPressed: () async { + showAlertDialog( + context, + FFLocalizations.of(context).getVariableText( + ptText: 'Excluir Pet', + enText: 'Delete Pet', + ), + FFLocalizations.of(context).getVariableText( + ptText: 'Você tem certeza que deseja excluir esse pet?', + enText: 'Are you sure you want to delete this pet?', + ), () async { + int id = item['id']; + await PhpGroup.deletePet + .call( + petID: id, + ) + .then((value) { + // Navigator.pop(context, value); + context.pop(value); + context.pop(value); - if (value == false) { - showSnackbar( - context, - FFLocalizations.of(context).getVariableText( - ptText: 'Erro ao excluir pet', - enText: 'Error deleting pet', - ), - true, - ); - } else if (value == true) { - showSnackbar( - context, - FFLocalizations.of(context).getVariableText( - enText: 'Success deleting pet', - ptText: 'Succeso ao excluir pet', - ), - false, - ); - } - }).catchError((err, stack) { - context.pop(); + if (value == false) { showSnackbar( context, FFLocalizations.of(context).getVariableText( - enText: 'Error deleting pet', ptText: 'Erro ao excluir pet', + enText: 'Error deleting pet', ), true, ); - }); + } else if (value == true) { + showSnackbar( + context, + FFLocalizations.of(context).getVariableText( + enText: 'Success deleting pet', + ptText: 'Succeso ao excluir pet', + ), + false, + ); + } + }).catchError((err, stack) { + context.pop(); + showSnackbar( + context, + FFLocalizations.of(context).getVariableText( + enText: 'Error deleting pet', + ptText: 'Erro ao excluir pet', + ), + true, + ); }); - }, - options: FFButtonOptions( - width: 100, - height: 40, - color: FlutterFlowTheme.of(context).primaryBackground, - elevation: 0, - textStyle: TextStyle( - color: FlutterFlowTheme.of(context).primaryText, - fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), - ), - splashColor: const Color.fromARGB(131, 255, 17, 0), - borderSide: BorderSide( - color: FlutterFlowTheme.of(context).primaryBackground, - width: 1, - ), - // borderRadius: 12, + }); + }, + options: FFButtonOptions( + width: 100, + height: 40, + color: FlutterFlowTheme.of(context).primaryBackground, + elevation: 0, + textStyle: TextStyle( + color: FlutterFlowTheme.of(context).primaryText, + fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), ), + splashColor: const Color.fromARGB(131, 255, 17, 0), + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).primaryBackground, + width: 1, + ), + // borderRadius: 12, ), + ), ], // 'MIN', 'PEQ', 'MED', 'GRA', 'GIG' labelsHashMap: Map.from({ From 6055ba0cc9e7fc8a16a2f9c8ef501f9c9ad911ef Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Tue, 12 Nov 2024 13:59:25 -0300 Subject: [PATCH 27/33] WIP --- .../local_profile_component_model.dart | 4 ++-- .../local_profile_component_widget.dart | 7 ++----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/components/organism_components/local_profile_component/local_profile_component_model.dart b/lib/components/organism_components/local_profile_component/local_profile_component_model.dart index aec1deda..b09a083e 100644 --- a/lib/components/organism_components/local_profile_component/local_profile_component_model.dart +++ b/lib/components/organism_components/local_profile_component/local_profile_component_model.dart @@ -18,8 +18,8 @@ class LocalProfileComponentModel extends FlutterFlowModel getData() async { - cliName = (await StorageHelper().get(SQLiteStorageKey.clientName.value, Storage.SQLiteStorage)) ?? ''; - cliUUID = (await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage)) ?? ''; + cliName = await StorageHelper().get(SQLiteStorageKey.clientName.value, Storage.SQLiteStorage) ?? ''; + cliUUID = await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage) ?? ''; setStateCallback?.call(); } diff --git a/lib/components/organism_components/local_profile_component/local_profile_component_widget.dart b/lib/components/organism_components/local_profile_component/local_profile_component_widget.dart index 0a8bb410..6e8f3b14 100644 --- a/lib/components/organism_components/local_profile_component/local_profile_component_widget.dart +++ b/lib/components/organism_components/local_profile_component/local_profile_component_widget.dart @@ -56,9 +56,7 @@ class _LocalProfileComponentWidgetState extends State onUpdate()'); - safeSetState(() { - _model.getData(); - }); + safeSetState(() async => await _model.getData()); } @override @@ -98,8 +96,7 @@ class _LocalProfileComponentWidgetState extends State value == true ? onUpdate() : null); + await LocalizationService.processLocals(context).whenComplete(() => onUpdate()); }, child: ClipRRect( borderRadius: BorderRadius.circular(200.0), From b010582fbeec9e53d0d10fa992f5f1a57df737db Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Tue, 12 Nov 2024 14:39:45 -0300 Subject: [PATCH 28/33] fix pet --- lib/pages/pets_page/pets_page_model.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index 00701a8f..bd7f11e0 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -119,6 +119,8 @@ class PetsPageModel extends FlutterFlowModel { @override void initState(BuildContext context) { + initAsync(); + tabBarController = TabController( vsync: Navigator.of(context), length: 2, @@ -143,7 +145,6 @@ class PetsPageModel extends FlutterFlowModel { textControllerObservation = TextEditingController(); WidgetsBinding.instance.addPostFrameCallback((_) async { - await initAsync(); devUUID = await StorageHelper().get(SQLiteStorageKey.devUUID.value, Storage.SQLiteStorage) ?? ''; userUUID = await StorageHelper().get(SQLiteStorageKey.userUUID.value, Storage.SQLiteStorage) ?? ''; cliUUID = await StorageHelper().get(SQLiteStorageKey.clientUUID.value, Storage.SQLiteStorage) ?? ''; From a47319d29a183d30060c3aa6abb06640950b2646 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Wed, 13 Nov 2024 08:31:57 -0300 Subject: [PATCH 29/33] fix: problema de assincronicidade com o setState do LocalProfileComponent --- .../local_profile_component_widget.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/components/organism_components/local_profile_component/local_profile_component_widget.dart b/lib/components/organism_components/local_profile_component/local_profile_component_widget.dart index 6e8f3b14..5cf40e17 100644 --- a/lib/components/organism_components/local_profile_component/local_profile_component_widget.dart +++ b/lib/components/organism_components/local_profile_component/local_profile_component_widget.dart @@ -27,14 +27,14 @@ class _LocalProfileComponentWidgetState extends State LocalProfileComponentModel()); - _model.setOnUpdate(onUpdate: () => setState(() {})); + _model.setOnUpdate(onUpdate: () => safeSetState(() {})); _model.setStateCallback = () => safeSetState(() {}); WidgetsBinding.instance.addPostFrameCallback((_) async { @@ -54,9 +54,10 @@ class _LocalProfileComponentWidgetState extends State onUpdate()'); - safeSetState(() async => await _model.getData()); + await _model.getData(); + safeSetState(() {}); } @override From 0b582c86bcf88b6427af096562c1f63aade823e0 Mon Sep 17 00:00:00 2001 From: Ivan Antunes Date: Wed, 13 Nov 2024 09:16:12 -0300 Subject: [PATCH 30/33] =?UTF-8?q?Vers=C3=A3o=201.2.0=20|=20Build=2014?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 9ddc4690..19780be7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: A new Flutter project. publish_to: "none" -version: 1.1.2+13 +version: 1.2.0+14 environment: sdk: ">=3.0.0 <4.0.0" From 29c246fe036644c6faa1efd6814e968e5fc3626f Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Wed, 13 Nov 2024 16:02:46 -0300 Subject: [PATCH 31/33] fix: alteracoes solicitadas pelo Daniel dia 11/13/2024 --- .../menu_component/menu_component_model.dart | 2 +- .../card_item_template_component_widget.dart | 3 +- .../details_component_widget.dart | 10 +- lib/main.dart | 2 +- .../about_property_screen.dart | 18 +- .../package_order_page.dart | 6 +- .../pets_history_screen.dart | 2 +- lib/pages/pets_page/pets_page_model.dart | 221 +++++++++--------- lib/pages/pets_page/pets_page_widget.dart | 2 +- .../visits_on_the_property_screen.dart | 2 +- 10 files changed, 137 insertions(+), 131 deletions(-) diff --git a/lib/components/organism_components/menu_component/menu_component_model.dart b/lib/components/organism_components/menu_component/menu_component_model.dart index bb46b0c1..299e47d4 100644 --- a/lib/components/organism_components/menu_component/menu_component_model.dart +++ b/lib/components/organism_components/menu_component/menu_component_model.dart @@ -133,7 +133,7 @@ class MenuComponentModel extends FlutterFlowModel { safeSetState; }); if (options.contains(MenuOption.PackagesOnTheProperty)) - addMenuEntry(Icons.inventory_2_outlined, 'My Orders', 'Minhas Encomendas', () async { + addMenuEntry(Icons.inventory_2_outlined, 'Orders', 'Encomendas', () async { if (await StorageHelper().get(SQLiteStorageKey.whatsapp.value, Storage.SQLiteStorage) == 'true') await open(context, '/packageOrder'); else diff --git a/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart b/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart index c73c5e20..4814763e 100644 --- a/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart +++ b/lib/components/templates_components/card_item_template_component/card_item_template_component_widget.dart @@ -4,6 +4,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:hub/shared/utils/limited_text_size.dart'; +import 'package:material_symbols_icons/symbols.dart'; import '/flutter_flow/flutter_flow_theme.dart'; import '/flutter_flow/flutter_flow_util.dart'; @@ -182,7 +183,7 @@ class _CardItemTemplateComponentWidgetState extends State?> statusHashMap; final String? imagePath; final Future Function()? onTapCardItemAction; - final List buttons; + final List? buttons; @override State createState() => _DetailsComponentWidgetState(); @@ -75,7 +75,7 @@ class _DetailsComponentWidgetState extends State { mainAxisAlignment: MainAxisAlignment.start, children: [ SizedBox(height: MediaQuery.of(context).size.height * 0.02), - if (widget.imagePath != null) + if (widget.imagePath != null && widget.imagePath != '') Container( width: MediaQuery.of(context).size.width * 0.3, height: MediaQuery.of(context).size.width * 0.3, @@ -86,7 +86,7 @@ class _DetailsComponentWidgetState extends State { child: CachedNetworkImage( fadeInDuration: const Duration(milliseconds: 100), fadeOutDuration: const Duration(milliseconds: 100), - imageUrl: widget.imagePath ?? '', + imageUrl: widget.imagePath!, fit: BoxFit.cover, useOldImageOnUrlChange: true, ), @@ -238,14 +238,14 @@ class _DetailsComponentWidgetState extends State { }, ), SizedBox(height: MediaQuery.of(context).size.height * 0.02), - if (widget.buttons.isNotEmpty) // Adicione este SizedBox com a altura desejada + if (widget.buttons!.isNotEmpty || widget.buttons != null) OverflowBar( overflowAlignment: OverflowBarAlignment.center, alignment: MainAxisAlignment.center, overflowSpacing: 2, spacing: 2, // mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: widget.buttons, + children: widget.buttons!, ), SizedBox(height: MediaQuery.of(context).size.height * 0.02), ], diff --git a/lib/main.dart b/lib/main.dart index 06cb585d..38828b06 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -280,7 +280,7 @@ class _AppState extends State with WidgetsBindingObserver { if (state == AppLifecycleState.detached) { await LocalizationService.processLocals(context); FirebaseMessagingService().updateDeviceToken(); - } + } } @override diff --git a/lib/pages/about_property_page/about_property_screen.dart b/lib/pages/about_property_page/about_property_screen.dart index 335863a1..9a80615a 100644 --- a/lib/pages/about_property_page/about_property_screen.dart +++ b/lib/pages/about_property_page/about_property_screen.dart @@ -59,14 +59,16 @@ class _AboutPropertyPageState extends State with SingleTicker } Widget _buildBody(BuildContext context) { - return Container( - color: FlutterFlowTheme.of(context).primaryBackground, - child: wrapWithModel( - model: _model.menuComponentModel, - updateCallback: () => setState(() {}), - child: Padding( - padding: EdgeInsets.only(bottom: 40), - child: MenuComponentWidget(model: _model.menuComponentModel), + return SingleChildScrollView( + child: Container( + color: FlutterFlowTheme.of(context).primaryBackground, + child: wrapWithModel( + model: _model.menuComponentModel, + updateCallback: () => setState(() {}), + child: Padding( + padding: EdgeInsets.only(bottom: 40), + child: MenuComponentWidget(model: _model.menuComponentModel), + ), ), ), ); diff --git a/lib/pages/package_order_page/package_order_page.dart b/lib/pages/package_order_page/package_order_page.dart index 03d95592..26ba4504 100644 --- a/lib/pages/package_order_page/package_order_page.dart +++ b/lib/pages/package_order_page/package_order_page.dart @@ -36,11 +36,11 @@ class _PackageOrderPage extends State { List _orderList = []; final Map filter = { - 'adresseeType': '.*', + 'adresseeType': 'PRO', 'status': 'notPickedUp', }; - String _adresseeType = '.*'; + String _adresseeType = 'PRO'; String _status = 'notPickedUp'; late BehaviorSubject> _selectedTypeSubject; @@ -224,7 +224,7 @@ class _PackageOrderPage extends State { return AppBar( backgroundColor: FlutterFlowTheme.of(context).primaryBackground, automaticallyImplyLeading: false, - title: Text(FFLocalizations.of(context).getVariableText(enText: 'My Orders', ptText: 'Minhas Encomendas'), + title: Text(FFLocalizations.of(context).getVariableText(enText: 'Orders', ptText: 'Encomendas'), style: FlutterFlowTheme.of(context).headlineMedium.override( fontFamily: 'Nunito', color: FlutterFlowTheme.of(context).primaryText, diff --git a/lib/pages/pets_on_the_property_page/pets_history_screen.dart b/lib/pages/pets_on_the_property_page/pets_history_screen.dart index 44771b8d..d2771a97 100644 --- a/lib/pages/pets_on_the_property_page/pets_history_screen.dart +++ b/lib/pages/pets_on_the_property_page/pets_history_screen.dart @@ -38,7 +38,7 @@ class _PetsHistoryScreenState extends State with TickerProvid @override void initState() { super.initState(); - model = widget.model ?? createModel(context, () => PetsPageModel()); + model = widget.model ?? createModel(context, () => PetsPageModel(isInteractive: false)); _petsFuture = _fetchVisits(); _scrollController = ScrollController() ..addListener(() { diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index d0e5b3f5..3bef02ac 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -20,6 +20,11 @@ import 'package:hub/shared/utils/limited_text_size.dart'; import 'package:hub/shared/utils/validator_util.dart'; class PetsPageModel extends FlutterFlowModel { + PetsPageModel({ + required this.isInteractive, + }); + late final bool isInteractive; + late String devUUID = ''; late String userUUID = ''; late String cliUUID = ''; @@ -393,118 +398,116 @@ class PetsPageModel extends FlutterFlowModel { required PetsPageModel model, }) { return DetailsComponentWidget( - buttons: [ - // EDIT ACTION - FFButtonWidget( - text: FFLocalizations.of(context).getVariableText( - ptText: 'Editar', - enText: 'Edit', - ), - icon: const Icon(Icons.edit), - onPressed: () async { - context.pop(); - - model.isEditing = true; - model.item = item; - model.switchTab(0); - model.setEditForm(); - // model.safeSetState!(); - }, - options: FFButtonOptions( - height: 40, - color: FlutterFlowTheme.of(context).primaryBackground, - elevation: 0, - textStyle: TextStyle( - color: FlutterFlowTheme.of(context).primaryText, - fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), - ), - splashColor: const Color.fromARGB(95, 0, 146, 5), - borderSide: BorderSide( - color: FlutterFlowTheme.of(context).primaryBackground, - width: 1, - ), - // borderRadius: 12, - ), - ), - - // DELETE ACTION - FFButtonWidget( - text: FFLocalizations.of(context).getVariableText( - ptText: 'Excluir', - enText: 'Delete', - ), - icon: const Icon(Icons.close), - onPressed: () async { - showAlertDialog( - context, - FFLocalizations.of(context).getVariableText( - ptText: 'Excluir Pet', - enText: 'Delete Pet', + buttons: isInteractive + ? [ + FFButtonWidget( + text: FFLocalizations.of(context).getVariableText( + ptText: 'Editar', + enText: 'Edit', ), - FFLocalizations.of(context).getVariableText( - ptText: 'Você tem certeza que deseja excluir esse pet?', - enText: 'Are you sure you want to delete this pet?', - ), () async { - int id = item['id']; - await PhpGroup.deletePet - .call( - petID: id, - ) - .then((value) { - // Navigator.pop(context, value); - context.pop(value); - context.pop(value); + icon: const Icon(Icons.edit), + onPressed: () async { + context.pop(); - if (value == false) { - showSnackbar( - context, - FFLocalizations.of(context).getVariableText( - ptText: 'Erro ao excluir pet', - enText: 'Error deleting pet', - ), - true, - ); - } else if (value == true) { - showSnackbar( - context, - FFLocalizations.of(context).getVariableText( - enText: 'Success deleting pet', - ptText: 'Succeso ao excluir pet', - ), - false, - ); - } - }).catchError((err, stack) { - context.pop(); - showSnackbar( - context, - FFLocalizations.of(context).getVariableText( - enText: 'Error deleting pet', - ptText: 'Erro ao excluir pet', + model.isEditing = true; + model.item = item; + model.switchTab(0); + model.setEditForm(); + // model.safeSetState!(); + }, + options: FFButtonOptions( + height: 40, + color: FlutterFlowTheme.of(context).primaryBackground, + elevation: 0, + textStyle: TextStyle( + color: FlutterFlowTheme.of(context).primaryText, + fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), ), - true, - ); - }); - }); - }, - options: FFButtonOptions( - height: 40, - color: FlutterFlowTheme.of(context).primaryBackground, - elevation: 0, - textStyle: TextStyle( - color: FlutterFlowTheme.of(context).primaryText, - fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), - ), - splashColor: const Color.fromARGB(131, 255, 17, 0), - borderSide: BorderSide( - color: FlutterFlowTheme.of(context).primaryBackground, - width: 1, - ), - // borderRadius: 12, - ), - ), - ], - // 'MIN', 'PEQ', 'MED', 'GRA', 'GIG' + splashColor: const Color.fromARGB(95, 0, 146, 5), + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).primaryBackground, + width: 1, + ), + // borderRadius: 12, + ), + ), + FFButtonWidget( + text: FFLocalizations.of(context).getVariableText( + ptText: 'Excluir', + enText: 'Delete', + ), + icon: const Icon(Icons.close), + onPressed: () async { + showAlertDialog( + context, + FFLocalizations.of(context).getVariableText( + ptText: 'Excluir Pet', + enText: 'Delete Pet', + ), + FFLocalizations.of(context).getVariableText( + ptText: 'Você tem certeza que deseja excluir esse pet?', + enText: 'Are you sure you want to delete this pet?', + ), () async { + int id = item['id']; + await PhpGroup.deletePet + .call( + petID: id, + ) + .then((value) { + // Navigator.pop(context, value); + context.pop(value); + context.pop(value); + + if (value == false) { + showSnackbar( + context, + FFLocalizations.of(context).getVariableText( + ptText: 'Erro ao excluir pet', + enText: 'Error deleting pet', + ), + true, + ); + } else if (value == true) { + showSnackbar( + context, + FFLocalizations.of(context).getVariableText( + enText: 'Success deleting pet', + ptText: 'Succeso ao excluir pet', + ), + false, + ); + } + }).catchError((err, stack) { + context.pop(); + showSnackbar( + context, + FFLocalizations.of(context).getVariableText( + enText: 'Error deleting pet', + ptText: 'Erro ao excluir pet', + ), + true, + ); + }); + }); + }, + options: FFButtonOptions( + height: 40, + color: FlutterFlowTheme.of(context).primaryBackground, + elevation: 0, + textStyle: TextStyle( + color: FlutterFlowTheme.of(context).primaryText, + fontSize: LimitedFontSizeUtil.getNoResizeFont(context, 15), + ), + splashColor: const Color.fromARGB(131, 255, 17, 0), + borderSide: BorderSide( + color: FlutterFlowTheme.of(context).primaryBackground, + width: 1, + ), + // borderRadius: 12, + ), + ), + ] + : [], labelsHashMap: Map.from({ if (item['species'] != null && item['species'] != '') '${FFLocalizations.of(context).getVariableText(ptText: "Espécie", enText: "Species")}:': diff --git a/lib/pages/pets_page/pets_page_widget.dart b/lib/pages/pets_page/pets_page_widget.dart index a0953d77..4beac680 100644 --- a/lib/pages/pets_page/pets_page_widget.dart +++ b/lib/pages/pets_page/pets_page_widget.dart @@ -34,7 +34,7 @@ class _PetsPageWidgetState extends State with SingleTickerProvid @override void initState() { super.initState(); - _model = createModel(context, () => PetsPageModel()); + _model = createModel(context, () => PetsPageModel(isInteractive: true)); _model.updateOnChange = true; diff --git a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart index 7fe9ca0d..b4a283eb 100644 --- a/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart +++ b/lib/pages/visits_on_the_property/visits_on_the_property_screen.dart @@ -127,7 +127,7 @@ class _VisitsOnThePropertyState extends State with TickerPr return AppBar( backgroundColor: FlutterFlowTheme.of(context).primaryBackground, automaticallyImplyLeading: false, - title: Text(FFLocalizations.of(context).getVariableText(enText: 'Visitas em aberto', ptText: 'Opened visits'), + title: Text(FFLocalizations.of(context).getVariableText(ptText: 'Visitas em aberto', enText: 'Opened visits'), style: FlutterFlowTheme.of(context).headlineMedium.override( fontFamily: 'Nunito', color: FlutterFlowTheme.of(context).primaryText, From b6e83dbaa83458117b2dc7ab62a3d6a05ac2923e Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Thu, 14 Nov 2024 11:10:08 -0300 Subject: [PATCH 32/33] WIP --- .../menu_component/menu_component_model.dart | 80 +++++++++---------- 1 file changed, 36 insertions(+), 44 deletions(-) diff --git a/lib/components/organism_components/menu_component/menu_component_model.dart b/lib/components/organism_components/menu_component/menu_component_model.dart index 299e47d4..a25aae36 100644 --- a/lib/components/organism_components/menu_component/menu_component_model.dart +++ b/lib/components/organism_components/menu_component/menu_component_model.dart @@ -72,12 +72,6 @@ class MenuComponentModel extends FlutterFlowModel { return null; } - /// ABOUT THE VISITORS - if (options.contains(MenuOption.VisitorsRegister)) - addMenuEntry(Icons.person_add_alt_1_outlined, 'Register Visitor', 'Cadastrar Visitante', () async { - await open(context, '/registerVisitorPage'); - safeSetState; - }); if (options.contains(MenuOption.WorkersOnTheProperty)) addMenuEntry(Icons.engineering_outlined, 'Schedule Providers', 'Agendar Prestadores', () async { if (await StorageHelper().get(SQLiteStorageKey.provisional.value, Storage.SQLiteStorage) == 'true') @@ -107,31 +101,6 @@ class MenuComponentModel extends FlutterFlowModel { await open(context, '/scheduleCompleteVisitPage'); safeSetState; }); - - /// ABOUT THE PROPERTY - if (options.contains(MenuOption.PetsOnTheProperty)) - addMenuEntry(Icons.pets, 'Pets', 'Pets', () async { - if (await StorageHelper().get(SQLiteStorageKey.pets.value, Storage.SQLiteStorage) == 'true') - await open(context, '/petsOnThePropertyPage'); - else - DialogUnavailable.unavailableFeature(context); - safeSetState; - }); - if (options.contains(MenuOption.ResidentsOnTheProperty)) - addMenuEntry(Icons.groups, 'Residents', 'Moradores', () async { - await open(context, '/peopleOnThePropertyPage'); - safeSetState; - }); - if (options.contains(MenuOption.VehiclesOnTheProperty)) - addMenuEntry(Symbols.directions_car, 'Vehicles', 'Veículos', () async { - await open(context, '/vehiclesOnThePropertyPage'); - safeSetState; - }); - if (options.contains(MenuOption.VisitsOnTheProperty)) - addMenuEntry(Symbols.perm_contact_calendar, 'Opened Visits', 'Visitas em Aberto', () async { - await open(context, '/visitsOnThePropertyPage'); - safeSetState; - }); if (options.contains(MenuOption.PackagesOnTheProperty)) addMenuEntry(Icons.inventory_2_outlined, 'Orders', 'Encomendas', () async { if (await StorageHelper().get(SQLiteStorageKey.whatsapp.value, Storage.SQLiteStorage) == 'true') @@ -140,23 +109,17 @@ class MenuComponentModel extends FlutterFlowModel { DialogUnavailable.unavailableFeature(context); safeSetState; }); - - /// ABOUT THE RESIDENTS - if (options.contains(MenuOption.PetsRegister)) - addMenuEntry(Icons.pets, 'Pets Register', 'Cadastrar Pet', () async { - if (await StorageHelper().get(SQLiteStorageKey.pets.value, Storage.SQLiteStorage) == 'true') - await open(context, '/petsPage'); - else - DialogUnavailable.unavailableFeature(context); - safeSetState; - }); if (options.contains(MenuOption.ReservationsOnTheLocal)) addMenuEntry(Icons.event_available, 'Reservations', 'Reservas', () async { if (await StorageHelper().get(SQLiteStorageKey.whatsapp.value, Storage.SQLiteStorage) == 'true') await open(context, '/reservation'); else DialogUnavailable.unavailableFeature(context); - + safeSetState; + }); + if (options.contains(MenuOption.VisitorsRegister)) + addMenuEntry(Icons.person_add_alt_1_outlined, 'Register Visitor', 'Cadastrar Visitante', () async { + await open(context, '/registerVisitorPage'); safeSetState; }); if (options.contains(MenuOption.QRCodeAccessInProperty)) @@ -164,11 +127,24 @@ class MenuComponentModel extends FlutterFlowModel { await open(context, '/qrCodePage'); safeSetState; }); + if (options.contains(MenuOption.PetsOnTheProperty)) + addMenuEntry(Icons.pets, 'Pets', 'Pets', () async { + if (await StorageHelper().get(SQLiteStorageKey.pets.value, Storage.SQLiteStorage) == 'true') + await open(context, '/petsOnThePropertyPage'); + else + DialogUnavailable.unavailableFeature(context); + safeSetState; + }); if (options.contains(MenuOption.AccessOnTheProperty)) addMenuEntry(Icons.transfer_within_a_station_outlined, 'Access History', 'Consultar Acessos', () async { await open(context, '/acessHistoryPage'); safeSetState; }); + if (options.contains(MenuOption.ResidentsOnTheProperty)) + addMenuEntry(Icons.groups, 'Residents', 'Moradores', () async { + await open(context, '/peopleOnThePropertyPage'); + safeSetState; + }); if (options.contains(MenuOption.LiberationsOnTheProperty)) addMenuEntry(Icons.how_to_reg_outlined, 'Liberations History', 'Consultar Liberações', () async { await open(context, '/liberationHistory'); @@ -179,8 +155,24 @@ class MenuComponentModel extends FlutterFlowModel { await open(context, '/messageHistoryPage'); safeSetState; }); - - /// ABOUT THE SYSTEM + if (options.contains(MenuOption.VehiclesOnTheProperty)) + addMenuEntry(Symbols.directions_car, 'Vehicles', 'Veículos', () async { + await open(context, '/vehiclesOnThePropertyPage'); + safeSetState; + }); + if (options.contains(MenuOption.VisitsOnTheProperty)) + addMenuEntry(Symbols.perm_contact_calendar, 'Opened Visits', 'Visitas em Aberto', () async { + await open(context, '/visitsOnThePropertyPage'); + safeSetState; + }); + if (options.contains(MenuOption.PetsRegister)) + addMenuEntry(Icons.pets, 'Pets Register', 'Cadastrar Pet', () async { + if (await StorageHelper().get(SQLiteStorageKey.pets.value, Storage.SQLiteStorage) == 'true') + await open(context, '/petsPage'); + else + DialogUnavailable.unavailableFeature(context); + safeSetState; + }); if (options.contains(MenuOption.AboutProperty)) addMenuEntry(Icons.home, 'About Property', 'Sobre a Propriedade', () async { if (await StorageHelper().get(SQLiteStorageKey.whatsapp.value, Storage.SQLiteStorage) == 'true') From 5cab6b88a6a8332d9fa54fff89bd89bf98bab16a Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 18 Nov 2024 10:28:32 -0300 Subject: [PATCH 33/33] fix: ordem do pets no menu da home --- .../menu_component/menu_component_model.dart | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/components/organism_components/menu_component/menu_component_model.dart b/lib/components/organism_components/menu_component/menu_component_model.dart index a25aae36..1be59d82 100644 --- a/lib/components/organism_components/menu_component/menu_component_model.dart +++ b/lib/components/organism_components/menu_component/menu_component_model.dart @@ -135,6 +135,14 @@ class MenuComponentModel extends FlutterFlowModel { DialogUnavailable.unavailableFeature(context); safeSetState; }); + if (options.contains(MenuOption.PetsRegister)) + addMenuEntry(Icons.pets, 'Pets Register', 'Cadastrar Pet', () async { + if (await StorageHelper().get(SQLiteStorageKey.pets.value, Storage.SQLiteStorage) == 'true') + await open(context, '/petsPage'); + else + DialogUnavailable.unavailableFeature(context); + safeSetState; + }); if (options.contains(MenuOption.AccessOnTheProperty)) addMenuEntry(Icons.transfer_within_a_station_outlined, 'Access History', 'Consultar Acessos', () async { await open(context, '/acessHistoryPage'); @@ -165,14 +173,7 @@ class MenuComponentModel extends FlutterFlowModel { await open(context, '/visitsOnThePropertyPage'); safeSetState; }); - if (options.contains(MenuOption.PetsRegister)) - addMenuEntry(Icons.pets, 'Pets Register', 'Cadastrar Pet', () async { - if (await StorageHelper().get(SQLiteStorageKey.pets.value, Storage.SQLiteStorage) == 'true') - await open(context, '/petsPage'); - else - DialogUnavailable.unavailableFeature(context); - safeSetState; - }); + if (options.contains(MenuOption.AboutProperty)) addMenuEntry(Icons.home, 'About Property', 'Sobre a Propriedade', () async { if (await StorageHelper().get(SQLiteStorageKey.whatsapp.value, Storage.SQLiteStorage) == 'true')