firebase / FirebaseUI-Flutter

Apache License 2.0
92 stars 79 forks source link

🐛 'Cancel' and 'Delete' actions of `showDeleteConfirmationDialog` pop the current view #212

Closed tahamaddam closed 1 month ago

tahamaddam commented 6 months ago

Is there an existing issue for this?

What plugin is this bug for?

Firebase UI Auth

What platform(s) does this bug affect?

Android, iOS

List of dependencies used.

flutter pub deps -s list
dependencies:
- flutter 0.0.0
  - characters 1.3.0
  - collection 1.18.0
  - material_color_utilities 0.5.0
  - meta 1.10.0
  - vector_math 2.1.4
  - web 0.3.0
  - sky_engine any
- cupertino_icons 1.0.6
- firebase_core 2.24.2
  - firebase_core_platform_interface ^5.0.0
  - firebase_core_web ^2.10.0
  - flutter any
  - meta ^1.8.0
- firebase_auth 4.15.2
  - firebase_auth_platform_interface ^7.0.8
  - firebase_auth_web ^5.8.11
  - firebase_core ^2.24.2
  - firebase_core_platform_interface ^5.0.0
  - flutter any
  - meta ^1.8.0
- firebase_ui_auth 1.11.0
  - email_validator ^2.1.17
  - firebase_auth ^4.15.0
  - firebase_core ^2.24.0
  - firebase_dynamic_links ^5.4.6
  - firebase_ui_localizations ^1.9.0
  - firebase_ui_oauth ^1.4.15
  - firebase_ui_shared ^1.4.1
  - flutter any
  - flutter_localizations any
  - meta ^1.10.0
- firebase_ui_oauth 1.4.15
  - desktop_webview_auth ^0.0.14
  - firebase_auth ^4.15.0
  - firebase_ui_auth ^1.11.0
  - firebase_ui_shared ^1.4.1
  - flutter_svg ^2.0.9
  - flutter any
- google_sign_in 6.2.0
  - flutter any
  - google_sign_in_android ^6.1.0
  - google_sign_in_ios ^5.7.0
  - google_sign_in_platform_interface ^2.4.0
  - google_sign_in_web ^0.12.0
- firebase_ui_oauth_google 1.2.15
  - firebase_auth ^4.15.0
  - firebase_ui_oauth ^1.4.15
  - flutter any
  - google_sign_in ^6.1.6
- dio 5.4.0
  - async ^2.8.2
  - http_parser ^4.0.0
  - meta ^1.5.0
  - path ^1.8.0
- hive 2.2.3
  - meta ^1.3.0
  - crypto ^3.0.0
- hive_flutter 1.1.0
  - flutter any
  - hive ^2.0.4
  - path_provider ^2.0.2
  - path ^1.8.0
- http 1.1.2
  - async ^2.5.0
  - http_parser ^4.0.0
  - meta ^1.3.0
  - web >=0.3.0 <0.5.0
- just_audio 0.9.36
  - just_audio_platform_interface ^4.2.2
  - just_audio_web ^0.4.9
  - audio_session ^0.1.14
  - rxdart >=0.26.0 <0.28.0
  - path ^1.8.0
  - path_provider ^2.0.0
  - async ^2.5.0
  - uuid >=3.0.1 <5.0.0
  - crypto ^3.0.0
  - meta ^1.3.0
  - flutter any
- audio_service 0.18.12
  - audio_service_platform_interface ^0.1.1
  - audio_service_web ^0.1.1
  - audio_session ^0.1.16
  - rxdart >=0.26.0 <0.28.0
  - flutter_cache_manager ^3.0.1
  - clock ^1.1.0
  - js ^0.6.3
  - flutter any
  - flutter_web_plugins any
- audio_session 0.1.18
  - flutter any
  - flutter_web_plugins any
  - rxdart >=0.26.0 <0.28.0
  - meta ^1.3.0
- audio_video_progress_bar 2.0.1
  - flutter any
- cached_network_image 3.3.0
  - cached_network_image_platform_interface ^3.0.0
  - cached_network_image_web ^1.1.0
  - flutter any
  - flutter_cache_manager ^3.3.1
  - octo_image ^2.0.0
- line_icons 2.0.3
  - flutter any
- path_provider 2.1.1
  - flutter any
  - path_provider_android ^2.1.0
  - path_provider_foundation ^2.3.0
  - path_provider_linux ^2.2.0
  - path_provider_platform_interface ^2.1.0
  - path_provider_windows ^2.2.0
