Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

[馃悰 firebase_ui_auth] otp verification may not trigger on first launch when clicking the submit button on the keyboard #261

Open
1 task done
rashidotm opened this issue Jan 24, 2024 · 3 comments
Labels
auth bug Something isn't working

Comments

@rashidotm
Copy link

rashidotm commented Jan 24, 2024

Is there an existing issue for this?

  • I have searched the existing issues and found no duplicates.

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
Dart SDK 3.2.3
Flutter SDK 3.16.5
appName 1.0.32+57

dependencies:

  • cached_network_image 3.3.1
    • cached_network_image_platform_interface ^4.0.0
    • cached_network_image_web ^1.1.1
    • flutter any
    • flutter_cache_manager ^3.3.1
    • octo_image ^2.0.0
  • cloud_firestore 4.14.0
    • cloud_firestore_platform_interface ^6.1.0
    • cloud_firestore_web ^3.9.0
    • collection ^1.0.0
    • firebase_core ^2.24.2
    • firebase_core_platform_interface ^5.0.0
    • flutter any
    • meta ^1.8.0
  • cloud_functions 4.6.0
    • cloud_functions_platform_interface ^5.5.11
    • cloud_functions_web ^4.6.11
    • firebase_core ^2.24.2
    • firebase_core_platform_interface ^5.0.0
    • flutter any
  • cropperx 1.1.1
    • flutter any
  • firebase_analytics 10.8.0
    • firebase_analytics_platform_interface ^3.9.0
    • firebase_analytics_web ^0.5.5+12
    • firebase_core ^2.24.2
    • firebase_core_platform_interface ^5.0.0
    • flutter any
  • firebase_auth 4.16.0
    • firebase_auth_platform_interface ^7.0.9
    • firebase_auth_web ^5.8.13
    • firebase_core ^2.24.2
    • firebase_core_platform_interface ^5.0.0
    • flutter any
    • meta ^1.8.0
  • 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_crashlytics 3.4.9
    • firebase_core ^2.24.2
    • firebase_core_platform_interface ^5.0.0
    • firebase_crashlytics_platform_interface ^3.6.16
    • flutter any
    • stack_trace ^1.10.0
  • 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_storage 11.6.0
    • firebase_core ^2.24.2
    • firebase_core_platform_interface ^5.0.0
    • firebase_storage_platform_interface ^5.1.3
    • firebase_storage_web ^3.6.17
    • flutter any
  • firebase_messaging 14.7.10
    • firebase_core ^2.24.2
    • firebase_core_platform_interface ^5.0.0
    • firebase_messaging_platform_interface ^4.5.18
    • firebase_messaging_web ^3.5.18
    • flutter any
    • meta ^1.8.0
  • firebase_ui_auth 1.12.0
    • email_validator ^2.1.17
    • firebase_auth ^4.15.3
    • firebase_core ^2.24.2
    • firebase_dynamic_links ^5.4.8
    • firebase_ui_localizations ^1.10.0
    • firebase_ui_oauth ^1.4.16
    • firebase_ui_shared ^1.4.1
    • flutter any
    • flutter_localizations any
    • meta ^1.10.0
  • firebase_ui_firestore 1.6.0
    • cloud_firestore ^4.13.6
    • firebase_ui_localizations ^1.10.0
    • firebase_ui_shared ^1.4.1
    • flutter any
  • firebase_ui_localizations 1.10.0
    • flutter any
    • flutter_localizations any
    • path ^1.8.3
  • 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
  • hijri 3.0.0
  • image_picker 1.0.6
    • flutter any
    • image_picker_android ^0.8.7
    • image_picker_for_web >=2.2.0 <4.0.0
    • image_picker_ios ^0.8.8
    • image_picker_linux ^0.2.1
    • image_picker_macos ^0.2.1
    • image_picker_platform_interface ^2.8.0
    • image_picker_windows ^0.2.1
  • package_info_plus 5.0.1
    • ffi ^2.0.1
    • flutter any
    • flutter_web_plugins any
    • http >=0.13.5 <2.0.0
    • meta ^1.8.0
    • path ^1.8.2
    • package_info_plus_platform_interface ^2.0.1
    • web >=0.3.0 <0.5.0
    • win32 >=4.0.0 <6.0.0
  • pretty_diff_text 1.0.0
    • flutter any
    • diff_match_patch ^0.4.1
  • provider 6.1.1
    • collection ^1.15.0
    • flutter any
    • nested ^1.0.0
  • url_launcher 6.2.2
    • flutter any
    • url_launcher_android ^6.2.0
    • url_launcher_ios ^6.2.0
    • url_launcher_linux ^3.1.0
    • url_launcher_macos ^3.1.0
    • url_launcher_platform_interface ^2.2.0
    • url_launcher_web ^2.2.0
    • url_launcher_windows ^3.1.0
  • webview_flutter 4.4.3
    • flutter any
    • webview_flutter_android ^3.12.0
    • webview_flutter_platform_interface ^2.6.0
    • webview_flutter_wkwebview ^3.9.0
  • flutter_local_notifications 16.3.0
    • clock ^1.1.0
    • flutter any
    • flutter_local_notifications_linux ^4.0.0
    • flutter_local_notifications_platform_interface ^7.0.0
    • timezone ^0.9.0
  • launch_review 3.0.1
    • flutter any
  • font_awesome_flutter 10.6.0
    • flutter any
  • flutter_linkify 6.0.0
    • flutter any
    • linkify ^5.0.0
  • file_saver 0.2.9
    • flutter any
    • flutter_web_plugins any
    • path_provider ^2.0.11
    • path_provider_windows ^2.0.5
    • path_provider_linux ^2.1.5
    • http ^1.1.0
  • permission_handler 11.1.0
    • flutter any
    • meta ^1.7.0
    • permission_handler_android ^12.0.1
    • permission_handler_apple ^9.2.0
    • permission_handler_html ^0.1.0+1
    • permission_handler_windows ^0.2.0
    • permission_handler_platform_interface ^4.0.2
  • device_info_plus 9.1.1
    • device_info_plus_platform_interface ^7.0.0
    • ffi ^2.0.1
    • file >=6.1.4 <8.0.0
    • flutter any
    • flutter_web_plugins any
    • meta ^1.8.0
    • win32 >=4.0.0 <6.0.0
    • win32_registry ^1.1.0
  • firebase_app_check 0.2.1+8
    • firebase_app_check_platform_interface ^0.1.0+10
    • firebase_app_check_web ^0.1.0+10
    • firebase_core ^2.24.2
    • firebase_core_platform_interface ^5.0.0
    • flutter any

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
  • flutter_lints 3.0.1
    • lints ^3.0.0
  • dependency_validator 3.2.3
    • args ^2.0.0
    • build_config ^1.0.0
    • checked_yaml ^2.0.1
    • glob ^2.0.1
    • io ^1.0.0
    • json_annotation ^4.8.0
    • logging ^1.0.1
    • package_config ^2.0.0
    • path ^1.8.0
    • pub_semver ^2.0.0
    • pubspec_parse ^1.0.0
    • yaml ^3.1.0
  • flutter_launcher_icons 0.13.1
    • args ^2.3.2
    • checked_yaml ^2.0.2
    • cli_util ^0.4.0
    • image ^4.0.15
    • json_annotation ^4.8.0
    • path ^1.8.2
    • yaml ^3.1.1

