From ce6e0b4950ff5d973bf90bddb36302b20f191afb Mon Sep 17 00:00:00 2001 From: "J. A. Messias" Date: Tue, 12 Nov 2024 12:55:51 -0300 Subject: [PATCH] fix: late initialization in pets and selection local bug --- ..._arrow_linked_locals_component_widget.dart | 8 +++-- lib/pages/pets_page/pets_history_screen.dart | 34 ++++--------------- lib/pages/pets_page/pets_page_model.dart | 20 ++++++----- lib/pages/pets_page/pets_page_widget.dart | 1 + .../localization/localization_service.dart | 13 ++++--- 5 files changed, 33 insertions(+), 43 deletions(-) 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 0c68525e..1fd0f164 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 @@ -14,8 +14,8 @@ import '/backend/api_requests/api_calls.dart'; import '/flutter_flow/flutter_flow_theme.dart'; class BottomArrowLinkedLocalsComponentWidget extends StatefulWidget { - const BottomArrowLinkedLocalsComponentWidget({super.key, required this.response}); - final ApiCallResponse? response; + BottomArrowLinkedLocalsComponentWidget({super.key, required this.response}); + ApiCallResponse? response; @override State createState() => _BottomArrowLinkedLocalsComponentWidgetState(); @@ -72,6 +72,7 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State _fetchLocals() async { try { setState(() => _loading = true); + widget.response = await PhpGroup.getLocalsCall.call(); final bool isError = widget.response?.jsonBody['error']; if (isError) { @@ -198,7 +199,8 @@ class _BottomArrowLinkedLocalsComponentWidgetState extends State with TickerProvid @override void initState() { super.initState(); - - _petsFuture = _fetchVisits(); - + _petsFuture = _fetch(); _scrollController = ScrollController() ..addListener(() { if (_scrollController.position.atEdge && _scrollController.position.pixels != 0) { @@ -51,7 +48,7 @@ class _PetsHistoryScreenState extends State with TickerProvid super.dispose(); } - Future _fetchVisits() async { + Future _fetch() async { try { setState(() => _loading = true); @@ -96,7 +93,7 @@ class _PetsHistoryScreenState extends State with TickerProvid if (_hasData == true) { _pageNumber++; - _petsFuture = _fetchVisits(); + _petsFuture = _fetch(); } } @@ -152,27 +149,10 @@ class _PetsHistoryScreenState extends State with TickerProvid shrinkWrap: true, physics: const BouncingScrollPhysics(), controller: _scrollController, - itemCount: _petsWrap.length + 1, + itemCount: _petsWrap.length, 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); - } + final item = _petsWrap[index]; + return _item(context, item); }); }, )), @@ -274,7 +254,7 @@ class _PetsHistoryScreenState extends State with TickerProvid safeSetState(() { _pageNumber = 1; _petsWrap = []; - _petsFuture = _fetchVisits().then((value) => value!.jsonBody['pets'] ?? []); + _petsFuture = _fetch().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 fd717e00..53d8cda3 100644 --- a/lib/pages/pets_page/pets_page_model.dart +++ b/lib/pages/pets_page/pets_page_model.dart @@ -20,10 +20,10 @@ import 'package:hub/shared/utils/limited_text_size.dart'; import 'package:hub/shared/utils/validator_util.dart'; class PetsPageModel extends FlutterFlowModel { - late final String devUUID; - late final String userUUID; - late final String cliUUID; - late final String petAmountRegister; + late String devUUID = ''; + late String userUUID = ''; + late String cliUUID = ''; + late String petAmountRegister = '0'; dynamic item; late final TabController tabBarController; @@ -111,13 +111,17 @@ class PetsPageModel extends FlutterFlowModel { ); dropDownValueController1 = FormFieldController(dropDownValue1 ??= defaultDropDownText); dropDownValueController2 = FormFieldController(dropDownValue2 ??= defaultDropDownText); + log('() => ): $devUUID'); - 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)) ?? ''; + 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(); + log('() => ): $devUUID'); } @override diff --git a/lib/pages/pets_page/pets_page_widget.dart b/lib/pages/pets_page/pets_page_widget.dart index 2f238004..f3055279 100644 --- a/lib/pages/pets_page/pets_page_widget.dart +++ b/lib/pages/pets_page/pets_page_widget.dart @@ -35,6 +35,7 @@ class _PetsPageWidgetState extends State with SingleTickerProvid void initState() { super.initState(); _model = createModel(context, () => PetsPageModel()); + _model.updateOnChange = true; _model.onUpdatePet = () { diff --git a/lib/shared/services/localization/localization_service.dart b/lib/shared/services/localization/localization_service.dart index e8c44c87..48c92848 100644 --- a/lib/shared/services/localization/localization_service.dart +++ b/lib/shared/services/localization/localization_service.dart @@ -131,19 +131,23 @@ class LocalizationService { static Future processData(BuildContext context) async { try { final GetDadosCall callback = PhpGroup.getDadosCall; - var response = await callback.call(); + ApiCallResponse? response = await callback.call(); final bool? isError = response.jsonBody['error']; - if (isError == true || isError == 'true') { + if (isError == true) { + final GetLocalsCall callback = PhpGroup.getLocalsCall; + response = await callback.call(); final String errorMsg = response.jsonBody['error_msg']; - DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, response)); + await DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, response)); return false; } else if (response.jsonBody == null) { + final GetLocalsCall callback = PhpGroup.getLocalsCall; + response = await callback.call(); final String errorMsg = FFLocalizations.of(context).getVariableText( enText: 'Verify your connection', ptText: 'Verifique sua conexão', ); - DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, response)); + await DialogUtil.error(context, errorMsg).whenComplete(() => selectLocal(context, response)); return false; } else { await _updateStorageUtil(response.jsonBody); @@ -337,4 +341,3 @@ class LocalizationService { await StorageHelper().set(SQLiteStorageKey.userName.value, jsonBody['visitado']['VDO_NOME'], Storage.SQLiteStorage); } } -