- provider 6.1.1
  - collection ^1.15.0
  - flutter any
  - nested ^1.0.0
- rxdart 0.27.7
- shared_preferences 2.2.2
  - flutter any
  - shared_preferences_android ^2.1.0
  - shared_preferences_foundation ^2.2.0
  - shared_preferences_linux ^2.2.0
  - shared_preferences_platform_interface ^2.3.0
  - shared_preferences_web ^2.1.0
  - shared_preferences_windows ^2.2.0
- google_fonts 6.1.0
  - flutter any
  - http ^1.0.0
  - path_provider ^2.0.0
  - crypto ^3.0.0
- gap 3.0.1
  - flutter any
- flutter_secure_storage 9.0.0
  - flutter any
  - flutter_secure_storage_linux ^1.1.3
  - flutter_secure_storage_macos ^3.0.0
  - flutter_secure_storage_platform_interface ^1.0.1
  - flutter_secure_storage_web ^1.1.1
  - flutter_secure_storage_windows ^3.0.0
  - meta ^1.3.0
- flutter_slidable 3.0.1
  - flutter any
- go_router 12.1.3
  - collection ^1.15.0
  - flutter any
  - flutter_web_plugins any
  - logging ^1.0.0
  - meta ^1.7.0
- navigator_scope 1.0.1
  - flutter any
- firebase_database 10.3.8
  - firebase_core ^2.24.2
  - firebase_core_platform_interface ^5.0.0
  - firebase_database_platform_interface ^0.2.5+16
  - firebase_database_web ^0.2.3+16
  - flutter any
- firebase_ui_oauth_apple 1.2.15
  - firebase_auth ^4.15.0
  - firebase_ui_oauth ^1.4.15
  - flutter any
- flex_color_scheme 7.3.1
  - flex_seed_scheme ^1.4.0
  - flutter any
  - meta ^1.8.0
- flutter_svg 2.0.9
  - flutter any
  - vector_graphics ^1.1.9+1
  - vector_graphics_codec ^1.1.9+1
  - vector_graphics_compiler ^1.1.9+1
- animated_emoji 2.1.0
  - flutter any
  - lottie ^2.7.0
- just_audio_background 0.0.1-beta.11
  - just_audio_platform_interface ^4.2.2
  - audio_service ^0.18.9
  - audio_session ^0.1.14
  - flutter any
  - flutter_web_plugins any
  - meta ^1.3.0
  - rxdart >=0.26.0 <0.28.0
- path 1.8.3
- intl 0.18.1
  - clock ^1.1.0
  - meta ^1.0.2
  - path ^1.8.0

dev dependencies:
- flutter_test 0.0.0
  - flutter any
  - test_api 0.6.1
  - matcher 0.12.16
  - path 1.8.3
  - fake_async 1.3.1
  - clock 1.1.1
  - stack_trace 1.11.1
  - vector_math 2.1.4
  - async 2.11.0
  - boolean_selector 2.1.1
  - characters 1.3.0
  - collection 1.18.0
  - material_color_utilities 0.5.0
  - meta 1.10.0
  - source_span 1.10.0
  - stream_channel 2.1.2
  - string_scanner 1.2.0
  - term_glyph 1.2.1
  - web 0.3.0
- build_runner 2.4.7
  - analyzer >=4.4.0 <7.0.0
  - args ^2.0.0
  - async ^2.5.0
  - build >=2.1.0 <2.5.0
  - build_config >=1.1.0 <1.2.0
  - build_daemon ^4.0.0
  - build_resolvers ^2.0.0
  - build_runner_core ^7.2.0
  - code_builder ^4.2.0
  - collection ^1.15.0
  - crypto ^3.0.0
  - dart_style ^2.0.0
  - frontend_server_client ^3.0.0
  - glob ^2.0.0
  - graphs ^2.2.0
  - http_multi_server ^3.0.0
  - io ^1.0.0
  - js ^0.6.3
  - logging ^1.0.0
  - meta ^1.3.0
  - mime ^1.0.0
  - package_config ^2.0.0
  - path ^1.8.0
  - pool ^1.5.0
  - pub_semver ^2.0.0
  - pubspec_parse ^1.0.0
  - shelf ^1.0.0
  - shelf_web_socket ^1.0.0
  - stack_trace ^1.10.0
  - stream_transform ^2.0.0
  - timing ^1.0.0
  - watcher ^1.0.0
  - web_socket_channel ^2.0.0
  - yaml ^3.0.0
- hive_generator 2.0.1
  - build ^2.0.0
  - source_gen ^1.0.0
  - hive ^2.0.4
  - analyzer >=4.6.0 <7.0.0
  - source_helper ^1.1.0