transitive dependencies:

  • _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
  • archive 3.4.10
    • 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
  • boolean_selector 2.1.1
    • source_span ^1.8.0
    • string_scanner ^1.1.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
  • cached_network_image_platform_interface 4.0.0
    • flutter any
    • flutter_cache_manager ^3.3.1
  • cached_network_image_web 1.1.1
    • cached_network_image_platform_interface ^4.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
  • cli_util 0.4.1
    • meta ^1.3.0
    • path ^1.8.0
  • clock 1.1.1
  • cloud_firestore_platform_interface 6.1.0
    • _flutterfire_internals ^1.3.16
    • collection ^1.15.0
    • firebase_core ^2.24.2
    • flutter any
    • meta ^1.8.0
    • plugin_platform_interface ^2.1.3
  • cloud_firestore_web 3.9.0
    • _flutterfire_internals ^1.3.16
    • cloud_firestore_platform_interface ^6.1.0
    • collection ^1.0.0
    • firebase_core ^2.24.2
    • firebase_core_web ^2.10.0
    • flutter any
    • flutter_web_plugins any
    • js ^0.6.3
  • cloud_functions_platform_interface 5.5.11
    • firebase_core ^2.24.2
    • flutter any
    • meta ^1.8.0
    • plugin_platform_interface ^2.1.3
  • cloud_functions_web 4.6.11
    • cloud_functions_platform_interface ^5.5.11
    • firebase_core ^2.24.2
    • firebase_core_web ^2.10.0
    • flutter any
    • flutter_web_plugins any
    • js ^0.6.3
  • collection 1.18.0
  • convert 3.1.1
    • typed_data ^1.3.0
  • cross_file 0.3.3+8
    • meta ^1.3.0
    • web >=0.3.0 <0.5.0
  • crypto 3.0.3
    • typed_data ^1.3.0
  • dbus 0.7.10
    • args ^2.0.0
    • ffi ^2.0.0
    • meta ^1.3.0
    • xml ^6.1.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
  • device_info_plus_platform_interface 7.0.0
    • flutter any
    • meta ^1.3.0
    • plugin_platform_interface ^2.0.0
  • diff_match_patch 0.4.1
  • 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
  • file_selector_linux 0.9.2+1
    • cross_file ^0.3.1
    • file_selector_platform_interface ^2.6.0
    • flutter any
  • file_selector_macos 0.9.3+3
    • cross_file ^0.3.1
    • file_selector_platform_interface ^2.6.0
    • flutter any
  • file_selector_platform_interface 2.6.1
    • cross_file ^0.3.0
    • flutter any
    • http >=0.13.0 <2.0.0
    • plugin_platform_interface ^2.1.0
  • file_selector_windows 0.9.3+1
    • cross_file ^0.3.1
    • file_selector_platform_interface ^2.6.0
    • flutter any
  • firebase_analytics_platform_interface 3.9.0
    • _flutterfire_internals ^1.3.16
    • firebase_core ^2.24.2
    • flutter any
    • meta ^1.8.0
    • plugin_platform_interface ^2.1.3
  • firebase_analytics_web 0.5.5+12
    • _flutterfire_internals ^1.3.16
    • firebase_analytics_platform_interface ^3.9.0
    • firebase_core ^2.24.2
    • firebase_core_web ^2.10.0
    • flutter any
    • flutter_web_plugins any
    • js ^0.6.3
  • firebase_app_check_platform_interface 0.1.0+10
    • _flutterfire_internals ^1.3.16
    • firebase_core ^2.24.2
    • flutter any
    • meta ^1.8.0
    • plugin_platform_interface ^2.1.3
  • firebase_app_check_web 0.1.0+10
    • _flutterfire_internals ^1.3.16
    • firebase_app_check_platform_interface ^0.1.0+10
    • firebase_core ^2.24.2
    • firebase_core_web ^2.10.0
    • flutter any
    • flutter_web_plugins any
    • js ^0.6.3
  • firebase_auth_platform_interface 7.0.9
    • _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.13
    • firebase_auth_platform_interface ^7.0.9
    • 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_crashlytics_platform_interface 3.6.16
    • _flutterfire_internals ^1.3.16
    • collection ^1.15.0
    • firebase_core ^2.24.2
    • 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_messaging_platform_interface 4.5.18
    • _flutterfire_internals ^1.3.16
    • firebase_core ^2.24.2
    • flutter any
    • meta ^1.8.0
    • plugin_platform_interface ^2.1.3
  • firebase_messaging_web 3.5.18
    • _flutterfire_internals ^1.3.16
    • firebase_core ^2.24.2
    • firebase_core_web ^2.10.0
    • firebase_messaging_platform_interface ^4.5.18
    • flutter any
    • flutter_web_plugins any
    • js ^0.6.3
    • meta ^1.8.0
  • firebase_storage_platform_interface 5.1.3
    • _flutterfire_internals ^1.3.16
    • collection ^1.15.0
    • firebase_core ^2.24.2
    • flutter any
    • meta ^1.8.0
    • plugin_platform_interface ^2.1.3
  • firebase_storage_web 3.6.17
    • _flutterfire_internals ^1.3.16
    • async ^2.5.0
    • firebase_core ^2.24.2
    • firebase_core_web ^2.10.0
    • firebase_storage_platform_interface ^5.1.3
    • flutter any
    • flutter_web_plugins any
    • http >=0.13.0 <2.0.0
    • js ^0.6.3
    • meta ^1.8.0
  • firebase_ui_oauth 1.4.16
    • desktop_webview_auth ^0.0.14
    • firebase_auth ^4.15.3
    • firebase_ui_auth ^1.12.0
    • firebase_ui_shared ^1.4.1
    • flutter_svg ^2.0.9
    • flutter any
  • firebase_ui_shared 1.4.1
    • flutter any
  • 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_local_notifications_linux 4.0.0+1
    • dbus ^0.7.8
    • ffi ^2.0.1
    • flutter any
    • flutter_local_notifications_platform_interface ^7.0.0
    • path ^1.8.0
    • xdg_directories >=0.2.0+1 <2.0.0
  • flutter_local_notifications_platform_interface 7.0.0+1
    • flutter any
    • plugin_platform_interface ^2.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_plugin_android_lifecycle 2.0.17
    • flutter any
  • 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
  • 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
  • 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
  • http 1.1.2
    • async ^2.5.0
    • http_parser ^4.0.0
    • meta ^1.3.0
    • web >=0.3.0 <0.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
  • image 4.1.3
    • archive ^3.4.0
    • meta ^1.3.0
    • xml ^6.0.1
  • image_picker_android 0.8.9+2
    • flutter any
    • flutter_plugin_android_lifecycle ^2.0.1
    • image_picker_platform_interface ^2.8.0
  • image_picker_for_web 3.0.2
    • flutter any
    • flutter_web_plugins any
    • image_picker_platform_interface ^2.9.0
    • mime ^1.0.4
  • image_picker_ios 0.8.9
    • flutter any
    • image_picker_platform_interface ^2.8.0
  • image_picker_linux 0.2.1+1
    • file_selector_linux ^0.9.1+3
    • file_selector_platform_interface ^2.2.0
    • flutter any
    • image_picker_platform_interface ^2.8.0
  • image_picker_macos 0.2.1+1
    • file_selector_macos ^0.9.1+1
    • file_selector_platform_interface ^2.3.0
    • flutter any
    • image_picker_platform_interface ^2.8.0
  • image_picker_platform_interface 2.9.2
    • cross_file ^0.3.1+1
    • flutter any
    • http >=0.13.0 <2.0.0
    • plugin_platform_interface ^2.1.0
  • image_picker_windows 0.2.1+1
    • file_selector_platform_interface ^2.2.0
    • file_selector_windows ^0.9.0
    • flutter any
    • image_picker_platform_interface ^2.8.0
  • intl 0.18.1
    • clock ^1.1.0
    • meta ^1.0.2
    • path ^1.8.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
  • linkify 5.0.0
  • lints 3.0.0
  • logging 1.2.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
  • package_info_plus_platform_interface 2.0.1
    • flutter any
    • meta ^1.3.0
    • plugin_platform_interface ^2.0.0
  • path 1.8.3
  • path_parsing 1.0.1
    • vector_math ^2.1.0
    • meta ^1.3.0
  • 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
  • path_provider_android 2.2.2
    • 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
  • permission_handler_android 12.0.1
    • flutter any
    • permission_handler_platform_interface ^4.0.0
  • permission_handler_apple 9.2.0
    • flutter any
    • permission_handler_platform_interface ^4.0.0
  • permission_handler_html 0.1.0+2
    • flutter any
    • flutter_web_plugins any
    • permission_handler_platform_interface ^4.0.2
  • permission_handler_platform_interface 4.0.2
    • flutter any
    • meta ^1.3.0
    • plugin_platform_interface ^2.0.0
  • permission_handler_windows 0.2.0
    • flutter any
    • permission_handler_platform_interface ^4.0.0
  • petitparser 6.0.2
    • meta ^1.9.0
  • platform 3.1.4
  • plugin_platform_interface 2.1.8
    • meta ^1.3.0
  • pointycastle 3.7.3
    • collection ^1.15.0
    • convert ^3.0.0
    • js ^0.6.3
  • 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
  • rxdart 0.27.7
  • sky_engine 0.0.99
  • 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
  • string_scanner 1.2.0
    • source_span ^1.8.0
  • synchronized 3.1.0+1
  • 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
  • timezone 0.9.2
    • path ^1.8.0
  • typed_data 1.3.2
    • collection ^1.15.0
  • url_launcher_android 6.2.1
    • flutter any
    • url_launcher_platform_interface ^2.2.0
  • url_launcher_ios 6.2.2
    • flutter any
    • url_launcher_platform_interface ^2.2.0
  • url_launcher_linux 3.1.1
    • flutter any
    • url_launcher_platform_interface ^2.2.0
  • url_launcher_macos 3.1.0
    • flutter any
    • url_launcher_platform_interface ^2.2.0
  • url_launcher_platform_interface 2.3.0
    • flutter any
    • plugin_platform_interface ^2.1.0
  • url_launcher_web 2.2.3
    • flutter any
    • flutter_web_plugins any
    • url_launcher_platform_interface ^2.2.0
    • web >=0.3.0 <0.5.0
  • url_launcher_windows 3.1.1
    • flutter any
    • url_launcher_platform_interface ^2.2.0
  • uuid 4.2.2
    • 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
  • web 0.3.0
  • webview_flutter_android 3.13.2
    • flutter any
    • webview_flutter_platform_interface ^2.7.0
  • webview_flutter_platform_interface 2.9.0
    • flutter any
    • meta ^1.7.0
    • plugin_platform_interface ^2.1.0
  • webview_flutter_wkwebview 3.10.1
    • flutter any
    • path ^1.8.0
    • webview_flutter_platform_interface ^2.7.0
  • win32 5.2.0
    • ffi ^2.1.0
  • win32_registry 1.1.2
    • ffi ^2.1.0
    • win32 ^5.0.7
  • xdg_directories 1.0.4
    • 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

  1. run fresh app with auth state as signed out.
  2. select registration with phone
  3. enter a test phone number
  4. click the done/submit button on the keyboard
  5. enter the test validation code
  6. click the done/submit button on the keyboard
