From 8f9570ebd20676bf5bf13e321a822f599932eadc Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Fri, 13 Sep 2024 14:48:21 -0300 Subject: [PATCH 01/10] remove logs --- lib/pages/home_page/home_page_widget.dart | 1 - .../preferences_settings_page/preferences_settings_model.dart | 1 - lib/shared/utils/validator_util.dart | 3 --- 3 files changed, 5 deletions(-) diff --git a/lib/pages/home_page/home_page_widget.dart b/lib/pages/home_page/home_page_widget.dart index 1a14c55b..42728b0e 100644 --- a/lib/pages/home_page/home_page_widget.dart +++ b/lib/pages/home_page/home_page_widget.dart @@ -47,7 +47,6 @@ class _HomePageWidgetState extends State { final errorMsg = response.jsonBody['error_msg']; if (error == false) { - log(response.jsonBody.toString()); AppState().whatsapp = response.jsonBody['whatsapp'] ?? false; AppState().provisional = response.jsonBody['provisional'] ?? false; AppState().pets = response.jsonBody['pet'] ?? false; diff --git a/lib/pages/preferences_settings_page/preferences_settings_model.dart b/lib/pages/preferences_settings_page/preferences_settings_model.dart index 795d5417..cf64f7c7 100644 --- a/lib/pages/preferences_settings_page/preferences_settings_model.dart +++ b/lib/pages/preferences_settings_page/preferences_settings_model.dart @@ -488,7 +488,6 @@ class PreferencesPageModel with ChangeNotifier { ); } }).catchError((err) { - log(err.toString()); context.pop(); ScaffoldMessenger.of(context).showSnackBar( SnackBar( diff --git a/lib/shared/utils/validator_util.dart b/lib/shared/utils/validator_util.dart index aaa09bd5..f1550827 100644 --- a/lib/shared/utils/validator_util.dart +++ b/lib/shared/utils/validator_util.dart @@ -20,7 +20,6 @@ class ValidatorUtil { } static String toISO8601(String format, String value) { - log('value: $value'); DateFormat dateFormat = DateFormat(format); DateTime dateTime = dateFormat.parse(value); @@ -28,7 +27,6 @@ class ValidatorUtil { } static String toISO8601USA(String format, String value) { - log('value: $value'); DateFormat dateFormat = DateFormat(format); DateTime dateTime = dateFormat.parse(value); String date = dateTime.toIso8601String() + 'Z'; @@ -45,7 +43,6 @@ class ValidatorUtil { } static String formatDateTimePicker(String dateTime) { - log('dateTime: $dateTime'); List parts = dateTime.split(' '); String datePart = parts[0]; List dateParts = datePart.split('-'); From fb137ef4f3647821056d82acd20951899ae05b7b Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Fri, 13 Sep 2024 17:06:32 -0300 Subject: [PATCH 02/10] fix size field --- lib/pages/pets_page/pets_page_model.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index 2fb76a9c..f976ebf9 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -170,7 +170,9 @@ class PetsPageModel extends FlutterFlowModel { dropDownValue1 == '') { return false; } - if (dropDownValue2 == null) { + if (dropDownValue2 == null || + dropDownValue2!.isEmpty || + dropDownValue2 == '') { return false; } return true; From 4f35d67b02ad9639d35463e9fb74ce430ed595e1 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Fri, 13 Sep 2024 17:11:50 -0300 Subject: [PATCH 03/10] fix reset form --- lib/pages/pets_page/pets_page_model.dart | 5 +++-- lib/pages/pets_page/pets_page_widget.dart | 5 +++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index f976ebf9..43c3842a 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -12,6 +12,7 @@ import '/custom_code/actions/index.dart' as actions; class PetsPageModel extends FlutterFlowModel { late final TabController tabBarController; VoidCallback? onUpdatePet; + VoidCallback? onRegisterPet; ApiCallResponse? petsResponse; int? petId; @@ -209,6 +210,7 @@ class PetsPageModel extends FlutterFlowModel { ptText: 'Pet atualizado com sucesso', )); clearFields(); + onUpdatePet?.call(); switchTab(1); }).catchError((error) { log(error.toString()); @@ -246,7 +248,7 @@ class PetsPageModel extends FlutterFlowModel { ptText: 'Pet cadastrado com sucesso', )); clearFields(); - onUpdatePet?.call(); + onRegisterPet?.call(); }).catchError((error) { DialogUtil.errorDefault(buildContext!); }); @@ -255,7 +257,6 @@ class PetsPageModel extends FlutterFlowModel { void switchTab(int index) { tabBarController.animateTo(index); if (index == 1) handleEditingChanged(false); - onUpdatePet?.call(); } void handleUploadComplete(FFUploadedFile uploadedFile) { diff --git a/lib/pages/pets_page/pets_page_widget.dart b/lib/pages/pets_page/pets_page_widget.dart index 007288cf..982bf251 100644 --- a/lib/pages/pets_page/pets_page_widget.dart +++ b/lib/pages/pets_page/pets_page_widget.dart @@ -60,6 +60,11 @@ class _PetsPageWidgetState extends State _model.tabBarController = TabController(length: 2, vsync: this); _model.onUpdatePet = () { setState(() {}); + Form.of(context).reset(); + }; + _model.onRegisterPet = () { + setState(() {}); + Form.of(context).reset(); }; widget.pet != null ? _model.isEditing = true : _model.isEditing = false; From 3dc941ba4c649f731e86d188a8fcd618f737f535 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Fri, 13 Sep 2024 17:13:58 -0300 Subject: [PATCH 04/10] fix catch error --- lib/pages/pets_page/pets_page_model.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index 43c3842a..1ca4b56e 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -212,7 +212,7 @@ class PetsPageModel extends FlutterFlowModel { clearFields(); onUpdatePet?.call(); switchTab(1); - }).catchError((error) { + }).onError((error, stack) { log(error.toString()); DialogUtil.errorDefault(buildContext!); }); @@ -249,7 +249,7 @@ class PetsPageModel extends FlutterFlowModel { )); clearFields(); onRegisterPet?.call(); - }).catchError((error) { + }).onError((error, stack) { DialogUtil.errorDefault(buildContext!); }); } From ac26e0ddac5a53a35b5bc8bff19cf1790dd10196 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Fri, 13 Sep 2024 17:23:14 -0300 Subject: [PATCH 05/10] WIP --- lib/pages/pets_page/pets_page_model.dart | 31 ++++++++++++++++++------ 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index 1ca4b56e..8f3c3be3 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -270,13 +270,28 @@ class PetsPageModel extends FlutterFlowModel { void clearFields() { uploadedLocalFile = null; - textControllerName.text = ''; - textControllerSpecies.text = ''; - textControllerRace.text = ''; - textControllerColor.text = ''; - textControllerData.text = ''; - textControllerObservation.text = ''; - dropDownValueController1 = FormFieldController(''); - dropDownValueController2 = FormFieldController(''); + textControllerName!.clear(); + textControllerName!.clearComposing(); + + textControllerSpecies!.clear(); + textControllerSpecies!.clearComposing(); + + textControllerRace!.clear(); + textControllerRace!.clearComposing(); + + textControllerColor!.clear(); + textControllerColor!.clearComposing(); + + textControllerData!.clear(); + textControllerData!.clearComposing(); + + textControllerObservation!.clear(); + textControllerObservation!.clearComposing(); + + dropDownValue1 = null; + dropDownValue2 = null; + + dropDownValueController1 = FormFieldController(null); + dropDownValueController2 = FormFieldController(null); } } From 624f00cc1fac747bac496ea68a419aae21aa285c Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Fri, 13 Sep 2024 18:04:35 -0300 Subject: [PATCH 06/10] WIP --- lib/pages/pets_page/pets_history_screen.dart | 10 +++-- lib/pages/pets_page/pets_page_model.dart | 44 +++++++------------- lib/pages/pets_page/pets_page_widget.dart | 11 +++-- 3 files changed, 28 insertions(+), 37 deletions(-) diff --git a/lib/pages/pets_page/pets_history_screen.dart b/lib/pages/pets_page/pets_history_screen.dart index 5697f6b2..53660722 100644 --- a/lib/pages/pets_page/pets_history_screen.dart +++ b/lib/pages/pets_page/pets_history_screen.dart @@ -24,6 +24,7 @@ class _PetsHistoryScreenState extends State final int _pageSize = 10; bool _hasData = false; bool _loading = false; + int count = 0; late Future _petsFuture; List _petsWrap = []; @@ -61,7 +62,8 @@ class _PetsHistoryScreenState extends State page: _pageNumber, ); - final List pets = response.jsonBody['pets'] ?? []; + final List pets = response.jsonBody['pets']['list'] ?? []; + safeSetState(() => count = response.jsonBody['pets']['count'] ?? 0); if (pets != null && pets.isNotEmpty) { setState(() { @@ -95,6 +97,7 @@ class _PetsHistoryScreenState extends State void _loadMore() { if (_hasData == true) { _pageNumber++; + _petsFuture = _fetchVisits(); } } @@ -151,7 +154,7 @@ class _PetsHistoryScreenState extends State AppState().petAmountRegister == 0 ? FFLocalizations.of(context).getVariableText( ptText: "Ilimitado", enText: "Unlimited") - : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}${_petsWrap.length}/${AppState().petAmountRegister}", + : "${FFLocalizations.of(context).getVariableText(ptText: "Quantidade de Pets: ", enText: "Amount of Pets: ")}${count}/${AppState().petAmountRegister}", textAlign: TextAlign.right, ), ); @@ -256,7 +259,8 @@ class _PetsHistoryScreenState extends State safeSetState(() { _pageNumber = 1; _petsWrap = []; - _petsFuture = _fetchVisits(); + _petsFuture = + _fetchVisits().then((value) => value!.jsonBody['pets'] ?? []); }); }).catchError((e, s) { DialogUtil.errorDefault(context); diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index 8f3c3be3..053bef83 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -209,12 +209,8 @@ class PetsPageModel extends FlutterFlowModel { enText: 'Pet successfully updated', ptText: 'Pet atualizado com sucesso', )); - clearFields(); onUpdatePet?.call(); switchTab(1); - }).onError((error, stack) { - log(error.toString()); - DialogUtil.errorDefault(buildContext!); }); } @@ -240,17 +236,15 @@ class PetsPageModel extends FlutterFlowModel { if (response.jsonBody['error'] == true) { DialogUtil.error(buildContext!, jsonDecode(response.jsonBody['error_msg'])[0]['message']); + } else if (response.jsonBody['error'] == false) { + DialogUtil.success( + buildContext!, + FFLocalizations.of(buildContext!).getVariableText( + enText: 'Pet successfully registered', + ptText: 'Pet cadastrado com sucesso', + )); + onRegisterPet?.call(); } - DialogUtil.success( - buildContext!, - FFLocalizations.of(buildContext!).getVariableText( - enText: 'Pet successfully registered', - ptText: 'Pet cadastrado com sucesso', - )); - clearFields(); - onRegisterPet?.call(); - }).onError((error, stack) { - DialogUtil.errorDefault(buildContext!); }); } @@ -270,23 +264,13 @@ class PetsPageModel extends FlutterFlowModel { void clearFields() { uploadedLocalFile = null; - textControllerName!.clear(); - textControllerName!.clearComposing(); - textControllerSpecies!.clear(); - textControllerSpecies!.clearComposing(); - - textControllerRace!.clear(); - textControllerRace!.clearComposing(); - - textControllerColor!.clear(); - textControllerColor!.clearComposing(); - - textControllerData!.clear(); - textControllerData!.clearComposing(); - - textControllerObservation!.clear(); - textControllerObservation!.clearComposing(); + textControllerName?.clear(); + textControllerSpecies?.clear(); + textControllerRace?.clear(); + textControllerColor?.clear(); + textControllerData?.clear(); + textControllerObservation?.clear(); dropDownValue1 = null; dropDownValue2 = null; diff --git a/lib/pages/pets_page/pets_page_widget.dart b/lib/pages/pets_page/pets_page_widget.dart index 982bf251..60e962b0 100644 --- a/lib/pages/pets_page/pets_page_widget.dart +++ b/lib/pages/pets_page/pets_page_widget.dart @@ -59,12 +59,15 @@ class _PetsPageWidgetState extends State _model = PetsPageModel(); _model.tabBarController = TabController(length: 2, vsync: this); _model.onUpdatePet = () { - setState(() {}); - Form.of(context).reset(); + safeSetState(() { + _model.clearFields(); + // _formKey.currentState?.reset(); + }); }; _model.onRegisterPet = () { - setState(() {}); - Form.of(context).reset(); + safeSetState(() { + _model.clearFields(); + }); }; widget.pet != null ? _model.isEditing = true : _model.isEditing = false; From 68fc17890d39df5795833bf635b1889c6cd6d124 Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 16 Sep 2024 08:42:56 -0300 Subject: [PATCH 07/10] WIP --- lib/pages/pets_page/pets_page_model.dart | 21 +++++++++++++++++++-- lib/pages/pets_page/pets_page_widget.dart | 8 ++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index 053bef83..2733e2f2 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -13,6 +13,8 @@ class PetsPageModel extends FlutterFlowModel { late final TabController tabBarController; VoidCallback? onUpdatePet; VoidCallback? onRegisterPet; + final GlobalKey registerFormKey = GlobalKey(); + final GlobalKey updateFormKey = GlobalKey(); ApiCallResponse? petsResponse; int? petId; @@ -234,8 +236,22 @@ class PetsPageModel extends FlutterFlowModel { ) .then((response) { if (response.jsonBody['error'] == true) { - DialogUtil.error(buildContext!, - jsonDecode(response.jsonBody['error_msg'])[0]['message']); + String errorMessage = ''; + try { + errorMessage = jsonDecode(response.jsonBody['error_msg'])[0] + ['message'] + .toString(); + } catch (e) { + errorMessage = 'An error occurred.'; + 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); } else if (response.jsonBody['error'] == false) { DialogUtil.success( buildContext!, @@ -265,6 +281,7 @@ class PetsPageModel extends FlutterFlowModel { void clearFields() { uploadedLocalFile = null; + textControllerName?.clear(); textControllerName?.clear(); textControllerSpecies?.clear(); textControllerRace?.clear(); diff --git a/lib/pages/pets_page/pets_page_widget.dart b/lib/pages/pets_page/pets_page_widget.dart index 60e962b0..cfd74b21 100644 --- a/lib/pages/pets_page/pets_page_widget.dart +++ b/lib/pages/pets_page/pets_page_widget.dart @@ -51,7 +51,6 @@ class PetsPageWidget extends StatefulWidget { class _PetsPageWidgetState extends State with SingleTickerProviderStateMixin { late PetsPageModel _model; - final _formKey = GlobalKey(); @override void initState() { @@ -61,12 +60,13 @@ class _PetsPageWidgetState extends State _model.onUpdatePet = () { safeSetState(() { _model.clearFields(); - // _formKey.currentState?.reset(); + _model.updateFormKey.currentState?.reset(); }); }; _model.onRegisterPet = () { safeSetState(() { _model.clearFields(); + _model.registerFormKey.currentState?.reset(); }); }; @@ -207,7 +207,7 @@ class _PetsPageWidgetState extends State ), ), Form( - key: _formKey, + key: _model.registerFormKey, autovalidateMode: AutovalidateMode.onUserInteraction, child: Column( mainAxisSize: MainAxisSize.max, @@ -665,7 +665,7 @@ class _PetsPageWidgetState extends State ), ), Form( - key: _formKey, + key: _model.updateFormKey, autovalidateMode: AutovalidateMode.onUserInteraction, child: Column( mainAxisSize: MainAxisSize.max, From ef036f7924077b31598e5a8ea7d16e55e3b7e7ba Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 16 Sep 2024 08:43:19 -0300 Subject: [PATCH 08/10] fix catch error --- lib/pages/pets_page/pets_page_widget.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/pages/pets_page/pets_page_widget.dart b/lib/pages/pets_page/pets_page_widget.dart index cfd74b21..963faa14 100644 --- a/lib/pages/pets_page/pets_page_widget.dart +++ b/lib/pages/pets_page/pets_page_widget.dart @@ -60,13 +60,11 @@ class _PetsPageWidgetState extends State _model.onUpdatePet = () { safeSetState(() { _model.clearFields(); - _model.updateFormKey.currentState?.reset(); }); }; _model.onRegisterPet = () { safeSetState(() { _model.clearFields(); - _model.registerFormKey.currentState?.reset(); }); }; From 5d8d56cb708654a6cc1bdd7b373347c1791dd75d Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 16 Sep 2024 09:28:58 -0300 Subject: [PATCH 09/10] fix validate on user interaction --- .../shared_components_atoms/custom_input.dart | 15 ++++++++++----- lib/pages/pets_page/pets_page_model.dart | 3 ++- lib/pages/pets_page/pets_page_widget.dart | 10 ++++++++++ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/components/atomic_components/shared_components_atoms/custom_input.dart b/lib/components/atomic_components/shared_components_atoms/custom_input.dart index d7b724d6..608f60af 100644 --- a/lib/components/atomic_components/shared_components_atoms/custom_input.dart +++ b/lib/components/atomic_components/shared_components_atoms/custom_input.dart @@ -60,11 +60,16 @@ class _CustomInputUtilState extends State { validator: widget.validator, autofocus: widget.autoFocus, focusNode: widget.focusNode, - onChanged: (_) => EasyDebounce.debounce( - '${widget.controller}', - const Duration(milliseconds: 500), - () => setState(() {}), - ), + onChanged: (value) { + EasyDebounce.debounce( + '${widget.controller}', + const Duration(milliseconds: 500), + () => setState(() {}), + ); + if (widget.onChanged != null) { + widget.onChanged!(value); // Chamar o callback + } + }, textInputAction: widget.textInputAction, obscureText: false, decoration: InputDecoration( diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index 2733e2f2..d29b1b7a 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -201,7 +201,8 @@ class PetsPageModel extends FlutterFlowModel { size: dropDownValue2!, ) .then((response) { - if (response.jsonBody['error'] == true) { + if (response.jsonBody['error'] == true || + isFormValid(buildContext!) == false) { DialogUtil.error(buildContext!, jsonDecode(response.jsonBody['error_msg'])[0]['message']); } diff --git a/lib/pages/pets_page/pets_page_widget.dart b/lib/pages/pets_page/pets_page_widget.dart index 963faa14..05cec7dc 100644 --- a/lib/pages/pets_page/pets_page_widget.dart +++ b/lib/pages/pets_page/pets_page_widget.dart @@ -233,6 +233,7 @@ class _PetsPageWidgetState extends State .getVariableText(ptText: 'Nome', enText: 'Name'), suffixIcon: Symbols.format_color_text, haveMaxLength: true, + onChanged: (value) => setState(() {}), maxLength: 80, ), Padding( @@ -249,6 +250,7 @@ class _PetsPageWidgetState extends State enText: 'e.g. Dog, Cat, Parrot'), suffixIcon: Symbols.sound_detection_dog_barking, haveMaxLength: true, + onChanged: (value) => setState(() {}), maxLength: 80, ), ), @@ -266,6 +268,7 @@ class _PetsPageWidgetState extends State enText: 'e.g. Labrador, Poodle, Siamese, Persian'), suffixIcon: Icons.pets_outlined, haveMaxLength: true, + onChanged: (value) => setState(() {}), maxLength: 80, ), ), @@ -283,6 +286,7 @@ class _PetsPageWidgetState extends State enText: 'e.g. Black, Yellow, White'), suffixIcon: Symbols.palette, haveMaxLength: true, + onChanged: (value) => setState(() {}), maxLength: 80, ), ), @@ -620,6 +624,7 @@ class _PetsPageWidgetState extends State enText: 'Write your observations here...'), suffixIcon: Icons.text_fields, haveMaxLength: true, + onChanged: (value) => setState(() {}), maxLength: 250, ), Padding( @@ -691,6 +696,7 @@ class _PetsPageWidgetState extends State .getVariableText(ptText: 'Nome', enText: 'Name'), suffixIcon: Symbols.format_color_text, haveMaxLength: true, + onChanged: (value) => setState(() {}), maxLength: 80, ), Padding( @@ -707,6 +713,7 @@ class _PetsPageWidgetState extends State enText: 'e.g. Dog, Cat, Parrot'), suffixIcon: Symbols.sound_detection_dog_barking, haveMaxLength: true, + onChanged: (value) => setState(() {}), maxLength: 80, ), ), @@ -724,6 +731,7 @@ class _PetsPageWidgetState extends State enText: 'e.g. Labrador, Poodle, Siamese, Persian'), suffixIcon: Icons.pets_outlined, haveMaxLength: true, + onChanged: (value) => setState(() {}), maxLength: 80, ), ), @@ -741,6 +749,7 @@ class _PetsPageWidgetState extends State enText: 'e.g. Black, Yellow, White'), suffixIcon: Symbols.palette, haveMaxLength: true, + onChanged: (value) => setState(() {}), maxLength: 80, ), ), @@ -1081,6 +1090,7 @@ class _PetsPageWidgetState extends State suffixIcon: Icons.text_fields, haveMaxLength: true, maxLength: 250, + onChanged: (value) => setState(() {}), ), Padding( padding: const EdgeInsets.fromLTRB(70, 20, 70, 30), From a9135c5f583a5d269c6c64ce0a40dfa5d68e918f Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Mon, 16 Sep 2024 09:44:48 -0300 Subject: [PATCH 10/10] fix MediaUploadFile and TextFormField validate --- .../media_upload_button.dart | 14 +++++++------- lib/pages/pets_page/pets_page_model.dart | 5 ++++- lib/pages/pets_page/pets_page_widget.dart | 3 +++ 3 files changed, 14 insertions(+), 8 deletions(-) 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 719d4efb..7946e9b7 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 @@ -14,13 +14,13 @@ class MediaUploadButtonUtil extends StatefulWidget { final String labelText; FFUploadedFile? uploadedFiles; - MediaUploadButtonUtil( - {Key? key, - required this.onUploadComplete, - required this.isUploading, - required this.labelText, - this.uploadedFiles}) - : super(key: key); + MediaUploadButtonUtil({ + Key? key, + required this.onUploadComplete, + required this.isUploading, + required this.labelText, + this.uploadedFiles, + }) : super(key: key); @override State createState() => _MediaUploadButtonUtilState(); diff --git a/lib/pages/pets_page/pets_page_model.dart b/lib/pages/pets_page/pets_page_model.dart index d29b1b7a..11963e0e 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -13,6 +13,8 @@ class PetsPageModel extends FlutterFlowModel { late final TabController tabBarController; VoidCallback? onUpdatePet; VoidCallback? onRegisterPet; + VoidCallback? safeSetState; + final GlobalKey registerFormKey = GlobalKey(); final GlobalKey updateFormKey = GlobalKey(); @@ -152,7 +154,7 @@ class PetsPageModel extends FlutterFlowModel { // Validador do formulário bool isFormValid(BuildContext context) { - if (uploadedLocalFile == null) { + if (uploadedLocalFile == null || uploadedLocalFile!.bytes!.isEmpty) { return false; } if (textControllerName.text.isEmpty || @@ -272,6 +274,7 @@ class PetsPageModel extends FlutterFlowModel { void handleUploadComplete(FFUploadedFile uploadedFile) { uploadedLocalFile = uploadedFile; + safeSetState?.call(); } void handleEditingChanged(bool editing) { diff --git a/lib/pages/pets_page/pets_page_widget.dart b/lib/pages/pets_page/pets_page_widget.dart index 05cec7dc..dc5df7df 100644 --- a/lib/pages/pets_page/pets_page_widget.dart +++ b/lib/pages/pets_page/pets_page_widget.dart @@ -67,6 +67,9 @@ class _PetsPageWidgetState extends State _model.clearFields(); }); }; + _model.safeSetState = () { + safeSetState(() {}); + }; widget.pet != null ? _model.isEditing = true : _model.isEditing = false;