- flutter_lints 3.0.1
  - lints ^3.0.0

transitive dependencies:
- _fe_analyzer_shared 61.0.0
  - meta ^1.0.2
- _flutterfire_internals 1.3.16
  - collection ^1.0.0
  - firebase_core ^2.24.2
  - firebase_core_platform_interface ^5.0.0
  - flutter any
  - meta ^1.8.0
- analyzer 5.13.0
  - _fe_analyzer_shared ^61.0.0
  - collection ^1.17.0
  - convert ^3.0.0
  - crypto ^3.0.0
  - glob ^2.0.0
  - meta ^1.7.0
  - package_config ^2.0.0
  - path ^1.8.0
  - pub_semver ^2.0.0
  - source_span ^1.8.0
  - watcher ^1.0.0
  - yaml ^3.0.0
- archive 3.4.9
  - crypto ^3.0.3
  - path ^1.8.0
  - pointycastle ^3.7.3
- args 2.4.2
- async 2.11.0
  - collection ^1.15.0
  - meta ^1.1.7
- audio_service_platform_interface 0.1.1
  - flutter any
  - plugin_platform_interface ^2.0.0
  - meta ^1.3.0
- audio_service_web 0.1.1
  - audio_service_platform_interface ^0.1.0
  - rxdart >=0.26.0 <0.28.0
  - js ^0.6.3
  - flutter any
  - flutter_web_plugins any
- boolean_selector 2.1.1
  - source_span ^1.8.0
  - string_scanner ^1.1.0
- build 2.4.1
  - analyzer >=1.5.0 <7.0.0
  - async ^2.5.0
  - convert ^3.0.0
  - crypto ^3.0.0
  - glob ^2.0.0
  - logging ^1.0.0
  - meta ^1.3.0
  - package_config ^2.1.0
  - path ^1.8.0
- build_config 1.1.1
  - checked_yaml ^2.0.0
  - json_annotation ^4.5.0
  - path ^1.8.0
  - pubspec_parse ^1.0.0
  - yaml ^3.0.0
- build_daemon 4.0.1
  - built_collection ^5.0.0
  - built_value ^8.1.0
  - crypto ^3.0.3
  - http_multi_server ^3.0.0
  - logging ^1.0.0
  - path ^1.8.0
  - pool ^1.5.0
  - shelf ^1.0.0
  - shelf_web_socket ^1.0.0
  - stream_transform ^2.0.0
  - watcher ^1.0.0
  - web_socket_channel ^2.0.0
- build_resolvers 2.4.1
  - analyzer >=5.12.0 <7.0.0
  - async ^2.5.0
  - build ^2.0.0
  - collection ^1.17.0
  - convert ^3.1.1
  - crypto ^3.0.0
  - graphs >=1.0.0 <3.0.0
  - logging ^1.0.0
  - package_config ^2.0.0
  - path ^1.8.0
  - pool ^1.5.0
  - pub_semver ^2.0.0
  - stream_transform ^2.0.0
  - yaml ^3.0.0
- build_runner_core 7.2.11
  - async ^2.5.0
  - build ^2.4.0
  - build_config ^1.0.0
  - build_resolvers ^2.4.0
  - collection ^1.15.0
  - convert ^3.0.0
  - crypto ^3.0.0
  - glob ^2.0.0
  - graphs ^2.0.0
  - json_annotation ^4.8.1
  - logging ^1.2.0
  - meta ^1.3.0
  - package_config ^2.0.0
  - path ^1.8.0
  - pool ^1.5.0
  - timing ^1.0.0
  - watcher ^1.0.0
  - yaml ^3.0.0
- built_collection 5.1.1
- built_value 8.8.0
  - built_collection ^5.0.0
  - collection ^1.15.0
  - fixnum ^1.0.0
  - meta ^1.3.0
- cached_network_image_platform_interface 3.0.0
  - flutter any
  - flutter_cache_manager ^3.3.1
- cached_network_image_web 1.1.0
  - cached_network_image_platform_interface ^3.0.0
  - flutter any
  - flutter_cache_manager ^3.3.1
- characters 1.3.0
- checked_yaml 2.0.3
  - json_annotation ^4.3.0
  - source_span ^1.8.0
  - yaml ^3.0.0
- clock 1.1.1
- code_builder 4.8.0
  - built_collection ^5.0.0
  - built_value ^8.0.0
  - collection ^1.15.0
  - matcher ^0.12.10
  - meta ^1.3.0