code sample to reproduce bug
import 'package:firebase_auth/firebase_auth.dart' hide PhoneAuthProvider, EmailAuthProvider;
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

import 'firebase_options.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  FirebaseUIAuth.configureProviders([
    EmailAuthProvider(),
    PhoneAuthProvider(),
  ]);
  runApp(const FirebaseAuthUIExample());
}

class LabelOverrides extends DefaultLocalizations {
  const LabelOverrides();

  @override
  String get emailInputLabel => 'Enter your email';
}

class FirebaseAuthUIExample extends StatelessWidget {
  const FirebaseAuthUIExample({super.key});
  String get initialRoute {
    final user = FirebaseAuth.instance.currentUser;
    return switch (user) {
      null => '/',
      _ => '/profile',
    };
  }

  @override
  Widget build(BuildContext context) {
    final mfaAction = AuthStateChangeAction<MFARequired>(
      (context, state) async {
        final nav = Navigator.of(context);
        await startMFAVerification(
          resolver: state.resolver,
          context: context,
        );

        nav.pushReplacementNamed('/profile');
      },
    );
    return MaterialApp(
      initialRoute: initialRoute,
      routes: {
        '/': (context) {
          return SignInScreen(
            actions: [
              VerifyPhoneAction((context, _) {
                Navigator.pushNamed(context, '/phone');
              }),
              mfaAction,
              EmailLinkSignInAction((context) {
                Navigator.pushReplacementNamed(context, '/email-link-sign-in');
              }),
            ],
          );
        },
        '/phone': (context) {
          return PhoneInputScreen(
            actions: [
              SMSCodeRequestedAction((context, action, flowKey, phone) {
                Navigator.of(context).pushReplacementNamed(
                  '/sms',
                  arguments: {
                    'action': action,
                    'flowKey': flowKey,
                    'phone': phone,
                  },
                );
              }),
            ],
          );
        },
        '/sms': (context) {
          final arguments = ModalRoute.of(context)?.settings.arguments as Map<String, dynamic>?;
          return SMSCodeInputScreen(
            actions: [
              AuthStateChangeAction<SignedIn>((context, state) {
                Navigator.of(context).pushReplacementNamed('/profile');
              })
            ],
            flowKey: arguments?['flowKey'],
            action: arguments?['action'],
          );
        },
        '/profile': (context) {
          final platform = Theme.of(context).platform;
          return ProfileScreen(
            actions: [
              SignedOutAction((context) {
                Navigator.pushReplacementNamed(context, '/');
              }),
              mfaAction,
            ],
            showMFATile: kIsWeb || platform == TargetPlatform.iOS || platform == TargetPlatform.android,
            showUnlinkConfirmationDialog: true,
            showDeleteConfirmationDialog: true,
          );
        },
      },
      title: 'Firebase UI demo',
      debugShowCheckedModeBanner: false,
      locale: const Locale('ar', 'SA'),
      supportedLocales: [const Locale('ar', 'SA')],
      localizationsDelegates: [
        FirebaseUILocalizations.withDefaultOverrides(const LabelOverrides()),
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        FirebaseUILocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
    );
  }
}
### Expected Behavior

the OTP verification starts and the user gets signed in.

Actual Behavior

sometimes the verification does not start (blocked by something? I am not certain) and another click (sometimes multiple clicks) on verify button is required to verify OTP. in other instances, I have to go back to main login page and retry entering the phone number and request another OTP. I notice that this happens when the app is launched fresh and not when signed out and then trying to sign in again.

Additional Information

I used this with a test phone number that was added to firebase authentication. When I try the same with a real phone number I end up receiving multiple SMS messages from Firebase. This makes the auth costs almost double for my project.
image

Here is a screen recording for the issue. in the video you notice the first sign in does not pick the OTP confirm button click and I had to click verify. In the second attempt (in the same screen recording) the OTP confirm button works right away.
https://github.com/firebase/FirebaseUI-Flutter/assets/12709757/c6508b8c-9100-4f1e-9ad4-792811ffbb8d

@danagbemava-nc danagbemava-nc changed the title 馃悰 multiple OTP verifications required on first launch 馃悰 otp verification may not trigger on first launch Jan 24, 2024
@danagbemava-nc
Copy link
Contributor

danagbemava-nc commented Jan 24, 2024

Reproducible using the plugin example app and the steps outlined above.

It seems to happen when the app is first installed. Ideally, tapping the submit button on the keyboard triggers the verification but clicking the verify button is required in some cases and in other cases, just tapping the submit button on the keyboard triggers the verification

cc @lesnitsky

@danagbemava-nc danagbemava-nc added bug Something isn't working auth and removed in triage labels Jan 24, 2024
@danagbemava-nc danagbemava-nc changed the title 馃悰 otp verification may not trigger on first launch [馃悰 firebase_ui_auth] otp verification may not trigger on first launch when clicking the submit button on the keyboard Jan 24, 2024
@rashidotm
Copy link
Author

I have a guess that this problem is caused by something in the auto OTP read functionality

@rashidotm
Copy link
Author

rashidotm commented Feb 2, 2024

I have been toying with this a little bit:

