diff --git a/lib/config/routes/v2/route_handlers/route_handler_widget.dart b/lib/config/routes/v2/route_handlers/route_handler_widget.dart index 6b578086..e736e60e 100644 --- a/lib/config/routes/v2/route_handlers/route_handler_widget.dart +++ b/lib/config/routes/v2/route_handlers/route_handler_widget.dart @@ -8,8 +8,6 @@ import 'package:reactive_phone_form_field/reactive_phone_form_field.dart'; import 'package:thingsboard_app/config/routes/v2/route_handlers/route_handlers.dart'; import 'package:thingsboard_app/core/auth/login/provider/login_provider.dart'; import 'package:thingsboard_app/generated/l10n.dart'; -import 'package:thingsboard_app/locator.dart'; -import 'package:thingsboard_app/utils/services/overlay_service/i_overlay_service.dart'; class RouteHanlderWidget extends HookConsumerWidget { const RouteHanlderWidget({super.key, required this.child}); @@ -24,19 +22,9 @@ class RouteHanlderWidget extends HookConsumerWidget { return () => disposeHandlers(); }, []); return PopScope( - onPopInvokedWithResult: (didPop, res) async { + onPopInvokedWithResult: (didPop, res) { if (!context.canPop()) { - final confirm = await getIt().showConfirmDialog( - content: - (_) => DialogContent( - title: S.of(context).areYouSureYouWantToExit, - message: S.of(context).confirmToCloseTheApp, - cancel: S.of(context).cancel, - ), - ); - if (confirm == true && context.mounted) { - SystemNavigator.pop(); - } + SystemNavigator.pop(); } }, canPop: false, diff --git a/lib/generated/intl/messages_ar.dart b/lib/generated/intl/messages_ar.dart index b3644083..8e36fac5 100644 --- a/lib/generated/intl/messages_ar.dart +++ b/lib/generated/intl/messages_ar.dart @@ -257,9 +257,6 @@ class MessageLookup extends MessageLookupByLibrary { "applyChanges": MessageLookupByLibrary.simpleMessage("تطبيق التغييرات"), "areYouSure": MessageLookupByLibrary.simpleMessage("هل أنت متأكد؟"), "areYouSureYouWantToDeactivate": m3, - "areYouSureYouWantToExit": MessageLookupByLibrary.simpleMessage( - "هل أنت متأكد أنك تريد الخروج؟", - ), "asset": MessageLookupByLibrary.simpleMessage("الأصل"), "assetName": MessageLookupByLibrary.simpleMessage("اسم الأصل"), "assetProfile": MessageLookupByLibrary.simpleMessage("ملف تعريف الأصل"), @@ -310,9 +307,6 @@ class MessageLookup extends MessageLookupByLibrary { "confirmNotRobotMessage": MessageLookupByLibrary.simpleMessage( "يجب أن تؤكد أنك لست روبوت", ), - "confirmToCloseTheApp": MessageLookupByLibrary.simpleMessage( - "تأكيد لإغلاق التطبيق", - ), "confirmation": MessageLookupByLibrary.simpleMessage("التأكيد"), "confirmingWifiConnection": MessageLookupByLibrary.simpleMessage( "تأكيد اتصال Wi-Fi", diff --git a/lib/generated/intl/messages_da_DK.dart b/lib/generated/intl/messages_da_DK.dart index adfcd533..1a3d06f7 100644 --- a/lib/generated/intl/messages_da_DK.dart +++ b/lib/generated/intl/messages_da_DK.dart @@ -259,9 +259,6 @@ class MessageLookup extends MessageLookupByLibrary { "applyChanges": MessageLookupByLibrary.simpleMessage("Anvend ændringer"), "areYouSure": MessageLookupByLibrary.simpleMessage("Er du sikker?"), "areYouSureYouWantToDeactivate": m3, - "areYouSureYouWantToExit": MessageLookupByLibrary.simpleMessage( - "Er du sikker på, at du vil afslutte?", - ), "asset": MessageLookupByLibrary.simpleMessage("Aktiv"), "assetName": MessageLookupByLibrary.simpleMessage("Aktivnavn"), "assetProfile": MessageLookupByLibrary.simpleMessage("Aktivprofil"), @@ -312,9 +309,6 @@ class MessageLookup extends MessageLookupByLibrary { "confirmNotRobotMessage": MessageLookupByLibrary.simpleMessage( "Du skal bekræfte, at du ikke er en robot", ), - "confirmToCloseTheApp": MessageLookupByLibrary.simpleMessage( - "Bekræft for at lukke appen", - ), "confirmation": MessageLookupByLibrary.simpleMessage("Bekræftelse"), "confirmingWifiConnection": MessageLookupByLibrary.simpleMessage( "Bekræfter Wi-Fi-forbindelse", diff --git a/lib/generated/intl/messages_de_DE.dart b/lib/generated/intl/messages_de_DE.dart index 28ea6bb5..ed7c234b 100644 --- a/lib/generated/intl/messages_de_DE.dart +++ b/lib/generated/intl/messages_de_DE.dart @@ -263,9 +263,6 @@ class MessageLookup extends MessageLookupByLibrary { ), "areYouSure": MessageLookupByLibrary.simpleMessage("Sind Sie sicher?"), "areYouSureYouWantToDeactivate": m3, - "areYouSureYouWantToExit": MessageLookupByLibrary.simpleMessage( - "Möchten Sie wirklich beenden?", - ), "asset": MessageLookupByLibrary.simpleMessage("Asset"), "assetName": MessageLookupByLibrary.simpleMessage("Asset-Name"), "assetProfile": MessageLookupByLibrary.simpleMessage("Asset-Profil"), @@ -320,9 +317,6 @@ class MessageLookup extends MessageLookupByLibrary { "confirmNotRobotMessage": MessageLookupByLibrary.simpleMessage( "Sie müssen bestätigen, dass Sie kein Roboter sind", ), - "confirmToCloseTheApp": MessageLookupByLibrary.simpleMessage( - "Bestätigen Sie, um die App zu schließen", - ), "confirmation": MessageLookupByLibrary.simpleMessage("Bestätigung"), "confirmingWifiConnection": MessageLookupByLibrary.simpleMessage( "WLAN-Verbindung wird bestätigt", diff --git a/lib/generated/intl/messages_el_GR.dart b/lib/generated/intl/messages_el_GR.dart index 92f8cbf8..ff826d5d 100644 --- a/lib/generated/intl/messages_el_GR.dart +++ b/lib/generated/intl/messages_el_GR.dart @@ -271,9 +271,6 @@ class MessageLookup extends MessageLookupByLibrary { "applyChanges": MessageLookupByLibrary.simpleMessage("Εφαρμογή αλλαγών"), "areYouSure": MessageLookupByLibrary.simpleMessage("Είστε σίγουροι;"), "areYouSureYouWantToDeactivate": m3, - "areYouSureYouWantToExit": MessageLookupByLibrary.simpleMessage( - "Είστε σίγουροι ότι θέλετε να βγείτε;", - ), "asset": MessageLookupByLibrary.simpleMessage("Περιουσιακό στοιχείο"), "assetName": MessageLookupByLibrary.simpleMessage( "Όνομα περιουσιακού στοιχείου", @@ -336,9 +333,6 @@ class MessageLookup extends MessageLookupByLibrary { "confirmNotRobotMessage": MessageLookupByLibrary.simpleMessage( "Πρέπει να επιβεβαιώσετε ότι δεν είστε ρομπότ", ), - "confirmToCloseTheApp": MessageLookupByLibrary.simpleMessage( - "Επιβεβαίωση για κλείσιμο της εφαρμογής", - ), "confirmation": MessageLookupByLibrary.simpleMessage("Επιβεβαίωση"), "confirmingWifiConnection": MessageLookupByLibrary.simpleMessage( "Επιβεβαίωση σύνδεσης Wi-Fi", diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index c1bb0354..f36c4182 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -258,9 +258,6 @@ class MessageLookup extends MessageLookupByLibrary { "applyChanges": MessageLookupByLibrary.simpleMessage("Apply changes"), "areYouSure": MessageLookupByLibrary.simpleMessage("Are you sure?"), "areYouSureYouWantToDeactivate": m3, - "areYouSureYouWantToExit": MessageLookupByLibrary.simpleMessage( - "Are you sure you want to exit?", - ), "asset": MessageLookupByLibrary.simpleMessage("Asset"), "assetName": MessageLookupByLibrary.simpleMessage("Asset name"), "assetProfile": MessageLookupByLibrary.simpleMessage("Asset profile"), @@ -313,9 +310,6 @@ class MessageLookup extends MessageLookupByLibrary { "confirmNotRobotMessage": MessageLookupByLibrary.simpleMessage( "You must confirm that you are not a robot", ), - "confirmToCloseTheApp": MessageLookupByLibrary.simpleMessage( - "Confirm to close the app", - ), "confirmation": MessageLookupByLibrary.simpleMessage("Confirmation"), "confirmingWifiConnection": MessageLookupByLibrary.simpleMessage( "Confirming Wi-Fi connection", diff --git a/lib/generated/intl/messages_es_ES.dart b/lib/generated/intl/messages_es_ES.dart index 68a3ad3a..5f2f7304 100644 --- a/lib/generated/intl/messages_es_ES.dart +++ b/lib/generated/intl/messages_es_ES.dart @@ -268,9 +268,6 @@ class MessageLookup extends MessageLookupByLibrary { "applyChanges": MessageLookupByLibrary.simpleMessage("Aplicar cambios"), "areYouSure": MessageLookupByLibrary.simpleMessage("¿Estás seguro?"), "areYouSureYouWantToDeactivate": m3, - "areYouSureYouWantToExit": MessageLookupByLibrary.simpleMessage( - "¿Estás seguro de que quieres salir?", - ), "asset": MessageLookupByLibrary.simpleMessage("Activo"), "assetName": MessageLookupByLibrary.simpleMessage("Nombre del activo"), "assetProfile": MessageLookupByLibrary.simpleMessage("Perfil del activo"), @@ -327,9 +324,6 @@ class MessageLookup extends MessageLookupByLibrary { "confirmNotRobotMessage": MessageLookupByLibrary.simpleMessage( "Debes confirmar que no eres un robot", ), - "confirmToCloseTheApp": MessageLookupByLibrary.simpleMessage( - "Confirmar para cerrar la aplicación", - ), "confirmation": MessageLookupByLibrary.simpleMessage("Confirmación"), "confirmingWifiConnection": MessageLookupByLibrary.simpleMessage( "Confirmando conexión Wi-Fi", diff --git a/lib/generated/intl/messages_fr_FR.dart b/lib/generated/intl/messages_fr_FR.dart index 25a64c73..35d1927d 100644 --- a/lib/generated/intl/messages_fr_FR.dart +++ b/lib/generated/intl/messages_fr_FR.dart @@ -269,9 +269,6 @@ class MessageLookup extends MessageLookupByLibrary { ), "areYouSure": MessageLookupByLibrary.simpleMessage("Êtes-vous sûr ?"), "areYouSureYouWantToDeactivate": m3, - "areYouSureYouWantToExit": MessageLookupByLibrary.simpleMessage( - "Êtes-vous sûr de vouloir quitter ?", - ), "asset": MessageLookupByLibrary.simpleMessage("Actif"), "assetName": MessageLookupByLibrary.simpleMessage("Nom de l\'actif"), "assetProfile": MessageLookupByLibrary.simpleMessage("Profil de l\'actif"), @@ -328,9 +325,6 @@ class MessageLookup extends MessageLookupByLibrary { "confirmNotRobotMessage": MessageLookupByLibrary.simpleMessage( "Vous devez confirmer que vous n\'êtes pas un robot", ), - "confirmToCloseTheApp": MessageLookupByLibrary.simpleMessage( - "Confirmer pour fermer l\'application", - ), "confirmation": MessageLookupByLibrary.simpleMessage("Confirmation"), "confirmingWifiConnection": MessageLookupByLibrary.simpleMessage( "Confirmation de la connexion Wi-Fi", diff --git a/lib/generated/intl/messages_it_IT.dart b/lib/generated/intl/messages_it_IT.dart index 511e103c..d7377033 100644 --- a/lib/generated/intl/messages_it_IT.dart +++ b/lib/generated/intl/messages_it_IT.dart @@ -262,9 +262,6 @@ class MessageLookup extends MessageLookupByLibrary { "applyChanges": MessageLookupByLibrary.simpleMessage("Applica modifiche"), "areYouSure": MessageLookupByLibrary.simpleMessage("Sei sicuro?"), "areYouSureYouWantToDeactivate": m3, - "areYouSureYouWantToExit": MessageLookupByLibrary.simpleMessage( - "Sei sicuro di voler uscire?", - ), "asset": MessageLookupByLibrary.simpleMessage("Asset"), "assetName": MessageLookupByLibrary.simpleMessage("Nome asset"), "assetProfile": MessageLookupByLibrary.simpleMessage("Profilo asset"), @@ -319,9 +316,6 @@ class MessageLookup extends MessageLookupByLibrary { "confirmNotRobotMessage": MessageLookupByLibrary.simpleMessage( "Devi confermare di non essere un robot", ), - "confirmToCloseTheApp": MessageLookupByLibrary.simpleMessage( - "Conferma per chiudere l\'app", - ), "confirmation": MessageLookupByLibrary.simpleMessage("Conferma"), "confirmingWifiConnection": MessageLookupByLibrary.simpleMessage( "Conferma connessione Wi-Fi", diff --git a/lib/generated/intl/messages_nl_NL.dart b/lib/generated/intl/messages_nl_NL.dart index 8afd64c9..fe504e7e 100644 --- a/lib/generated/intl/messages_nl_NL.dart +++ b/lib/generated/intl/messages_nl_NL.dart @@ -261,9 +261,6 @@ class MessageLookup extends MessageLookupByLibrary { ), "areYouSure": MessageLookupByLibrary.simpleMessage("Weet u het zeker?"), "areYouSureYouWantToDeactivate": m3, - "areYouSureYouWantToExit": MessageLookupByLibrary.simpleMessage( - "Weet u zeker dat u wilt afsluiten?", - ), "asset": MessageLookupByLibrary.simpleMessage("Asset"), "assetName": MessageLookupByLibrary.simpleMessage("Assetnaam"), "assetProfile": MessageLookupByLibrary.simpleMessage("Assetprofiel"), @@ -318,9 +315,6 @@ class MessageLookup extends MessageLookupByLibrary { "confirmNotRobotMessage": MessageLookupByLibrary.simpleMessage( "U moet bevestigen dat u geen robot bent", ), - "confirmToCloseTheApp": MessageLookupByLibrary.simpleMessage( - "Bevestig om de app te sluiten", - ), "confirmation": MessageLookupByLibrary.simpleMessage("Bevestiging"), "confirmingWifiConnection": MessageLookupByLibrary.simpleMessage( "Wi-Fi-verbinding bevestigen", diff --git a/lib/generated/intl/messages_no_NO.dart b/lib/generated/intl/messages_no_NO.dart index ee2834e4..d94db3a3 100644 --- a/lib/generated/intl/messages_no_NO.dart +++ b/lib/generated/intl/messages_no_NO.dart @@ -258,9 +258,6 @@ class MessageLookup extends MessageLookupByLibrary { "applyChanges": MessageLookupByLibrary.simpleMessage("Bruk endringer"), "areYouSure": MessageLookupByLibrary.simpleMessage("Er du sikker?"), "areYouSureYouWantToDeactivate": m3, - "areYouSureYouWantToExit": MessageLookupByLibrary.simpleMessage( - "Er du sikker på at du vil avslutte?", - ), "asset": MessageLookupByLibrary.simpleMessage("Eiendel"), "assetName": MessageLookupByLibrary.simpleMessage("Eiendelsnavn"), "assetProfile": MessageLookupByLibrary.simpleMessage("Eiendelsprofil"), @@ -313,9 +310,6 @@ class MessageLookup extends MessageLookupByLibrary { "confirmNotRobotMessage": MessageLookupByLibrary.simpleMessage( "Du må bekrefte at du ikke er en robot", ), - "confirmToCloseTheApp": MessageLookupByLibrary.simpleMessage( - "Bekreft for å lukke appen", - ), "confirmation": MessageLookupByLibrary.simpleMessage("Bekreftelse"), "confirmingWifiConnection": MessageLookupByLibrary.simpleMessage( "Bekrefter Wi-Fi-tilkobling", diff --git a/lib/generated/intl/messages_vi_VN.dart b/lib/generated/intl/messages_vi_VN.dart index 9ead415a..cf543364 100644 --- a/lib/generated/intl/messages_vi_VN.dart +++ b/lib/generated/intl/messages_vi_VN.dart @@ -261,9 +261,6 @@ class MessageLookup extends MessageLookupByLibrary { "applyChanges": MessageLookupByLibrary.simpleMessage("Áp dụng thay đổi"), "areYouSure": MessageLookupByLibrary.simpleMessage("Bạn có chắc chắn?"), "areYouSureYouWantToDeactivate": m3, - "areYouSureYouWantToExit": MessageLookupByLibrary.simpleMessage( - "Bạn có chắc chắn muốn thoát?", - ), "asset": MessageLookupByLibrary.simpleMessage("Tài sản"), "assetName": MessageLookupByLibrary.simpleMessage("Tên tài sản"), "assetProfile": MessageLookupByLibrary.simpleMessage("Hồ sơ tài sản"), @@ -320,9 +317,6 @@ class MessageLookup extends MessageLookupByLibrary { "confirmNotRobotMessage": MessageLookupByLibrary.simpleMessage( "Bạn phải xác nhận rằng bạn không phải là rô bốt", ), - "confirmToCloseTheApp": MessageLookupByLibrary.simpleMessage( - "Xác nhận để đóng ứng dụng", - ), "confirmation": MessageLookupByLibrary.simpleMessage("Xác nhận"), "confirmingWifiConnection": MessageLookupByLibrary.simpleMessage( "Đang xác nhận kết nối Wi-Fi", diff --git a/lib/generated/intl/messages_zh_CN.dart b/lib/generated/intl/messages_zh_CN.dart index 083ce4fb..54efc6e9 100644 --- a/lib/generated/intl/messages_zh_CN.dart +++ b/lib/generated/intl/messages_zh_CN.dart @@ -203,7 +203,6 @@ class MessageLookup extends MessageLookupByLibrary { "applyChanges": MessageLookupByLibrary.simpleMessage("应用更改"), "areYouSure": MessageLookupByLibrary.simpleMessage("您确定吗?"), "areYouSureYouWantToDeactivate": m3, - "areYouSureYouWantToExit": MessageLookupByLibrary.simpleMessage("您确定要退出吗?"), "asset": MessageLookupByLibrary.simpleMessage("资产"), "assetName": MessageLookupByLibrary.simpleMessage("资产名"), "assetProfile": MessageLookupByLibrary.simpleMessage("资产配置文件"), @@ -242,7 +241,6 @@ class MessageLookup extends MessageLookupByLibrary { "confirmNotRobotMessage": MessageLookupByLibrary.simpleMessage( "您必须确认您不是机器人", ), - "confirmToCloseTheApp": MessageLookupByLibrary.simpleMessage("确认关闭应用"), "confirmation": MessageLookupByLibrary.simpleMessage("确认"), "confirmingWifiConnection": MessageLookupByLibrary.simpleMessage( "确认 Wi-Fi 连接", diff --git a/lib/generated/intl/messages_zh_TW.dart b/lib/generated/intl/messages_zh_TW.dart index 47370e21..be2009ab 100644 --- a/lib/generated/intl/messages_zh_TW.dart +++ b/lib/generated/intl/messages_zh_TW.dart @@ -205,7 +205,6 @@ class MessageLookup extends MessageLookupByLibrary { "applyChanges": MessageLookupByLibrary.simpleMessage("套用變更"), "areYouSure": MessageLookupByLibrary.simpleMessage("您確定嗎?"), "areYouSureYouWantToDeactivate": m3, - "areYouSureYouWantToExit": MessageLookupByLibrary.simpleMessage("您確定要退出嗎?"), "asset": MessageLookupByLibrary.simpleMessage("資產"), "assetName": MessageLookupByLibrary.simpleMessage("資產名稱"), "assetProfile": MessageLookupByLibrary.simpleMessage("資產設定檔"), @@ -244,7 +243,6 @@ class MessageLookup extends MessageLookupByLibrary { "confirmNotRobotMessage": MessageLookupByLibrary.simpleMessage( "您必須確認您不是機器人", ), - "confirmToCloseTheApp": MessageLookupByLibrary.simpleMessage("確認關閉應用程式"), "confirmation": MessageLookupByLibrary.simpleMessage("確認"), "confirmingWifiConnection": MessageLookupByLibrary.simpleMessage( "確認 Wi-Fi 連線", diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index be7ac490..41eec96a 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -3238,26 +3238,6 @@ class S { ); } - /// `Are you sure you want to exit?` - String get areYouSureYouWantToExit { - return Intl.message( - 'Are you sure you want to exit?', - name: 'areYouSureYouWantToExit', - desc: '', - args: [], - ); - } - - /// `Confirm to close the app` - String get confirmToCloseTheApp { - return Intl.message( - 'Confirm to close the app', - name: 'confirmToCloseTheApp', - desc: '', - args: [], - ); - } - /// `Saved to platform 'Image gallery'` String get imageSavedToGallery { return Intl.message( diff --git a/lib/l10n/intl_ar.arb b/lib/l10n/intl_ar.arb index c1e1661f..4f47f244 100644 --- a/lib/l10n/intl_ar.arb +++ b/lib/l10n/intl_ar.arb @@ -430,8 +430,6 @@ "phoneIsRequired": "رقم الهاتف مطلوب", "phoneIsInvalid": "رقم الهاتف غير صالح", "addVerificationMethod": "إضافة طريقة تحقق", - "areYouSureYouWantToExit": "هل أنت متأكد أنك تريد الخروج؟", - "confirmToCloseTheApp": "تأكيد لإغلاق التطبيق", "nSelected": "{count} محدد", "@nSelected": { "placeholders": { diff --git a/lib/l10n/intl_da_DK.arb b/lib/l10n/intl_da_DK.arb index 647d3483..6f018b57 100644 --- a/lib/l10n/intl_da_DK.arb +++ b/lib/l10n/intl_da_DK.arb @@ -430,8 +430,6 @@ "phoneIsRequired": "Telefon er påkrævet", "phoneIsInvalid": "Telefonnummer er ugyldigt", "addVerificationMethod": "Tilføj verifikationsmetode", - "areYouSureYouWantToExit": "Er du sikker på, at du vil afslutte?", - "confirmToCloseTheApp": "Bekræft for at lukke appen", "loginNotification": "Log ind på din konto", "nSelected": "{count} valgt", "@nSelected": { diff --git a/lib/l10n/intl_de_DE.arb b/lib/l10n/intl_de_DE.arb index 9aac0596..82c5b99c 100644 --- a/lib/l10n/intl_de_DE.arb +++ b/lib/l10n/intl_de_DE.arb @@ -430,8 +430,6 @@ "phoneIsRequired": "Telefon ist erforderlich", "phoneIsInvalid": "Telefonnummer ist ungültig", "addVerificationMethod": "Verifizierungsmethode hinzufügen", - "areYouSureYouWantToExit": "Möchten Sie wirklich beenden?", - "confirmToCloseTheApp": "Bestätigen Sie, um die App zu schließen", "loginNotification": "Melden Sie sich bei Ihrem Konto an", "nSelected": "{count} ausgewählt", "@nSelected": { diff --git a/lib/l10n/intl_el_GR.arb b/lib/l10n/intl_el_GR.arb index ac35889d..f834c6af 100644 --- a/lib/l10n/intl_el_GR.arb +++ b/lib/l10n/intl_el_GR.arb @@ -430,8 +430,6 @@ "phoneIsRequired": "Το τηλέφωνο είναι υποχρεωτικό", "phoneIsInvalid": "Ο αριθμός τηλεφώνου δεν είναι έγκυρος", "addVerificationMethod": "Προσθήκη μεθόδου επαλήθευσης", - "areYouSureYouWantToExit": "Είστε σίγουροι ότι θέλετε να βγείτε;", - "confirmToCloseTheApp": "Επιβεβαίωση για κλείσιμο της εφαρμογής", "loginNotification": "Συνδεθείτε στον λογαριασμό σας", "nSelected": "{count} επιλεγμένα", "@nSelected": { diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 538ef625..66612d92 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -436,8 +436,6 @@ "phoneIsRequired": "Phone is required", "phoneIsInvalid": "Phone is invalid", "addVerificationMethod": "Add verification method", - "areYouSureYouWantToExit": "Are you sure you want to exit?", - "confirmToCloseTheApp": "Confirm to close the app", "imageSavedToGallery": "Saved to platform 'Image gallery'", "failedToSaveImage": "Failed to save image", "nSelected": "{count} selected", diff --git a/lib/l10n/intl_es_ES.arb b/lib/l10n/intl_es_ES.arb index aaf0bbaf..dc68756a 100644 --- a/lib/l10n/intl_es_ES.arb +++ b/lib/l10n/intl_es_ES.arb @@ -430,8 +430,6 @@ "phoneIsRequired": "El teléfono es obligatorio", "phoneIsInvalid": "El número de teléfono no es válido", "addVerificationMethod": "Añadir método de verificación", - "areYouSureYouWantToExit": "¿Estás seguro de que quieres salir?", - "confirmToCloseTheApp": "Confirmar para cerrar la aplicación", "loginNotification": "Inicia sesión en tu cuenta", "nSelected": "{count} seleccionados", "@nSelected": { diff --git a/lib/l10n/intl_fr_FR.arb b/lib/l10n/intl_fr_FR.arb index 12fa2719..e74367a5 100644 --- a/lib/l10n/intl_fr_FR.arb +++ b/lib/l10n/intl_fr_FR.arb @@ -430,8 +430,6 @@ "phoneIsRequired": "Le téléphone est requis", "phoneIsInvalid": "Le numéro de téléphone est invalide", "addVerificationMethod": "Ajouter une méthode de vérification", - "areYouSureYouWantToExit": "Êtes-vous sûr de vouloir quitter ?", - "confirmToCloseTheApp": "Confirmer pour fermer l'application", "loginNotification": "Connectez-vous à votre compte", "nSelected": "{count} sélectionnés", "@nSelected": { diff --git a/lib/l10n/intl_it_IT.arb b/lib/l10n/intl_it_IT.arb index 58726192..f0931b54 100644 --- a/lib/l10n/intl_it_IT.arb +++ b/lib/l10n/intl_it_IT.arb @@ -430,8 +430,6 @@ "phoneIsRequired": "Il telefono è obbligatorio", "phoneIsInvalid": "Il numero di telefono non è valido", "addVerificationMethod": "Aggiungi metodo di verifica", - "areYouSureYouWantToExit": "Sei sicuro di voler uscire?", - "confirmToCloseTheApp": "Conferma per chiudere l'app", "loginNotification": "Accedi al tuo account", "nSelected": "{count} selezionati", "@nSelected": { diff --git a/lib/l10n/intl_nl_NL.arb b/lib/l10n/intl_nl_NL.arb index e35c7566..2d258526 100644 --- a/lib/l10n/intl_nl_NL.arb +++ b/lib/l10n/intl_nl_NL.arb @@ -430,8 +430,6 @@ "phoneIsRequired": "Telefoon is verplicht", "phoneIsInvalid": "Telefoonnummer is ongeldig", "addVerificationMethod": "Verificatiemethode toevoegen", - "areYouSureYouWantToExit": "Weet u zeker dat u wilt afsluiten?", - "confirmToCloseTheApp": "Bevestig om de app te sluiten", "loginNotification": "Log in op uw account", "nSelected": "{count} geselecteerd", "@nSelected": { diff --git a/lib/l10n/intl_no_NO.arb b/lib/l10n/intl_no_NO.arb index c61990fb..bf138985 100644 --- a/lib/l10n/intl_no_NO.arb +++ b/lib/l10n/intl_no_NO.arb @@ -430,8 +430,6 @@ "phoneIsRequired": "Telefon er påkrevd", "phoneIsInvalid": "Telefonnummer er ugyldig", "addVerificationMethod": "Legg til verifiseringsmetode", - "areYouSureYouWantToExit": "Er du sikker på at du vil avslutte?", - "confirmToCloseTheApp": "Bekreft for å lukke appen", "loginNotification": "Logg inn på kontoen din", "nSelected": "{count} valgt", "@nSelected": { diff --git a/lib/l10n/intl_vi_VN.arb b/lib/l10n/intl_vi_VN.arb index 28e7893c..616e478e 100644 --- a/lib/l10n/intl_vi_VN.arb +++ b/lib/l10n/intl_vi_VN.arb @@ -430,8 +430,6 @@ "phoneIsRequired": "Vui lòng nhập số điện thoại", "phoneIsInvalid": "Số điện thoại không hợp lệ", "addVerificationMethod": "Thêm phương thức xác minh", - "areYouSureYouWantToExit": "Bạn có chắc chắn muốn thoát?", - "confirmToCloseTheApp": "Xác nhận để đóng ứng dụng", "nSelected": "{count} đã chọn", "@nSelected": { "placeholders": { diff --git a/lib/l10n/intl_zh_CN.arb b/lib/l10n/intl_zh_CN.arb index fcd11e27..8817d406 100644 --- a/lib/l10n/intl_zh_CN.arb +++ b/lib/l10n/intl_zh_CN.arb @@ -430,8 +430,6 @@ "phoneIsRequired": "手机号码是必填项", "phoneIsInvalid": "手机号码无效", "addVerificationMethod": "添加验证方式", - "areYouSureYouWantToExit": "您确定要退出吗?", - "confirmToCloseTheApp": "确认关闭应用", "nSelected": "已选择 {count} 项", "@nSelected": { "placeholders": { diff --git a/lib/l10n/intl_zh_TW.arb b/lib/l10n/intl_zh_TW.arb index df44ca19..179cff1b 100644 --- a/lib/l10n/intl_zh_TW.arb +++ b/lib/l10n/intl_zh_TW.arb @@ -430,8 +430,6 @@ "phoneIsRequired": "手機號碼為必填項目", "phoneIsInvalid": "手機號碼無效", "addVerificationMethod": "新增驗證方式", - "areYouSureYouWantToExit": "您確定要退出嗎?", - "confirmToCloseTheApp": "確認關閉應用程式", "nSelected": "已選擇 {count} 項", "@nSelected": { "placeholders": { diff --git a/lib/modules/dashboard/main_dashboard_page.dart b/lib/modules/dashboard/main_dashboard_page.dart index 5b0bc481..d6e371e4 100644 --- a/lib/modules/dashboard/main_dashboard_page.dart +++ b/lib/modules/dashboard/main_dashboard_page.dart @@ -3,6 +3,7 @@ import 'package:thingsboard_app/config/themes/tb_text_styles.dart'; import 'package:thingsboard_app/locator.dart'; import 'package:thingsboard_app/modules/dashboard/presentation/controller/dashboard_controller.dart'; import 'package:thingsboard_app/modules/dashboard/presentation/controller/dashboard_page_controller.dart'; +import 'package:thingsboard_app/modules/dashboard/presentation/widgets/dashboard_back_handler.dart'; import 'package:thingsboard_app/modules/dashboard/presentation/widgets/dashboard_widget.dart'; import 'package:thingsboard_app/utils/services/endpoint/i_endpoint_service.dart'; import 'package:thingsboard_app/widgets/tb_app_bar.dart'; @@ -27,6 +28,15 @@ class _MainDashboardPageState extends State DashboardController? _dashboardController; ValueNotifier? _dashboardLoadingCtrl; + Future _handleBack() async { + if (await DashboardBackHandler.tryNavigateBack(_dashboardController)) { + return; + } + await widget.controller.closeDashboard(); + if (!mounted) return; + _dashboardLoadingCtrl?.value = true; + } + @override Widget build(BuildContext context) { return ValueListenableBuilder( @@ -36,21 +46,7 @@ class _MainDashboardPageState extends State appBar: TbAppBar( leading: IconButton( icon: const Icon(Icons.arrow_back), - onPressed: () async { - if (_dashboardController?.rightLayoutOpened.value == true) { - await _dashboardController?.toggleRightLayout(); - return; - } - - final controller = _dashboardController?.controller; - if (await controller?.canGoBack() == true) { - await controller?.goBack(); - } else { - widget.controller.closeDashboard().then( - (_) => _dashboardLoadingCtrl?.value = true, - ); - } - }, + onPressed: _handleBack, ), elevation: 1, shadowColor: Colors.transparent, @@ -75,35 +71,45 @@ class _MainDashboardPageState extends State ), ], ), - body: ValueListenableBuilder( - valueListenable: getIt().listenEndpointChanges, - builder: (context, value, _) { - return SafeArea( - bottom: false, - child: DashboardWidget( - titleCallback: (title) { - dashboardTitleValue.value = title; - }, - pageController: widget.controller, - controllerCallback: (controller, loadingCtrl) { - _dashboardController = controller; - _dashboardLoadingCtrl = loadingCtrl; - widget.controller.setDashboardController(controller); - - controller.hasRightLayout.addListener(() { - hasRightLayout.value = controller.hasRightLayout.value; - }); - controller.rightLayoutOpened.addListener(() { - if (controller.rightLayoutOpened.value) { - rightLayoutMenuController.forward(); - } else { - rightLayoutMenuController.reverse(); - } - }); - }, - ), + body: ValueListenableBuilder( + valueListenable: widget.controller.pageCtrl.currentIndex, + builder: (context, pageIndex, child) { + return DashboardBackHandler( + enabled: pageIndex == 1, + onBack: _handleBack, + child: child!, ); }, + child: ValueListenableBuilder( + valueListenable: getIt().listenEndpointChanges, + builder: (context, value, _) { + return SafeArea( + bottom: false, + child: DashboardWidget( + titleCallback: (title) { + dashboardTitleValue.value = title; + }, + pageController: widget.controller, + controllerCallback: (controller, loadingCtrl) { + _dashboardController = controller; + _dashboardLoadingCtrl = loadingCtrl; + widget.controller.setDashboardController(controller); + + controller.hasRightLayout.addListener(() { + hasRightLayout.value = controller.hasRightLayout.value; + }); + controller.rightLayoutOpened.addListener(() { + if (controller.rightLayoutOpened.value) { + rightLayoutMenuController.forward(); + } else { + rightLayoutMenuController.reverse(); + } + }); + }, + ), + ); + }, + ), ), ); }, diff --git a/lib/modules/dashboard/presentation/view/dashboards_page.dart b/lib/modules/dashboard/presentation/view/dashboards_page.dart index ac7583df..b2de6540 100644 --- a/lib/modules/dashboard/presentation/view/dashboards_page.dart +++ b/lib/modules/dashboard/presentation/view/dashboards_page.dart @@ -43,6 +43,7 @@ class _DashboardsPageState extends State { @override void dispose() { DashboardsDi.dispose(diKey); + pageViewCtrl.dispose(); super.dispose(); } } diff --git a/lib/modules/dashboard/presentation/view/fullscreen_dashboard_page.dart b/lib/modules/dashboard/presentation/view/fullscreen_dashboard_page.dart index 86c03d2c..186f6261 100644 --- a/lib/modules/dashboard/presentation/view/fullscreen_dashboard_page.dart +++ b/lib/modules/dashboard/presentation/view/fullscreen_dashboard_page.dart @@ -1,8 +1,10 @@ import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; import 'package:thingsboard_app/config/routes/router.dart'; import 'package:thingsboard_app/locator.dart'; import 'package:thingsboard_app/modules/dashboard/di/dashboards_di.dart'; import 'package:thingsboard_app/modules/dashboard/presentation/controller/dashboard_controller.dart'; +import 'package:thingsboard_app/modules/dashboard/presentation/widgets/dashboard_back_handler.dart'; import 'package:thingsboard_app/modules/dashboard/presentation/widgets/dashboard_widget.dart'; import 'package:thingsboard_app/utils/services/endpoint/i_endpoint_service.dart'; import 'package:thingsboard_app/utils/services/tb_client_service/i_tb_client_service.dart'; @@ -38,17 +40,7 @@ class _FullscreenDashboardPageState extends State { return TbAppBar( leading: IconButton( icon: const Icon(Icons.arrow_back), - onPressed: () async { - if (_dashboardController?.rightLayoutOpened.value == true) { - await _dashboardController?.toggleRightLayout(); - return; - } - - final controller = _dashboardController?.controller; - if (await controller?.canGoBack() == true) { - await controller?.goBack(); - } - }, + onPressed: _handleBack, ), elevation: 1, shadowColor: Colors.transparent, @@ -77,9 +69,11 @@ class _FullscreenDashboardPageState extends State { }, ), ), - body: ValueListenableBuilder( - valueListenable: getIt().listenEndpointChanges, - builder: + body: DashboardBackHandler( + onBack: _handleBack, + child: ValueListenableBuilder( + valueListenable: getIt().listenEndpointChanges, + builder: (context, _, _) => DashboardWidget( titleCallback: (title) { dashboardTitleValue.value = title; @@ -96,6 +90,7 @@ class _FullscreenDashboardPageState extends State { ); }, ), + ), ), ); } @@ -119,4 +114,13 @@ class _FullscreenDashboardPageState extends State { void _onCanGoBack(bool canGoBack) { showBackValue.value = canGoBack; } + + Future _handleBack() async { + if (await DashboardBackHandler.tryNavigateBack(_dashboardController)) { + return; + } + if (mounted && context.canPop()) { + Navigator.of(context).pop(); + } + } } diff --git a/lib/modules/dashboard/presentation/view/home_dashboard_page.dart b/lib/modules/dashboard/presentation/view/home_dashboard_page.dart index 69d2ea31..48042015 100644 --- a/lib/modules/dashboard/presentation/view/home_dashboard_page.dart +++ b/lib/modules/dashboard/presentation/view/home_dashboard_page.dart @@ -1,7 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:thingsboard_app/locator.dart'; import 'package:thingsboard_app/modules/dashboard/di/dashboards_di.dart'; import 'package:thingsboard_app/modules/dashboard/presentation/controller/dashboard_controller.dart'; +import 'package:thingsboard_app/modules/dashboard/presentation/widgets/dashboard_back_handler.dart'; import 'package:thingsboard_app/modules/dashboard/presentation/widgets/dashboard_widget.dart'; import 'package:thingsboard_app/modules/dashboard/presentation/widgets/dashboards_appbar.dart'; import 'package:thingsboard_app/thingsboard_client.dart'; @@ -37,6 +39,13 @@ class _HomeDashboardState extends State { late final home = '${getIt().getCachedEndpoint()}/dashboards/${widget.dashboard.dashboardId!}${widget.dashboard.hideDashboardToolbar ? '?hideToolbar=true' : ''}'; + Future _handleBack() async { + if (await DashboardBackHandler.tryNavigateBack(_dashboardController)) { + return; + } + await SystemNavigator.pop(); + } + @override Widget build(BuildContext context) { return ValueListenableBuilder( @@ -46,51 +55,43 @@ class _HomeDashboardState extends State { value ? IconButton( icon: const Icon(Icons.arrow_back), - onPressed: () async { - if (_dashboardController?.rightLayoutOpened.value == - true) { - await _dashboardController?.toggleRightLayout(); - return; - } - - final controller = _dashboardController?.controller; - if (await controller?.canGoBack() == true) { - await controller?.goBack(); - } - }, + onPressed: _handleBack, ) : null, dashboardState: true, - body: DashboardWidget( - onUrlChanged: () async { - final url = await _dashboardController?.controller?.getUrl(); - if (url.toString() == home) { - canGoback.value = false; - return; - } - final newVal = - await _dashboardController?.controller?.canGoBack() ?? false; - canGoback.value = newVal; - }, - controllerCallback: (controller, loadingCtrl) async { - _dashboardController = controller; + body: DashboardBackHandler( + onBack: _handleBack, + child: DashboardWidget( + onUrlChanged: () async { + final url = await _dashboardController?.controller?.getUrl(); + if (url.toString() == home) { + canGoback.value = false; + return; + } + final newVal = + await _dashboardController?.controller?.canGoBack() ?? false; + canGoback.value = newVal; + }, + controllerCallback: (controller, loadingCtrl) async { + _dashboardController = controller; - if (_loaded) { - final canGoBack = - await _dashboardController?.controller?.canGoBack(); - canGoback.value = canGoBack ?? false; - return; - } - await controller.openDashboard( - widget.dashboard.dashboardId!.id!, - hideToolbar: widget.dashboard.hideDashboardToolbar, - ); + if (_loaded) { + final canGoBack = + await _dashboardController?.controller?.canGoBack(); + canGoback.value = canGoBack ?? false; + return; + } + await controller.openDashboard( + widget.dashboard.dashboardId!.id!, + hideToolbar: widget.dashboard.hideDashboardToolbar, + ); - setState(() { - _loaded = true; - }); - }, + setState(() { + _loaded = true; + }); + }, + ), ), ); }, diff --git a/lib/modules/dashboard/presentation/view/single_dashboard_view.dart b/lib/modules/dashboard/presentation/view/single_dashboard_view.dart index 06ca6022..506d3304 100644 --- a/lib/modules/dashboard/presentation/view/single_dashboard_view.dart +++ b/lib/modules/dashboard/presentation/view/single_dashboard_view.dart @@ -3,6 +3,7 @@ import 'package:go_router/go_router.dart'; import 'package:thingsboard_app/locator.dart'; import 'package:thingsboard_app/modules/dashboard/di/dashboards_di.dart'; import 'package:thingsboard_app/modules/dashboard/presentation/controller/dashboard_controller.dart'; +import 'package:thingsboard_app/modules/dashboard/presentation/widgets/dashboard_back_handler.dart'; import 'package:thingsboard_app/modules/dashboard/presentation/widgets/dashboard_widget.dart'; import 'package:thingsboard_app/utils/services/tb_client_service/i_tb_client_service.dart'; import 'package:thingsboard_app/widgets/tb_app_bar.dart'; @@ -43,20 +44,7 @@ class _SingleDashboardViewState extends State leading: context.canPop() ? IconButton( icon: const Icon(Icons.arrow_back), - onPressed: () async { - if (_dashboardController?.rightLayoutOpened.value == true) { - await _dashboardController?.toggleRightLayout(); - return; - } - final controller = _dashboardController?.controller; - if (await controller?.canGoBack() == true) { - await controller?.goBack(); - } else { - if (context.mounted) { - Navigator.of(context).pop(); - } - } - }, + onPressed: _handleBack, ) : null, elevation: 1, @@ -87,41 +75,53 @@ class _SingleDashboardViewState extends State ], canGoBack: canGoBack, ), - body: SafeArea( - child: DashboardWidget( - titleCallback: (title) { - dashboardTitleValue.value = widget.title ?? title; - }, - controllerCallback: (controller, _) { - _dashboardController = controller; - controller.hasRightLayout.addListener(() { - hasRightLayout.value = controller.hasRightLayout.value; - }); - controller.rightLayoutOpened.addListener(() { - if (controller.rightLayoutOpened.value) { - rightLayoutMenuController.forward(); - } else { - rightLayoutMenuController.reverse(); - } - }); + body: DashboardBackHandler( + onBack: _handleBack, + child: SafeArea( + child: DashboardWidget( + titleCallback: (title) { + dashboardTitleValue.value = widget.title ?? title; + }, + controllerCallback: (controller, _) { + _dashboardController = controller; + controller.hasRightLayout.addListener(() { + hasRightLayout.value = controller.hasRightLayout.value; + }); + controller.rightLayoutOpened.addListener(() { + if (controller.rightLayoutOpened.value) { + rightLayoutMenuController.forward(); + } else { + rightLayoutMenuController.reverse(); + } + }); - controller.canGoBack.addListener(() { - setState(() { - canGoBack = controller.canGoBack.value; + controller.canGoBack.addListener(() { + setState(() { + canGoBack = controller.canGoBack.value; + }); }); - }); - controller.openDashboard( - widget.id, - state: widget.state, - hideToolbar: widget.hideToolbar, - ); - }, + controller.openDashboard( + widget.id, + state: widget.state, + hideToolbar: widget.hideToolbar, + ); + }, + ), ), ), ); } + Future _handleBack() async { + if (await DashboardBackHandler.tryNavigateBack(_dashboardController)) { + return; + } + if (mounted && context.canPop()) { + Navigator.of(context).pop(); + } + } + @override void initState() { super.initState(); diff --git a/lib/modules/dashboard/presentation/widgets/dashboard_back_handler.dart b/lib/modules/dashboard/presentation/widgets/dashboard_back_handler.dart new file mode 100644 index 00000000..8593d957 --- /dev/null +++ b/lib/modules/dashboard/presentation/widgets/dashboard_back_handler.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; +import 'package:thingsboard_app/modules/dashboard/presentation/controller/dashboard_controller.dart'; + +class DashboardBackHandler extends StatelessWidget { + const DashboardBackHandler({ + required this.onBack, + required this.child, + this.enabled = true, + super.key, + }); + + final Future Function() onBack; + final Widget child; + final bool enabled; + + static Future tryNavigateBack(DashboardController? controller) async { + if (controller == null) return false; + if (controller.rightLayoutOpened.value) { + await controller.toggleRightLayout(); + return true; + } + final web = controller.controller; + if (web != null && await web.canGoBack()) { + await web.goBack(); + return true; + } + return false; + } + + @override + Widget build(BuildContext context) { + return PopScope( + canPop: !enabled, + onPopInvokedWithResult: (didPop, _) async { + if (didPop) return; + await onBack(); + }, + child: child, + ); + } +} diff --git a/lib/modules/main/navigation_page.dart b/lib/modules/main/navigation_page.dart index c031f433..060cb605 100644 --- a/lib/modules/main/navigation_page.dart +++ b/lib/modules/main/navigation_page.dart @@ -4,7 +4,6 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:thingsboard_app/constants/app_constants.dart'; -import 'package:thingsboard_app/generated/l10n.dart'; import 'package:thingsboard_app/locator.dart'; import 'package:thingsboard_app/modules/main/model/main_navigation_item.dart'; import 'package:thingsboard_app/modules/main/model/navigation_type.dart'; @@ -13,7 +12,6 @@ import 'package:thingsboard_app/modules/main/providers/navigation_provider.dart' import 'package:thingsboard_app/modules/main/widgets/navigation_badge_widget.dart'; import 'package:thingsboard_app/modules/main/widgets/tb_navigation_bar_widget.dart'; import 'package:thingsboard_app/utils/services/notification_service.dart'; -import 'package:thingsboard_app/utils/services/overlay_service/i_overlay_service.dart'; class NavigationPage extends HookConsumerWidget { const NavigationPage({super.key, required this.child}); @@ -52,22 +50,12 @@ class NavigationPage extends HookConsumerWidget { }, [GoRouterState.of(context).uri, items]); return PopScope( - onPopInvokedWithResult: (didPop, res) async { + onPopInvokedWithResult: (didPop, res) { if (!context.canPop()) { if (currentIndex.value != 0) { return context.pushReplacement(items.first.path); } - final confirm = await getIt().showConfirmDialog( - content: - (_) => DialogContent( - title: 'Are you sure you want te exit?', - message: 'Confirm to close the app', - cancel: S.of(context).cancel, - ), - ); - if (confirm == true && context.mounted) { - SystemNavigator.pop(); - } + SystemNavigator.pop(); } }, canPop: false, diff --git a/lib/widgets/two_page_view.dart b/lib/widgets/two_page_view.dart index 78b21a81..5682b63a 100644 --- a/lib/widgets/two_page_view.dart +++ b/lib/widgets/two_page_view.dart @@ -1,8 +1,12 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; import 'package:preload_page_view/preload_page_view.dart'; class TwoPageViewController { _TwoPageViewState? _state; + final ValueNotifier _currentIndex = ValueNotifier(0); + + ValueListenable get currentIndex => _currentIndex; void setTransitionIndexedStackState(_TwoPageViewState state) { _state = state; @@ -23,6 +27,10 @@ class TwoPageViewController { } int? get index => _state?._selectedIndex; + + void dispose() { + _currentIndex.dispose(); + } } class TwoPageView extends StatefulWidget { @@ -65,6 +73,7 @@ class _TwoPageViewState extends State { Future _open(int index, {bool animate = true}) async { if (_selectedIndex != index) { _selectedIndex = index; + widget.controller?._currentIndex.value = _selectedIndex; if (index == 0) { setState(() { _reverse = true; @@ -83,6 +92,7 @@ class _TwoPageViewState extends State { Future _close(int index, {bool animate = true}) async { if (_selectedIndex == index) { _selectedIndex = index == 1 ? 0 : 1; + widget.controller?._currentIndex.value = _selectedIndex; await _pageController.animateToPage( _selectedIndex, duration: widget.duration, @@ -111,6 +121,7 @@ class _TwoPageViewState extends State { reverse: _reverse, onPageChanged: (int position) { _selectedIndex = position; + widget.controller?._currentIndex.value = _selectedIndex; }, preloadPagesCount: 2, controller: _pageController,