- collection 1.18.0
- convert 3.1.1
  - typed_data ^1.3.0
- crypto 3.0.3
  - typed_data ^1.3.0
- dart_style 2.3.2
  - analyzer >=5.12.0 <7.0.0
  - args >=1.0.0 <3.0.0
  - path ^1.0.0
  - pub_semver >=1.4.4 <3.0.0
  - source_span ^1.4.0
- desktop_webview_auth 0.0.14
  - crypto ^3.0.3
  - flutter any
  - http ^1.0.0
  - flutter_web_plugins any
  - plugin_platform_interface ^2.1.4
- email_validator 2.1.17
- fake_async 1.3.1
  - clock ^1.1.0
  - collection ^1.15.0
- ffi 2.1.0
- file 7.0.0
  - meta ^1.9.1
  - path ^1.8.3
- firebase_auth_platform_interface 7.0.8
  - _flutterfire_internals ^1.3.16
  - collection ^1.16.0
  - firebase_core ^2.24.2
  - flutter any
  - meta ^1.8.0
  - plugin_platform_interface ^2.1.3
- firebase_auth_web 5.8.11
  - firebase_auth_platform_interface ^7.0.8
  - firebase_core ^2.24.2
  - firebase_core_web ^2.10.0
  - flutter any
  - flutter_web_plugins any
  - http_parser ^4.0.0
  - js ^0.6.3
  - meta ^1.8.0
- firebase_core_platform_interface 5.0.0
  - collection ^1.0.0
  - flutter any
  - flutter_test any
  - meta ^1.8.0
  - plugin_platform_interface ^2.1.3
- firebase_core_web 2.10.0
  - firebase_core_platform_interface ^5.0.0
  - flutter any
  - flutter_web_plugins any
  - js ^0.6.3
  - meta ^1.8.0
- firebase_database_platform_interface 0.2.5+16
  - _flutterfire_internals ^1.3.16
  - collection ^1.14.3
  - firebase_core ^2.24.2
  - flutter any
  - meta ^1.8.0
  - plugin_platform_interface ^2.1.3
- firebase_database_web 0.2.3+16
  - firebase_core ^2.24.2
  - firebase_core_web ^2.10.0
  - firebase_database_platform_interface ^0.2.5+16
  - flutter any
  - flutter_web_plugins any
  - js ^0.6.3
- firebase_dynamic_links 5.4.8
  - firebase_core ^2.24.2
  - firebase_core_platform_interface ^5.0.0
  - firebase_dynamic_links_platform_interface ^0.2.6+16
  - flutter any
  - meta ^1.8.0
  - plugin_platform_interface ^2.1.3
- firebase_dynamic_links_platform_interface 0.2.6+16
  - _flutterfire_internals ^1.3.16
  - firebase_core ^2.24.2
  - flutter any
  - meta ^1.8.0
  - plugin_platform_interface ^2.1.3
- firebase_ui_localizations 1.9.0
  - flutter any
  - flutter_localizations any
  - path ^1.8.3
- firebase_ui_shared 1.4.1
  - flutter any
- fixnum 1.1.0
- flex_seed_scheme 1.4.0
  - collection ^1.15.0
  - flutter any
  - meta ^1.8.0
- flutter_cache_manager 3.3.1
  - clock ^1.1.0
  - collection ^1.15.0
  - file >=6.1.4 <8.0.0
  - flutter any
  - http >=0.13.0 <2.0.0
  - path ^1.8.0
  - path_provider ^2.0.0
  - rxdart >=0.26.0 <0.28.0
  - sqflite ^2.0.0+4
  - uuid >=3.0.0 <5.0.0
- flutter_localizations 0.0.0
  - flutter any
  - intl 0.18.1
  - characters 1.3.0
  - clock 1.1.1
  - collection 1.18.0
  - material_color_utilities 0.5.0
  - meta 1.10.0
  - path 1.8.3
  - vector_math 2.1.4
  - web 0.3.0
- flutter_secure_storage_linux 1.2.0
  - flutter any
  - flutter_secure_storage_platform_interface ^1.0.1
- flutter_secure_storage_macos 3.0.1
  - flutter any
  - flutter_secure_storage_platform_interface ^1.0.1
- flutter_secure_storage_platform_interface 1.0.2
  - flutter any
  - plugin_platform_interface ^2.0.1
- flutter_secure_storage_web 1.1.2
  - flutter any
  - flutter_secure_storage_platform_interface ^1.0.1
  - flutter_web_plugins any
  - js ^0.6.3
- flutter_secure_storage_windows 3.0.0
  - ffi ^2.0.0
  - flutter any
  - flutter_secure_storage_platform_interface ^1.0.1
  - path ^1.8.0
  - path_provider ^2.0.0
  - win32 ^5.0.0
- flutter_web_plugins 0.0.0
  - flutter any
  - characters 1.3.0
  - collection 1.18.0
  - material_color_utilities 0.5.0
  - meta 1.10.0
  - vector_math 2.1.4
  - web 0.3.0
- frontend_server_client 3.2.0
  - async ^2.5.0
  - path ^1.8.0
- glob 2.1.2
  - async ^2.5.0
  - collection ^1.15.0
  - file >=6.1.3 <8.0.0
  - path ^1.8.0
  - string_scanner ^1.1.0
- google_identity_services_web 0.3.0+1
  - meta ^1.3.0
  - web >=0.3.0 <0.5.0
- google_sign_in_android 6.1.20
  - flutter any
  - google_sign_in_platform_interface ^2.2.0
- google_sign_in_ios 5.7.0
  - flutter any
  - google_sign_in_platform_interface ^2.2.0
  - pigeon ^11.0.1
- google_sign_in_platform_interface 2.4.3
  - flutter any
  - plugin_platform_interface ^2.1.0
- google_sign_in_web 0.12.3
  - flutter any
  - flutter_web_plugins any
  - google_identity_services_web ^0.3.0
  - google_sign_in_platform_interface ^2.4.0
  - http >=0.13.0 <2.0.0
  - web >=0.3.0 <0.5.0
- graphs 2.3.1
  - collection ^1.1.0
- http_multi_server 3.2.1
  - async ^2.5.0
- http_parser 4.0.2
  - collection ^1.15.0
  - source_span ^1.8.0
  - string_scanner ^1.1.0
  - typed_data ^1.3.0
- io 1.0.4
  - meta ^1.3.0
  - path ^1.8.0
  - string_scanner ^1.1.0
- js 0.6.7
  - meta ^1.7.0
- json_annotation 4.8.1
  - meta ^1.4.0
- just_audio_platform_interface 4.2.2
  - flutter any
  - plugin_platform_interface ^2.0.0
- just_audio_web 0.4.9
  - just_audio_platform_interface ^4.2.2
  - flutter any
  - flutter_web_plugins any
- lints 3.0.0
- logging 1.2.0
- lottie 2.7.0
  - archive ^3.0.0
  - flutter any
  - path ^1.8.0
  - vector_math ^2.1.0
- matcher 0.12.16
  - async ^2.10.0
  - meta ^1.8.0
  - stack_trace ^1.10.0
  - term_glyph ^1.2.0
  - test_api >=0.5.0 <0.7.0
- material_color_utilities 0.5.0
  - collection ^1.15.0
- meta 1.10.0
- mime 1.0.4
- nested 1.0.0
  - flutter any
- octo_image 2.0.0
  - flutter any
- package_config 2.1.0
  - path ^1.8.0
- path_parsing 1.0.1
  - vector_math ^2.1.0
  - meta ^1.3.0
- path_provider_android 2.2.1
  - flutter any
  - path_provider_platform_interface ^2.1.0
- path_provider_foundation 2.3.1
  - flutter any
  - path_provider_platform_interface ^2.1.0
- path_provider_linux 2.2.1
  - ffi >=1.1.2 <3.0.0
  - flutter any
  - path ^1.8.0
  - path_provider_platform_interface ^2.1.0
  - xdg_directories >=0.2.0 <2.0.0
- path_provider_platform_interface 2.1.1
  - flutter any
  - platform ^3.0.0
  - plugin_platform_interface ^2.1.0
- path_provider_windows 2.2.1
  - ffi ^2.0.0
  - flutter any
  - path ^1.8.0
  - path_provider_platform_interface ^2.1.0
  - win32 >=2.1.0 <6.0.0
- petitparser 6.0.2
  - meta ^1.9.0
- pigeon 11.0.1
  - analyzer ^5.13.0
  - args ^2.1.0
  - collection ^1.15.0
  - meta ^1.7.0
  - path ^1.8.0
  - yaml ^3.1.1
- platform 3.1.3
- plugin_platform_interface 2.1.7
  - meta ^1.3.0
- pointycastle 3.7.3
  - collection ^1.15.0
  - convert ^3.0.0
  - js ^0.6.3
- pool 1.5.1
  - async ^2.5.0
  - stack_trace ^1.10.0
- pub_semver 2.1.4
  - collection ^1.15.0
  - meta ^1.3.0
- pubspec_parse 1.2.3
  - checked_yaml ^2.0.1
  - collection ^1.15.0
  - json_annotation ^4.8.0
  - pub_semver ^2.0.0
  - yaml ^3.0.0
- shared_preferences_android 2.2.1
  - flutter any
  - shared_preferences_platform_interface ^2.3.0
- shared_preferences_foundation 2.3.4
  - flutter any
  - shared_preferences_platform_interface ^2.3.0
- shared_preferences_linux 2.3.2
  - file >=6.0.0 <8.0.0
  - flutter any
  - path ^1.8.0
  - path_provider_linux ^2.0.0
  - path_provider_platform_interface ^2.0.0
  - shared_preferences_platform_interface ^2.3.0
- shared_preferences_platform_interface 2.3.1
  - flutter any
  - plugin_platform_interface ^2.1.0
- shared_preferences_web 2.2.2
  - flutter any
  - flutter_web_plugins any
  - shared_preferences_platform_interface ^2.3.0
  - web >=0.3.0 <0.5.0
- shared_preferences_windows 2.3.2
  - file >=6.0.0 <8.0.0
  - flutter any
  - path ^1.8.0
  - path_provider_platform_interface ^2.0.0
  - path_provider_windows ^2.0.0
  - shared_preferences_platform_interface ^2.3.0
- shelf 1.4.1
  - async ^2.5.0
  - collection ^1.15.0
  - http_parser ^4.0.0
  - path ^1.8.0
  - stack_trace ^1.10.0
  - stream_channel ^2.1.0
- shelf_web_socket 1.0.4
  - shelf ^1.1.0
  - stream_channel ^2.1.0
  - web_socket_channel ^2.0.0
- sky_engine 0.0.99
- source_gen 1.4.0
  - analyzer >=5.2.0 <7.0.0
  - async ^2.5.0
  - build ^2.1.0
  - dart_style ^2.0.0
  - glob ^2.0.0
  - path ^1.8.0
  - source_span ^1.8.0
  - yaml ^3.0.0
- source_helper 1.3.4
  - analyzer >=5.12.0 <7.0.0
  - collection ^1.15.0
  - source_gen ^1.0.0
- source_span 1.10.0
  - collection ^1.15.0
  - path ^1.8.0
  - term_glyph ^1.2.0
- sprintf 7.0.0
- sqflite 2.3.0
  - flutter any
  - sqflite_common >=2.5.0-1 <4.0.0
  - path >=1.8.0 <3.0.0
- sqflite_common 2.5.0+2
  - synchronized >=3.0.0 <5.0.0
  - path >=1.8.0 <3.0.0
  - meta >=1.3.0 <3.0.0
- stack_trace 1.11.1
  - path ^1.8.0
- stream_channel 2.1.2
  - async ^2.5.0
- stream_transform 2.1.0
- string_scanner 1.2.0
  - source_span ^1.8.0
- synchronized 3.1.0
- term_glyph 1.2.1
- test_api 0.6.1
  - async ^2.5.0
  - boolean_selector ^2.1.0
  - collection ^1.15.0
  - meta ^1.3.0
  - source_span ^1.8.0
  - stack_trace ^1.10.0
  - stream_channel ^2.1.0
  - string_scanner ^1.1.0
  - term_glyph ^1.2.0
- timing 1.0.1
  - json_annotation ^4.3.0
- typed_data 1.3.2
  - collection ^1.15.0
- uuid 4.2.1
  - crypto ^3.0.0
  - sprintf ^7.0.0
  - meta ^1.9.1
- vector_graphics 1.1.9+1
  - flutter any
  - vector_graphics_codec 1.1.9+1
- vector_graphics_codec 1.1.9+1
- vector_graphics_compiler 1.1.9+1
  - args ^2.3.0
  - meta ^1.7.0
  - path_parsing ^1.0.1
  - xml ^6.3.0
  - vector_graphics_codec 1.1.9+1
  - path ^1.8.0
- vector_math 2.1.4
- watcher 1.1.0
  - async ^2.5.0
  - path ^1.8.0
- web 0.3.0
- web_socket_channel 2.4.0
  - async ^2.5.0
  - crypto ^3.0.0
  - stream_channel ^2.1.0
- win32 5.1.1
  - ffi ^2.1.0
- xdg_directories 1.0.3
  - meta ^1.3.0
  - path ^1.8.0
- xml 6.5.0
  - collection ^1.18.0
  - meta ^1.9.0
  - petitparser ^6.0.0
- yaml 3.1.2
  - collection ^1.15.0
  - source_span ^1.8.0
  - string_scanner ^1.1.0

Steps to reproduce

This is the code for my ProfileScreen()

ProfileScreen(
        providers: [
          EmailAuthProvider(),
          AppleProvider(),
          GoogleProvider(clientId: googleClientID),
        ],
        showDeleteConfirmationDialog: true,
        showUnlinkConfirmationDialog: true,
        actions: [
          SignedOutAction((context) {
            context.goNamed('login');
          }),
          AccountDeletedAction((context, user) {
            context.goNamed('login');
          })
        ],
      );

The confirmation dialog does appear when press the 'Delete Account' button, but choosing either 'Cancel' or 'Yes, Delete' pops out the current view and dialog can't be dismissed. Video below:

https://github.com/firebase/FirebaseUI-Flutter/assets/35091443/a1d5696c-5ca6-4b74-8ef1-f6ec2e5322bf

Expected Behavior

  1. On press of 'cancel' option on alert dialog, I expects the dialog to dismiss.
  2. On press of 'yes, delete' option on alert dialog, I expect the current dialog to dismiss and new dialog of re-authenticate to appear and on successful re-authentication, deletes the account and go to 'login'' screen.

Actual Behavior

  1. On press of 'cancel' option on alert dialog, dialog remain on screen and view pops.
  2. On press of 'yes, delete' option on alert dialog, dialog remain on screen and view pops. Account not deleted.

Additional Information

No response

danagbemava-nc commented 6 months ago

Hi @tahamaddam, can you please provide a complete minimal reproducible code sample so that we can investigate this issue? I tested with the plugin example app and it works just fine for me.

https://github.com/firebase/FirebaseUI-Flutter/assets/88313112/13ceb98d-cb24-4ee8-98d2-b540723bad2f

tahamaddam commented 6 months ago

Thanks for your attention. My app is a (Bottom) tab based app, which is set up using the go_router like this

final _rootNavigatorKey = GlobalKey<NavigatorState>();
final _sectionNavigatorKey = GlobalKey<NavigatorState>();

final goRouterConfig = GoRouter(
  navigatorKey: _rootNavigatorKey,
  initialLocation: '/explore',

  routes: [
    StatefulShellRoute.indexedStack(
      builder: (context, state, navigationShell) =>
          ScaffoldWithNavBar(navigationShell: navigationShell),
      branches: [
        StatefulShellBranch(
          navigatorKey: _sectionNavigatorKey,
          routes: [
            GoRoute(
                path: '/explore',
                name: "explore",
                builder: (context, state) => const ExploreView(),
                routes: [

                ]),
          ],
        ),
        StatefulShellBranch(
          routes: [
            GoRoute(
              path: '/library',
              name: "library",
              builder: (context, state) => const LibraryView(),
              routes: []
            ),
          ],
        ),
        StatefulShellBranch(
          routes: [
            GoRoute(
              path: '/playing',
              name: "episodes-player",
              builder: (context, state) => const EpisodesPlayer(),
            ),
          ],
        ),
        StatefulShellBranch(
          routes: [
            GoRoute(
              path: '/settings',
              name: "settings",
              builder: (context, state) => const SettingsView(),
              routes: [
                GoRoute(
                  path: 'profile',
                  name: 'profile',
                  builder: (context, state) => const ProfileView(),
                ),
                GoRoute(
                  path: 'inapp',
                  name: 'inappInfo',
                  builder: (context, state) => const InAppInfo(),
                ),
                // Add other routes here...
              ],
            ),
          ],
        ),
      ],
    ),
  ],
);

The ProfileScreen() is at /settings/profile The full code for ProfileScreen() is this:

import 'package:firebase_auth/firebase_auth.dart' hide EmailAuthProvider;
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_oauth_apple/firebase_ui_oauth_apple.dart';
import 'package:firebase_ui_oauth_google/firebase_ui_oauth_google.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import '../../configurations/constants/google_client_id.dart';

class ProfileView extends StatefulWidget {
  const ProfileView({super.key});

  @override
  State<ProfileView> createState() => _ProfileViewState();
}

class _ProfileViewState extends State<ProfileView> {
  final user = FirebaseAuth.instance.currentUser;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Profile'),
      ),
      body: ProfileScreen(
        providers: [
          EmailAuthProvider(),
          AppleProvider(),
          GoogleProvider(clientId: googleClientID),
        ],
        showDeleteConfirmationDialog: true,
        showUnlinkConfirmationDialog: true,
        actions: [
          SignedOutAction((context) {
            context.goNamed('login');
          }),
          AccountDeletedAction((context, user) {
            context.goNamed('login');
          })
        ],
      ),
    );
  }
}

The issue is with both the cancel and Delete action, which pop the view out. I suspect this might be due to conflict with go_router navigation? I don't see any other code in my project, that is relevant for this issue that needs to be shared.

danagbemava-nc commented 6 months ago

Hi @tahamaddam, if you use navigator instead of go_router, do you still get this issue?

tahamaddam commented 6 months ago

Actually, the first action (SignedOutAction) is correctly working with context.goNamed(). For AccountDeletedAction , I tried to use Navigator too but that doesn't solve the issue as the issue lies in the alert dialog which doesn't dismiss (when choose Cancel or Yes, Delete) as well as pop the view (as can be seen in the shared video)

danagbemava-nc commented 6 months ago

That's odd. I just tried the plugin example app again and it worked just fine. I did notice one thing, however, your ProfileScreen is wrapped in a Scaffold, can you try removing that to see if it works?

tahamaddam commented 6 months ago

Thanks, just tried but no luck.

danagbemava-nc commented 6 months ago

Hi @tahamaddam, it would help our investigation if you could provide a complete minimal reproducible code sample in a repo that we can clone. It doesn't have to be your actual project. Just enough code that we can use to reproduce and start investigating.

tahamaddam commented 6 months ago

Thanks, I will try that and share the repo with you. I forgot to share the exception when the dialog stays on screen even after tap on cancel or Delete

════════ Exception caught by gesture ═══════════════════════════════════════════
The following assertion was thrown while handling a gesture:
This widget has been unmounted, so the State no longer has a context (and should be considered defunct).
Consider canceling any active work during "dispose" or using the "mounted" getter to determine if the State is still active.
tahamaddam commented 6 months ago

Hi @tahamaddam, it would help our investigation if you could provide a complete minimal reproducible code sample in a repo that we can clone. It doesn't have to be your actual project. Just enough code that we can use to reproduce and start investigating.

I have added you as a collaborator on the repository. After Sign-in, go to Settings> Tap the button and then from the ProfileScreen() view you can try to delete the account.

danagbemava-nc commented 6 months ago

Thanks for the sample, I can reproduce the issue. I think this might have to do with go_router's indexed stack or how go_router interacts with dialogs, but I can't say for sure.

The action already calls Navigator.pop internally which is why it pops to the previous page but not the dialog. Perhaps exposing the pop action for the DeleteAccountButton might help.

This did not reproduce with the plugin example app (it doesn't use go_router, so that may be why).

Labeling for further investigation.

cc @lesnitsky

Added code sample below (zipped)

Flutter_Fire-master.zip

tahamaddam commented 6 months ago

Thanks a lot for looking into this and confirming the bug. I would like to add:

tahamaddam commented 6 months ago

As a workaround, is there a way to exclude the Account Delete Button from the ProfileScreen()?

@danagbemava-nc

danagbemava-nc commented 6 months ago

If you don't include the AccountDeleteAction, it should not show up

tahamaddam commented 6 months ago

If you don't include the AccountDeleteAction, it should not show up

I tried excluding AccountDeleteAction from ProfileScreen() actions. I also made sure not to use showDeleteConfirmationDialog but the Delete account button is still there.

++ I also realized even when I am not using the showDeleteConfirmationDialog and where user needs re-authentication, after re-authentication, it again pops user back and does not delete the account. Delete user is only successful when no re-authentication is needed.

tahamaddam commented 6 months ago

Hello, sorry to bother you on holidays. Is there any solution or workaround for this problem in short run? Thanks.

danagbemava-nc commented 6 months ago

Hi @tahamaddam, unfortunately, I am not aware of any workarounds at this time

tahamaddam commented 5 months ago

Any update on this matter? @lesnitsky

haraldkri commented 2 months ago

I am facing the same issue, has there been any updates, solutions or workarounds for this?

TimBaumgart commented 1 month ago

Same issue for me. Would it not be sufficient to just add the context as a parameter to the pop() function?

void Function() pop<T>(T result) => () => Navigator.of(context).pop(result);
onConfirm: pop(true),
onCancel: pop(false),

->

void Function() pop<T>(BuildContext context, T result) => () => Navigator.of(context).pop(result);
onConfirm: pop(context, true),
onCancel: pop(context, false),

Afterwards, the confirmation dialog should be popped and not the route below.

EDIT: Just tried it out and it is working