  • Removed LabelOverrides from code and see if the issue is still reproducible.
    --- result: yes the bug reproduces.
    --- conclusion: remove LabelOverrides from the bug code sample.

  • Removed locale: const Locale('ar', 'SA') & supportedLocales: [const Locale('ar', 'SA')]
    --- result: now each time I have to enter the international dial code 966 for SA then navigate to number field and enter it. The bug does not reproduce.
    --- conclusion: keep locale configuration in code sample

here is the reduced code sample.
import 'package:firebase_auth/firebase_auth.dart' hide PhoneAuthProvider, EmailAuthProvider;
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:firebase_ui_localizations/firebase_ui_localizations.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

import 'firebase_options.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  FirebaseUIAuth.configureProviders([
    PhoneAuthProvider(),
  ]);
  runApp(const FirebaseAuthUIExample());
}

class FirebaseAuthUIExample extends StatelessWidget {
  const FirebaseAuthUIExample({super.key});
  String get initialRoute {
    final user = FirebaseAuth.instance.currentUser;
    return switch (user) {
      null => '/',
      _ => '/profile',
    };
  }

  @override
  Widget build(BuildContext context) {
    final mfaAction = AuthStateChangeAction<MFARequired>(
      (context, state) async {
        final nav = Navigator.of(context);
        await startMFAVerification(
          resolver: state.resolver,
          context: context,
        );

        nav.pushReplacementNamed('/profile');
      },
    );
    return MaterialApp(
      initialRoute: initialRoute,
      routes: {
        '/': (context) {
          return SignInScreen(
            actions: [
              VerifyPhoneAction((context, _) {
                Navigator.pushNamed(context, '/phone');
              }),
              mfaAction,
            ],
          );
        },
        '/phone': (context) {
          return PhoneInputScreen(
            actions: [
              SMSCodeRequestedAction((context, action, flowKey, phone) {
                Navigator.of(context).pushReplacementNamed(
                  '/sms',
                  arguments: {
                    'action': action,
                    'flowKey': flowKey,
                    'phone': phone,
                  },
                );
              }),
            ],
          );
        },
        '/sms': (context) {
          final arguments = ModalRoute.of(context)?.settings.arguments as Map<String, dynamic>?;
          return SMSCodeInputScreen(
            actions: [
              AuthStateChangeAction<SignedIn>((context, state) {
                Navigator.of(context).pushReplacementNamed('/profile');
              })
            ],
            flowKey: arguments?['flowKey'],
            action: arguments?['action'],
          );
        },
        '/profile': (context) {
          final platform = Theme.of(context).platform;
          return ProfileScreen(
            actions: [
              SignedOutAction((context) {
                Navigator.pushReplacementNamed(context, '/');
              }),
              mfaAction,
            ],
            showMFATile: kIsWeb || platform == TargetPlatform.iOS || platform == TargetPlatform.android,
            showUnlinkConfirmationDialog: true,
            showDeleteConfirmationDialog: true,
          );
        },
      },
      title: 'Firebase UI demo',
      debugShowCheckedModeBanner: false,
      locale: const Locale('ar', 'SA'),
      supportedLocales: [const Locale('ar', 'SA')],
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        FirebaseUILocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
    );
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
auth bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants