Copy disabled (too large)
Download .txt
Showing preview only (14,494K chars total). Download the full file to get everything.
Repository: firebase/flutterfire
Branch: main
Commit: 0fa28184cf64
Files: 2912
Total size: 13.1 MB
Directory structure:
gitextract_7w3h2ieq/
├── .clang-format
├── .editorconfig
├── .gemini/
│ └── config.yaml
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── ---documentation-feedback.md
│ │ ├── ---feature-request.md
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ └── ios_background_message_handling.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── dependabot.yml
│ ├── move.yml
│ └── workflows/
│ ├── all_plugins.yaml
│ ├── android.yaml
│ ├── e2e_tests_fdc.yaml
│ ├── ios.yaml
│ ├── macos.yaml
│ ├── ossf-scorecard.yml
│ ├── pr_title.yaml
│ ├── scripts/
│ │ ├── .firebaserc
│ │ ├── build-example.sh
│ │ ├── database.rules.json
│ │ ├── drive-example.sh
│ │ ├── firebase.json
│ │ ├── firestore.indexes.json
│ │ ├── firestore.rules
│ │ ├── functions/
│ │ │ ├── .gitignore
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.ts
│ │ │ └── tsconfig.json
│ │ ├── reset-firestore-emulator.sh
│ │ ├── start-firebase-emulator.sh
│ │ ├── storage.rules
│ │ ├── swift-integration.dart
│ │ └── validate-formatting.sh
│ ├── web.yaml
│ └── windows.yaml
├── .gitignore
├── .opensource/
│ └── project.json
├── .swiftformat
├── .vscode/
│ ├── settings.json
│ └── tasks.json
├── AUTHORS
├── CHANGELOG.md
├── CODEOWNERS
├── CONTRIBUTING.md
├── LICENSE
├── Package.swift
├── README.md
├── VERSIONS.md
├── all_lint_rules.yaml
├── analysis_options.yaml
├── docs/
│ ├── README.md
│ ├── analytics/
│ │ ├── _events.md
│ │ ├── _get-started.md
│ │ └── _user-properties.md
│ ├── app-check/
│ │ ├── custom-resource.md
│ │ ├── debug-provider.md
│ │ └── default-providers.md
│ ├── auth/
│ │ ├── account-linking.md
│ │ ├── anonymous-auth.md
│ │ ├── custom-auth.md
│ │ ├── email-link-auth.md
│ │ ├── errors.md
│ │ ├── federated-auth.md
│ │ ├── manage-users.md
│ │ ├── multi-factor.md
│ │ ├── passing-state-in-email-actions.md
│ │ ├── password-auth.md
│ │ ├── phone-auth.md
│ │ └── start.md
│ ├── cloud-messaging/
│ │ ├── client.md
│ │ ├── first-message.md
│ │ ├── receive.md
│ │ └── topic-messaging.md
│ ├── crashlytics/
│ │ ├── _customize-crash-reports.md
│ │ ├── _deobfuscated.md
│ │ ├── _force-test-crash.md
│ │ └── _get-started.md
│ ├── database/
│ │ ├── _usecase_security_preamble.md
│ │ ├── lists-of-data.md
│ │ ├── offline-capabilities.md
│ │ ├── read-and-write.md
│ │ ├── start.md
│ │ └── structure-data.md
│ ├── dynamic-links/
│ │ ├── create.md
│ │ └── receive.md
│ ├── in-app-messaging/
│ │ ├── _customize-messages.md
│ │ ├── _get-started.md
│ │ └── _modify-message-behavior.md
│ ├── ml/
│ │ └── use-custom-models.md
│ ├── perf-mon/
│ │ ├── _custom-code-traces.md
│ │ ├── _custom-network-traces.md
│ │ ├── _disable-sdk.md
│ │ └── get-started.md
│ ├── reference/
│ │ └── _toc.yaml
│ ├── remote-config/
│ │ └── _get-started.md
│ ├── setup/
│ │ ├── _setup_main.md
│ │ ├── _setup_prereq_android.md
│ │ ├── _setup_prereq_ios.md
│ │ └── _setup_prereq_web.md
│ ├── storage/
│ │ ├── create-reference.md
│ │ ├── delete-files.md
│ │ ├── download-files.md
│ │ ├── file-metadata.md
│ │ ├── handle-errors.md
│ │ ├── list-files.md
│ │ ├── start.md
│ │ └── upload-files.md
│ └── test-lab/
│ └── integration-testing-with-flutter.md
├── header_template.txt
├── melos.yaml
├── packages/
│ ├── _flutterfire_internals/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── _flutterfire_internals.dart
│ │ │ └── src/
│ │ │ ├── exception.dart
│ │ │ ├── interop_shimmer.dart
│ │ │ └── js_interop.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── guard_test.dart
│ ├── cloud_firestore/
│ │ ├── cloud_firestore/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── firestore/
│ │ │ │ │ ├── FlutterFirebaseFirestoreException.java
│ │ │ │ │ ├── FlutterFirebaseFirestoreExtension.java
│ │ │ │ │ ├── FlutterFirebaseFirestoreMessageCodec.java
│ │ │ │ │ ├── FlutterFirebaseFirestorePlugin.java
│ │ │ │ │ ├── FlutterFirebaseFirestoreRegistrar.java
│ │ │ │ │ ├── FlutterFirebaseFirestoreTransactionResult.java
│ │ │ │ │ ├── GeneratedAndroidFirebaseFirestore.java
│ │ │ │ │ ├── streamhandler/
│ │ │ │ │ │ ├── DocumentSnapshotsStreamHandler.java
│ │ │ │ │ │ ├── LoadBundleStreamHandler.java
│ │ │ │ │ │ ├── OnTransactionResultListener.java
│ │ │ │ │ │ ├── QuerySnapshotsStreamHandler.java
│ │ │ │ │ │ ├── SnapshotsInSyncStreamHandler.java
│ │ │ │ │ │ └── TransactionStreamHandler.java
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── ExceptionConverter.java
│ │ │ │ │ ├── PigeonParser.java
│ │ │ │ │ └── ServerTimestampBehaviorConverter.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── dartpad/
│ │ │ │ ├── dartpad_metadata.yaml
│ │ │ │ └── lib/
│ │ │ │ └── main.dart
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── firestore/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── firebase.json
│ │ │ │ ├── integration_test/
│ │ │ │ │ ├── collection_reference_e2e.dart
│ │ │ │ │ ├── document_change_e2e.dart
│ │ │ │ │ ├── document_reference_e2e.dart
│ │ │ │ │ ├── e2e_test.dart
│ │ │ │ │ ├── field_value_e2e.dart
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── firebase_options_secondary.dart
│ │ │ │ │ ├── geo_point_e2e.dart
│ │ │ │ │ ├── instance_e2e.dart
│ │ │ │ │ ├── load_bundle_e2e.dart
│ │ │ │ │ ├── query_e2e.dart
│ │ │ │ │ ├── second_database.dart
│ │ │ │ │ ├── settings_e2e.dart
│ │ │ │ │ ├── snapshot_metadata_e2e.dart
│ │ │ │ │ ├── timestamp_e2e.dart
│ │ │ │ │ ├── transaction_e2e.dart
│ │ │ │ │ ├── vector_value_e2e.dart
│ │ │ │ │ ├── web_snapshot_listeners.dart
│ │ │ │ │ └── write_batch_e2e.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ ├── RunnerTests/
│ │ │ │ │ │ └── RunnerTests.swift
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ ├── web/
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── manifest.json
│ │ │ │ │ └── wasm_index.html
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── ios/
│ │ │ │ ├── cloud_firestore/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── cloud_firestore/
│ │ │ │ │ ├── FLTDocumentSnapshotStreamHandler.m
│ │ │ │ │ ├── FLTFirebaseFirestoreExtension.m
│ │ │ │ │ ├── FLTFirebaseFirestorePlugin.m
│ │ │ │ │ ├── FLTFirebaseFirestoreReader.m
│ │ │ │ │ ├── FLTFirebaseFirestoreUtils.m
│ │ │ │ │ ├── FLTFirebaseFirestoreWriter.m
│ │ │ │ │ ├── FLTFirestoreClientLanguage.mm
│ │ │ │ │ ├── FLTLoadBundleStreamHandler.m
│ │ │ │ │ ├── FLTQuerySnapshotStreamHandler.m
│ │ │ │ │ ├── FLTSnapshotsInSyncStreamHandler.m
│ │ │ │ │ ├── FLTTransactionStreamHandler.m
│ │ │ │ │ ├── FirestoreMessages.g.m
│ │ │ │ │ ├── FirestorePigeonParser.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ └── include/
│ │ │ │ │ └── cloud_firestore/
│ │ │ │ │ ├── Private/
│ │ │ │ │ │ ├── FLTDocumentSnapshotStreamHandler.h
│ │ │ │ │ │ ├── FLTFirebaseFirestoreExtension.h
│ │ │ │ │ │ ├── FLTFirebaseFirestoreReader.h
│ │ │ │ │ │ ├── FLTFirebaseFirestoreUtils.h
│ │ │ │ │ │ ├── FLTFirebaseFirestoreWriter.h
│ │ │ │ │ │ ├── FLTLoadBundleStreamHandler.h
│ │ │ │ │ │ ├── FLTQuerySnapshotStreamHandler.h
│ │ │ │ │ │ ├── FLTSnapshotsInSyncStreamHandler.h
│ │ │ │ │ │ ├── FLTTransactionStreamHandler.h
│ │ │ │ │ │ └── FirestorePigeonParser.h
│ │ │ │ │ └── Public/
│ │ │ │ │ ├── CustomPigeonHeaderFirestore.h
│ │ │ │ │ ├── FLTFirebaseFirestorePlugin.h
│ │ │ │ │ └── FirestoreMessages.g.h
│ │ │ │ ├── cloud_firestore.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── cloud_firestore.dart
│ │ │ │ └── src/
│ │ │ │ ├── aggregate_query.dart
│ │ │ │ ├── aggregate_query_snapshot.dart
│ │ │ │ ├── collection_reference.dart
│ │ │ │ ├── document_change.dart
│ │ │ │ ├── document_reference.dart
│ │ │ │ ├── document_snapshot.dart
│ │ │ │ ├── field_value.dart
│ │ │ │ ├── filters.dart
│ │ │ │ ├── firestore.dart
│ │ │ │ ├── load_bundle_task.dart
│ │ │ │ ├── load_bundle_task_snapshot.dart
│ │ │ │ ├── persistent_cache_index_manager.dart
│ │ │ │ ├── query.dart
│ │ │ │ ├── query_document_snapshot.dart
│ │ │ │ ├── query_snapshot.dart
│ │ │ │ ├── snapshot_metadata.dart
│ │ │ │ ├── transaction.dart
│ │ │ │ ├── utils/
│ │ │ │ │ └── codec_utility.dart
│ │ │ │ └── write_batch.dart
│ │ │ ├── macos/
│ │ │ │ ├── cloud_firestore/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── cloud_firestore/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── cloud_firestore.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── cloud_firestore_test.dart
│ │ │ │ ├── collection_reference_test.dart
│ │ │ │ ├── field_value_test.dart
│ │ │ │ ├── mock.dart
│ │ │ │ ├── query_test.dart
│ │ │ │ └── test_firestore_message_codec.dart
│ │ │ └── windows/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── cloud_firestore_plugin.cpp
│ │ │ ├── cloud_firestore_plugin.h
│ │ │ ├── cloud_firestore_plugin_c_api.cpp
│ │ │ ├── firestore_codec.cpp
│ │ │ ├── firestore_codec.h
│ │ │ ├── include/
│ │ │ │ └── cloud_firestore/
│ │ │ │ └── cloud_firestore_plugin_c_api.h
│ │ │ ├── messages.g.cpp
│ │ │ ├── messages.g.h
│ │ │ ├── plugin_version.h.in
│ │ │ └── test/
│ │ │ └── cloud_firestore_plugin_test.cpp
│ │ ├── cloud_firestore_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── cloud_firestore_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── blob.dart
│ │ │ │ ├── field_path.dart
│ │ │ │ ├── field_path_type.dart
│ │ │ │ ├── filters.dart
│ │ │ │ ├── geo_point.dart
│ │ │ │ ├── get_options.dart
│ │ │ │ ├── internal/
│ │ │ │ │ └── pointer.dart
│ │ │ │ ├── load_bundle_task_state.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_aggregate_query.dart
│ │ │ │ │ ├── method_channel_collection_reference.dart
│ │ │ │ │ ├── method_channel_document_change.dart
│ │ │ │ │ ├── method_channel_document_reference.dart
│ │ │ │ │ ├── method_channel_field_value.dart
│ │ │ │ │ ├── method_channel_field_value_factory.dart
│ │ │ │ │ ├── method_channel_firestore.dart
│ │ │ │ │ ├── method_channel_load_bundle_task.dart
│ │ │ │ │ ├── method_channel_persistent_cache_index_manager.dart
│ │ │ │ │ ├── method_channel_query.dart
│ │ │ │ │ ├── method_channel_query_snapshot.dart
│ │ │ │ │ ├── method_channel_transaction.dart
│ │ │ │ │ ├── method_channel_write_batch.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── auto_id_generator.dart
│ │ │ │ │ ├── exception.dart
│ │ │ │ │ ├── firestore_message_codec.dart
│ │ │ │ │ ├── maps.dart
│ │ │ │ │ └── source.dart
│ │ │ │ ├── persistence_settings.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ ├── platform_interface_aggregate_query.dart
│ │ │ │ │ ├── platform_interface_aggregate_query_snapshot.dart
│ │ │ │ │ ├── platform_interface_collection_reference.dart
│ │ │ │ │ ├── platform_interface_document_change.dart
│ │ │ │ │ ├── platform_interface_document_reference.dart
│ │ │ │ │ ├── platform_interface_document_snapshot.dart
│ │ │ │ │ ├── platform_interface_field_value.dart
│ │ │ │ │ ├── platform_interface_field_value_factory.dart
│ │ │ │ │ ├── platform_interface_firestore.dart
│ │ │ │ │ ├── platform_interface_index_definitions.dart
│ │ │ │ │ ├── platform_interface_load_bundle_task.dart
│ │ │ │ │ ├── platform_interface_load_bundle_task_snapshot.dart
│ │ │ │ │ ├── platform_interface_persistent_cache_index_manager.dart
│ │ │ │ │ ├── platform_interface_query.dart
│ │ │ │ │ ├── platform_interface_query_snapshot.dart
│ │ │ │ │ ├── platform_interface_transaction.dart
│ │ │ │ │ ├── platform_interface_write_batch.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── load_bundle_task_state.dart
│ │ │ │ ├── set_options.dart
│ │ │ │ ├── settings.dart
│ │ │ │ ├── snapshot_metadata.dart
│ │ │ │ ├── timestamp.dart
│ │ │ │ └── vector_value.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ ├── generate_pigeon.sh
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── field_path_test.dart
│ │ │ ├── geo_point_test.dart
│ │ │ ├── get_options_test.dart
│ │ │ ├── internal_tests/
│ │ │ │ └── pointer_test.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ ├── set_options_test.dart
│ │ │ ├── settings_test.dart
│ │ │ ├── timestamp_test.dart
│ │ │ └── utils/
│ │ │ └── test_firestore_message_codec.dart
│ │ └── cloud_firestore_web/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── ios/
│ │ │ └── cloud_firestore_web.podspec
│ │ ├── lib/
│ │ │ ├── cloud_firestore_web.dart
│ │ │ └── src/
│ │ │ ├── aggregate_query_web.dart
│ │ │ ├── cloud_firestore_version.dart
│ │ │ ├── collection_reference_web.dart
│ │ │ ├── document_reference_web.dart
│ │ │ ├── field_value_factory_web.dart
│ │ │ ├── field_value_web.dart
│ │ │ ├── internals.dart
│ │ │ ├── interop/
│ │ │ │ ├── firestore.dart
│ │ │ │ ├── firestore_interop.dart
│ │ │ │ └── utils/
│ │ │ │ └── utils.dart
│ │ │ ├── load_bundle_task_web.dart
│ │ │ ├── persistent_cache_index_manager_web.dart
│ │ │ ├── query_web.dart
│ │ │ ├── transaction_web.dart
│ │ │ ├── utils/
│ │ │ │ ├── decode_utility.dart
│ │ │ │ ├── encode_utility.dart
│ │ │ │ └── web_utils.dart
│ │ │ └── write_batch_web.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── field_value_factory_web_test.dart
│ │ └── test_common.dart
│ ├── cloud_functions/
│ │ ├── analysis_options.yaml
│ │ ├── cloud_functions/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── kotlin/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── functions/
│ │ │ │ │ ├── FirebaseFunctionsStreamHandler.kt
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.kt
│ │ │ │ │ ├── FlutterFirebaseFunctionsPlugin.kt
│ │ │ │ │ ├── GeneratedAndroidCloudFunctions.g.kt
│ │ │ │ │ └── StreamResponseSubscriber.kt
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── cloud_functions/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── cloud_functions/
│ │ │ │ │ ├── CloudFunctionsMessages.g.swift
│ │ │ │ │ ├── CodecUtility.swift
│ │ │ │ │ ├── Constants.swift
│ │ │ │ │ ├── FirebaseFunctionsPlugin.swift
│ │ │ │ │ ├── FunctionsStreamHandler.swift
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── cloud_functions.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── cloud_functions.dart
│ │ │ │ └── src/
│ │ │ │ ├── firebase_functions.dart
│ │ │ │ ├── https_callable.dart
│ │ │ │ ├── https_callable_result.dart
│ │ │ │ └── https_callable_stream_result.dart
│ │ │ ├── macos/
│ │ │ │ ├── cloud_functions/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── cloud_functions/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── cloud_functions.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_functions_test.dart
│ │ │ │ ├── https_callable_test.dart
│ │ │ │ ├── mock.dart
│ │ │ │ └── sample.dart
│ │ │ └── windows/
│ │ │ ├── messages.g.cpp
│ │ │ └── messages.g.h
│ │ ├── cloud_functions_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── cloud_functions_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── firebase_functions_exception.dart
│ │ │ │ ├── https_callable_options.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_functions.dart
│ │ │ │ │ ├── method_channel_https_callable.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ └── platform_interface/
│ │ │ │ ├── platform_interface_firebase_functions.dart
│ │ │ │ └── platform_interface_https_callable.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── method_channel/
│ │ │ │ ├── method_channel_firebase_functions_test.dart
│ │ │ │ ├── method_channel_https_callable_test.dart
│ │ │ │ └── utils/
│ │ │ │ └── exception_test.dart
│ │ │ ├── mock.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ └── platform_interface/
│ │ │ ├── platform_interface_firebase_functions_test.dart
│ │ │ └── platform_interface_https_callable_test.dart
│ │ └── cloud_functions_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── ios/
│ │ │ └── cloud_functions_web.podspec
│ │ ├── lib/
│ │ │ ├── cloud_functions_web.dart
│ │ │ ├── https_callable_web.dart
│ │ │ ├── interop/
│ │ │ │ ├── functions.dart
│ │ │ │ └── functions_interop.dart
│ │ │ ├── src/
│ │ │ │ └── cloud_functions_version.dart
│ │ │ └── utils.dart
│ │ └── pubspec.yaml
│ ├── firebase_ai/
│ │ ├── all_lint_rules.yaml
│ │ ├── analysis_options.yaml
│ │ └── firebase_ai/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── example/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── README.md
│ │ │ ├── analysis_options.yaml
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle.kts
│ │ │ │ │ └── src/
│ │ │ │ │ ├── debug/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ └── com/
│ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ └── firebase_ai_example/
│ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── profile/
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── build.gradle.kts
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ └── settings.gradle.kts
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Flutter/
│ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ └── Release.xcconfig
│ │ │ │ ├── Podfile
│ │ │ │ ├── Runner/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── README.md
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── Runner.xcscheme
│ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ └── firebase_app_id_file.json
│ │ │ ├── lib/
│ │ │ │ ├── main.dart
│ │ │ │ ├── pages/
│ │ │ │ │ ├── audio_page.dart
│ │ │ │ │ ├── bidi_page.dart
│ │ │ │ │ ├── chat_page.dart
│ │ │ │ │ ├── document.dart
│ │ │ │ │ ├── function_calling_page.dart
│ │ │ │ │ ├── image_prompt_page.dart
│ │ │ │ │ ├── imagen_page.dart
│ │ │ │ │ ├── json_schema_page.dart
│ │ │ │ │ ├── schema_page.dart
│ │ │ │ │ ├── server_template_page.dart
│ │ │ │ │ ├── token_count_page.dart
│ │ │ │ │ └── video_page.dart
│ │ │ │ ├── utils/
│ │ │ │ │ ├── audio_input.dart
│ │ │ │ │ ├── audio_output.dart
│ │ │ │ │ ├── image_utils.dart
│ │ │ │ │ └── video_input.dart
│ │ │ │ └── widgets/
│ │ │ │ ├── audio_visualizer.dart
│ │ │ │ ├── camera_previews.dart
│ │ │ │ ├── message_widget.dart
│ │ │ │ └── sound_waves.dart
│ │ │ ├── macos/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Flutter/
│ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ ├── Podfile
│ │ │ │ ├── Runner/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ ├── Configs/
│ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ └── Release.entitlements
│ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── Runner.xcscheme
│ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ └── firebase_app_id_file.json
│ │ │ ├── pubspec.yaml
│ │ │ └── web/
│ │ │ ├── index.html
│ │ │ └── manifest.json
│ │ ├── lib/
│ │ │ ├── firebase_ai.dart
│ │ │ └── src/
│ │ │ ├── api.dart
│ │ │ ├── base_model.dart
│ │ │ ├── chat.dart
│ │ │ ├── client.dart
│ │ │ ├── content.dart
│ │ │ ├── developer/
│ │ │ │ └── api.dart
│ │ │ ├── error.dart
│ │ │ ├── firebase_ai.dart
│ │ │ ├── firebaseai_version.dart
│ │ │ ├── generative_model.dart
│ │ │ ├── imagen/
│ │ │ │ ├── imagen_api.dart
│ │ │ │ ├── imagen_content.dart
│ │ │ │ ├── imagen_edit.dart
│ │ │ │ ├── imagen_model.dart
│ │ │ │ └── imagen_reference.dart
│ │ │ ├── live_api.dart
│ │ │ ├── live_model.dart
│ │ │ ├── live_session.dart
│ │ │ ├── schema.dart
│ │ │ ├── server_template/
│ │ │ │ ├── template_generative_model.dart
│ │ │ │ └── template_imagen_model.dart
│ │ │ ├── tool.dart
│ │ │ └── utils/
│ │ │ ├── chat_utils.dart
│ │ │ └── mutex.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── api_test.dart
│ │ ├── base_model_test.dart
│ │ ├── chat_test.dart
│ │ ├── content_test.dart
│ │ ├── developer_api_test.dart
│ │ ├── error_test.dart
│ │ ├── firebase_vertexai_test.dart
│ │ ├── google_ai_generative_model_test.dart
│ │ ├── google_ai_response_parsing_test.dart
│ │ ├── imagen_edit_test.dart
│ │ ├── imagen_model_test.dart
│ │ ├── imagen_test.dart
│ │ ├── live_test.dart
│ │ ├── mock.dart
│ │ ├── model_test.dart
│ │ ├── response_parsing_test.dart
│ │ ├── schema_test.dart
│ │ ├── server_template_test.dart
│ │ ├── tool_test.dart
│ │ └── utils/
│ │ ├── matchers.dart
│ │ └── stub_client.dart
│ ├── firebase_analytics/
│ │ ├── analysis_options.yaml
│ │ ├── firebase_analytics/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── kotlin/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── analytics/
│ │ │ │ │ ├── Constants.kt
│ │ │ │ │ ├── FlutterFirebaseAnalyticsPlugin.kt
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.kt
│ │ │ │ │ └── GeneratedAndroidFirebaseAnalytics.g.kt
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── analytics/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ └── tabs_page.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── firebase_analytics/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ ├── Sources/
│ │ │ │ │ │ └── firebase_analytics/
│ │ │ │ │ │ ├── Constants.swift
│ │ │ │ │ │ ├── FirebaseAnalyticsMessages.g.swift
│ │ │ │ │ │ ├── FirebaseAnalyticsPlugin.swift
│ │ │ │ │ │ └── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ └── analytics_storekit_config.storekit
│ │ │ │ ├── firebase_analytics.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_analytics.dart
│ │ │ │ ├── observer.dart
│ │ │ │ └── src/
│ │ │ │ └── firebase_analytics.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_analytics/
│ │ │ │ │ └── Package.swift
│ │ │ │ └── firebase_analytics.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_analytics_test.dart
│ │ │ │ └── mock.dart
│ │ │ └── windows/
│ │ │ ├── messages.g.cpp
│ │ │ └── messages.g.h
│ │ ├── firebase_analytics_platform_interface/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_analytics_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── analytics_call_options.dart
│ │ │ │ ├── analytics_event_item.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_analytics.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ └── platform_interface/
│ │ │ │ └── platform_interface_firebase_analytics.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── mock.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ └── platform_interface_tests/
│ │ │ └── platform_interface_analytics_test.dart
│ │ └── firebase_analytics_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_analytics_web.dart
│ │ │ ├── interop/
│ │ │ │ ├── analytics.dart
│ │ │ │ └── analytics_interop.dart
│ │ │ ├── src/
│ │ │ │ └── firebase_analytics_version.dart
│ │ │ └── utils/
│ │ │ └── exception.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── firebase_analytics_web_test.dart
│ │ └── firebase_analytics_web_test.mocks.dart
│ ├── firebase_app_check/
│ │ ├── firebase_app_check/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── appcheck/
│ │ │ │ │ ├── FlutterFirebaseAppCheckPlugin.java
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.java
│ │ │ │ │ └── TokenChannelStreamHandler.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── appcheck/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── Runner.entitlements
│ │ │ │ │ │ ├── RunnerRelease.entitlements
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── firebase_app_check/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_app_check/
│ │ │ │ │ ├── FLTAppCheckProvider.m
│ │ │ │ │ ├── FLTAppCheckProviderFactory.m
│ │ │ │ │ ├── FLTFirebaseAppCheckPlugin.m
│ │ │ │ │ ├── FLTTokenRefreshStreamHandler.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ └── include/
│ │ │ │ │ ├── FLTAppCheckProvider.h
│ │ │ │ │ ├── FLTAppCheckProviderFactory.h
│ │ │ │ │ ├── FLTFirebaseAppCheckPlugin.h
│ │ │ │ │ └── FLTTokenRefreshStreamHandler.h
│ │ │ │ ├── firebase_app_check.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_app_check.dart
│ │ │ │ └── src/
│ │ │ │ └── firebase_app_check.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_app_check/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_app_check/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_app_check.podspec
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── firebase_app_check_test.dart
│ │ │ └── mock.dart
│ │ ├── firebase_app_check_platform_interface/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_app_check_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── android_provider.dart
│ │ │ │ ├── android_providers.dart
│ │ │ │ ├── apple_provider.dart
│ │ │ │ ├── apple_providers.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_app_check.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── exception.dart
│ │ │ │ │ └── provider_to_string.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ └── platform_interface_firebase_app_check.dart
│ │ │ │ └── web_providers.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── method_channel_tests/
│ │ │ │ ├── method_channel_firebase_app_check_test.dart
│ │ │ │ └── utils/
│ │ │ │ └── provider_to_string_test.dart
│ │ │ ├── mock.dart
│ │ │ └── platform_interface_tests/
│ │ │ └── platform_interface_app_check_test.dart
│ │ └── firebase_app_check_web/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_app_check_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_app_check_version.dart
│ │ │ ├── internals.dart
│ │ │ └── interop/
│ │ │ ├── app_check.dart
│ │ │ └── app_check_interop.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── firebase_app_check_web_test.dart
│ │ └── firebase_app_check_web_test.mocks.dart
│ ├── firebase_app_installations/
│ │ ├── firebase_app_installations/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── installations/
│ │ │ │ │ └── firebase_app_installations/
│ │ │ │ │ ├── FirebaseInstallationsPlugin.java
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.java
│ │ │ │ │ └── TokenChannelStreamHandler.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── installations/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── firebase_app_installations/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_app_installations/
│ │ │ │ │ ├── Constants.swift
│ │ │ │ │ ├── FirebaseInstallationsPlugin.swift
│ │ │ │ │ ├── IdChangedStreamHandler.swift
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── firebase_app_installations.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_app_installations.dart
│ │ │ │ └── src/
│ │ │ │ └── firebase_app_installations.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_app_installations/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_app_installations/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_app_installations.podspec
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── firebase_installations_test.dart
│ │ ├── firebase_app_installations_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── analysis_options.yaml
│ │ │ ├── lib/
│ │ │ │ ├── firebase_app_installations_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_app_installations.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ └── platform_interface/
│ │ │ │ └── firebase_app_installations_platform_interface.dart
│ │ │ └── pubspec.yaml
│ │ └── firebase_app_installations_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib/
│ │ │ ├── firebase_app_installations_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_app_installations_version.dart
│ │ │ ├── guard.dart
│ │ │ └── interop/
│ │ │ ├── installations.dart
│ │ │ └── installations_interop.dart
│ │ └── pubspec.yaml
│ ├── firebase_auth/
│ │ ├── analysis_options.yaml
│ │ ├── firebase_auth/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── auth/
│ │ │ │ │ ├── AuthStateChannelStreamHandler.java
│ │ │ │ │ ├── Constants.java
│ │ │ │ │ ├── FlutterFirebaseAuthPlugin.java
│ │ │ │ │ ├── FlutterFirebaseAuthPluginException.java
│ │ │ │ │ ├── FlutterFirebaseAuthRegistrar.java
│ │ │ │ │ ├── FlutterFirebaseAuthUser.java
│ │ │ │ │ ├── FlutterFirebaseMultiFactor.java
│ │ │ │ │ ├── FlutterFirebaseTotpMultiFactor.java
│ │ │ │ │ ├── FlutterFirebaseTotpSecret.java
│ │ │ │ │ ├── GeneratedAndroidFirebaseAuth.java
│ │ │ │ │ ├── IdTokenChannelStreamHandler.java
│ │ │ │ │ ├── PhoneNumberVerificationStreamHandler.java
│ │ │ │ │ └── PigeonParser.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── auth/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── Runner-Bridging-Header.h
│ │ │ │ │ │ ├── Runner.entitlements
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── auth.dart
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ └── profile.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── web/
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── manifest.json
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── ios/
│ │ │ │ ├── firebase_auth/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_auth/
│ │ │ │ │ ├── FLTAuthStateChannelStreamHandler.m
│ │ │ │ │ ├── FLTFirebaseAuthPlugin.m
│ │ │ │ │ ├── FLTIdTokenChannelStreamHandler.m
│ │ │ │ │ ├── FLTPhoneNumberVerificationStreamHandler.m
│ │ │ │ │ ├── PigeonParser.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── firebase_auth_messages.g.m
│ │ │ │ │ └── include/
│ │ │ │ │ ├── Private/
│ │ │ │ │ │ ├── FLTAuthStateChannelStreamHandler.h
│ │ │ │ │ │ ├── FLTIdTokenChannelStreamHandler.h
│ │ │ │ │ │ ├── FLTPhoneNumberVerificationStreamHandler.h
│ │ │ │ │ │ └── PigeonParser.h
│ │ │ │ │ └── Public/
│ │ │ │ │ ├── CustomPigeonHeader.h
│ │ │ │ │ ├── FLTFirebaseAuthPlugin.h
│ │ │ │ │ └── firebase_auth_messages.g.h
│ │ │ │ ├── firebase_auth.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_auth.dart
│ │ │ │ └── src/
│ │ │ │ ├── confirmation_result.dart
│ │ │ │ ├── firebase_auth.dart
│ │ │ │ ├── multi_factor.dart
│ │ │ │ ├── recaptcha_verifier.dart
│ │ │ │ ├── user.dart
│ │ │ │ └── user_credential.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_auth/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_auth/
│ │ │ │ │ └── Resource/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_auth.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_auth_test.dart
│ │ │ │ ├── mock.dart
│ │ │ │ └── user_test.dart
│ │ │ └── windows/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── firebase_auth_plugin.cpp
│ │ │ ├── firebase_auth_plugin.h
│ │ │ ├── firebase_auth_plugin_c_api.cpp
│ │ │ ├── include/
│ │ │ │ └── firebase_auth/
│ │ │ │ └── firebase_auth_plugin_c_api.h
│ │ │ ├── messages.g.cpp
│ │ │ ├── messages.g.h
│ │ │ ├── plugin_version.h.in
│ │ │ └── test/
│ │ │ └── firebase_auth_plugin_test.cpp
│ │ ├── firebase_auth_platform_interface/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_auth_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── action_code_info.dart
│ │ │ │ ├── action_code_settings.dart
│ │ │ │ ├── additional_user_info.dart
│ │ │ │ ├── auth_credential.dart
│ │ │ │ ├── auth_provider.dart
│ │ │ │ ├── auth_settings.dart
│ │ │ │ ├── firebase_auth_exception.dart
│ │ │ │ ├── firebase_auth_multi_factor_exception.dart
│ │ │ │ ├── id_token_result.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_auth.dart
│ │ │ │ │ ├── method_channel_multi_factor.dart
│ │ │ │ │ ├── method_channel_user.dart
│ │ │ │ │ ├── method_channel_user_credential.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── convert_auth_provider.dart
│ │ │ │ │ ├── exception.dart
│ │ │ │ │ ├── phone_auth_callbacks.dart
│ │ │ │ │ └── pigeon_helper.dart
│ │ │ │ ├── password_policy/
│ │ │ │ │ ├── password_policy.dart
│ │ │ │ │ ├── password_policy_api.dart
│ │ │ │ │ ├── password_policy_impl.dart
│ │ │ │ │ └── password_validation_status.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ ├── platform_interface_confirmation_result.dart
│ │ │ │ │ ├── platform_interface_firebase_auth.dart
│ │ │ │ │ ├── platform_interface_multi_factor.dart
│ │ │ │ │ ├── platform_interface_recaptcha_verifier_factory.dart
│ │ │ │ │ ├── platform_interface_user.dart
│ │ │ │ │ └── platform_interface_user_credential.dart
│ │ │ │ ├── providers/
│ │ │ │ │ ├── apple_auth.dart
│ │ │ │ │ ├── email_auth.dart
│ │ │ │ │ ├── facebook_auth.dart
│ │ │ │ │ ├── game_center_auth.dart
│ │ │ │ │ ├── github_auth.dart
│ │ │ │ │ ├── google_auth.dart
│ │ │ │ │ ├── microsoft_auth.dart
│ │ │ │ │ ├── oauth.dart
│ │ │ │ │ ├── phone_auth.dart
│ │ │ │ │ ├── play_games_auth.dart
│ │ │ │ │ ├── saml_auth.dart
│ │ │ │ │ ├── twitter_auth.dart
│ │ │ │ │ └── yahoo_auth.dart
│ │ │ │ ├── types.dart
│ │ │ │ ├── user_info.dart
│ │ │ │ └── user_metadata.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── action_code_info_test.dart
│ │ │ ├── action_code_settings_test.dart
│ │ │ ├── additional_user_info_test.dart
│ │ │ ├── auth_credential_test.dart
│ │ │ ├── auth_provider_test.dart
│ │ │ ├── auth_settings_test.dart
│ │ │ ├── id_token_result_test.dart
│ │ │ ├── method_channel_tests/
│ │ │ │ ├── method_channel_user_credential_test.dart
│ │ │ │ └── utils_tests/
│ │ │ │ ├── exception_test.dart
│ │ │ │ └── phone_auth_callbacks_test.dart
│ │ │ ├── mock.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ ├── platform_interface_tests/
│ │ │ │ ├── platform_interface_auth_test.dart
│ │ │ │ ├── platform_interface_confirmation_result_test.dart
│ │ │ │ ├── platform_interface_recaptcha_verifier_factory_test.dart
│ │ │ │ ├── platform_interface_user_credential_test.dart
│ │ │ │ └── platform_interface_user_test.dart
│ │ │ ├── providers_tests/
│ │ │ │ ├── email_auth_test.dart
│ │ │ │ ├── facebook_auth_test.dart
│ │ │ │ ├── github_auth_test.dart
│ │ │ │ ├── google_auth_test.dart
│ │ │ │ ├── oauth_test.dart
│ │ │ │ ├── phone_auth_test.dart
│ │ │ │ ├── saml_auth_test.dart
│ │ │ │ └── twitter_auth_test.dart
│ │ │ ├── user_info_test.dart
│ │ │ └── user_metadata_test.dart
│ │ └── firebase_auth_web/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_auth_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_auth_version.dart
│ │ │ ├── firebase_auth_web_confirmation_result.dart
│ │ │ ├── firebase_auth_web_multi_factor.dart
│ │ │ ├── firebase_auth_web_recaptcha_verifier_factory.dart
│ │ │ ├── firebase_auth_web_user.dart
│ │ │ ├── firebase_auth_web_user_credential.dart
│ │ │ ├── interop/
│ │ │ │ ├── auth.dart
│ │ │ │ ├── auth_interop.dart
│ │ │ │ ├── multi_factor.dart
│ │ │ │ └── window_interop.dart
│ │ │ └── utils/
│ │ │ └── web_utils.dart
│ │ └── pubspec.yaml
│ ├── firebase_core/
│ │ ├── analysis_options.yaml
│ │ ├── firebase_core/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── core/
│ │ │ │ │ ├── FlutterFirebaseCorePlugin.java
│ │ │ │ │ ├── FlutterFirebaseCoreRegistrar.java
│ │ │ │ │ ├── FlutterFirebasePlugin.java
│ │ │ │ │ ├── FlutterFirebasePluginRegistry.java
│ │ │ │ │ └── GeneratedAndroidFirebaseCore.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebasecoreexample/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── web/
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── manifest.json
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── ios/
│ │ │ │ ├── firebase_core/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_core/
│ │ │ │ │ ├── FLTFirebaseCorePlugin.m
│ │ │ │ │ ├── FLTFirebasePlugin.m
│ │ │ │ │ ├── FLTFirebasePluginRegistry.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── dummy.m
│ │ │ │ │ ├── include/
│ │ │ │ │ │ └── firebase_core/
│ │ │ │ │ │ ├── .gitkeep
│ │ │ │ │ │ ├── FLTFirebaseCorePlugin.h
│ │ │ │ │ │ ├── FLTFirebasePlugin.h
│ │ │ │ │ │ ├── FLTFirebasePluginRegistry.h
│ │ │ │ │ │ ├── dummy.h
│ │ │ │ │ │ └── messages.g.h
│ │ │ │ │ └── messages.g.m
│ │ │ │ ├── firebase_core.podspec
│ │ │ │ └── firebase_sdk_version.rb
│ │ │ ├── lib/
│ │ │ │ ├── firebase_core.dart
│ │ │ │ └── src/
│ │ │ │ ├── firebase.dart
│ │ │ │ ├── firebase_app.dart
│ │ │ │ └── port_mapping.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_core/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_core/
│ │ │ │ │ ├── dummy.m
│ │ │ │ │ └── include/
│ │ │ │ │ └── dummy.h
│ │ │ │ └── firebase_core.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ └── firebase_core_test.dart
│ │ │ └── windows/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── firebase_core_plugin.cpp
│ │ │ ├── firebase_core_plugin.h
│ │ │ ├── firebase_core_plugin_c_api.cpp
│ │ │ ├── flutter_firebase_plugin_registry.cpp
│ │ │ ├── flutter_firebase_plugin_registry.h
│ │ │ ├── include/
│ │ │ │ └── firebase_core/
│ │ │ │ ├── firebase_core_plugin_c_api.h
│ │ │ │ └── flutter_firebase_plugin.h
│ │ │ ├── messages.g.cpp
│ │ │ ├── messages.g.h
│ │ │ └── plugin_version.h.in
│ │ ├── firebase_core_platform_interface/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_core_platform_interface.dart
│ │ │ │ ├── src/
│ │ │ │ │ ├── firebase_core_exceptions.dart
│ │ │ │ │ ├── firebase_exception.dart
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── method_channel/
│ │ │ │ │ │ ├── method_channel_firebase.dart
│ │ │ │ │ │ └── method_channel_firebase_app.dart
│ │ │ │ │ ├── pigeon/
│ │ │ │ │ │ ├── messages.pigeon.dart
│ │ │ │ │ │ ├── mocks.dart
│ │ │ │ │ │ └── test_api.dart
│ │ │ │ │ └── platform_interface/
│ │ │ │ │ ├── platform_interface_firebase.dart
│ │ │ │ │ ├── platform_interface_firebase_app.dart
│ │ │ │ │ └── platform_interface_firebase_plugin.dart
│ │ │ │ └── test.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── firebase_exception_test.dart
│ │ │ ├── firebase_options_test.dart
│ │ │ └── platform_interface_tests/
│ │ │ └── platform_interface_firebase_core_test.dart
│ │ └── firebase_core_web/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_core_web.dart
│ │ │ ├── firebase_core_web_interop.dart
│ │ │ └── src/
│ │ │ ├── firebase_app_web.dart
│ │ │ ├── firebase_core_version.dart
│ │ │ ├── firebase_core_web.dart
│ │ │ ├── firebase_sdk_version.dart
│ │ │ └── interop/
│ │ │ ├── app.dart
│ │ │ ├── app_interop.dart
│ │ │ ├── core.dart
│ │ │ ├── core_interop.dart
│ │ │ ├── package_web_tweaks.dart
│ │ │ └── utils/
│ │ │ ├── es6_interop.dart
│ │ │ ├── func.dart
│ │ │ ├── js.dart
│ │ │ └── utils.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── firebase_core_tt_test.dart
│ │ ├── firebase_core_web_exceptions_test.dart
│ │ └── tools.dart
│ ├── firebase_crashlytics/
│ │ ├── firebase_crashlytics/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ ├── com/
│ │ │ │ │ │ │ └── google/
│ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ └── crashlytics/
│ │ │ │ │ │ │ └── FlutterFirebaseCrashlyticsInternal.java
│ │ │ │ │ │ └── io/
│ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ └── crashlytics/
│ │ │ │ │ │ ├── Constants.java
│ │ │ │ │ │ ├── FirebaseCrashlyticsTestCrash.java
│ │ │ │ │ │ ├── FlutterError.java
│ │ │ │ │ │ ├── FlutterFirebaseAppRegistrar.java
│ │ │ │ │ │ └── FlutterFirebaseCrashlyticsPlugin.java
│ │ │ │ │ └── res/
│ │ │ │ │ └── values/
│ │ │ │ │ └── values.xml
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebasecrashlyticsexample/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── crashlytics_add_upload_symbols
│ │ │ │ ├── firebase_crashlytics/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_crashlytics/
│ │ │ │ │ ├── FLTFirebaseCrashlyticsPlugin.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ └── include/
│ │ │ │ │ ├── Crashlytics_Platform.h
│ │ │ │ │ ├── ExceptionModel_Platform.h
│ │ │ │ │ └── FLTFirebaseCrashlyticsPlugin.h
│ │ │ │ ├── firebase_crashlytics.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_crashlytics.dart
│ │ │ │ └── src/
│ │ │ │ ├── firebase_crashlytics.dart
│ │ │ │ └── utils.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_crashlytics/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_crashlytics/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_crashlytics.podspec
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── firebase_crashlytics_test.dart
│ │ │ └── mock.dart
│ │ └── firebase_crashlytics_platform_interface/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_crashlytics_platform_interface.dart
│ │ │ └── src/
│ │ │ ├── method_channel/
│ │ │ │ ├── method_channel_crashlytics.dart
│ │ │ │ └── utils/
│ │ │ │ └── exception.dart
│ │ │ └── platform_interface/
│ │ │ └── platform_interface_crashlytics.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── method_channel_tests/
│ │ │ ├── method_channel_crashlytics_test.dart
│ │ │ └── utils_tests/
│ │ │ └── exception_test.dart
│ │ ├── mock.dart
│ │ └── platform_interface_tests/
│ │ └── platform_interface_crashlytics_test.dart
│ ├── firebase_data_connect/
│ │ ├── analysis_options.yaml
│ │ └── firebase_data_connect/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── example/
│ │ │ ├── .firebase/
│ │ │ │ └── .graphqlrc
│ │ │ ├── .firebaserc
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── .pubignore
│ │ │ ├── README.md
│ │ │ ├── analysis_options.yaml
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── local-config.gradle
│ │ │ │ │ └── src/
│ │ │ │ │ ├── debug/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ └── dataconnect/
│ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── profile/
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ └── settings.gradle
│ │ │ ├── dataconnect/
│ │ │ │ ├── connector/
│ │ │ │ │ ├── connector.yaml
│ │ │ │ │ ├── movie_insert.gql
│ │ │ │ │ ├── mutations.gql
│ │ │ │ │ └── queries.gql
│ │ │ │ ├── dataconnect.yaml
│ │ │ │ └── schema/
│ │ │ │ └── schema.gql
│ │ │ ├── dataconnect.yaml
│ │ │ ├── firebase.json
│ │ │ ├── integration_test/
│ │ │ │ ├── e2e_test.dart
│ │ │ │ ├── generation_e2e.dart
│ │ │ │ ├── instance_e2e.dart
│ │ │ │ ├── listen_e2e.dart
│ │ │ │ └── query_e2e.dart
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Flutter/
│ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ └── Release.xcconfig
│ │ │ │ ├── Podfile
│ │ │ │ ├── Runner/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── README.md
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── Runner.xcscheme
│ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ └── RunnerTests/
│ │ │ │ └── RunnerTests.swift
│ │ │ ├── lib/
│ │ │ │ ├── firebase_options.dart
│ │ │ │ ├── generated/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── add_date_and_timestamp.dart
│ │ │ │ │ ├── add_director_to_movie.dart
│ │ │ │ │ ├── add_person.dart
│ │ │ │ │ ├── add_timestamp.dart
│ │ │ │ │ ├── create_movie.dart
│ │ │ │ │ ├── delete_movie.dart
│ │ │ │ │ ├── get_movie.dart
│ │ │ │ │ ├── list_movies.dart
│ │ │ │ │ ├── list_movies_by_partial_title.dart
│ │ │ │ │ ├── list_persons.dart
│ │ │ │ │ ├── list_thing.dart
│ │ │ │ │ ├── list_timestamps.dart
│ │ │ │ │ ├── movies.dart
│ │ │ │ │ ├── seed_data.dart
│ │ │ │ │ ├── seed_movies.dart
│ │ │ │ │ └── thing.dart
│ │ │ │ ├── login.dart
│ │ │ │ └── main.dart
│ │ │ ├── macos/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Flutter/
│ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ ├── Podfile
│ │ │ │ ├── Runner/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ ├── Configs/
│ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ └── Release.entitlements
│ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── Runner.xcscheme
│ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ └── RunnerTests/
│ │ │ │ └── RunnerTests.swift
│ │ │ ├── pubspec.yaml
│ │ │ ├── schema/
│ │ │ │ └── schema.gql
│ │ │ ├── start-firebase-emulator.sh
│ │ │ ├── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ └── web/
│ │ │ ├── index.html
│ │ │ ├── manifest.json
│ │ │ └── wasm_index.html
│ │ ├── generate_proto.sh
│ │ ├── lib/
│ │ │ ├── firebase_data_connect.dart
│ │ │ └── src/
│ │ │ ├── any_value.dart
│ │ │ ├── cache/
│ │ │ │ ├── cache.dart
│ │ │ │ ├── cache_data_types.dart
│ │ │ │ ├── cache_provider.dart
│ │ │ │ ├── in_memory_cache_provider.dart
│ │ │ │ ├── result_tree_processor.dart
│ │ │ │ └── sqlite_cache_provider.dart
│ │ │ ├── common/
│ │ │ │ ├── common_library.dart
│ │ │ │ ├── dataconnect_error.dart
│ │ │ │ └── dataconnect_options.dart
│ │ │ ├── core/
│ │ │ │ ├── empty_serializer.dart
│ │ │ │ └── ref.dart
│ │ │ ├── dataconnect_version.dart
│ │ │ ├── firebase_data_connect.dart
│ │ │ ├── generated/
│ │ │ │ ├── connector_service.pb.dart
│ │ │ │ ├── connector_service.pbenum.dart
│ │ │ │ ├── connector_service.pbgrpc.dart
│ │ │ │ ├── connector_service.pbjson.dart
│ │ │ │ ├── google/
│ │ │ │ │ └── protobuf/
│ │ │ │ │ ├── duration.pb.dart
│ │ │ │ │ ├── duration.pbenum.dart
│ │ │ │ │ ├── duration.pbjson.dart
│ │ │ │ │ ├── struct.pb.dart
│ │ │ │ │ ├── struct.pbenum.dart
│ │ │ │ │ └── struct.pbjson.dart
│ │ │ │ ├── graphql_error.pb.dart
│ │ │ │ ├── graphql_error.pbenum.dart
│ │ │ │ ├── graphql_error.pbjson.dart
│ │ │ │ ├── graphql_response_extensions.pb.dart
│ │ │ │ ├── graphql_response_extensions.pbenum.dart
│ │ │ │ └── graphql_response_extensions.pbjson.dart
│ │ │ ├── network/
│ │ │ │ ├── grpc_library.dart
│ │ │ │ ├── grpc_transport.dart
│ │ │ │ ├── rest_library.dart
│ │ │ │ ├── rest_transport.dart
│ │ │ │ ├── transport_library.dart
│ │ │ │ └── transport_stub.dart
│ │ │ ├── optional.dart
│ │ │ └── timestamp.dart
│ │ ├── protos/
│ │ │ ├── connector_service.proto
│ │ │ ├── firebase/
│ │ │ │ ├── graphql_error.proto
│ │ │ │ └── graphql_response_extensions.proto
│ │ │ └── google/
│ │ │ ├── api/
│ │ │ │ └── field_behavior.proto
│ │ │ ├── duration.proto
│ │ │ └── struct.proto
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── src/
│ │ ├── any_test.dart
│ │ ├── cache/
│ │ │ ├── cache_manager_test.dart
│ │ │ ├── cache_manager_test.mocks.dart
│ │ │ └── result_tree_processor_test.dart
│ │ ├── common/
│ │ │ ├── common_library_test.dart
│ │ │ ├── dataconnect_error_test.dart
│ │ │ └── dataconnect_options_test.dart
│ │ ├── core/
│ │ │ ├── empty_serializer_test.dart
│ │ │ └── ref_test.dart
│ │ ├── firebase_data_connect_test.dart
│ │ ├── firebase_data_connect_test.mocks.dart
│ │ ├── network/
│ │ │ ├── rest_transport_test.dart
│ │ │ ├── rest_transport_test.mocks.dart
│ │ │ └── transport_stub_test.dart
│ │ ├── optional_test.dart
│ │ └── timestamp_test.dart
│ ├── firebase_database/
│ │ ├── analysis_options.yaml
│ │ ├── firebase_database/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── analysis_options.yaml
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── kotlin/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── database/
│ │ │ │ │ ├── ChildEventsProxy.kt
│ │ │ │ │ ├── Constants.kt
│ │ │ │ │ ├── EventStreamHandler.kt
│ │ │ │ │ ├── EventsProxy.kt
│ │ │ │ │ ├── FirebaseDatabasePlugin.kt
│ │ │ │ │ ├── FlutterDataSnapshotPayload.kt
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.kt
│ │ │ │ │ ├── FlutterFirebaseDatabaseException.kt
│ │ │ │ │ ├── GeneratedAndroidFirebaseDatabase.g.kt
│ │ │ │ │ ├── QueryBuilder.kt
│ │ │ │ │ ├── TransactionExecutor.kt
│ │ │ │ │ ├── TransactionHandler.kt
│ │ │ │ │ └── ValueEventsProxy.kt
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── database/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ ├── RunnerTests/
│ │ │ │ │ │ └── RunnerTests.swift
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── firebase_database/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_database/
│ │ │ │ │ ├── Constants.swift
│ │ │ │ │ ├── FLTFirebaseDatabaseObserveStreamHandler.swift
│ │ │ │ │ ├── FLTFirebaseDatabasePlugin.swift
│ │ │ │ │ ├── FLTFirebaseDatabaseUtils.swift
│ │ │ │ │ ├── FirebaseDatabaseMessages.g.swift
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── firebase_database.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_database.dart
│ │ │ │ ├── src/
│ │ │ │ │ ├── data_snapshot.dart
│ │ │ │ │ ├── database_event.dart
│ │ │ │ │ ├── database_reference.dart
│ │ │ │ │ ├── firebase_database.dart
│ │ │ │ │ ├── on_disconnect.dart
│ │ │ │ │ ├── query.dart
│ │ │ │ │ └── transaction_result.dart
│ │ │ │ └── ui/
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── firebase_animated_list.dart
│ │ │ │ ├── firebase_list.dart
│ │ │ │ ├── firebase_sorted_list.dart
│ │ │ │ └── utils/
│ │ │ │ └── stream_subscriber_mixin.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_database/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_database/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_database.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_list_test.dart
│ │ │ │ ├── instance_test.dart
│ │ │ │ └── mock.dart
│ │ │ └── windows/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── firebase_database_plugin.cpp
│ │ │ ├── firebase_database_plugin.h
│ │ │ ├── firebase_database_plugin_c_api.cpp
│ │ │ ├── include/
│ │ │ │ └── firebase_database/
│ │ │ │ └── firebase_database_plugin_c_api.h
│ │ │ ├── messages.g.cpp
│ │ │ ├── messages.g.h
│ │ │ └── plugin_version.h.in
│ │ ├── firebase_database_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_database_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_data_snapshot.dart
│ │ │ │ │ ├── method_channel_database.dart
│ │ │ │ │ ├── method_channel_database_event.dart
│ │ │ │ │ ├── method_channel_database_reference.dart
│ │ │ │ │ ├── method_channel_on_disconnect.dart
│ │ │ │ │ ├── method_channel_query.dart
│ │ │ │ │ ├── method_channel_transaction_result.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── exception.dart
│ │ │ │ │ ├── push_id_generator.dart
│ │ │ │ │ └── utils.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ ├── platform_interface_data_snapshot.dart
│ │ │ │ │ ├── platform_interface_database.dart
│ │ │ │ │ ├── platform_interface_database_event.dart
│ │ │ │ │ ├── platform_interface_database_reference.dart
│ │ │ │ │ ├── platform_interface_on_disconnect.dart
│ │ │ │ │ ├── platform_interface_query.dart
│ │ │ │ │ └── platform_interface_transaction_result.dart
│ │ │ │ ├── query_modifiers.dart
│ │ │ │ ├── server_value.dart
│ │ │ │ └── transaction.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── database_reference_test.dart
│ │ │ ├── firebase_database_test.dart
│ │ │ ├── method_channel_test.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ ├── query_modifiers_test.dart
│ │ │ └── test_common.dart
│ │ └── firebase_database_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib/
│ │ │ ├── firebase_database_web.dart
│ │ │ └── src/
│ │ │ ├── data_snapshot_web.dart
│ │ │ ├── database_event_web.dart
│ │ │ ├── database_reference_web.dart
│ │ │ ├── firebase_database_version.dart
│ │ │ ├── interop/
│ │ │ │ ├── data_snapshot_interop.dart
│ │ │ │ ├── database.dart
│ │ │ │ ├── database_interop.dart
│ │ │ │ ├── query_interop.dart
│ │ │ │ └── reference_interop.dart
│ │ │ ├── ondisconnect_web.dart
│ │ │ ├── query_web.dart
│ │ │ ├── transaction_result_web.dart
│ │ │ └── utils/
│ │ │ ├── exception.dart
│ │ │ └── snapshot_utils.dart
│ │ └── pubspec.yaml
│ ├── firebase_in_app_messaging/
│ │ ├── firebase_in_app_messaging/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── inappmessaging/
│ │ │ │ │ ├── FirebaseInAppMessagingPlugin.java
│ │ │ │ │ └── FlutterFirebaseAppRegistrar.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── tests/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ └── Podfile
│ │ │ │ └── pubspec.yaml
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── firebase_in_app_messaging/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_in_app_messaging/
│ │ │ │ │ ├── FirebaseInAppMessagingPlugin.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ └── include/
│ │ │ │ │ └── FirebaseInAppMessagingPlugin.h
│ │ │ │ ├── firebase_in_app_messaging.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ └── firebase_in_app_messaging.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── firebase_in_app_messaging_test.dart
│ │ └── firebase_in_app_messaging_platform_interface/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_in_app_messaging_platform_interface.dart
│ │ │ └── src/
│ │ │ ├── method_channel/
│ │ │ │ ├── method_channel_firebase_in_app_messaging.dart
│ │ │ │ └── utils/
│ │ │ │ └── exception.dart
│ │ │ └── platform_interface/
│ │ │ └── platform_interface_firebase_in_app_messaging.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── mock.dart
│ │ └── platform_interface/
│ │ └── platform_interface_firebase_in_app_messaging_test.dart
│ ├── firebase_messaging/
│ │ ├── firebase_messaging/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── messaging/
│ │ │ │ │ ├── ContextHolder.java
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.java
│ │ │ │ │ ├── FlutterFirebaseMessagingBackgroundExecutor.java
│ │ │ │ │ ├── FlutterFirebaseMessagingBackgroundService.java
│ │ │ │ │ ├── FlutterFirebaseMessagingInitProvider.java
│ │ │ │ │ ├── FlutterFirebaseMessagingPlugin.java
│ │ │ │ │ ├── FlutterFirebaseMessagingReceiver.java
│ │ │ │ │ ├── FlutterFirebaseMessagingService.java
│ │ │ │ │ ├── FlutterFirebaseMessagingStore.java
│ │ │ │ │ ├── FlutterFirebaseMessagingUtils.java
│ │ │ │ │ ├── FlutterFirebasePermissionManager.java
│ │ │ │ │ ├── FlutterFirebaseRemoteMessageLiveData.java
│ │ │ │ │ ├── FlutterFirebaseTokenLiveData.java
│ │ │ │ │ ├── JobIntentService.java
│ │ │ │ │ └── PluginRegistrantException.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── messaging/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── bundled-service-worker/
│ │ │ │ │ ├── firebase-messaging-sw.ts
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Firebase Cloud Messaging Example.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ ├── message.dart
│ │ │ │ │ ├── message_list.dart
│ │ │ │ │ ├── permissions.dart
│ │ │ │ │ └── token_monitor.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── scripts/
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── send-message.js
│ │ │ │ └── web/
│ │ │ │ ├── firebase-messaging-sw.js
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── firebase_messaging/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_messaging/
│ │ │ │ │ ├── FLTFirebaseMessagingPlugin.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── PrivacyInfo.xcprivacy
│ │ │ │ │ └── include/
│ │ │ │ │ └── FLTFirebaseMessagingPlugin.h
│ │ │ │ ├── firebase_messaging.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_messaging.dart
│ │ │ │ └── src/
│ │ │ │ └── messaging.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_messaging/
│ │ │ │ │ └── Package.swift
│ │ │ │ └── firebase_messaging.podspec
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── firebase_messaging_test.dart
│ │ │ └── mock.dart
│ │ ├── firebase_messaging_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_messaging_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_messaging.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ ├── notification_settings.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ └── platform_interface_messaging.dart
│ │ │ │ ├── remote_message.dart
│ │ │ │ ├── remote_notification.dart
│ │ │ │ ├── types.dart
│ │ │ │ └── utils.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── method_channel_tests/
│ │ │ │ └── method_channel_messaging_test.dart
│ │ │ ├── mock.dart
│ │ │ ├── notification_test.dart
│ │ │ ├── platform_interface_tests/
│ │ │ │ └── platform_interface_messaging_test.dart
│ │ │ ├── remote_message_test.dart
│ │ │ └── utils_test.dart
│ │ └── firebase_messaging_web/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── ios/
│ │ │ └── firebase_messaging_web.podspec
│ │ ├── lib/
│ │ │ ├── firebase_messaging_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_messaging_version.dart
│ │ │ ├── internals.dart
│ │ │ ├── interop/
│ │ │ │ ├── messaging.dart
│ │ │ │ └── messaging_interop.dart
│ │ │ └── utils.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── firebase_messaging_web_test.dart
│ ├── firebase_ml_model_downloader/
│ │ ├── firebase_ml_model_downloader/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── firebase_ml_model_downloader/
│ │ │ │ │ ├── FirebaseModelDownloaderPlugin.java
│ │ │ │ │ └── FlutterFirebaseAppRegistrar.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── tests/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── Runner-Bridging-Header.h
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ └── pubspec.yaml
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── firebase_ml_model_downloader/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_ml_model_downloader/
│ │ │ │ │ ├── Constants.swift
│ │ │ │ │ ├── FirebaseModelDownloaderPlugin.swift
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── firebase_ml_model_downloader.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_ml_model_downloader.dart
│ │ │ │ └── src/
│ │ │ │ └── firebase_ml_model_downloader.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_ml_model_downloader/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_ml_model_downloader/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_ml_model_downloader.podspec
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── firebase_ml_model_downloader_test.dart
│ │ │ └── mock.dart
│ │ └── firebase_ml_model_downloader_platform_interface/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_ml_model_downloader_platform_interface.dart
│ │ │ └── src/
│ │ │ ├── custom_model.dart
│ │ │ ├── download_conditions.dart
│ │ │ ├── download_type.dart
│ │ │ ├── method_channel/
│ │ │ │ ├── method_channel_firebase_ml_model_downloader.dart
│ │ │ │ └── utils/
│ │ │ │ └── exception.dart
│ │ │ └── platform_interface/
│ │ │ └── platform_interface_firebase_ml_model_downloader.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── method_channel_tests/
│ │ │ └── method_channel_firebase_ml_model_downloader_test.dart
│ │ ├── mock.dart
│ │ └── platform_interface_tests/
│ │ └── platform_interface_firebase_ml_model_downloader_test.dart
│ ├── firebase_performance/
│ │ ├── analysis_options.yaml
│ │ ├── firebase_performance/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── kotlin/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── performance/
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.kt
│ │ │ │ │ ├── FlutterFirebasePerformancePlugin.kt
│ │ │ │ │ └── GeneratedAndroidFirebasePerformance.g.kt
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── tests/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── firebase.json
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ └── web/
│ │ │ │ ├── first-input-delay.js
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── firebase_performance/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_performance/
│ │ │ │ │ ├── Constants.swift
│ │ │ │ │ ├── FirebasePerformanceMessages.g.swift
│ │ │ │ │ ├── FirebasePerformancePlugin.swift
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── firebase_performance.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_performance.dart
│ │ │ │ └── src/
│ │ │ │ ├── firebase_performance.dart
│ │ │ │ ├── http_metric.dart
│ │ │ │ └── trace.dart
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_performance_test.dart
│ │ │ │ └── mock.dart
│ │ │ └── windows/
│ │ │ ├── messages.g.cpp
│ │ │ └── messages.g.h
│ │ ├── firebase_performance_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_performance_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_performance.dart
│ │ │ │ │ ├── method_channel_http_metric.dart
│ │ │ │ │ ├── method_channel_trace.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ └── platform_interface/
│ │ │ │ ├── platform_interface_firebase_performance.dart
│ │ │ │ ├── platform_interface_http_metric.dart
│ │ │ │ └── platform_interface_trace.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── method_channel_tests/
│ │ │ │ ├── method_channel_firebase_performance_test.dart
│ │ │ │ ├── method_channel_http_metric_test.dart
│ │ │ │ └── method_channel_trace_test.dart
│ │ │ ├── mock.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ └── platform_interface_tests/
│ │ │ ├── platform_interface_firebase_performance_test.dart
│ │ │ ├── platform_interface_http_metric_test.dart
│ │ │ └── platform_interface_trace_test.dart
│ │ └── firebase_performance_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_performance_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_performance_version.dart
│ │ │ ├── internals.dart
│ │ │ ├── interop/
│ │ │ │ ├── performance.dart
│ │ │ │ └── performance_interop.dart
│ │ │ └── trace.dart
│ │ └── pubspec.yaml
│ ├── firebase_remote_config/
│ │ ├── analysis_options.yaml
│ │ ├── firebase_remote_config/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── kotlin/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── firebaseremoteconfig/
│ │ │ │ │ ├── FirebaseRemoteConfigPlugin.kt
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.kt
│ │ │ │ │ └── GeneratedAndroidFirebaseRemoteConfig.g.kt
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── remoteconfig/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── home_page.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ ├── RunnerTests/
│ │ │ │ │ │ └── RunnerTests.swift
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── web/
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── manifest.json
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── ios/
│ │ │ │ ├── firebase_remote_config/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_remote_config/
│ │ │ │ │ ├── Constants.swift
│ │ │ │ │ ├── FirebaseRemoteConfigMessages.g.swift
│ │ │ │ │ ├── FirebaseRemoteConfigPlugin.swift
│ │ │ │ │ ├── FirebaseRemoteConfigUtils.swift
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── firebase_remote_config.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_remote_config.dart
│ │ │ │ └── src/
│ │ │ │ └── firebase_remote_config.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_remote_config/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_remote_config/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_remote_config.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_remote_config_test.dart
│ │ │ │ └── mock.dart
│ │ │ └── windows/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── firebase_remote_config_plugin.cpp
│ │ │ ├── firebase_remote_config_plugin.h
│ │ │ ├── firebase_remote_config_plugin_c_api.cpp
│ │ │ ├── include/
│ │ │ │ └── firebase_remote_config/
│ │ │ │ └── firebase_remote_config_plugin_c_api.h
│ │ │ ├── messages.g.cpp
│ │ │ ├── messages.g.h
│ │ │ └── plugin_version.h.in
│ │ ├── firebase_remote_config_platform_interface/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_remote_config_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_remote_config.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ └── platform_interface_firebase_remote_config.dart
│ │ │ │ ├── remote_config_settings.dart
│ │ │ │ ├── remote_config_status.dart
│ │ │ │ ├── remote_config_update.dart
│ │ │ │ └── remote_config_value.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ └── pubspec.yaml
│ │ └── firebase_remote_config_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_remote_config_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_remote_config_version.dart
│ │ │ ├── internals.dart
│ │ │ └── interop/
│ │ │ ├── firebase_remote_config.dart
│ │ │ └── firebase_remote_config_interop.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── firebase_remote_config_web_test.dart
│ │ └── firebase_remote_config_web_test.mocks.dart
│ ├── firebase_storage/
│ │ ├── all_lint_rules.yaml
│ │ ├── analysis_options.yaml
│ │ ├── firebase_storage/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── kotlin/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── storage/
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.kt
│ │ │ │ │ ├── FlutterFirebaseStorageException.kt
│ │ │ │ │ ├── FlutterFirebaseStoragePlugin.kt
│ │ │ │ │ ├── FlutterFirebaseStorageTask.kt
│ │ │ │ │ ├── GeneratedAndroidFirebaseStorage.g.kt
│ │ │ │ │ └── TaskStateChannelStreamHandler.kt
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebasestorageexample/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── assets/
│ │ │ │ │ └── hello.txt
│ │ │ │ ├── cors.json
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ └── save_as/
│ │ │ │ │ ├── save_as.dart
│ │ │ │ │ ├── save_as_html.dart
│ │ │ │ │ └── save_as_interface.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── web/
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── manifest.json
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── ios/
│ │ │ │ ├── firebase_storage/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_storage/
│ │ │ │ │ ├── FLTFirebaseStoragePlugin.swift
│ │ │ │ │ ├── FirebaseStorageMessages.g.swift
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ └── TaskStateChannelStreamHandler.swift
│ │ │ │ ├── firebase_storage.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_storage.dart
│ │ │ │ └── src/
│ │ │ │ ├── firebase_storage.dart
│ │ │ │ ├── list_result.dart
│ │ │ │ ├── reference.dart
│ │ │ │ ├── task.dart
│ │ │ │ ├── task_snapshot.dart
│ │ │ │ └── utils.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_storage/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_storage/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_storage.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_storage_test.dart
│ │ │ │ ├── list_result_test.dart
│ │ │ │ ├── mock.dart
│ │ │ │ ├── reference_test.dart
│ │ │ │ ├── task_snapshot_test.dart
│ │ │ │ ├── task_test.dart
│ │ │ │ └── utils_test.dart
│ │ │ └── windows/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── firebase_storage_plugin.cpp
│ │ │ ├── firebase_storage_plugin.h
│ │ │ ├── firebase_storage_plugin_c_api.cpp
│ │ │ ├── include/
│ │ │ │ └── firebase_storage/
│ │ │ │ └── firebase_storage_plugin_c_api.h
│ │ │ ├── messages.g.cpp
│ │ │ ├── messages.g.h
│ │ │ └── plugin_version.h.in
│ │ ├── firebase_storage_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_storage_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── full_metadata.dart
│ │ │ │ ├── internal/
│ │ │ │ │ └── pointer.dart
│ │ │ │ ├── list_options.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_storage.dart
│ │ │ │ │ ├── method_channel_list_result.dart
│ │ │ │ │ ├── method_channel_reference.dart
│ │ │ │ │ ├── method_channel_task.dart
│ │ │ │ │ ├── method_channel_task_snapshot.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ ├── platform_interface_firebase_storage.dart
│ │ │ │ │ ├── platform_interface_list_result.dart
│ │ │ │ │ ├── platform_interface_reference.dart
│ │ │ │ │ ├── platform_interface_task.dart
│ │ │ │ │ └── platform_interface_task_snapshot.dart
│ │ │ │ ├── put_string_format.dart
│ │ │ │ ├── settable_metadata.dart
│ │ │ │ └── task_state.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── method_channel_tests/
│ │ │ │ ├── method_channel_firebase_storage_test.dart
│ │ │ │ ├── method_channel_list_result_test.dart
│ │ │ │ └── method_channel_reference_test.dart
│ │ │ ├── mock.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ └── platform_interface_tests/
│ │ │ ├── platform_interface_firebase_storage_test.dart
│ │ │ ├── platform_interface_list_result_test.dart
│ │ │ ├── platform_interface_reference_test.dart
│ │ │ └── platform_interface_task_test.dart
│ │ └── firebase_storage_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── ios/
│ │ │ └── firebase_storage_web.podspec
│ │ ├── lib/
│ │ │ ├── firebase_storage_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_storage_version.dart
│ │ │ ├── firebase_storage_web.dart
│ │ │ ├── interop/
│ │ │ │ ├── storage.dart
│ │ │ │ └── storage_interop.dart
│ │ │ ├── list_result_web.dart
│ │ │ ├── reference_web.dart
│ │ │ ├── task_snapshot_web.dart
│ │ │ ├── task_web.dart
│ │ │ └── utils/
│ │ │ ├── errors.dart
│ │ │ ├── list.dart
│ │ │ ├── metadata.dart
│ │ │ ├── metadata_cache.dart
│ │ │ └── task.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── metadata_cache_test.dart
│ └── firebase_vertexai/
│ └── README.md
├── pubspec.yaml
├── scripts/
│ ├── bom_analysis.dart
│ ├── generate_bom.dart
│ ├── generate_dataconnect_version.dart
│ ├── generate_firebaseai_version.dart
│ ├── generate_tag_spm_firebase_core.dart
│ ├── generate_versions_gradle.dart
│ ├── generate_versions_spm.dart
│ ├── generate_versions_web.dart
│ ├── global-config.gradle
│ └── versions.json
└── tests/
├── .gitignore
├── .metadata
├── README.md
├── android/
│ ├── .gitignore
│ ├── app/
│ │ ├── build.gradle
│ │ ├── google-services.json
│ │ └── src/
│ │ ├── debug/
│ │ │ └── AndroidManifest.xml
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin/
│ │ │ │ └── io/
│ │ │ │ └── flutter/
│ │ │ │ └── plugins/
│ │ │ │ └── firebase/
│ │ │ │ └── tests/
│ │ │ │ └── MainActivity.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── launch_background.xml
│ │ │ ├── drawable-v21/
│ │ │ │ └── launch_background.xml
│ │ │ ├── values/
│ │ │ │ └── styles.xml
│ │ │ └── values-night/
│ │ │ └── styles.xml
│ │ └── profile/
│ │ └── AndroidManifest.xml
│ ├── build.gradle
│ ├── firebase_app_id_file.json
│ ├── gradle/
│ │ └── wrapper/
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ └── settings.gradle
├── integration_test/
│ ├── cloud_functions/
│ │ ├── cloud_functions_e2e_test.dart
│ │ └── sample_data.dart
│ ├── e2e_test.dart
│ ├── firebase_analytics/
│ │ └── firebase_analytics_e2e_test.dart
│ ├── firebase_app_check/
│ │ └── firebase_app_check_e2e_test.dart
│ ├── firebase_app_installations/
│ │ └── firebase_app_installations_e2e_test.dart
│ ├── firebase_auth/
│ │ ├── firebase_auth_e2e_test.dart
│ │ ├── firebase_auth_instance_e2e_test.dart
│ │ ├── firebase_auth_multi_factor_e2e_test.dart
│ │ ├── firebase_auth_user_e2e_test.dart
│ │ └── test_utils.dart
│ ├── firebase_core/
│ │ └── firebase_core_e2e_test.dart
│ ├── firebase_crashlytics/
│ │ └── firebase_crashlytics_e2e_test.dart
│ ├── firebase_database/
│ │ ├── data_snapshot_e2e.dart
│ │ ├── database_e2e.dart
│ │ ├── database_reference_e2e.dart
│ │ ├── firebase_database_configuration_e2e.dart
│ │ ├── firebase_database_e2e_test.dart
│ │ ├── on_disconnect_e2e.dart
│ │ ├── query_e2e.dart
│ │ ├── web_only.dart
│ │ └── web_only_stub.dart
│ ├── firebase_messaging/
│ │ └── firebase_messaging_e2e_test.dart
│ ├── firebase_ml_model_downloader/
│ │ └── firebase_ml_model_downloader_e2e_test.dart
│ ├── firebase_performance/
│ │ └── firebase_performance_e2e_test.dart
│ ├── firebase_remote_config/
│ │ └── firebase_remote_config_e2e_test.dart
│ └── firebase_storage/
│ ├── firebase_storage_e2e_test.dart
│ ├── instance_e2e.dart
│ ├── list_result_e2e.dart
│ ├── reference_e2e.dart
│ ├── second_bucket.dart
│ ├── task_e2e.dart
│ └── test_utils.dart
├── ios/
│ ├── .gitignore
│ ├── Flutter/
│ │ ├── AppFrameworkInfo.plist
│ │ ├── Debug.xcconfig
│ │ └── Release.xcconfig
│ ├── Podfile
│ ├── Runner/
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets/
│ │ │ ├── AppIcon.appiconset/
│ │ │ │ └── Contents.json
│ │ │ └── LaunchImage.imageset/
│ │ │ ├── Contents.json
│ │ │ └── README.md
│ │ ├── Base.lproj/
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── Runner-Bridging-Header.h
│ │ └── Runner.entitlements
│ ├── Runner.xcodeproj/
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata/
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata/
│ │ └── xcschemes/
│ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
│ └── firebase_app_id_file.json
├── lib/
│ ├── firebase_options.dart
│ └── main.dart
├── macos/
│ ├── .gitignore
│ ├── Flutter/
│ │ ├── Flutter-Debug.xcconfig
│ │ └── Flutter-Release.xcconfig
│ ├── Podfile
│ ├── Runner/
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets/
│ │ │ └── AppIcon.appiconset/
│ │ │ └── Contents.json
│ │ ├── Base.lproj/
│ │ │ └── MainMenu.xib
│ │ ├── Configs/
│ │ │ ├── AppInfo.xcconfig
│ │ │ ├── Debug.xcconfig
│ │ │ ├── Release.xcconfig
│ │ │ └── Warnings.xcconfig
│ │ ├── DebugProfile.entitlements
│ │ ├── Info.plist
│ │ ├── MainFlutterWindow.swift
│ │ └── Release.entitlements
│ ├── Runner.xcodeproj/
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace/
│ │ │ └── xcshareddata/
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata/
│ │ └── xcschemes/
│ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ └── firebase_app_id_file.json
├── pubspec.yaml
├── test_driver/
│ └── integration_test.dart
├── web/
│ ├── firebase-messaging-sw.js
│ ├── index.html
│ ├── manifest.json
│ └── wasm_index.html
└── windows/
├── .gitignore
├── CMakeLists.txt
├── flutter/
│ └── CMakeLists.txt
└── runner/
├── CMakeLists.txt
├── Runner.rc
├── flutter_window.cpp
├── flutter_window.h
├── main.cpp
├── resource.h
├── runner.exe.manifest
├── utils.cpp
├── utils.h
├── win32_window.cpp
└── win32_window.h
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-format
================================================
---
BasedOnStyle: Google
---
================================================
FILE: .editorconfig
================================================
# editorconfig
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
quote_type = single
================================================
FILE: .gemini/config.yaml
================================================
have_fun: false
code_review:
disable: false
comment_severity_threshold: LOW
max_review_comments: -1
pull_request_opened:
help: true
summary: false
code_review: true
================================================
FILE: .github/ISSUE_TEMPLATE/---documentation-feedback.md
================================================
---
name: "\U0001F4DA Documentation Feedback"
about: Report an issue with the firebase.google.com/docs/flutter documentation or suggest an improvement.
title: "[\U0001F4DA] Your documentation feedback title (CHANGE ME)"
labels: 'good first issue, type: documentation'
assignees: ''
---
Please describe your documentation issue or suggested improvement in detail here and provide links to any pre-existing/relevant documentation and screenshots if necessary:
================================================
FILE: .github/ISSUE_TEMPLATE/---feature-request.md
================================================
---
name: "🚀 Feature Request"
about: Make a feature request for FlutterFire.
title: "\U0001F680 [PLUGIN_NAME_HERE] Your feature request title here"
labels: 'Needs Attention, type: enhancement'
assignees: ''
---
## What feature would you like to see?
Is there a missing a feature that is supported on an underlying SDK? Or is there a feature that you think would be useful to have in FlutterFire?
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: ⚠️ Bug Report
description:
Report a bug with existing FlutterFire features
title: "[PLUGIN_NAME_HERE]: <YOUR TITLE HERE>"
labels: ["Needs Attention", "type: bug"]
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: |
Please search to see if an issue already exists for the bug you encountered.
options:
- label: I have searched the existing issues.
required: true
- type: markdown
attributes:
value: |
---
- type: dropdown
id: plugins
attributes:
label: Which plugins are affected?
multiple: true
options:
- Core
- Analytics
- App Check
- App Installations
- Auth
- Cloud Functions
- Crashlytics
- Database
- In-App Messaging
- Messaging
- ML Custom
- Performance
- Remote Config
- Storage
- Other
- type: dropdown
id: platforms
attributes:
label: Which platforms are affected?
multiple: true
options:
- Android
- iOS
- macOS
- Web
- Windows
- type: markdown
attributes:
value: |
---
- type: textarea
attributes:
label: Description
description: |
Describe the issue. Explain what you _expected_ to happen and what
_actually_ happened.
validations:
required: true
- type: textarea
attributes:
label: Reproducing the issue
description: |
Please provide either **steps to reproduce** or a [**minimal reproducible example**](https://stackoverflow.com/help/minimal-reproducible-example).
Providing a minimal reproducible example will help us triage your issue
faster.
validations:
required: true
- type: markdown
attributes:
value: |
---
- type: input
attributes:
label: Firebase Core version
description: What version of `firebase_core` has this issue?
placeholder: "2.27.0"
validations:
required: true
- type: input
attributes:
label: Flutter Version
description: What version of Flutter is being used?
placeholder: "3.19.0"
validations:
required: true
- type: markdown
attributes:
value: |
---
- type: markdown
attributes:
value: |
> **ℹ️ Please remove any API keys or other sensitive credentials from your bug report before submitting.**
- type: textarea
attributes:
label: Relevant Log Output
description: |
Please copy and paste any relevant log output.
placeholder: |
Paste your logs here. Please redact any personally identifiable
information. This will be automatically formatted into code, so no
need for backticks.
render: shell
validations:
required: false
- type: textarea
attributes:
label: Flutter dependencies
description: Seeing your dependencies can help us debug versioning issues.
value: |
<!--- Look below for instructions on how to share your Flutter Dependencies. --->
<details>
<summary>Expand <code>Flutter dependencies</code> snippet</summary>
<br>
```yaml
Replace this line with the contents of your `flutter pub deps -- --style=compact`.
```
</details>
validations:
required: false
- type: textarea
id: comments
attributes:
label: Additional context and comments
description: |
Anything else you want to add for this issue?
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Ask a Question
url: https://github.com/firebase/flutterfire/discussions/new?category=q-a
about: Ask the community for help.
- name: Show and tell
url: https://github.com/firebase/flutterfire/discussions/new?category=show-and-tell
about: Share what you've built with FlutterFire.
================================================
FILE: .github/ISSUE_TEMPLATE/ios_background_message_handling.yml
================================================
name: iOS background message handling bug report for Firebase Messaging
description:
Create an issue specific to receiving Firebase Messaging messages in the background on iOS.
title: "[firebase_messaging]: <YOUR TITLE HERE>"
labels: ["Needs Attention", "type: bug", "plugin: messaging", "platform: ios"]
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: |
Please search to see if an issue already exists for the bug you encountered.
options:
- label: I have searched the existing issues.
required: true
- type: markdown
attributes:
value: |
---
- type: checkboxes
attributes:
label: Are you aware of the differences between iOS and Android background message handling?
description: |
iOS adopts a more aggressive policy to throttling background messages. Android is a lot more lenient, even when the app is in a terminated state, it is highly likely that
messages will be received by the device and processed by the Firebase Messaging background handler. This is not the case with iOS. There are multiple reasons why your messages
may not be received by the device. Here are just a few reasons that are weighed by the iOS system in the decision to throttle your messages:
1. Low battery
2. High CPU usage
3. Too many messages received
4. App is in a terminated or background state
5. Data-only messages are considered lower priority than notification messages
options:
- label: I understand that iOS and Android background messages behave differently, and I've designed my application with that in mind.
required: true
- type: markdown
attributes:
value: |
---
- type: checkboxes
attributes:
label: Do you have an active Apple Developer account?
description: |
An [Apple Developer account](https://developer.apple.com/membercenter/index.action) is required.
options:
- label: I have an active Apple Developer account.
required: true
- type: markdown
attributes:
value: |
---
- type: checkboxes
attributes:
label: Are you using a physical iOS device to test background messages?
description: |
A physical device is required, background messages will not work on a simulator.
options:
- label: I am using a physical iOS device to test background messages.
required: true
- type: markdown
attributes:
value: |
---
- type: textarea
attributes:
label: Have you enabled "Remote Notifications" & "Background Mode" (Checking options for "Background Processing" & "Remote Notifications") in your app's Xcode project?
description: |
Find out how to enable "Remote Notifications" & "Background Mode" in the [documentation](https://firebase.google.com/docs/cloud-messaging/flutter/client#enable_app_capabilities_in_xcode).
<details>
<summary>Click to see how your Xcode project "Signing and Capabilities" settings should look like</summary>
<img alt="Xcode "Signing and Capabilities tab" src="./../images/remote-notifications-enable.png?raw=true" />
</details>
REQUIRED: Please provide a screenshot of your Xcode project "Signing and capabilities" settings in the text area.
validations:
required: true
- type: markdown
attributes:
value: |
---
- type: textarea
attributes:
label: Have you created an APNs key in your Apple Developer account & uploaded this APNs key to your Firebase console?
description: |
You have to create an APNs key in your [Apple Developer account](https://developer.apple.com/membercenter/index.action) & upload this APNs key to your [Firebase console](https://console.firebase.google.com). [See documentation](https://firebase.google.com/docs/cloud-messaging/flutter/client#upload_your_apns_authentication_key).
<details>
<summary>Click to see how an APNs key uploaded to the correct app in the Firebase console should look like</summary>
<img alt="APNs key uploaded to Firebase console" src="./../images/apns-key-upload.png?raw=true" />
</details>
REQUIRED: Please provide a screenshot of your APNs key showing as uploaded in the Firebase console for your app in the text area below (as show in the example above).
validations:
required: true
- type: markdown
attributes:
value: |
---
- type: textarea
attributes:
label: Have you disabled method swizzling for Firebase in your app?
description: |
Firebase Messaging will not work if you disable method swizzling. Please remove or set to `YES` the `FirebaseAppDelegateProxyEnabled` property in your `ios/Info.plist` file if it exists.
REQUIRED: Please paste your `ios/Info.plist` file in the text area.
validations:
required: true
- type: markdown
attributes:
value: |
---
- type: textarea
attributes:
label: Are you sending messages to your app from the Firebase Admin SDK?
description: |
For an example of sending messages to your app, please see [FlutterFire's nodejs Firebase Admin SDK script](https://github.com/firebase/flutterfire/blob/main/packages/firebase_messaging/firebase_messaging/example/scripts/send-message.js). FlutterFire does not support sending messages from 3rd party packages.
It is essential you include the `contentAvailable` flag in your message payload when sending messages to your app from the Firebase Admin SDK.
Example code snippet for using the Node.js Firebase Admin SDK to send a message to your app
```js
admin
.messaging()
.sendToDevice(
[token],
{
data: {
foo:'bar',
},
notification: {
title: 'A great title',
body: 'Great content',
},
},
{
// Required for background/terminated app state messages on iOS
contentAvailable: true,
}
)
```
REQUIRED: Please paste a code snippet that you're using to send messages to your app from the Firebase Admin SDK in the text area below.
validations:
required: true
- type: markdown
attributes:
value: |
---
- type: checkboxes
attributes:
label: Have you requested permission from the user to receive notifications?
description: |
You need to request permission from your user to receive notifications using the following API:
```dart
FirebaseMessaging messaging = FirebaseMessaging.instance;
NotificationSettings settings = await messaging.requestPermission(
alert: true,
announcement: false,
badge: true,
carPlay: false,
criticalAlert: false,
provisional: false,
sound: true,
);
print('User granted permission: ${settings.authorizationStatus}');
```
options:
- label: I have the relevant permission to receive notifications.
required: true
- type: markdown
attributes:
value: |
---
- type: textarea
attributes:
label: Have you used the 'Console' application on your macOS device to check if the iOS device's system is throttling your background messages?
description: |
To check the status of your push notification, please follow the steps below.
1. Open the `Console` app on your Mac
2. Select your iPhone from the devices list on the left hand side
3. Filter messages by typing in your Bundle ID (e.g. The Firebase Messaging example app bundle ID is 'io.flutter.plugins.firebase.messaging') into the search box and pressing enter.
4. Press the clear button to clean the history.
5. Now send the message to your device
6. Select all the rows on the logs & copy them, Cmd + C (not available on right-click menu)
[Example of successfully delivered data-only background message](https://github.com/firebase/flutterfire/blob/main/.github/images/ios-background-message-delivered.png)
[Example of unsuccessfully delivered data-only background message](https://github.com/firebase/flutterfire/blob/main/.github/images/ios-background-message-not-delivered.png)
REQUIRED: Please paste your logs from the above steps in the text area so we can see if a message was delivered but not received by the background message handler.
validations:
required: true
- type: markdown
attributes:
value: |
---
- type: textarea
id: comments
attributes:
label: Additional context and comments
description: |
Anything else you want to add for this issue?
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
## Description
*Replace this paragraph with a description of what this PR is doing. If you're modifying existing behavior, describe the existing behavior, how this PR is changing it, and what motivated the change.*
## Related Issues
*Replace this paragraph with a list of issues related to this PR from the [issue database](https://github.com/flutter/flutter/issues). Indicate, which of these issues are resolved or fixed by this PR. Note that you'll have to prefix the issue numbers with flutter/flutter#.*
## Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes (`[x]`).
This will ensure a smooth and quick review process. Updating the `pubspec.yaml` and changelogs is not required.
- [ ] I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
- [ ] My PR includes unit or integration tests for *all* changed/updated/fixed behaviors (See [Contributor Guide]).
- [ ] All existing and new tests are passing.
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [ ] The analyzer (`melos run analyze`) does not report any problems on my PR.
- [ ] I read and followed the [Flutter Style Guide].
- [ ] I signed the [CLA].
- [ ] I am willing to follow-up on review comments in a timely manner.
## Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?
- [ ] Yes, this is a breaking change.
- [ ] No, this is *not* a breaking change.
<!-- Links -->
[issue database]: https://github.com/flutter/flutter/issues
[Contributor Guide]: https://github.com/firebase/flutterfire/blob/main/CONTRIBUTING.md
[Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[pub versioning philosophy]: https://dart.dev/tools/pub/versioning
[CLA]: https://cla.developers.google.com/
================================================
FILE: .github/dependabot.yml
================================================
# Dependabot configuration file.
# See https://docs.github.com/en/code-security/dependabot/dependabot-version-updates
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: monthly
================================================
FILE: .github/move.yml
================================================
# Configuration for move-issues - https://github.com/dessant/move-issues
# Delete the command comment when it contains no other content.
deleteCommand: true
# Close the source issue after moving.
closeSourceIssue: true
# Lock the source issue after moving.
lockSourceIssue: false
# Mention issue and comment authors.
mentionAuthors: true
# Preserve mentions in the issue content.
keepContentMentions: true
================================================
FILE: .github/workflows/all_plugins.yaml
================================================
name: all_plugins
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
paths-ignore:
- 'docs/**'
- 'website/**'
- '**.md'
push:
branches:
- main
paths-ignore:
- 'docs/**'
- 'website/**'
- '**.md'
jobs:
analyze:
timeout-minutes: 45
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
melos-version: '5.3.0'
- name: 'Run Analyze'
run: melos analyze-ci
# Separated from "analyse" action as pubspec_override file is not being taken into account when running `flutter pub publish --dry-run`
# This will fail on CI until this is fixed: https://github.com/invertase/melos/issues/467
# You need to switch to Flutter 3.3.0, and run this test manually to check it works and update PR to confirm its success
pub_dry_run:
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
melos-version: '5.3.0'
- name: 'Pub Check'
run: |
melos exec -c 1 --no-private --ignore="*example*" -- \
dart pub publish --dry-run
pub_get_check:
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
melos-version: '5.3.0'
- name: 'Flutter Pub Get'
run: |
melos exec -c 1 --scope="*example*" -- \
"flutter pub get"
format:
# switch back to ubuntu-latest when swiftformat is working again
runs-on: macos-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
melos-version: '5.3.0'
- uses: Homebrew/actions/setup-homebrew@master
- name: 'Install Tools'
run: |
alias python=python3
flutter pub global activate flutter_plugin_tools
brew install swiftformat
brew install clang-format
brew link --overwrite --force clang-format
- name: 'Formatter version'
run: |
clang-format --version
swiftformat --version
- name: 'Dart, Java and Objective-C '
run: |
flutter pub global run flutter_plugin_tools format
./.github/workflows/scripts/validate-formatting.sh
- name: 'Swift'
if: ${{ success() || failure() }}
run: |
swiftformat .
./.github/workflows/scripts/validate-formatting.sh
build_examples_dart:
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
melos-version: '5.3.0'
- name: 'Build Examples'
run: |
melos exec -c 1 --scope="*example*" --dir-exists="web" -- \
"flutter build web"
swift-integration:
runs-on: macos-15
timeout-minutes: 45
env:
FLUTTER_DEPENDENCIES: "cloud_firestore firebase_remote_config cloud_functions firebase_database firebase_auth firebase_storage firebase_analytics firebase_messaging firebase_app_check firebase_in_app_messaging firebase_performance firebase_crashlytics firebase_ml_model_downloader firebase_app_installations"
PR_HEAD_REPO: ${{ github.event.pull_request.head.repo.full_name }}
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- name: Xcode
run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
- name: Setup firebase_core example app to test Swift integration
# run this before running melos boostrap to ensure the example app is set up
run: |
cd packages/firebase_core/firebase_core/example
flutter pub add $FLUTTER_DEPENDENCIES
cd ../../../..
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
melos-version: '5.3.0'
- name: 'Swift Integration Setup'
run: flutter config --enable-swift-package-manager
- name: 'Build Apps with Swift Package Manager'
run: dart ./.github/workflows/scripts/swift-integration.dart $FLUTTER_DEPENDENCIES
test:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
melos-version: '5.3.0'
- name: 'Flutter Test'
run: melos run test --no-select
- name: 'Flutter Test - Web'
run: melos run test:web --no-select
check-files-license-headers:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34
with:
go-version: '^1.13.1'
# Go is used by addlicense command (addlicense is used in melos run
# check-license-header)
- run: go install github.com/google/addlicense@latest
- name: Install Dart
uses: dart-lang/setup-dart@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c
- name: Install Melos
uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
# Running `melos bootstrap` is not needed because we use Melos just
# for the `check-license-header` script.
run-bootstrap: false
melos-version: '5.3.0'
- name: Check license header
run: melos run check-license-header
================================================
FILE: .github/workflows/android.yaml
================================================
name: e2e-android
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
paths-ignore:
- 'docs/**'
- 'website/**'
- '**/example/**'
- '!**/example/integration_test/**'
- '**/flutterfire_ui/**'
- '**.md'
push:
branches:
- main
paths-ignore:
- 'docs/**'
- 'website/**'
- '**/example/**'
- '!**/example/integration_test/**'
- '**/flutterfire_ui/**'
- '**.md'
jobs:
android:
runs-on: ubuntu-latest
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
working_directory:
['tests', 'packages/cloud_firestore/cloud_firestore/example']
env:
AVD_ARCH: x86_64
AVD_API_LEVEL: 34
AVD_TARGET: google_apis
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
name: Install Node.js 20
with:
node-version: '20'
- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
with:
distribution: 'temurin'
java-version: '21'
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
run-bootstrap: false
melos-version: '5.3.0'
- name: 'Bootstrap package'
run: melos bootstrap --scope tests && melos bootstrap --scope "cloud_firestore*"
- name: Start Firebase Emulator
run: cd ./.github/workflows/scripts && ./start-firebase-emulator.sh
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Gradle cache
uses: gradle/actions/setup-gradle@v4
- name: Free Disk Space (Ubuntu)
uses: AdityaGarg8/remove-unwanted-software@90e01b21170618765a73370fcc3abbd1684a7793
with:
remove-dotnet: true
remove-haskell: true
remove-codeql: true
remove-docker-images: true
remove-large-packages: true
- name: AVD cache
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
id: avd-cache
with:
# Must match the save path exactly
path: |
~/.android/avd/*
~/.android/adb*
key: avd-${{ runner.os }}-${{ env.AVD_API_LEVEL }}-${{ env.AVD_TARGET }}-${{ env.AVD_ARCH }}
- name: Start AVD then run E2E tests
uses: reactivecircus/android-emulator-runner@b530d96654c385303d652368551fb075bc2f0b6b
with:
api-level: ${{ env.AVD_API_LEVEL }}
target: ${{ env.AVD_TARGET }}
arch: ${{ env.AVD_ARCH }}
emulator-build: 14214601
working-directory: ${{ matrix.working_directory }}
script: |
flutter test integration_test/e2e_test.dart --timeout 10x --dart-define=CI=true -d emulator-5554
- name: Ensure Appium is shut down
# Required because of below issue where emulator failing to shut down properly causes tests to fail
# https://github.com/ReactiveCircus/android-emulator-runner/issues/385
run: |
pgrep -f appium && pkill -f appium || echo "No Appium process found"
- name: Save Firestore Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
- name: Save Android Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
with:
key: ${{ steps.avd-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: |
~/.android/avd/*
~/.android/adb*
================================================
FILE: .github/workflows/e2e_tests_fdc.yaml
================================================
name: e2e-fdc
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
paths-ignore:
- 'docs/**'
- 'website/**'
- '**/example/**'
- '**/flutterfire_ui/**'
- '**.md'
push:
branches:
- master
paths-ignore:
- 'docs/**'
- 'website/**'
- '**/example/**'
- '**.md'
permissions:
contents: read
jobs:
android:
runs-on: ubuntu-latest
timeout-minutes: 45
strategy:
fail-fast: false
env:
AVD_ARCH: x86_64
AVD_API_LEVEL: 34
AVD_TARGET: google_apis
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
name: Install Node.js 20
with:
node-version: '20'
- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
with:
distribution: 'temurin'
java-version: '21'
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- name: Setup PostgreSQL for Linux/macOS/Windows
uses: ikalnytskyi/action-setup-postgres@v7
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
run-bootstrap: false
melos-version: '5.3.0'
- name: 'Bootstrap package'
run: melos bootstrap --scope "firebase_data_connect*"
- name: Start Firebase Emulator
run: |
cd ./packages/firebase_data_connect/firebase_data_connect/example
unset PGSERVICEFILE
firebase experiments:enable dataconnect
./start-firebase-emulator.sh
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Gradle cache
uses: gradle/actions/setup-gradle@v4
- name: Free Disk Space (Ubuntu)
uses: AdityaGarg8/remove-unwanted-software@90e01b21170618765a73370fcc3abbd1684a7793
with:
remove-dotnet: true
remove-haskell: true
remove-codeql: true
remove-docker-images: true
remove-large-packages: true
- name: AVD cache
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
id: avd-cache
continue-on-error: true
with:
# Must match the save path exactly
path: |
~/.android/avd/*
~/.android/adb*
key: avd-${{ runner.os }}-${{ env.AVD_API_LEVEL }}-${{ env.AVD_TARGET }}-${{ env.AVD_ARCH }}
- name: Start AVD then run E2E tests
uses: reactivecircus/android-emulator-runner@b530d96654c385303d652368551fb075bc2f0b6b
with:
api-level: ${{ env.AVD_API_LEVEL }}
target: ${{ env.AVD_TARGET }}
arch: ${{ env.AVD_ARCH }}
emulator-build: 14214601
working-directory: 'packages/firebase_data_connect/firebase_data_connect/example'
script: |
flutter test integration_test/e2e_test.dart --dart-define=CI=true --timeout 10x -d emulator-5554
- name: Save Android Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
key: ${{ steps.avd-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: |
~/.android/avd/*
~/.android/adb*
- name: Save Firestore Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
ios:
runs-on: macos-15
timeout-minutes: 45
strategy:
fail-fast: false
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
name: Install Node.js 20
with:
node-version: '20'
- name: Xcode
run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
with:
distribution: 'temurin'
java-version: '21'
- name: Setup PostgreSQL for Linux/macOS/Windows
uses: ikalnytskyi/action-setup-postgres@v7
- uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639
name: Xcode Compile Cache
with:
key: xcode-cache-${{ runner.os }}
save: "${{ github.ref == 'refs/heads/main' }}"
max-size: 700M
- uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
name: Pods Cache
id: pods-cache
with:
# Must match the save path exactly
path: tests/ios/Pods
key: ${{ runner.os }}-fdc-pods-${{ hashFiles('tests/pubspec.lock') }}
restore-keys: ${{ runner.os }}-fdc-pods
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
run-bootstrap: false
melos-version: '5.3.0'
- name: 'Bootstrap package'
run: melos bootstrap --scope "firebase_data_connect*"
- name: 'Build Application'
working-directory: 'packages/firebase_data_connect/firebase_data_connect/example'
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
export CCACHE_SLOPPINESS=clang_index_store,file_stat_matches,include_file_ctime,include_file_mtime,ivfsoverlay,pch_defines,modules,system_headers,time_macros
export CCACHE_FILECLONE=true
export CCACHE_DEPEND=true
export CCACHE_INODECACHE=true
ccache -s
flutter build ios --no-codesign --simulator --debug --target=./integration_test/e2e_test.dart --dart-define=CI=true
ccache -s
- name: Start Firebase Emulator
run: |
sudo chown -R 501:20 "/Users/runner/.npm"
cd ./packages/firebase_data_connect/firebase_data_connect/example
unset PGSERVICEFILE
firebase experiments:enable dataconnect
./start-firebase-emulator.sh
- uses: futureware-tech/simulator-action@e89aa8f93d3aec35083ff49d2854d07f7186f7f5
id: simulator
with:
model: "iPhone 16"
- name: 'E2E Tests'
working-directory: 'packages/firebase_data_connect/firebase_data_connect/example'
env:
SIMULATOR: ${{ steps.simulator.outputs.udid }}
run: |
# Uncomment following line to have simulator logs printed out for debugging purposes.
# xcrun simctl spawn booted log stream --predicate 'eventMessage contains "flutter"' &
# The iOS simulator sometimes fails to connect the VM Service, hanging for
# 12 minutes before timing out. Use a 6-minute limit and retry once with
# a simulator reboot. Normal connection takes 30s-5min.
perl -e 'alarm 360; exec @ARGV' -- flutter test integration_test/e2e_test.dart -d "$SIMULATOR" --dart-define=CI=true --timeout 10x || {
echo "First attempt failed or timed out. Rebooting simulator and retrying..."
xcrun simctl shutdown "$SIMULATOR" || true
xcrun simctl boot "$SIMULATOR"
xcrun simctl bootstatus "$SIMULATOR" -b
flutter test integration_test/e2e_test.dart -d "$SIMULATOR" --dart-define=CI=true --timeout 10x
}
- name: Save Firestore Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
- name: Save Pods Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
key: ${{ steps.pods-cache.outputs.cache-primary-key }}
# Must match the restore paths exactly
path: tests/ios/Pods
web:
runs-on: macos-latest
timeout-minutes: 15
strategy:
fail-fast: false
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
name: Install Node.js 20
with:
node-version: '20'
- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
with:
distribution: 'temurin'
java-version: '21'
- name: Setup PostgreSQL for Linux/macOS/Windows
uses: ikalnytskyi/action-setup-postgres@v7
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
run-bootstrap: false
melos-version: '5.3.0'
- name: 'Bootstrap package'
run: melos bootstrap --scope "firebase_data_connect*"
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
- name: Start Firebase Emulator
run: |
sudo chown -R 501:20 "/Users/runner/.npm"
cd ./packages/firebase_data_connect/firebase_data_connect/example
unset PGSERVICEFILE
firebase experiments:enable dataconnect
./start-firebase-emulator.sh
- name: 'E2E Tests'
working-directory: 'packages/firebase_data_connect/firebase_data_connect/example'
# Web devices are not supported for the `flutter test` command yet. As a
# workaround we can use the `flutter drive` command. Tracking issue:
# https://github.com/flutter/flutter/issues/66264
run: |
chromedriver --port=4444 --trace-buffer-size=100000 &
flutter drive --target=./integration_test/e2e_test.dart --driver=./test_driver/integration_test.dart -d chrome --dart-define=CI=true | tee output.log
# We have to check the output for failed tests matching the string "[E]"
output=$(<output.log)
if [[ "$output" =~ \[E\] ]]; then
# You will see "All tests passed." in the logs even when tests failed.
echo "All tests did not pass. Please check the logs for more information."
exit 1
fi
shell: bash
- name: Save Firestore Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
web-wasm:
runs-on: macos-latest
timeout-minutes: 15
strategy:
fail-fast: false
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
name: Install Node.js 20
with:
node-version: '20'
- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
with:
distribution: 'temurin'
java-version: '21'
- name: Setup PostgreSQL for Linux/macOS/Windows
uses: ikalnytskyi/action-setup-postgres@v7
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
run-bootstrap: false
melos-version: '5.3.0'
- name: 'Bootstrap package'
run: melos bootstrap --scope "firebase_data_connect*"
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
- name: Start Firebase Emulator
run: |
cd ./packages/firebase_data_connect/firebase_data_connect/example
unset PGSERVICEFILE
firebase experiments:enable dataconnect
./start-firebase-emulator.sh
- name: 'E2E Tests'
working-directory: 'packages/firebase_data_connect/firebase_data_connect/example'
# Web devices are not supported for the `flutter test` command yet. As a
# workaround we can use the `flutter drive` command. Tracking issue:
# https://github.com/flutter/flutter/issues/66264
run: |
chromedriver --port=4444 --trace-buffer-size=100000 &
mv ./web/wasm_index.html ./web/index.html
flutter drive --target=./integration_test/e2e_test.dart --driver=./test_driver/integration_test.dart -d chrome --wasm --dart-define=CI=true | tee output.log
# We have to check the output for failed tests matching the string "[E]"
output=$(<output.log)
if [[ "$output" =~ \[E\] ]]; then
# You will see "All tests passed." in the logs even when tests failed.
echo "All tests did not pass. Please check the logs for more information."
exit 1
fi
shell: bash
- name: Save Firestore Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
================================================
FILE: .github/workflows/ios.yaml
================================================
name: e2e-iOS
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
paths-ignore:
- 'docs/**'
- 'website/**'
- '**/example/**'
- '!**/example/integration_test/**'
- '**/flutterfire_ui/**'
- '**.md'
push:
branches:
- main
paths-ignore:
- 'docs/**'
- 'website/**'
- '**/example/**'
- '!**/example/integration_test/**'
- '**/flutterfire_ui/**'
- '**.md'
jobs:
ios:
runs-on: macos-15
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
working_directory:
['tests', 'packages/cloud_firestore/cloud_firestore/example']
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
name: Install Node.js 20
with:
node-version: '20'
- name: Xcode
run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
with:
distribution: 'temurin'
java-version: '21'
- uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639
name: Xcode Compile Cache
with:
key: xcode-cache-${{ runner.os }}
save: "${{ github.ref == 'refs/heads/main' }}"
max-size: 700M
- uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
name: Pods Cache
id: pods-cache
with:
# Must match the save path exactly
path: tests/ios/Pods
key: pods-v3-${{ runner.os }}-ios-${{ hashFiles('tests/pubspec.lock') }}
restore-keys: pods-v3-${{ runner.os }}-ios
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
run-bootstrap: false
melos-version: '5.3.0'
- name: 'Bootstrap package'
run: melos bootstrap --scope tests && melos bootstrap --scope "cloud_firestore*"
- name: 'Free up space'
run: |
sudo rm -rf \
/usr/local/share/.cache \
/opt/microsoft/msedge \
/opt/microsoft/powershell \
/opt/pipx \
/usr/lib/mono \
/usr/local/julia* \
/usr/local/lib/android \
/usr/local/share/chromium \
/usr/local/share/powershell \
/usr/share/dotnet
df -h /
- name: 'Build Application'
working-directory: ${{ matrix.working_directory }}
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
export CCACHE_SLOPPINESS=clang_index_store,file_stat_matches,include_file_ctime,include_file_mtime,ivfsoverlay,pch_defines,modules,system_headers,time_macros
export CCACHE_FILECLONE=true
export CCACHE_DEPEND=true
export CCACHE_INODECACHE=true
ccache -s
flutter build ios --no-codesign --simulator --debug --target=./integration_test/e2e_test.dart --dart-define=CI=true
ccache -s
- name: Start Firebase Emulator
run: sudo chown -R 501:20 "/Users/runner/.npm" && cd ./.github/workflows/scripts && ./start-firebase-emulator.sh
- uses: futureware-tech/simulator-action@e89aa8f93d3aec35083ff49d2854d07f7186f7f5
id: simulator
with:
# List of available simulators: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md#installed-simulators
model: "iPhone 16"
- name: 'E2E Tests'
working-directory: ${{ matrix.working_directory }}
env:
SIMULATOR: ${{ steps.simulator.outputs.udid }}
run: |
# Uncomment following line to have simulator logs printed out for debugging purposes.
# xcrun simctl spawn booted log stream --predicate 'eventMessage contains "flutter"' &
# The iOS simulator sometimes fails to connect the VM Service, hanging for
# 12 minutes before timing out. Use a 6-minute limit and retry once with
# a simulator reboot. Normal connection takes 30s-5min.
perl -e 'alarm 360; exec @ARGV' -- flutter test integration_test/e2e_test.dart -d "$SIMULATOR" --timeout 10x --dart-define=CI=true || {
echo "First attempt failed or timed out. Rebooting simulator and retrying..."
xcrun simctl shutdown "$SIMULATOR" || true
xcrun simctl boot "$SIMULATOR"
xcrun simctl bootstatus "$SIMULATOR" -b
flutter test integration_test/e2e_test.dart -d "$SIMULATOR" --timeout 10x --dart-define=CI=true
}
- name: Save Firestore Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore paths exactly
path: ~/.cache/firebase/emulators
- name: Save Pods Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
key: ${{ steps.pods-cache.outputs.cache-primary-key }}
# Must match the restore paths exactly
path: tests/ios/Pods
================================================
FILE: .github/workflows/macos.yaml
================================================
name: e2e-macOS
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
paths-ignore:
- 'docs/**'
- 'website/**'
- '**/example/**'
- '!**/example/integration_test/**'
- '**/flutterfire_ui/**'
- '**.md'
push:
branches:
- main
paths-ignore:
- 'docs/**'
- 'website/**'
- '**/example/**'
- '!**/example/integration_test/**'
- '**/flutterfire_ui/**'
- '**.md'
jobs:
macos:
runs-on: macos-15
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
working_directory:
['tests', 'packages/cloud_firestore/cloud_firestore/example']
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
name: Install Node.js 20
with:
node-version: '20'
- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
with:
distribution: 'temurin'
java-version: '21'
- uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639
name: Xcode Compile Cache
with:
key: xcode-cache-${{ runner.os }}
save: "${{ github.ref == 'refs/heads/main' }}"
max-size: 700M
- name: Pods Cache
continue-on-error: true
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
id: pods-cache
with:
# Must match the save path exactly
path: tests/macos/Pods
key: pods-v3-${{ runner.os }}-macos-${{ hashFiles('tests/pubspec.lock') }}
restore-keys: pods-v3-${{ runner.os }}-macos
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
run-bootstrap: false
melos-version: '5.3.0'
- name: 'Bootstrap package'
run: melos bootstrap --scope tests && melos bootstrap --scope "cloud_firestore*"
- name: 'Build Application'
working-directory: ${{ matrix.working_directory }}
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
export CCACHE_SLOPPINESS=clang_index_store,file_stat_matches,include_file_ctime,include_file_mtime,ivfsoverlay,pch_defines,modules,system_headers,time_macros
export CCACHE_FILECLONE=true
export CCACHE_DEPEND=true
export CCACHE_INODECACHE=true
ccache -s
flutter build macos --debug --target=./integration_test/e2e_test.dart --device-id=macos --dart-define=CI=true
ccache -s
- name: Start Firebase Emulator
# Chown the npm cache directory to the runner user to avoid permission issues
run: sudo chown -R 501:20 "/Users/runner/.npm" && cd ./.github/workflows/scripts && ./start-firebase-emulator.sh
- name: 'E2E Tests'
working-directory: ${{ matrix.working_directory }}
run: |
# flutter test on macOS CI may exit 1 due to "Failed to foreground app"
# even when all tests pass. Check actual test results to determine success.
set +e
OUTPUT=$(flutter test \
integration_test/e2e_test.dart \
-d macos \
--dart-define=CI=true \
--timeout 10x 2>&1)
EXIT_CODE=$?
echo "$OUTPUT"
if [ $EXIT_CODE -ne 0 ]; then
if echo "$OUTPUT" | grep -q "Some tests failed" || echo "$OUTPUT" | grep -q "test failed"; then
exit 1
fi
if echo "$OUTPUT" | grep -q "tests passed"; then
echo "All tests passed but flutter test exited with $EXIT_CODE (likely 'Failed to foreground app'). Treating as success."
exit 0
fi
exit $EXIT_CODE
fi
- name: Save Firestore Emulator Cache
continue-on-error: true
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
- name: Save Pods Cache
continue-on-error: true
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
with:
key: ${{ steps.pods-cache.outputs.cache-primary-key }}
# Must match the restore paths exactly
path: tests/macos/Pods
================================================
FILE: .github/workflows/ossf-scorecard.yml
================================================
# This workflow uses actions that are not certified by GitHub. They are provided
# by a third-party and are governed by separate terms of service, privacy
# policy, and support documentation.
name: Scorecard supply-chain security
on:
# For Branch-Protection check. Only the default branch is supported. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
branch_protection_rule:
# To guarantee Maintained check is occasionally updated. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
schedule:
- cron: '24 5 * * 5'
push:
branches: [ "main" ]
# Declare default permissions as read only.
permissions: read-all
jobs:
analysis:
name: Scorecard analysis
runs-on: ubuntu-latest
permissions:
# Needed to upload the results to code-scanning dashboard.
security-events: write
# Needed to publish results and get a badge (see publish_results below).
id-token: write
# Uncomment the permissions below if installing in a private repository.
# contents: read
# actions: read
steps:
- name: "Checkout code"
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v3.1.0
with:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0
with:
results_file: results.sarif
results_format: sarif
# (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
# - you want to enable the Branch-Protection check on a *public* repository, or
# - you are installing Scorecard on a *private* repository
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat.
# repo_token: ${{ secrets.SCORECARD_TOKEN }}
# Public repositories:
# - Publish results to OpenSSF REST API for easy access by consumers
# - Allows the repository to include the Scorecard badge.
# - See https://github.com/ossf/scorecard-action#publishing-results.
# For private repositories:
# - `publish_results` will always be set to `false`, regardless
# of the value entered here.
publish_results: true
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: SARIF file
path: results.sarif
retention-days: 5
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5
with:
sarif_file: results.sarif
================================================
FILE: .github/workflows/pr_title.yaml
================================================
name: pr_title
on:
pull_request_target:
types:
- opened
- edited
- synchronize
jobs:
validate:
permissions:
pull-requests: read
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/scripts/.firebaserc
================================================
{
"projects": {
"default": "flutterfire-e2e-tests",
"react-native-firebase-testing": "react-native-firebase-testing"
},
"targets": {}
}
================================================
FILE: .github/workflows/scripts/build-example.sh
================================================
#!/bin/bash
DEFAULT_TARGET="./integration_test/MELOS_PARENT_PACKAGE_NAME_e2e_test.dart"
ACTION=$1
TARGET_FILE=${2:-$DEFAULT_TARGET}
melos bootstrap --scope="*firebase_core*" --scope="$FLUTTERFIRE_PLUGIN_SCOPE"
if [ "$ACTION" == "android" ]
then
melos exec -c 1 --scope="$FLUTTERFIRE_PLUGIN_SCOPE_EXAMPLE" -- \
flutter build apk $FLUTTER_COMMAND_FLAGS --debug --target="$TARGET_FILE" --dart-define=CI=true --no-android-gradle-daemon
MELOS_EXIT_CODE=$?
pkill dart || true
pkill java || true
exit $MELOS_EXIT_CODE
fi
if [ "$ACTION" == "ios" ]
then
melos exec -c 1 --scope="$FLUTTERFIRE_PLUGIN_SCOPE_EXAMPLE" -- \
flutter build ios $FLUTTER_COMMAND_FLAGS --no-codesign --simulator --debug --target="$TARGET_FILE" --dart-define=CI=true
exit
fi
if [ "$ACTION" == "macos" ]
then
melos exec -c 1 --scope="$FLUTTERFIRE_PLUGIN_SCOPE_EXAMPLE" -- \
flutter build macos $FLUTTER_COMMAND_FLAGS --debug --target="$TARGET_FILE" --device-id=macos --dart-define=CI=true
exit
fi
================================================
FILE: .github/workflows/scripts/database.rules.json
================================================
{
"rules": {
".read": false,
".write": false,
"denied_read": {
".read": false,
".write": false
},
"messages": {
".read": true,
".write": true
},
"counter": {
".read": true,
".write": true
},
"tests": {
".read": true,
".write": true,
".indexOn": [
".value",
"number"
],
"ordered": {
".read": true,
".write": true,
".indexOn": [
"value"
]
},
"children": {
".read": true,
".write": true,
".indexOn": [".value"]
}
}
}
}
================================================
FILE: .github/workflows/scripts/drive-example.sh
================================================
#!/bin/bash
ACTION=$1
if [ "$ACTION" == "android" ]
then
# Sleep to allow emulator to settle.
sleep 15
melos exec -c 1 --fail-fast --scope="$FLUTTERFIRE_PLUGIN_SCOPE_EXAMPLE" --dir-exists=integration_test -- \
flutter test integration_test/MELOS_PARENT_PACKAGE_NAME_e2e_test.dart $FLUTTER_COMMAND_FLAGS --dart-define=CI=true
exit
fi
if [ "$ACTION" == "ios" ]
then
SIMULATOR="iPhone 14"
# Boot simulator and wait for System app to be ready.
xcrun simctl bootstatus "$SIMULATOR" -b
xcrun simctl logverbose "$SIMULATOR" enable
# Sleep to allow simulator to settle.
sleep 15
# Uncomment following line to have simulator logs printed out for debugging purposes.
# xcrun simctl spawn booted log stream --predicate 'eventMessage contains "flutter"' &
melos exec -c 1 --fail-fast --scope="$FLUTTERFIRE_PLUGIN_SCOPE_EXAMPLE" --dir-exists=integration_test -- \
flutter test integration_test/MELOS_PARENT_PACKAGE_NAME_e2e_test.dart $FLUTTER_COMMAND_FLAGS -d \"$SIMULATOR\" --dart-define=CI=true
MELOS_EXIT_CODE=$?
xcrun simctl shutdown "$SIMULATOR"
exit $MELOS_EXIT_CODE
fi
if [ "$ACTION" == "macos" ]
then
melos exec -c 1 --fail-fast --scope="$FLUTTERFIRE_PLUGIN_SCOPE_EXAMPLE" --dir-exists=test_driver -- \
flutter test integration_test/MELOS_PARENT_PACKAGE_NAME_e2e_test.dart $FLUTTER_COMMAND_FLAGS -d macos --dart-define=CI=true
exit
fi
if [ "$ACTION" == "web" ]
then
melos bootstrap --scope="*firebase_core*" --scope="$FLUTTERFIRE_PLUGIN_SCOPE"
chromedriver --port=4444 &
melos exec -c 1 --scope="$FLUTTERFIRE_PLUGIN_SCOPE_EXAMPLE" --dir-exists=web -- \
flutter drive $FLUTTER_COMMAND_FLAGS --verbose-system-logs --device-id=web-server --target=./integration_test/MELOS_PARENT_PACKAGE_NAME_e2e_test.dart --driver=./test_driver/integration_test.dart --dart-define=CI=true
exit
fi
================================================
FILE: .github/workflows/scripts/firebase.json
================================================
{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"database": {
"rules": "database.rules.json"
},
"functions": {
"predeploy": "npm --prefix \"$RESOURCE_DIR\" run build",
"source": "functions"
},
"emulators": {
"firestore": {
"port": 8080
},
"auth": {
"port": 9099
},
"storage": {
"port": 9199
},
"database": {
"port": 9000
},
"ui": {
"enabled": true,
"port": 4000
}
},
"storage": {
"rules": "storage.rules"
}
}
================================================
FILE: .github/workflows/scripts/firestore.indexes.json
================================================
{
"indexes": [
{
"collectionGroup": "firebasePerfTest",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "democratic",
"order": "ASCENDING"
},
{
"fieldPath": "totalPopulation",
"order": "ASCENDING"
}
]
},
{
"collectionGroup": "firestore-example-app",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "title",
"order": "ASCENDING"
},
{
"fieldPath": "likes",
"order": "ASCENDING"
}
]
},
{
"collectionGroup": "firestore-example-app",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "title",
"order": "ASCENDING"
},
{
"fieldPath": "year",
"order": "ASCENDING"
}
]
},
{
"collectionGroup": "playground",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "age",
"order": "ASCENDING"
},
{
"fieldPath": "foo",
"order": "ASCENDING"
}
]
},
{
"collectionGroup": "playground",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "status",
"order": "ASCENDING"
},
{
"fieldPath": "finished_at",
"order": "ASCENDING"
}
]
},
{
"collectionGroup": "v6",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "a",
"order": "ASCENDING"
},
{
"fieldPath": "b",
"order": "ASCENDING"
}
]
}
],
"fieldOverrides": [
{
"collectionGroup": "collectionGroup",
"fieldPath": "number",
"indexes": [
{
"order": "ASCENDING",
"queryScope": "COLLECTION"
},
{
"order": "DESCENDING",
"queryScope": "COLLECTION"
},
{
"arrayConfig": "CONTAINS",
"queryScope": "COLLECTION"
},
{
"order": "ASCENDING",
"queryScope": "COLLECTION_GROUP"
},
{
"order": "DESCENDING",
"queryScope": "COLLECTION_GROUP"
},
{
"arrayConfig": "CONTAINS",
"queryScope": "COLLECTION_GROUP"
}
]
},
{
"collectionGroup": "collectionGroup",
"fieldPath": "value",
"indexes": [
{
"order": "ASCENDING",
"queryScope": "COLLECTION"
},
{
"order": "DESCENDING",
"queryScope": "COLLECTION"
},
{
"arrayConfig": "CONTAINS",
"queryScope": "COLLECTION"
},
{
"order": "ASCENDING",
"queryScope": "COLLECTION_GROUP"
},
{
"order": "DESCENDING",
"queryScope": "COLLECTION_GROUP"
}
]
},
{
"collectionGroup": "group-test",
"fieldPath": "foo",
"indexes": [
{
"order": "ASCENDING",
"queryScope": "COLLECTION"
},
{
"order": "DESCENDING",
"queryScope": "COLLECTION"
},
{
"arrayConfig": "CONTAINS",
"queryScope": "COLLECTION"
},
{
"order": "DESCENDING",
"queryScope": "COLLECTION_GROUP"
}
]
},
{
"collectionGroup": "playground",
"fieldPath": "age",
"indexes": [
{
"order": "ASCENDING",
"queryScope": "COLLECTION"
},
{
"order": "DESCENDING",
"queryScope": "COLLECTION"
},
{
"arrayConfig": "CONTAINS",
"queryScope": "COLLECTION"
},
{
"order": "ASCENDING",
"queryScope": "COLLECTION_GROUP"
}
]
},
{
"collectionGroup": "playground",
"fieldPath": "createdDate",
"indexes": [
{
"order": "ASCENDING",
"queryScope": "COLLECTION"
},
{
"order": "DESCENDING",
"queryScope": "COLLECTION"
},
{
"arrayConfig": "CONTAINS",
"queryScope": "COLLECTION"
}
]
}
]
}
================================================
FILE: .github/workflows/scripts/firestore.rules
================================================
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
match /flutter-tests/{document=**} {
allow read, write: if true;
}
match /{path=**}/collection-group/{subId} {
allow read, write: if true;
}
match /firestore-bundle-tests/{document=**} {
allow read, write: if true;
}
match /{path=**}/group-test/{documentId} {
allow read, write: if true;
}
match /{path=**}/aggregate-group-count/{documentId} {
allow read, write: if true;
}
match /flutter-tests/{testid}/group-test/{docid} {
allow read, write: if true;
}
match /firestore-example-app/{document=**} {
allow read, write: if true;
}
match /root/{document=**} {
allow read, write: if true;
}
match /flutterfire-2/{document=**} {
// separate rules are not supported so we need to use the same rules for both databases to prove it is querying different databases
allow read, write: if database == "flutterfire-2";
}
}
}
================================================
FILE: .github/workflows/scripts/functions/.gitignore
================================================
## Compiled JavaScript files
**/*.js
**/*.js.map
# Typescript v1 declaration files
typings/
node_modules/
.idea
*.log
================================================
FILE: .github/workflows/scripts/functions/package.json
================================================
{
"name": "functions",
"scripts": {
"build": "tsc",
"postinstall": "npm run build",
"serve": "npm run build && firebase emulators:start --only functions",
"shell": "npm run build && firebase functions:shell",
"start": "npm run serve",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "20"
},
"main": "lib/index.js",
"dependencies": {
"firebase-admin": "^13.2.0",
"firebase-functions": "^6.3.2"
},
"devDependencies": {
"firebase-functions-test": "^0.2.0",
"typescript": "^4.5.4"
},
"private": true
}
================================================
FILE: .github/workflows/scripts/functions/src/index.ts
================================================
import * as assert from 'assert';
import * as functions from 'firebase-functions';
import * as functionsv2 from 'firebase-functions/v2';
// For example app.
// noinspection JSUnusedGlobalSymbols
export const listFruit = functions.https.onCall(() => {
return ['Apple', 'Banana', 'Cherry', 'Date', 'Fig', 'Grapes'];
});
export const listfruits2ndgen = functionsv2.https.onCall((res, req) => {
const fruitList = ['Apple', 'Banana', 'Cherry', 'Date', 'Fig', 'Grapes'];
const allFruits = fruitList.map(async (fruit) => {
if (res.acceptsStreaming) {
req?.sendChunk(fruit)
}
})
return Promise.all(allFruits);
});
// For e2e testing a custom region.
// noinspection JSUnusedGlobalSymbols
export const testFunctionCustomRegion = functions.https.onCall(
{
region: 'europe-west1'
},
() => 'europe-west1'
);
// For e2e testing timeouts.
export const testFunctionTimeout = functions.https.onCall((req, res) => {
const data = req.data
console.log(JSON.stringify({ data }));
const timeoutMs = parseInt(data?.testTimeout, 10);
if (isNaN(timeoutMs)) {
throw new functions.https.HttpsError(
'invalid-argument',
'testTimeout must be provided.'
);
}
if (req.acceptsStreaming) {
setTimeout(() => {
res?.sendChunk({ timeLimit: 'exceeded' });
}, timeoutMs);
return new Promise((resolve) => {
setTimeout(resolve, timeoutMs + 100);
});
}
return new Promise((resolve) => {
setTimeout(() => resolve({ timeLimit: 'exceeded' }), timeoutMs);
});
});
// For e2e testing errors & return values.
// noinspection JSUnusedGlobalSymbols
export const testFunctionDefaultRegion = functions.https.onCall((req, res) => {
const data = req.data;
console.log(JSON.stringify({ data }));
const sendResponse = (value: any) => {
if (req.acceptsStreaming && res) {
res.sendChunk(value);
return value;
}
return value;
};
if (typeof data === 'string') {
return sendResponse('string');
}
if (typeof data === 'number') {
return sendResponse('number');
}
if (typeof data === 'boolean') {
return sendResponse('boolean');
}
if (data === null) {
return sendResponse('null');
}
if (Array.isArray(data)) {
return sendResponse('array');
}
if (data.type === 'rawData') {
return sendResponse(data);
}
const sampleData: {
[key: string]: any;
} = {
number: 1234,
string: 'acde',
boolean: true,
null: null,
map: {
number: 1234,
string: 'acde',
boolean: true,
null: null,
},
list: [1234, 'acde', true, null],
deepMap: {
number: 123,
string: 'foo',
booleanTrue: true,
booleanFalse: false,
null: null,
list: ['1', 2, true, false],
map: {
number: 123,
string: 'foo',
booleanTrue: true,
booleanFalse: false,
null: null,
},
},
deepList: [
'1',
2,
true,
false,
['1', 2, true, false],
{
number: 123,
string: 'foo',
booleanTrue: true,
booleanFalse: false,
null: null,
},
],
};
const {
type,
asError,
inputData,
}: {
type: string;
asError?: boolean;
inputData?: any;
} = data;
if (!Object.hasOwnProperty.call(sampleData, type)) {
throw new functions.https.HttpsError(
'invalid-argument',
'Invalid test requested.'
);
}
const outputData = sampleData[type];
try {
assert.deepEqual(outputData, inputData);
} catch (e) {
console.error(e);
throw new functions.https.HttpsError(
'invalid-argument',
'Input and Output types did not match.',
(e as any).message
);
}
// all good
if (asError) {
throw new functions.https.HttpsError(
'cancelled',
'Response data was requested to be sent as part of an Error payload, so here we are!',
outputData
);
}
return sendResponse(outputData);
});
export const testMapConvertType = functions.https.onCall((data) => ({
foo: 'bar',
}));
export const testStream = functions.https.onCall((req, res) => {
const data = req.data;
if (data === null || undefined) {
if (req.acceptsStreaming) {
res?.sendChunk('null');
}
return
}
const results = [];
results.push(data)
const allResults = results.map(async (result) => {
if (req.acceptsStreaming) {
res?.sendChunk(result);
}
return result;
});
return Promise.all(allResults);
})
export const testStreamResponse = functions.https.onCall(async (request, response) => {
const fruits = ['Apple', 'Mango', 'Banana']
const allFruits = fruits.map(async (fruit) => {
// Stream each fruit as it resolves!
if (request.acceptsStreaming) {
response?.sendChunk(fruit);
}
return fruit;
});
// Fallback for non-streaming clients
return Promise.all(allFruits);
});
================================================
FILE: .github/workflows/scripts/functions/tsconfig.json
================================================
{
"compilerOptions": {
"lib": ["ES2021"],
"module": "commonjs",
"target": "ES2021",
"noImplicitReturns": true,
"noUnusedLocals": true,
"outDir": "lib",
"sourceMap": true,
"skipLibCheck": true,
"strict": true
},
"compileOnSave": true,
"include": [
"src"
]
}
================================================
FILE: .github/workflows/scripts/reset-firestore-emulator.sh
================================================
#!/bin/bash
curl -v -X DELETE "http://localhost:8080/emulator/v1/projects/flutterfire-e2e-tests/databases/(default)/documents"
================================================
FILE: .github/workflows/scripts/start-firebase-emulator.sh
================================================
#!/bin/bash
if ! [ -x "$(command -v firebase)" ]; then
echo "❌ Firebase tools CLI is missing."
exit 1
fi
if ! [ -x "$(command -v node)" ]; then
echo "❌ Node.js is missing."
exit 1
fi
if ! [ -x "$(command -v npm)" ]; then
echo "❌ NPM is missing."
exit 1
fi
# Run NPM install if node modules does not exist.
if [[ ! -d "functions/node_modules" ]]; then
cd functions
if npm i; then
echo "✅ NPM install successful."
else
if [[ -z "${CI}" ]]; then
echo "❌ NPM install failed."
exit 1
else
# TODO temporary workaround for GitHub Actions CI issue:
# npm ERR! Your cache folder contains root-owned files, due to a bug in
# npm ERR! previous versions of npm which has since been addressed.
sudo chown -R 501:20 "/Users/runner/.npm" || exit 1
npm i || exit 1
fi
fi
cd ..
fi
export STORAGE_EMULATOR_DEBUG=true
EMU_START_COMMAND="firebase emulators:start --only auth,firestore,functions,storage,database --project flutterfire-e2e-tests"
MAX_RETRIES=3
MAX_CHECKATTEMPTS=60
CHECKATTEMPTS_WAIT=1
RETRIES=1
while [ $RETRIES -le $MAX_RETRIES ]; do
if [[ -z "${CI}" ]]; then
echo "Starting Firebase Emulator Suite in foreground."
$EMU_START_COMMAND
exit 0
else
echo "Starting Firebase Emulator Suite in background."
$EMU_START_COMMAND &
CHECKATTEMPTS=1
while [ $CHECKATTEMPTS -le $MAX_CHECKATTEMPTS ]; do
sleep $CHECKATTEMPTS_WAIT
if curl --output /dev/null --silent --fail http://localhost:8080; then
# Check again since it can exit before the emulator is ready.
sleep 15
if curl --output /dev/null --silent --fail http://localhost:8080; then
echo "Firebase Emulator Suite is online!"
exit 0
else
echo "❌ Firebase Emulator exited after startup."
exit 1
fi
fi
echo "Waiting for Firebase Emulator Suite to come online, check $CHECKATTEMPTS of $MAX_CHECKATTEMPTS..."
((CHECKATTEMPTS = CHECKATTEMPTS + 1))
done
fi
echo "Firebase Emulator Suite did not come online in $MAX_CHECKATTEMPTS checks. Try $RETRIES of $MAX_RETRIES."
((RETRIES = RETRIES + 1))
done
echo "Firebase Emulator Suite did not come online after $MAX_RETRIES attempts."
exit 1
================================================
FILE: .github/workflows/scripts/storage.rules
================================================
rules_version = '2';
service firebase.storage {
// Default bucket
match /b/flutterfire-e2e-tests.appspot.com/o {
match /{document=**} {
allow read, write: if false;
}
match /writeOnly.txt {
allow read: if false;
allow write: if true;
}
match /flutter-tests/{document=**} {
allow read, write: if true;
}
}
// Second bucket
match /b/flutterfire-e2e-tests-two/o {
match /{document=**} {
allow read, write: if false;
}
match /allowable-lists-2nd-bucket/{document=**} {
allow read, write: if true;
}
match /writeOnly.txt {
allow read: if false;
allow write: if true;
}
match /flutter-tests/{fileName} {
// Blocks read and write access if the file name exactly matches 'second-bucket-not-allowed', regardless of the file extension
allow read, write: if !(fileName == 'second-bucket-not-allowed.jpeg' || fileName == 'second-bucket-not-allowed.txt');
}
}
}
================================================
FILE: .github/workflows/scripts/swift-integration.dart
================================================
// Copyright 2024, the Chromium project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:io';
import 'dart:convert';
final debugMode = false;
void main(List<String> arguments) async {
if (debugMode) {
print('[DEBUG] main: Starting swift-integration script');
print('[DEBUG] Arguments: ${arguments.join(', ')}');
print('[DEBUG] Number of arguments: ${arguments.length}');
}
if (arguments.isEmpty) {
throw Exception('No FlutterFire dependency arguments provided.');
}
// Get the current git branch from GitHub Actions environment or fallback to git command
final currentBranch = await getCurrentBranch();
print('Current branch: $currentBranch');
if (debugMode) {
print(
'[DEBUG] About to update Package.swift files for branch: $currentBranch',
);
}
// Update all Package.swift files to use branch dependencies
await updatePackageSwiftFiles(currentBranch, arguments);
if (debugMode) {
print('[DEBUG] Package.swift files updated, starting builds');
}
final plugins = arguments.join(',');
if (debugMode) {
print('[DEBUG] Building iOS first...');
}
await buildSwiftExampleApp('ios', plugins);
if (debugMode) {
print('[DEBUG] iOS build completed, now building macOS...');
}
await buildSwiftExampleApp('macos', plugins);
if (debugMode) {
print('[DEBUG] main: All builds completed successfully');
}
}
Future<String> getCurrentBranch() async {
if (debugMode) {
print('[DEBUG] getCurrentBranch: Starting branch detection');
print('[DEBUG] Environment variables:');
print(
'[DEBUG] GITHUB_HEAD_REF: ${Platform.environment['GITHUB_HEAD_REF']}',
);
print(
'[DEBUG] GITHUB_REF_NAME: ${Platform.environment['GITHUB_REF_NAME']}',
);
print(
'[DEBUG] GITHUB_REPOSITORY: ${Platform.environment['GITHUB_REPOSITORY']}',
);
print('[DEBUG] PR_HEAD_REPO: ${Platform.environment['PR_HEAD_REPO']}');
}
// Try GitHub Actions environment variables first
String? branch = Platform.environment['GITHUB_HEAD_REF']; // For pull requests
if (debugMode && branch != null) {
print('[DEBUG] Found branch from GITHUB_HEAD_REF: $branch');
}
if (branch == null || branch.isEmpty) {
branch = Platform.environment['GITHUB_REF_NAME']; // For direct pushes
if (debugMode && branch != null) {
print('[DEBUG] Found branch from GITHUB_REF_NAME: $branch');
}
}
if (branch == null || branch.isEmpty) {
// Fallback to git command for local testing
print(
'GitHub Actions environment variables not found, trying git command...',
);
if (debugMode) {
print('[DEBUG] Executing: git branch --show-current');
}
final result = await Process.run('git', ['branch', '--show-current']);
if (result.exitCode != 0) {
if (debugMode) {
print('[DEBUG] Git command failed with exit code: ${result.exitCode}');
print('[DEBUG] Git stderr: ${result.stderr}');
}
throw Exception('Failed to get current git branch: ${result.stderr}');
}
branch = result.stdout.toString().trim();
if (debugMode) {
print('[DEBUG] Found branch from git command: $branch');
}
}
if (branch.isEmpty) {
if (debugMode) {
print('[DEBUG] No branch found from any method');
}
throw Exception(
'Could not determine current branch from GitHub Actions environment or git command',
);
}
if (debugMode) {
print('[DEBUG] Final branch: $branch');
}
return branch;
}
Future<void> updatePackageSwiftFiles(
String branch,
List<String> packages,
) async {
if (debugMode) {
print('[DEBUG] updatePackageSwiftFiles: Starting');
print('[DEBUG] Branch: $branch');
print(
'[DEBUG] updatePackageSwiftFiles: Processing ${packages.length} packages',
);
print('[DEBUG] Packages: ${packages.join(', ')}');
}
// Update each package's Package.swift files
for (final package in packages) {
if (debugMode) {
print('[DEBUG] Processing package: $package');
}
await updatePackageSwiftForPackage(package, branch);
}
if (debugMode) {
print('[DEBUG] updatePackageSwiftFiles: Completed processing all packages');
}
}
Future<void> updatePackageSwiftForPackage(
String packageName,
String branch,
) async {
if (debugMode) {
print(
'[DEBUG] updatePackageSwiftForPackage: Starting for package $packageName',
);
}
// Check both ios and macos directories
final platforms = ['ios', 'macos'];
if (debugMode) {
print('[DEBUG] Will check platforms: ${platforms.join(', ')}');
}
for (final platform in platforms) {
final packageSwiftPath =
'packages/$packageName/$packageName/$platform/$packageName/Package.swift';
final file = File(packageSwiftPath);
if (debugMode) {
print('[DEBUG] Checking path: $packageSwiftPath');
print('[DEBUG] File exists: ${file.existsSync()}');
}
if (!file.existsSync()) {
print('Warning: Package.swift not found at $packageSwiftPath');
continue;
}
print('Updating $packageSwiftPath');
final content = await file.readAsString();
if (debugMode) {
print('[DEBUG] File content length: ${content.length} characters');
print('[DEBUG] Content preview (first 200 chars):');
print(
'[DEBUG] ${content.length > 200 ? content.substring(0, 200) : content}...',
);
}
// Replace exact version dependency with branch dependency
String updatedContent = content;
// Pattern to match the exact version dependency
final exactVersionPattern = RegExp(
r'\.package\(url: "https://github\.com/firebase/flutterfire", exact: [^)]+\)',
multiLine: true,
);
if (debugMode) {
final matches = exactVersionPattern.allMatches(content);
print('[DEBUG] Regex pattern matches found: ${matches.length}');
for (final match in matches) {
print('[DEBUG] Match: ${match.group(0)}');
}
}
final headRepo = Platform.environment['PR_HEAD_REPO'];
final baseRepo = Platform.environment['GITHUB_REPOSITORY'];
if (debugMode) {
print('[DEBUG] PR_HEAD_REPO: $headRepo');
print('[DEBUG] GITHUB_REPOSITORY: $baseRepo');
}
// handles forked repositories
final repoSlug =
(headRepo != null && headRepo.isNotEmpty && headRepo != baseRepo)
? headRepo
: baseRepo;
print('repoSlug: $repoSlug');
print('branch: $branch');
if (debugMode) {
print(
'[DEBUG] Using repoSlug: $repoSlug (headRepo != baseRepo: ${headRepo != baseRepo})',
);
}
// Replace with branch dependency
final branchDependency =
'.package(url: "https://github.com/$repoSlug", branch: "$branch")';
if (debugMode) {
print('[DEBUG] Branch dependency string: $branchDependency');
}
if (exactVersionPattern.hasMatch(content)) {
updatedContent = content.replaceAll(
exactVersionPattern,
branchDependency,
);
if (debugMode) {
print('[DEBUG] Content was modified, writing to file');
print('[DEBUG] Updated content preview (first 200 chars):');
print(
'[DEBUG] ${updatedContent.length > 200 ? updatedContent.substring(0, 200) : updatedContent}...',
);
}
await file.writeAsString(updatedContent);
print('✓ Updated $packageSwiftPath to use branch: $branch');
} else {
print('⚠ No exact version dependency found in $packageSwiftPath');
if (debugMode) {
print('[DEBUG] Content did not match regex pattern');
print('[DEBUG] Looking for pattern: ${exactVersionPattern.pattern}');
}
}
}
if (debugMode) {
print(
'[DEBUG] updatePackageSwiftForPackage: Completed for package $packageName',
);
}
}
Future<void> buildSwiftExampleApp(String platform, String plugins) async {
final initialDirectory = Directory.current;
final platformName = platform == 'ios' ? 'iOS' : 'macOS';
if (debugMode) {
print('[DEBUG] buildSwiftExampleApp: Starting build for $platformName');
print('[DEBUG] Initial directory: ${initialDirectory.path}');
print('[DEBUG] Platform: $platform');
print('[DEBUG] Plugins: $plugins');
}
print('Building example app with swift (SPM) integration for $plugins');
final directory = Directory(
'packages/firebase_core/firebase_core/example/$platform',
);
if (debugMode) {
print('[DEBUG] Target directory: ${directory.path}');
print('[DEBUG] Directory exists: ${directory.existsSync()}');
}
if (!directory.existsSync()) {
print('Directory does not exist: ${directory.path}');
exit(1);
}
// Change to the appropriate directory
if (debugMode) {
print(
'[DEBUG] Changing directory from ${Directory.current.path} to ${directory.path}',
);
}
Directory.current = directory;
if (debugMode) {
print('[DEBUG] Current directory after change: ${Directory.current.path}');
print('[DEBUG] Listing current directory contents:');
try {
final contents = Directory.current.listSync();
for (final item in contents) {
print('[DEBUG] ${item.path.split('/').last}');
}
} catch (e) {
print('[DEBUG] Error listing directory: $e');
}
}
await _runCommand('rm', ['Podfile']);
await _runCommand('pod', ['deintegrate']);
// Check what SPM packages are being resolved before build
if (debugMode) {
print('[DEBUG] Checking for existing SPM packages directory...');
final spmPackagesDir = Directory('$platform/Flutter/ephemeral/Packages');
if (spmPackagesDir.existsSync()) {
print('[DEBUG] SPM Packages directory exists: ${spmPackagesDir.path}');
try {
final packages = spmPackagesDir.listSync(recursive: true);
for (final package in packages) {
if (package is Directory) {
print('[DEBUG] SPM Package directory: ${package.path}');
}
}
} catch (e) {
print('[DEBUG] Error listing SPM packages: $e');
}
} else {
print('[DEBUG] SPM Packages directory does not exist yet');
}
}
// Determine the arguments for the flutter build command
final flutterArgs = ['build', platform];
if (platform == 'ios') {
flutterArgs.add('--no-codesign');
}
if (debugMode) {
print('[DEBUG] Flutter command args: ${flutterArgs.join(' ')}');
}
if (platform == 'macos') {
// TODO: temp solution to macos to remove firebase_messaging from build
// See: https://github.com/firebase/flutterfire/actions/runs/17042278122/job/48308815666?pr=17634#step:8:787
await _runCommand('flutter', ['pub', 'remove', 'firebase_messaging']);
await _runCommand('flutter', ['clean']);
}
// Run the flutter build command
final flutterResult = await _runCommand('flutter', flutterArgs);
// Check what SPM packages were resolved after build
if (debugMode && flutterResult.exitCode != 0) {
print('[DEBUG] Build failed, checking SPM packages directory for clues...');
final spmPackagesDir = Directory('$platform/Flutter/ephemeral/Packages');
if (spmPackagesDir.existsSync()) {
print(
'[DEBUG] SPM Packages directory after failed build: ${spmPackagesDir.path}',
);
try {
final packages = spmPackagesDir.listSync(recursive: true);
for (final package in packages) {
if (package is Directory &&
package.path.contains('firebase_messaging')) {
print('[DEBUG] Found firebase_messaging package: ${package.path}');
// Check if it's trying to access iOS resources from macOS build
final resourcesDir = Directory(
'${package.path}/Sources/firebase_messaging/Resources',
);
if (resourcesDir.existsSync()) {
print('[DEBUG] Resources directory exists: ${resourcesDir.path}');
final resources = resourcesDir.listSync();
for (final resource in resources) {
print('[DEBUG] Resource: ${resource.path}');
}
} else {
print(
'[DEBUG] Resources directory does not exist: ${resourcesDir.path}',
);
}
}
}
} catch (e) {
print('[DEBUG] Error listing SPM packages after build: $e');
}
}
}
if (debugMode) {
print('[DEBUG] Flutter build exit code: ${flutterResult.exitCode}');
}
// Check if the flutter build command was successful
if (flutterResult.exitCode != 0) {
print('Flutter build failed with exit code ${flutterResult.exitCode}.');
if (debugMode) {
print('[DEBUG] Flutter build failed, exiting');
}
exit(1);
}
// Check the output for the specific string
if (flutterResult.stdout.contains('Running pod install')) {
print('Failed. Pods are being installed when they should not be.');
if (debugMode) {
print(
'[DEBUG] Found "Running pod install" in output, this should not happen with SPM',
);
}
exit(1);
} else {
print(
'Successfully built $plugins for $platformName project using Swift Package Manager.',
);
if (debugMode) {
print('[DEBUG] Build successful, changing to parent directory');
}
Directory.current = Directory('..');
print('See contents of pubspec.yaml:');
await _runCommand('cat', ['pubspec.yaml']);
}
if (debugMode) {
print('[DEBUG] Restoring original directory: ${initialDirectory.path}');
}
Directory.current = initialDirectory;
if (debugMode) {
print('[DEBUG] buildSwiftExampleApp: Completed build for $platformName');
}
}
Future<ProcessResult> _runCommand(
String command,
List<String> arguments,
) async {
if (debugMode) {
print(
'[DEBUG] _runCommand: Executing command: $command ${arguments.join(' ')}',
);
print('[DEBUG] Current working directory: ${Directory.current.path}');
}
final process = await Process.start(command, arguments);
final stdoutBuffer = StringBuffer();
final stderrBuffer = StringBuffer();
// Listen to stdout
process.stdout.transform(utf8.decoder).listen((data) {
stdoutBuffer.write(data);
});
// Listen to stderr
process.stderr.transform(utf8.decoder).listen((data) {
stderrBuffer.write(data);
print('stderr output: $data');
});
// Wait for the process to complete
final exitCode = await process.exitCode;
if (exitCode != 0) {
print('Command failed: $command ${arguments.join(' ')}');
if (debugMode) {
print('[DEBUG] Command failed with exit code $exitCode');
}
}
return ProcessResult(
process.pid,
exitCode,
stdoutBuffer.toString(),
stderrBuffer.toString(),
);
}
================================================
FILE: .github/workflows/scripts/validate-formatting.sh
================================================
#!/bin/bash
if [[ $(git ls-files --modified) ]]; then
echo ""
echo ""
echo "These files are not formatted correctly:"
for f in $(git ls-files --modified); do
echo ""
echo ""
echo "-----------------------------------------------------------------"
echo "$f"
echo "-----------------------------------------------------------------"
echo ""
git --no-pager diff --unified=0 --minimal $f
echo ""
echo "-----------------------------------------------------------------"
echo ""
echo ""
done
if [[ $GITHUB_WORKFLOW ]]; then
git checkout . > /dev/null 2>&1
fi
echo ""
echo "❌ Some files are incorrectly formatted, see above output."
echo ""
echo "To fix these locally, run: 'melos run format'."
exit 1
else
echo ""
echo "✅ All files are formatted correctly."
fi
================================================
FILE: .github/workflows/web.yaml
================================================
name: e2e-web
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
paths-ignore:
- 'docs/**'
- 'website/**'
- '**/example/**'
- '!**/example/integration_test/**'
- '**/flutterfire_ui/**'
- '**.md'
push:
branches:
- main
paths-ignore:
- 'docs/**'
- 'website/**'
- '**/example/**'
- '!**/example/integration_test/**'
- '**/flutterfire_ui/**'
- '**.md'
jobs:
web:
runs-on: macos-latest
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
working_directory:
['tests', 'packages/cloud_firestore/cloud_firestore/example']
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
name: Install Node.js 20
with:
node-version: '20'
- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
with:
distribution: 'temurin'
java-version: '21'
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
run-bootstrap: false
melos-version: '5.3.0'
- name: 'Bootstrap package'
run: melos bootstrap --scope tests && melos bootstrap --scope "cloud_firestore*"
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
- name: Start Firebase Emulator
run: sudo chown -R 501:20 "/Users/runner/.npm" && cd ./.github/workflows/scripts && ./start-firebase-emulator.sh
- name: 'E2E Tests'
working-directory: ${{ matrix.working_directory }}
# Web devices are not supported for the `flutter test` command yet. As a
# workaround we can use the `flutter drive` command. Tracking issue:
# https://github.com/flutter/flutter/issues/66264
run: |
chromedriver --port=4444 --trace-buffer-size=100000 &
flutter drive --target=./integration_test/e2e_test.dart --driver=./test_driver/integration_test.dart -d chrome --dart-define=CI=true | tee output.log
# We have to check the output for failed tests matching the string "[E]"
output=$(<output.log)
if [[ "$output" =~ \[E\] ]]; then
# You will see "All tests passed." in the logs even when tests failed.
echo "All tests did not pass. Please check the logs for more information."
exit 1
fi
shell: bash
- name: Save Firestore Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
continue-on-error: true
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
web-app-check:
runs-on: macos-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
name: Install Node.js 20
with:
node-version: '20'
- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
with:
distribution: 'temurin'
java-version: '21'
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
run-bootstrap: false
melos-version: '5.3.0'
- name: 'Bootstrap package'
run: melos bootstrap --scope tests
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
- name: Start Firebase Emulator
run: sudo chown -R 501:20 "/Users/runner/.npm" && cd ./.github/workflows/scripts && ./start-firebase-emulator.sh
- name: 'E2E Tests'
working-directory: tests
# Web devices are not supported for the `flutter test` command yet. As a
# workaround we can use the `flutter drive` command. Tracking issue:
# https://github.com/flutter/flutter/issues/66264
# Chrome debug service can fail with AppConnectionException. Retry once.
run: |
chromedriver --port=4444 --trace-buffer-size=100000 &
run_tests() {
flutter drive --target=./integration_test/e2e_test.dart --driver=./test_driver/integration_test.dart -d chrome --dart-define=CI=true --dart-define=APP_CHECK_E2E=true | tee output.log
output=$(<output.log)
if [[ "$output" =~ \[E\] ]]; then
echo "All tests did not pass. Please check the logs for more information."
return 1
fi
}
run_tests || {
echo "First attempt failed. Retrying..."
run_tests
}
shell: bash
- name: Save Firestore Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
web-wasm:
runs-on: macos-latest
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
working_directory:
['tests', 'packages/cloud_firestore/cloud_firestore/example']
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
name: Install Node.js 20
with:
node-version: '20'
- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
with:
distribution: 'temurin'
java-version: '21'
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
run-bootstrap: false
melos-version: '5.3.0'
- name: 'Bootstrap package'
run: melos bootstrap --scope tests && melos bootstrap --scope "cloud_firestore*"
- name: 'Install Tools'
run: |
sudo npm i -g firebase-tools
echo "FIREBASE_TOOLS_VERSION=$(npm firebase --version)" >> $GITHUB_ENV
- name: Firebase Emulator Cache
id: firebase-emulator-cache
uses: actions/cache/restore@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
# Must match the save path exactly
path: ~/.cache/firebase/emulators
key: firebase-emulators-v3-${{ env.FIREBASE_TOOLS_VERSION }}
restore-keys: firebase-emulators-v3
- name: Start Firebase Emulator
run: sudo chown -R 501:20 "/Users/runner/.npm" && cd ./.github/workflows/scripts && ./start-firebase-emulator.sh
- name: 'E2E Tests'
working-directory: ${{ matrix.working_directory }}
# Web devices are not supported for the `flutter test` command yet. As a
# workaround we can use the `flutter drive` command. Tracking issue:
# https://github.com/flutter/flutter/issues/66264
run: |
chromedriver --port=4444 --trace-buffer-size=100000 &
mv ./web/wasm_index.html ./web/index.html
flutter drive --target=./integration_test/e2e_test.dart --driver=./test_driver/integration_test.dart -d chrome --wasm --dart-define=CI=true | tee output.log
# We have to check the output for failed tests matching the string "[E]"
output=$(<output.log)
if [[ "$output" =~ \[E\] ]]; then
# You will see "All tests passed." in the logs even when tests failed.
echo "All tests did not pass. Please check the logs for more information."
exit 1
fi
shell: bash
- name: Save Firestore Emulator Cache
# Branches can read main cache but main cannot read branch cache. Avoid LRU eviction with main-only cache.
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@1bd1e32a3bdc45362d1e726936510720a7c30a57
continue-on-error: true
with:
# The firebase emulators are pure javascript and java, OS-independent
enableCrossOsArchive: true
key: ${{ steps.firebase-emulator-cache.outputs.cache-primary-key }}
# Must match the restore path exactly
path: ~/.cache/firebase/emulators
================================================
FILE: .github/workflows/windows.yaml
================================================
name: e2e-windows
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
paths-ignore:
- 'docs/**'
- 'website/**'
- '**/example/**'
- '!**/example/integration_test/**'
- '**/flutterfire_ui/**'
- '**.md'
push:
branches:
- main
paths-ignore:
- 'docs/**'
- 'website/**'
- '**/example/**'
- '!**/example/integration_test/**'
- '**/flutterfire_ui/**'
- '**.md'
jobs:
windows:
runs-on: windows-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
with:
distribution: 'temurin'
java-version: '21'
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
name: Install Node.js 20
with:
node-version: "20"
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
run-bootstrap: false
melos-version: '3.0.0'
- name: "Bootstrap package"
run: melos bootstrap --scope tests && melos bootstrap --scope "cloud_firestore*"
- name: "Install Tools"
run: |
npm install -g firebase-tools
- name: "Build Windows (Release)"
run: cd tests && flutter build windows --release
- name: Start Firebase Emulator and run tests
run: cd ./.github/workflows/scripts && firebase emulators:exec --project flutterfire-e2e-tests "cd ../../../tests && flutter test .\integration_test\e2e_test.dart -d windows --verbose"
# We cannot run the tests but we can still try to build the app because of https://github.com/flutter/flutter/issues/79213
windows-firestore:
runs-on: windows-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
- uses: actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
with:
distribution: 'temurin'
java-version: '21'
- uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
name: Install Node.js 20
with:
node-version: "20"
- uses: subosito/flutter-action@f2c4f6686ca8e8d6e6d0f28410eeef506ed66aff
with:
channel: 'stable'
cache: true
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:"
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa
with:
run-bootstrap: false
melos-version: '3.0.0'
- name: "Bootstrap package"
run: melos bootstrap --scope tests && melos bootstrap --scope "cloud_firestore*"
- name: "Install Tools"
run: |
npm install -g firebase-tools
- name: Start Firebase Emulator and run tests
run: cd ./.github/workflows/scripts && firebase emulators:exec --project flutterfire-e2e-tests "cd ../../../packages/cloud_firestore/cloud_firestore/example && flutter build windows"
================================================
FILE: .gitignore
================================================
.DS_Store
.atom/
.idea/
.vscode/*
.melos_tool/*
!.vscode/tasks.json
!.vscode/settings.json
.packages
.pub/
.dart_tool/
pubspec.lock
pubspec_overrides.yaml
flutter_export_environment.sh
examples/all_plugins/pubspec.yaml
Package.resolved
Podfile.lock
Pods/
.symlinks/
**/Flutter/ephemeral/
**/Flutter/Flutter.podspec
**/Flutter/App.framework/
**/Flutter/Flutter.framework/
**/Flutter/Generated.xcconfig
**/Flutter/flutter_assets/
ServiceDefinitions.json
xcuserdata/
local.properties
keystore.properties
.gradle/
gradlew
gradlew.bat
gradle-wrapper.jar
*.iml
GeneratedPluginRegistrant.h
GeneratedPluginRegistrant.m
GeneratedPluginRegistrant.java
GeneratedPluginRegistrant.swift
generated_plugin_registrant.dart
generated_plugin_registrant.h
generated_plugin_registrant.cc
generated_plugins.cmake
build/
.flutter-plugins
.flutter-plugins-dependencies
.cxx/
.project
.classpath
.settings
.last_build_id
# Docs
# Dependencies
node_modules
# Production
website/build
# Generated files
.docusaurus
.cache-loader
# Misc
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
firebase-debug.log
firestore-debug.log
database-debug.log
ui-debug.log
**/.build/**/*
.github/workflows/spam-removal/package-lock.json
================================================
FILE: .opensource/project.json
================================================
{
"name": "FlutterFire",
"platforms": [
"Android",
"iOS"
],
"content": "README.md",
"pages": {
"packages/cloud_firestore/cloud_firestore/README.md": "Cloud Firestore",
"packages/cloud_functions/cloud_functions/README.md": "Cloud Functions",
"packages/firebase_analytics/firebase_analytics/README.md": "Analytics",
"packages/firebase_auth/firebase_auth/README.md": "Authentication",
"packages/firebase_core/firebase_core/README.md": "Core",
"packages/firebase_crashlytics/firebase_crashlytics/README.md": "Crashlytics",
"packages/firebase_database/firebase_database/README.md": "Realtime Database",
"packages/firebase_dynamic_links/README.md": "Dynamic Links",
"packages/firebase_messaging/firebase_messaging/README.md": "Cloud Messaging",
"packages/firebase_ml_vision/README.md": "ML Kit: Vision",
"packages/firebase_performance/README.md": "Performance Monitoring",
"packages/firebase_remote_config/firebase_remote_config/README.md": "Remote Config",
"packages/firebase_storage/firebase_storage/README.md": "Cloud Storage"
}
}
================================================
FILE: .swiftformat
================================================
--indent 2
--maxwidth 100
--wrapparameters afterfirst
--disable sortedImports,unusedArguments,wrapMultilineStatementBraces
--exclude Pods,**/MainFlutterWindow.swift,**/AppDelegate.swift,**/.symlinks/**
--swiftversion 5.7
================================================
FILE: .vscode/settings.json
================================================
{
"dart.runPubGetOnPubspecChanges": "always",
}
================================================
FILE: .vscode/tasks.json
================================================
{
"version": "2.0.0",
"tasks": [
{
"label": "melos:bootstrap",
"type": "shell",
"command": "melos bootstrap",
"detail": "Bootstrap this current workspace and link all packages together",
"problemMatcher": []
},
{
"label": "melos:clean",
"type": "shell",
"command": "melos clean",
"detail": "Clean the current workspace and all build & temporary pub files",
"problemMatcher": []
},
{
"label": "melos:run",
"type": "shell",
"command": "melos run",
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "shared",
"showReuseMessage": false,
"clear": true
},
"detail": "Select a script defined in melos.yaml to run",
"problemMatcher": []
},
{
"label": "format",
"type": "shell",
"command": "melos run format",
"detail": "Format all .dart, .h, .m & .java files in the project",
"problemMatcher": []
},
{
"label": "chromedriver",
"isBackground": true,
"type": "shell",
"command": "chromedriver --port=4444",
"detail": "Start a background chromedriver instance port on 4444",
"problemMatcher": []
},
{
"label": "firestore -> analyze",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*firestore*\" --fail-fast -- pub global run tuneup check",
"detail": "Run Dart Analyzer on all Firestore packages",
"problemMatcher": []
},
{
"label": "firestore -> test",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*firestore*\" --fail-fast --ignore=\"*web*\" --ignore=\"*example*\" -- flutter test",
"detail": "Run `flutter test` on all Firestore packages (excluding web & example)",
"problemMatcher": []
},
{
"label": "firestore -> test:e2e",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*cloud_firestore_example*\" --fail-fast --dir-exists=integration_test -- flutter drive --target=./integration_test/MELOS_PARENT_PACKAGE_NAME_e2e_test.dart",
"detail": "Run end-to-end testing for Android & iOS via `flutter drive` on the Firestore example application",
"problemMatcher": []
},
{
"label": "firestore -> test:e2e:web",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*cloud_firestore_example*\" --dir-exists=web --fail-fast --dir-exists=test_driver -- flutter drive --release -d chrome --verbose-system-logs --browser-name=chrome --target=./integration_test/MELOS_PARENT_PACKAGE_NAME_e2e_test.dart --driver=./test_driver/integration_test.dart",
"detail": "Run end-to-end testing for Web via `flutter drive` on the Firestore example application",
"problemMatcher": []
},
{
"label": "firestore -> test:web",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*cloud_firestore_web*\" --fail-fast -- flutter test --platform=chrome",
"detail": "Run `flutter test` on the Firestore web package (with '--platform=chrome')",
"problemMatcher": []
},
{
"label": "firestore -> build:example:ios",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*cloud_firestore_example*\" --fail-fast -- flutter build ios --no-codesign",
"detail": "Build the Firestore iOS example application",
"problemMatcher": []
},
{
"label": "firestore -> build:example:android",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*cloud_firestore_example*\" --fail-fast -- flutter build apk",
"detail": "Build the Firestore Android example application",
"problemMatcher": []
},
{
"label": "firestore -> build:example:macos",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*cloud_firestore_example*\" --fail-fast -- flutter build macos",
"detail": "Build the Firestore MacOS example application",
"problemMatcher": []
},
{
"label": "firestore -> build:example:web",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*cloud_firestore_example*\" --fail-fast -- flutter build web",
"detail": "Build the Firestore Web example application",
"problemMatcher": []
},
{
"label": "auth -> analyze",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*auth*\" --fail-fast -- pub global run tuneup check",
"detail": "Run Dart Analyzer on all Auth packages",
"problemMatcher": []
},
{
"label": "auth -> test",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*auth*\" --fail-fast --ignore=\"*web*\" --ignore=\"*example*\" -- flutter test",
"detail": "Run `flutter test` on all Auth packages (excluding web & example)",
"problemMatcher": []
},
{
"label": "auth -> test:web",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*firebase_auth_web*\" --fail-fast -- flutter test --platform=chrome",
"detail": "Run `flutter test` on the Auth web package (with '--platform=chrome')",
"problemMatcher": []
},
{
"label": "auth -> build:example:ios",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*firebase_auth_example*\" --fail-fast -- flutter build ios --no-codesign",
"detail": "Build the Auth iOS example application",
"problemMatcher": []
},
{
"label": "auth -> build:example:android",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*firebase_auth_example*\" --fail-fast -- flutter build apk",
"detail": "Build the Auth Android example application",
"problemMatcher": []
},
{
"label": "auth -> build:example:macos",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*firebase_auth_example*\" --fail-fast -- flutter build macos",
"detail": "Build the Auth MacOS example application",
"problemMatcher": []
},
{
"label": "auth -> build:example:web",
"type": "shell",
"command": "melos exec -c 1 --scope=\"*firebase_auth_example*\" --fail-fast -- flutter build web",
"detail": "Build the Auth Web example application",
"problemMatcher": []
}
]
}
================================================
FILE: AUTHORS
================================================
# Below is a list of people and organizations that have contributed
# to the Flutter project. Names should be added to the list like so:
#
# Name/Organization <email address>
Google Inc.
German Saprykin <saprykin.h@gmail.com>
Benjamin Sauer <sauer.benjamin@gmail.com>
larsenthomasj@gmail.com
Ali Bitek <alibitek@protonmail.ch>
Pol Batlló <pol.batllo@gmail.com>
Anatoly Pulyaevskiy
Hayden Flinner <haydenflinner@gmail.com>
Stefano Rodriguez <hlsroddy@gmail.com>
Salvatore Giordano <salvatoregiordanoo@gmail.com>
Brian Armstrong <brian@flutter.institute>
Paul DeMarco <paulmdemarco@gmail.com>
Fabricio Nogueira <feufeu@gmail.com>
Simon Lightfoot <simon@devangels.london>
Ashton Thomas <ashton@acrinta.com>
Thomas Danner <thmsdnnr@gmail.com>
Diego Velásquez <diego.velasquez.lopez@gmail.com>
Hajime Nakamura <nkmrhj@gmail.com>
Tuyển Vũ Xuân <netsoft1985@gmail.com>
Miguel Ruivo <miguel@miguelruivo.com>
Sarthak Verma <sarthak@artiosys.com>
Mike Diarmid <mike@invertase.io>
Invertase <oss@invertase.io>
Elliot Hesp <elliot@invertase.io>
Vince Varga <vince.varga@smaho.com>
Aawaz Gyawali <awazgyawali@gmail.com>
EUI Limited <ian.evans3@admiralgroup.co.uk>
Katarina Sheremet <katarina@sheremet.ch>
Thomas Stockx <thomas@stockxit.com>
Sarbagya Dhaubanjar <sarbagyastha@gmail.com>
Ozkan Eksi <ozeksi@gmail.com>
Rishab Nayak <rishab@bu.edu>
ko2ic <ko2ic.dev@gmail.com>
Jonathan Younger <jonathan@daikini.com>
Jose Sanchez <josesm82@gmail.com>
Debkanchan Samadder <debu.samadder@gmail.com>
Audrius Karosevicius <audrius.karosevicius@gmail.com>
Lukasz Piliszczuk <lukasz@intheloup.io>
SoundReply Solutions GmbH <ch@soundreply.com>
Michel Feinstein <michel@feinstein.com.br>
Tobias Löfstrand <tobias@leafnode.se>
Stephen Beitzel <sbeitzel@pobox.com>
Mark Veenstra <markdark81@gmail.com>
Ben Hagen <ben@ottomatic.io>
Yongliang Zhan <yzhan94@gmail.com>
Aneesh Rao <sidrao2006@gmail.com>
Marko Devcic <madevcic@gmail.com>
Akora Ing. DKB <akoraingdkb@gmail.com>
Samay Bhattacharyya <contact@samay.dev>
Kevin McGill <kevin@mcgilldevtech.com>
Berat Göktuğ Özdemir <bgoktugozdemir@gmail.com>
KikiManjaro <kylian.meulin@gmail.com>
Alessandro Rossi <alexodus71@gmail.com>
Timur Dyushaliev <timurdyushaliev@gmail.com>
Maaku Saito <maaku0810@gmail.com>
Markus Köhne <markus@koehne.dev>
Max Steffen <git@max-steffen.dev>
Mohd Faheem Ansari <codefaheem@gmail.com>
Om Phatak <everythingoutdated@gmail.com>
Horváth István <horvatska01@gmail.com>
Liu Zhisong <liuzs0666@gmail.com>
Ievgenii Kovtun <jeka.ns@gmail.com>
Dinu-Stefan Rusu <rusudinustefan@gmail.com>
================================================
FILE: CHANGELOG.md
================================================
# Change Log
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## 2026-03-02 - [BoM 4.10.0](https://github.com/firebase/flutterfire/blob/main/VERSIONS.md#flutter-bom-4100-2026-03-02)
### Changes
---
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- [`_flutterfire_internals` - `v1.3.67`](#_flutterfire_internals---v1367)
- [`cloud_firestore` - `v6.1.3`](#cloud_firestore---v613)
- [`firebase_ai` - `v3.9.0`](#firebase_ai---v390)
- [`firebase_analytics` - `v12.1.3`](#firebase_analytics---v1213)
- [`firebase_auth` - `v6.2.0`](#firebase_auth---v620)
- [`firebase_core` - `v4.5.0`](#firebase_core---v450)
- [`firebase_core_web` - `v3.5.0`](#firebase_core_web---v350)
- [`firebase_data_connect` - `v0.2.3`](#firebase_data_connect---v023)
- [`firebase_remote_config` - `v6.2.0`](#firebase_remote_config---v620)
- [`firebase_remote_config_platform_interface` - `v2.1.0`](#firebase_remote_config_platform_interface---v210)
- [`firebase_storage` - `v13.1.0`](#firebase_storage---v1310)
- [`firebase_in_app_messaging_platform_interface` - `v0.2.5+18`](#firebase_in_app_messaging_platform_interface---v02518)
- [`firebase_crashlytics_platform_interface` - `v3.8.18`](#firebase_crashlytics_platform_interface---v3818)
- [`firebase_remote_config_web` - `v1.10.4`](#firebase_remote_config_web---v1104)
- [`firebase_database_platform_interface` - `v0.3.0+3`](#firebase_database_platform_interface---v0303)
- [`cloud_firestore_web` - `v5.1.3`](#cloud_firestore_web---v513)
- [`firebase_app_installations_platform_interface` - `v0.1.4+66`](#firebase_app_installations_platform_interface---v01466)
- [`firebase_messaging_web` - `v4.1.3`](#firebase_messaging_web---v413)
- [`firebase_app_installations_web` - `v0.1.7+3`](#firebase_app_installations_web---v0173)
- [`firebase_auth_platform_interface` - `v8.1.7`](#firebase_auth_platform_interface---v817)
- [`firebase_messaging_platform_interface` - `v4.7.7`](#firebase_messaging_platform_interface---v477)
- [`cloud_firestore_platform_interface` - `v7.0.7`](#cloud_firestore_platform_interface---v707)
- [`firebase_analytics_web` - `v0.6.1+3`](#firebase_analytics_web---v0613)
- [`firebase_app_check_platform_interface` - `v0.2.1+5`](#firebase_app_check_platform_interface---v0215)
- [`firebase_app_check_web` - `v0.2.2+3`](#firebase_app_check_web---v0223)
- [`firebase_analytics_platform_interface` - `v5.0.7`](#firebase_analytics_platform_interface---v507)
- [`firebase_storage_web` - `v3.11.3`](#firebase_storage_web---v3113)
- [`firebase_performance_platform_interface` - `v0.1.6+5`](#firebase_performance_platform_interface---v0165)
- [`firebase_storage_platform_interface` - `v5.2.18`](#firebase_storage_platform_interface---v5218)
- [`firebase_performance_web` - `v0.1.8+3`](#firebase_performance_web---v0183)
- [`firebase_in_app_messaging` - `v0.9.0+7`](#firebase_in_app_messaging---v0907)
- [`firebase_crashlytics` - `v5.0.8`](#firebase_crashlytics---v508)
- [`firebase_database_web` - `v0.2.7+4`](#firebase_database_web---v0274)
- [`firebase_database` - `v12.1.4`](#firebase_database---v1214)
- [`firebase_app_installations` - `v0.4.0+7`](#firebase_app_installations---v0407)
- [`firebase_messaging` - `v16.1.2`](#firebase_messaging---v1612)
- [`firebase_auth_web` - `v6.1.3`](#firebase_auth_web---v613)
- [`firebase_app_check` - `v0.4.1+5`](#firebase_app_check---v0415)
- [`firebase_performance` - `v0.11.1+5`](#firebase_performance---v01115)
- [`firebase_ml_model_downloader` - `v0.4.0+7`](#firebase_ml_model_downloader---v0407)
- [`firebase_ml_model_downloader_platform_interface` - `v0.1.5+18`](#firebase_ml_model_downloader_platform_interface---v01518)
- [`cloud_functions_web` - `v5.1.3`](#cloud_functions_web---v513)
- [`cloud_functions` - `v6.0.7`](#cloud_functions---v607)
- [`cloud_functions_platform_interface` - `v5.8.10`](#cloud_functions_platform_interface---v5810)
Packages with dependency updates only:
> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
- `firebase_in_app_messaging_platform_interface` - `v0.2.5+18`
- `firebase_crashlytics_platform_interface` - `v3.8.18`
- `firebase_remote_config_web` - `v1.10.4`
- `firebase_database_platform_interface` - `v0.3.0+3`
- `cloud_firestore_web` - `v5.1.3`
- `firebase_app_installations_platform_interface` - `v0.1.4+66`
- `firebase_messaging_web` - `v4.1.3`
- `firebase_app_installations_web` - `v0.1.7+3`
- `firebase_auth_platform_interface` - `v8.1.7`
- `firebase_messaging_platform_interface` - `v4.7.7`
- `cloud_firestore_platform_interface` - `v7.0.7`
- `firebase_analytics_web` - `v0.6.1+3`
- `firebase_app_check_platform_interface` - `v0.2.1+5`
- `firebase_app_check_web` - `v0.2.2+3`
- `firebase_analytics_platform_interface` - `v5.0.7`
- `firebase_storage_web` - `v3.11.3`
- `firebase_performance_platform_interface` - `v0.1.6+5`
- `firebase_storage_platform_interface` - `v5.2.18`
- `firebase_performance_web` - `v0.1.8+3`
- `firebase_in_app_messaging` - `v0.9.0+7`
- `firebase_crashlytics` - `v5.0.8`
- `firebase_database_web` - `v0.2.7+4`
- `firebase_database` - `v12.1.4`
- `firebase_app_installations` - `v0.4.0+7`
- `firebase_messaging` - `v16.1.2`
- `firebase_auth_web` - `v6.1.3`
- `firebase_app_check` - `v0.4.1+5`
- `firebase_performance` - `v0.11.1+5`
- `firebase_ml_model_downloader` - `v0.4.0+7`
- `firebase_ml_model_downloader_platform_interface` - `v0.1.5+18`
- `cloud_functions_web` - `v5.1.3`
- `cloud_functions` - `v6.0.7`
- `cloud_functions_platform_interface` - `v5.8.10`
---
#### `_flutterfire_internals` - `v1.3.67`
- **FIX**(database): improve error handling in `platformExceptionToFirebaseException` ([#18007](https://github.com/firebase/flutterfire/issues/18007)). ([25f92046](https://github.com/firebase/flutterfire/commit/25f92046985b7b7105bb88f31d35d0d793744b23))
#### `cloud_firestore` - `v6.1.3`
- **FIX**: resolve lint issues ([#18017](https://github.com/firebase/flutterfire/issues/18017)). ([e8e85397](https://github.com/firebase/flutterfire/commit/e8e85397ccdcab6c8b84348884b4673f86b79d1c))
#### `firebase_ai` - `v3.9.0`
- **FIX**: resolve lint issues ([#18017](https://github.com/firebase/flutterfire/issues/18017)). ([e8e85397](https://github.com/firebase/flutterfire/commit/e8e85397ccdcab6c8b84348884b4673f86b79d1c))
- **FEAT**(firebaseai): update Live API sample to add video support. ([#18018](https://github.com/firebase/flutterfire/issues/18018)). ([f91df750](https://github.com/firebase/flutterfire/commit/f91df7503bc4506c66cbebcfa562d65de1ae0e5b))
#### `firebase_analytics` - `v12.1.3`
- **FIX**(analytics,iOS): Update hashedPhoneNumber handling to use hex string conversion ([#17807](https://github.com/firebase/flutterfire/issues/17807)). ([407c2490](https://github.com/firebase/flutterfire/commit/407c2490602484499d1ab5b2ce6860af00a218c8))
#### `firebase_auth` - `v6.2.0`
- **FEAT**(remote-config,windows): add support for windows ([#18006](https://github.com/firebase/flutterfire/issues/18006)). ([a6ec167f](https://github.com/firebase/flutterfire/commit/a6ec167f4ece9c9b455a916366781f482cc380b3))
#### `firebase_core` - `v4.5.0`
- **FEAT**(core,windows): update C++ Desktop SDK to 13.4.0. This may require updating your Visual Studio version and C++ build tools. ([#18006](https://github.com/firebase/flutterfire/issues/18006)). ([a6ec167f](https://github.com/firebase/flutterfire/commit/a6ec167f4ece9c9b455a916366781f482cc380b3))
- **FIX**: resolve lint issues ([#18017](https://github.com/firebase/flutterfire/issues/18017)). ([e8e85397](https://github.com/firebase/flutterfire/commit/e8e85397ccdcab6c8b84348884b4673f86b79d1c))
- **FEAT**: bump Firebase iOS SDK to 12.9.0 ([#18034](https://github.com/firebase/flutterfire/issues/18034)). ([c45894e2](https://github.com/firebase/flutterfire/commit/c45894e23895f9add8c152d13324920babe9b708))
- **FEAT**: bump Firebase android SDK to 34.9.0 ([#18016](https://github.com/firebase/flutterfire/issues/18016)). ([b218dbff](https://github.com/firebase/flutterfire/commit/b218dbffd72d0bf666ff94f79a3de1e24d038df0))
- **FEAT**(remote-config,windows): add support for windows ([#18006](https://github.com/firebase/flutterfire/issues/18006)). ([a6ec167f](https://github.com/firebase/flutterfire/commit/a6ec167f4ece9c9b455a916366781f482cc380b3))
#### `firebase_core_web` - `v3.5.0`
- **FEAT**: bump Firebase JS SDK to 12.9.0 ([#18043](https://github.com/firebase/flutterfire/issues/18043)). ([1b29c4d4](https://github.com/firebase/flutterfire/commit/1b29c4d432597d12e08990825647f0ac9467a8f3))
#### `firebase_data_connect` - `v0.2.3`
- **REFACTOR**(fdc): Support for entityId path extensions and hardening ([#17988](https://github.com/firebase/flutterfire/issues/17988)). ([fed585f5](https://github.com/firebase/flutterfire/commit/fed585f5a9b65d683cefdc7fa97ed2692e4ec817))
- **FIX**: resolve lint issues ([#18017](https://github.com/firebase/flutterfire/issues/18017)). ([e8e85397](https://github.com/firebase/flutterfire/commit/e8e85397ccdcab6c8b84348884b4673f86b79d1c))
- **FEAT**(fdc): Data Connect client sdk caching ([#17890](https://github.com/firebase/flutterfire/issues/17890)). ([02a019bc](https://github.com/firebase/flutterfire/commit/02a019bc25bb4a49d62c1079ed15e0c3aec8a5ec))
#### `firebase_remote_config` - `v6.2.0`
- **FIX**(remote_config): correct `lastFetchTime` calculation ([#18004](https://github.com/firebase/flutterfire/issues/18004)). ([92f03e08](https://github.com/firebase/flutterfire/commit/92f03e08e9b5362c180da16d60d869568daf2c55))
- **FEAT**(remote-config,windows): add support for windows ([#18006](https://github.com/firebase/flutterfire/issues/18006)). ([a6ec167f](https://github.com/firebase/flutterfire/commit/a6ec167f4ece9c9b455a916366781f482cc380b3))
#### `firebase_remote_config_platform_interface` - `v2.1.0`
- **FEAT**(remote-config,windows): add support for windows ([#18006](https://github.com/firebase/flutterfire/issues/18006)). ([a6ec167f](https://github.com/firebase/flutterfire/commit/a6ec167f4ece9c9b455a916366781f482cc380b3))
#### `firebase_storage` - `v13.1.0`
- **FEAT**(storage,windows): add emulator support ([#18030](https://github.com/firebase/flutterfire/issues/18030)). ([461dfa43](https://github.com/firebase/flutterfire/commit/461dfa43764469b518984052cb7bbc0a2a2675eb))
## 2026-02-09 - [BoM 4.9.0](https://github.com/firebase/flutterfire/blob/main/VERSIONS.md#flutter-bom-490-2026-02-09)
### Changes
---
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- [`firebase_ai` - `v3.8.0`](#firebase_ai---v380)
- [`firebase_analytics` - `v12.1.2`](#firebase_analytics---v1212)
- [`firebase_database` - `v12.1.3`](#firebase_database---v1213)
---
#### `firebase_ai` - `v3.8.0`
- **FIX**(firebase_ai): Rename `groundingSupport` to `groundingSupports` ([#17961](https://github.com/firebase/flutterfire/issues/17961)). ([cfb90989](https://github.com/firebase/flutterfire/commit/cfb909896d8ae9edc49b10f1def5b64dcc3dfb35))
- **FEAT**(firebaseai): implicit caching, add metadata ([#17979](https://github.com/firebase/flutterfire/issues/17979)). ([e5fc7587](https://github.com/firebase/flutterfire/commit/e5fc7587e372ba2daa7500d4e9ce30e0537ff889))
#### `firebase_analytics` - `v12.1.2`
- **FIX**(firebase_analytics): update logInAppPurchase documentation to specify iOS support only ([#17968](https://github.com/firebase/flutterfire/issues/17968)). ([b3caa545](https://github.com/firebase/flutterfire/commit/b3caa54592d431a1ac1b7007a154cdf739b0e406))
#### `firebase_database` - `v12.1.3`
- **FIX**(firebase_database): Add modifiers to keepSynced ref in android ([#17978](https://github.com/firebase/flutterfire/issues/17978)). ([8b1e05f6](https://github.com/firebase/flutterfire/commit/8b1e05f69544f22eaac568ea217cdce1299ded47))
## 2026-01-19 - [BoM 4.8.0](https://github.com/firebase/flutterfire/blob/main/VERSIONS.md#flutter-bom-480-2026-01-19)
### Changes
---
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- [`cloud_firestore` - `v6.1.2`](#cloud_firestore---v612)
- [`cloud_functions` - `v6.0.6`](#cloud_functions---v606)
- [`firebase_ai` - `v3.7.0`](#firebase_ai---v370)
- [`firebase_core` - `v4.4.0`](#firebase_core---v440)
- [`firebase_core_web` - `v3.4.0`](#firebase_core_web---v340)
- [`firebase_database` - `v12.1.2`](#firebase_database---v1212)
- [`firebase_messaging` - `v16.1.1`](#firebase_messaging---v1611)
- [`_flutterfire_internals` - `v1.3.66`](#_flutterfire_internals---v1366)
- [`firebase_database_platform_interface` - `v0.3.0+2`](#firebase_database_platform_interface---v0302)
- [`firebase_crashlytics_platform_interface` - `v3.8.17`](#firebase_crashlytics_platform_interface---v3817)
- [`firebase_data_connect` - `v0.2.2+2`](#firebase_data_connect---v0222)
- [`firebase_auth_platform_interface` - `v8.1.6`](#firebase_auth_platform_interface---v816)
- [`firebase_remote_config` - `v6.1.4`](#firebase_remote_config---v614)
- [`firebase_app_installations` - `v0.4.0+6`](#firebase_app_installations---v0406)
- [`firebase_remote_config_platform_interface` - `v2.0.7`](#firebase_remote_config_platform_interface---v207)
- [`firebase_app_check_platform_interface` - `v0.2.1+4`](#firebase_app_check_platform_interface---v0214)
- [`firebase_app_installations_web` - `v0.1.7+2`](#firebase_app_installations_web---v0172)
- [`firebase_crashlytics` - `v5.0.7`](#firebase_crashlytics---v507)
- [`cloud_functions_web` - `v5.1.2`](#cloud_functions_web---v512)
- [`firebase_in_app_messaging_platform_interface` - `v0.2.5+17`](#firebase_in_app_messaging_platform_interface---v02517)
- [`firebase_in_app_messaging` - `v0.9.0+6`](#firebase_in_app_messaging---v0906)
- [`firebase_storage_platform_interface` - `v5.2.17`](#firebase_storage_platform_interface---v5217)
- [`firebase_database_web` - `v0.2.7+3`](#firebase_database_web---v0273)
- [`firebase_storage` - `v13.0.6`](#firebase_storage---v1306)
- [`firebase_analytics_platform_interface` - `v5.0.6`](#firebase_analytics_platform_interface---v506)
- [`firebase_performance_platform_interface` - `v0.1.6+4`](#firebase_performance_platform_interface---v0164)
- [`firebase_app_check_web` - `v0.2.2+2`](#firebase_app_check_web---v0222)
- [`firebase_app_installations_platform_interface` - `v0.1.4+65`](#firebase_app_installations_platform_interface---v01465)
- [`firebase_ml_model_downloader` - `v0.4.0+6`](#firebase_ml_model_downloader---v0406)
- [`firebase_app_check` - `v0.4.1+4`](#firebase_app_check---v0414)
- [`firebase_ml_model_downloader_platform_interface` - `v0.1.5+17`](#firebase_ml_model_downloader_platform_interface---v01517)
- [`firebase_analytics` - `v12.1.1`](#firebase_analytics---v1211)
- [`firebase_remote_config_web` - `v1.10.3`](#firebase_remote_config_web---v1103)
- [`firebase_auth` - `v6.1.4`](#firebase_auth---v614)
- [`firebase_auth_web` - `v6.1.2`](#firebase_auth_web---v612)
- [`cloud_functions_platform_interface` - `v5.8.9`](#cloud_functions_platform_interface---v589)
- [`firebase_analytics_web` - `v0.6.1+2`](#firebase_analytics_web---v0612)
- [`firebase_performance` - `v0.11.1+4`](#firebase_performance---v01114)
- [`firebase_messaging_web` - `v4.1.2`](#firebase_messaging_web---v412)
- [`firebase_performance_web` - `v0.1.8+2`](#firebase_performance_web---v0182)
- [`cloud_firestore_platform_interface` - `v7.0.6`](#cloud_firestore_platform_interface---v706)
- [`firebase_storage_web` - `v3.11.2`](#firebase_storage_web---v3112)
- [`cloud_firestore_web` - `v5.1.2`](#cloud_firestore_web---v512)
- [`firebase_messaging_platform_interface` - `v4.7.6`](#firebase_messaging_platform_interface---v476)
Packages with dependency updates only:
> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
- `_flutterfire_internals` - `v1.3.66`
- `firebase_database_platform_interface` - `v0.3.0+2`
- `firebase_crashlytics_platform_interface` - `v3.8.17`
- `firebase_data_connect` - `v0.2.2+2`
- `firebase_auth_platform_interface` - `v8.1.6`
- `firebase_remote_config` - `v6.1.4`
- `firebase_app_installations` - `v0.4.0+6`
- `firebase_remote_config_platform_interface` - `v2.0.7`
- `firebase_app_check_platform_interface` - `v0.2.1+4`
- `firebase_app_installations_web` - `v0.1.7+2`
- `firebase_crashlytics` - `v5.0.7`
- `cloud_functions_web` - `v5.1.2`
- `firebase_in_app_messaging_platform_interface` - `v0.2.5+17`
- `firebase_in_app_messaging` - `v0.9.0+6`
- `firebase_storage_platform_interface` - `v5.2.17`
- `firebase_database_web` - `v0.2.7+3`
- `firebase_storage` - `v13.0.6`
- `firebase_analytics_platform_interface` - `v5.0.6`
- `firebase_performance_platform_interface` - `v0.1.6+4`
- `firebase_app_check_web` - `v0.2.2+2`
- `firebase_app_installations_platform_interface` - `v0.1.4+65`
- `firebase_ml_model_downloader` - `v0.4.0+6`
- `firebase_app_check` - `v0.4.1+4`
- `firebase_ml_model_downloader_platform_interface` - `v0.1.5+17`
- `firebase_analytics` - `v12.1.1`
- `firebase_remote_config_web` - `v1.10.3`
- `firebase_auth` - `v6.1.4`
- `firebase_auth_web` - `v6.1.2`
- `cloud_functions_platform_interface` - `v5.8.9`
- `firebase_analytics_web` - `v0.6.1+2`
- `firebase_performance` - `v0.11.1+4`
- `firebase_messaging_web` - `v4.1.2`
- `firebase_performance_web` - `v0.1.8+2`
- `cloud_firestore_platform_interface` - `v7.0.6`
- `firebase_storage_web` - `v3.11.2`
- `cloud_firestore_web` - `v5.1.2`
- `firebase_messaging_platform_interface` - `v4.7.6`
---
#### `cloud_firestore` - `v6.1.2`
- **FIX**(firestore,android): avoid ConcurrentModificationException by collecting Firestore instances before termination ([#17956](https://github.com/firebase/flutterfire/issues/17956)). ([f94bbd68](https://github.com/firebase/flutterfire/commit/f94bbd688c3c0aaa62ba9117b23902c10297ea84))
#### `cloud_functions` - `v6.0.6`
- **FIX**(cloud_functions): enhance stream response types for better type safety ([#17938](https://github.com/firebase/flutterfire/issues/17938)). ([b89e5890](https://github.com/firebase/flutterfire/commit/b89e5890dfe7ce725022c9e470ee34ff64eb7a99))
#### `firebase_ai` - `v3.7.0`
- **FIX**(firebase_ai): add missing error exports for ServiceApiNotEnabled and QuotaExceeded ([#17928](https://github.com/firebase/flutterfire/issues/17928)). ([fc6dd40f](https://github.com/firebase/flutterfire/commit/fc6dd40f59a1ead2865cfb93ad6e76b07da4097f))
- **FEAT**(firebase_ai): add LiveServerGoAway message for session termination ([#17843](https://github.com/firebase/flutterfire/issues/17843)). ([e9ffbad8](https://github.com/firebase/flutterfire/commit/e9ffbad814f57b81c61c289902270fabaa6eb290))
- **FEAT**(firebase_ai): add thinking level to ThinkingConfig ([#17937](https://github.com/firebase/flutterfire/issues/17937)). ([e4a06521](https://github.com/firebase/flutterfire/commit/e4a065217e4acd0a356afc51e698b12c1fe2609b))
#### `firebase_core` - `v4.4.0`
- **FEAT**: bump Firebase iOS SDK to 12.8.0 ([#17947](https://github.com/firebase/flutterfire/issues/17947)). ([4eb249ec](https://github.com/firebase/flutterfire/commit/4eb249ec5d870a960d3834e40fd0f3c3b871430c))
- **FEAT**: bump Firebase android SDK to 34.7.0 ([#17948](https://github.com/firebase/flutterfire/issues/17948)). ([6eef0511](https://github.com/firebase/flutterfire/commit/6eef051143ecff2351d6f893e797badc6d202a26))
#### `firebase_core_web` - `v3.4.0`
- **FIX**(firebase_core,web): return empty list from apps getter in WASM mode ([#17919](https://github.com/firebase/flutterfire/issues/17919)). ([0eea9f81](https://github.com/firebase/flutterfire/commit/0eea9f814e7f8bace50e8c1e5973c231cf9a4e3a))
- **FEAT**: bump Firebase JS SDK to 12.7.0 ([#17940](https://github.com/firebase/flutterfire/issues/17940)). ([198aef8d](https://github.com/firebase/flutterfire/commit/198aef8db6c96a08f57d750f1fa756da5e4a68a5))
#### `firebase_database` - `v12.1.2`
- **FIX**(database,iOS): ensure transaction handler calls are executed on the main thread ([#17953](https://github.com/firebase/flutterfire/issues/17953)). ([5f8c8e87](https://github.com/firebase/flutterfire/commit/5f8c8e874fcf5689a01830a5569fdad234637c1e))
#### `firebase_messaging` - `v16.1.1`
- **FIX**(messaging,iOS): scope iOS 18 duplicate notification workaround to iOS 18.0 only ([#17932](https://github.com/firebase/flutterfire/issues/17932)). ([c78f56ea](https://github.com/firebase/flutterfire/commit/c78f56ea0fd0d5ba0b565a11cbf9acce73f93401))
## 2025-12-15 - [BoM 4.7.0](https://github.com/firebase/flutterfire/blob/main/VERSIONS.md#flutter-bom-470-2025-12-15)
### Changes
---
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- [`cloud_functions` - `v6.0.5`](#cloud_functions---v605)
- [`firebase_analytics` - `v12.1.0`](#firebase_analytics---v1210)
- [`firebase_app_check_web` - `v0.2.2+1`](#firebase_app_check_web---v0221)
- [`firebase_core` - `v4.3.0`](#firebase_core---v430)
- [`firebase_core_web` - `v3.3.1`](#firebase_core_web---v331)
- [`firebase_database` - `v12.1.1`](#firebase_database---v1211)
- [`firebase_database_web` - `v0.2.7+2`](#firebase_database_web---v0272)
- [`firebase_messaging` - `v16.1.0`](#firebase_messaging---v1610)
- [`firebase_app_check` - `v0.4.1+3`](#firebase_app_check---v0413)
- [`firebase_data_connect` - `v0.2.2+1`](#firebase_data_connect---v0221)
- [`firebase_ai` - `v3.6.1`](#firebase_ai---v361)
- [`firebase_auth` - `v6.1.3`](#firebase_auth---v613)
- [`firebase_crashlytics` - `v5.0.6`](#firebase_crashlytics---v506)
- [`_flutterfire_internals` - `v1.3.65`](#_flutterfire_internals---v1365)
- [`firebase_remote_config_platform_interface` - `v2.0.6`](#firebase_remote_config_platform_interface---v206)
- [`firebase_auth_web` - `v6.1.1`](#firebase_auth_web---v611)
- [`firebase_remote_config` - `v6.1.3`](#firebase_remote_config---v613)
- [`firebase_auth_platform_interface` - `v8.1.5`](#firebase_auth_platform_interface---v815)
- [`cloud_firestore` - `v6.1.1`](#cloud_firestore---v611)
- [`firebase_in_app_messaging_platform_interface` - `v0.2.5+16`](#firebase_in_app_messaging_platform_interface---v02516)
- [`firebase_app_installations` - `v0.4.0+5`](#firebase_app_installations---v0405)
- [`firebase_in_app_messaging` - `v0.9.0+5`](#firebase_in_app_messaging---v0905)
- [`cloud_firestore_platform_interface` - `v7.0.5`](#cloud_firestore_platform_interface---v705)
- [`firebase_crashlytics_platform_interface` - `v3.8.16`](#firebase_crashlytics_platform_interface---v3816)
- [`firebase_app_installations_web` - `v0.1.7+1`](#firebase_app_installations_web---v0171)
- [`cloud_firestore_web` - `v5.1.1`](#cloud_firestore_web---v511)
- [`firebase_ml_model_downloader` - `v0.4.0+5`](#firebase_ml_model_downloader---v0405)
- [`firebase_analytics_platform_interface` - `v5.0.5`](#firebase_analytics_platform_interface---v505)
- [`firebase_analytics_web` - `v0.6.1+1`](#firebase_analytics_web---v0611)
- [`firebase_app_check_platform_interface` - `v0.2.1+3`](#firebase_app_check_platform_interface---v0213)
- [`firebase_performance` - `v0.11.1+3`](#firebase_performance---v01113)
- [`firebase_remote_config_web` - `v1.10.2`](#firebase_remote_config_web---v1102)
- [`firebase_storage` - `v13.0.5`](#firebase_storage---v1305)
- [`cloud_functions_web` - `v5.1.1`](#cloud_functions_web---v511)
- [`firebase_messaging_web` - `v4.1.1`](#firebase_messaging_web---v411)
- [`firebase_database_platform_interface` - `v0.3.0+1`](#firebase_database_platform_interface---v0301)
- [`firebase_app_installations_platform_interface` - `v0.1.4+64`](#firebase_app_installations_platform_interface---v01464)
- [`firebase_messaging_platform_interface` - `v4.7.5`](#firebase_messaging_platform_interface---v475)
- [`firebase_ml_model_downloader_platform_interface` - `v0.1.5+16`](#firebase_ml_model_downloader_platform_interface---v01516)
- [`firebase_performance_web` - `v0.1.8+1`](#firebase_performance_web---v0181)
- [`firebase_performance_platform_interface` - `v0.1.6+3`](#firebase_performance_platform_interface---v0163)
- [`firebase_storage_web` - `v3.11.1`](#firebase_storage_web---v3111)
- [`cloud_functions_platform_interface` - `v5.8.8`](#cloud_functions_platform_interface---v588)
- [`firebase_storage_platform_interface` - `v5.2.16`](#firebase_storage_platform_interface---v5216)
Packages with dependency updates only:
> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
- `firebase_app_check` - `v0.4.1+3`
- `firebase_data_connect` - `v0.2.2+1`
- `firebase_ai` - `v3.6.1`
- `firebase_auth` - `v6.1.3`
- `firebase_crashlytics` - `v5.0.6`
- `_flutterfire_internals` - `v1.3.65`
- `firebase_remote_config_platform_interface` - `v2.0.6`
- `firebase_auth_web` - `v6.1.1`
- `firebase_remote_config` - `v6.1.3`
- `firebase_auth_platform_interface` - `v8.1.5`
- `cloud_firestore` - `v6.1.1`
- `firebase_in_app_messaging_platform_interface` - `v0.2.5+16`
- `firebase_app_installations` - `v0.4.0+5`
- `firebase_in_app_messaging` - `v0.9.0+5`
- `cloud_firestore_platform_interface` - `v7.0.5`
- `firebase_crashlytics_platform_interface` - `v3.8.16`
- `firebase_app_installations_web` - `v0.1.7+1`
- `cloud_firestore_web` - `v5.1.1`
- `firebase_ml_model_downloader` - `v0.4.0+5`
- `firebase_analytics_platform_interface` - `v5.0.5`
- `firebase_analytics_web` - `v0.6.1+1`
- `firebase_app_check_platform_interface` - `v0.2.1+3`
- `firebase_performance` - `v0.11.1+3`
- `firebase_remote_config_web` - `v1.10.2`
- `firebase_storage` - `v13.0.5`
- `cloud_functions_web` - `v5.1.1`
- `firebase_messaging_web` - `v4.1.1`
- `firebase_database_platform_interface` - `v0.3.0+1`
- `firebase_app_installations_platform_interface` - `v0.1.4+64`
- `firebase_messaging_platform_interface` - `v4.7.5`
- `firebase_ml_model_downloader_platform_interface` - `v0.1.5+16`
- `firebase_performance_web` - `v0.1.8+1`
- `firebase_performance_platform_interface` - `v0.1.6+3`
- `firebase_storage_web` - `v3.11.1`
- `cloud_functions_platform_interface` - `v5.8.8`
- `firebase_storage_platform_interface` - `v5.2.16`
---
#### `cloud_functions` - `v6.0.5`
- **FIX**(cloud_functions): fix formatting in FunctionsStreamHandler ([#17891](https://github.com/firebase/flutterfire/issues/17891)). ([345e14f4](https://github.com/firebase/flutterfire/commit/345e14f4bcd7cc3fe6341910c7c7cd9c9ce988dd))
#### `firebase_analytics` - `v12.1.0`
- **FEAT**(firebase_analytics): add `logInAppPurchase` support for iOS ([#17851](https://github.com/firebase/flutterfire/issues/17851)). ([e54252c0](https://github.com/firebase/flutterfire/commit/e54252c000531a5cd552acb362e3dcc5da7f9bf3))
#### `firebase_app_check_web` - `v0.2.2+1`
- **FIX**(app-check): token not available on new session ([#17872](https://github.com/firebase/flutterfire/issues/17872)). ([702de52e](https://github.com/firebase/flutterfire/commit/702de52e2245006ae5a07a61a7571bd271d8423c))
#### `firebase_core` - `v4.3.0`
- **FEAT**: bump Firebase iOS SDK to 12.6.0 ([#17857](https://github.com/firebase/flutterfire/issues/17857)). ([668331b4](https://github.com/firebase/flutterfire/commit/668331b446726daef719a68b43b34af7b1ae411f))
#### `firebase_core_web` - `v3.3.1`
- **REFACTOR**(firebase_core,web): remove variant fallback in registerVersion ([#17874](https://github.com/firebase/flutterfire/issues/17874)). ([44d99a94](https://github.com/firebase/flutterfire/commit/44d99a94f00eb34a175a36ee35c074afcadf9890))
#### `firebase_database` - `v12.1.1`
- **FIX**(database,android): improve type handling for startAt query modifier and add test for numeric startAt ([#17880](https://github.com/firebase/flutterfire/issues/17880)). ([bbb2895c](https://github.com/firebase/flutterfire/commit/bbb2895cc7d47ebb081b4fd8db186d0e8408da49))
- **FIX**(database,Android): resolve limit modifier type casting ([#17867](https://github.com/firebase/flutterfire/issues/17867)). ([20152819](https://github.com/firebase/flutterfire/commit/20152819c6cd5d648718f266f80adeeb79fa5e97))
- **FIX**(database): properly dispose event channel stream handler ([#17864](https://github.com/firebase/flutterfire/issues/17864)). ([0f9c4450](https://github.com/firebase/flutterfire/commit/0f9c44501cbcdb89963fd292fe595b24b83fdfe0))
#### `firebase_database_web` - `v0.2.7+2`
- **FIX**(firebase_database,web): return correct DatabaseReference instance in ThenableReference ([#17915](https://github.com/firebase/flutterfire/issues/17915)). ([c0e682ee](https://github.com/firebase/flutterfire/commit/c0e682eeaf506a746219b3cc3dd7dd7e93f94dca))
#### `firebase_messaging` - `v16.1.0`
- **FIX**(messaging,iOS): refactor notification handling in scene delegate methods ([#17905](https://github.com/firebase/flutterfire/issues/17905)). ([6fd8929b](https://github.com/firebase/flutterfire/commit/6fd8929b667df23eed21df288c9f8d8f213ea8ad))
- **FEAT**(firebase_messaging,iOS): add scene delegate support for `firebase_messaging` ([#17888](https://github.com/firebase/flutterfire/issues/17888)). ([a8633970](https://github.com/firebase/flutterfire/commit/a8633970c841a43699c54a9c6ce4e9669b74e268))
## 2025-11-17 - [BoM 4.6.0](https://github.com/firebase/flutterfire/blob/main/VERSIONS.md#flutter-bom-460-2025-11-17)
### Changes
---
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- [`firebase_database_platform_interface` - `v0.3.0`](#firebase_database_platform_interface---v030)
- [`firebase_ai` - `v3.6.0`](#firebase_ai---v360)
- [`firebase_crashlytics` - `v5.0.5`](#firebase_crashlytics---v505)
- [`firebase_data_connect` - `v0.2.2`](#firebase_data_connect---v022)
- [`firebase_database` - `v12.1.0`](#firebase_database---v1210)
- [`firebase_remote_config_web` - `v1.10.1`](#firebase_remote_config_web---v1101)
- [`firebase_database_web` - `v0.2.7+1`](#firebase_database_web---v0271)
- [`firebase_remote_config` - `v6.1.2`](#firebase_remote_config---v612)
Packages with dependency updates only:
> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
- `firebase_database_web` - `v0.2.7+1`
- `firebase_remote_config` - `v6.1.2`
---
#### `firebase_database_platform_interface` - `v0.3.0`
- **FEAT**(database): add support for Pigeon. Update iOS to Swift and Android to Kotlin ([#17686](https://github.com/firebase/flutterfire/issues/17686)). ([dac0b0bd](https://github.com/firebase/flutterfire/commit/dac0b0bd033b1c51446aedf0413740ef426877b8))
#### `firebase_ai` - `v3.6.0`
- **FEAT**(firebaseai): Added support for Server Prompt Template ([#17767](https://github.com/firebase/flutterfire/issues/17767)). ([8ff653e5](https://github.com/firebase/flutterfire/commit/8ff653e5bad247fe4f2f72afef45375606509d11))
#### `firebase_crashlytics` - `v5.0.5`
- **FIX**(crashlytics,ios): remove warning regarding legacy firebase_app_id_file.json file ([#17852](https://github.com/firebase/flutterfire/issues/17852)). ([fb93470e](https://github.com/firebase/flutterfire/commit/fb93470e13fc7afc40ee310cc85185e89cb63dd0))
#### `firebase_data_connect` - `v0.2.2`
- **FEAT**(database): add support for Pigeon. Update iOS to Swift and Android to Kotlin ([#17686](https://github.com/firebase/flutterfire/issues/17686)). ([dac0b0bd](https://github.com/firebase/flutterfire/commit/dac0b0bd033b1c51446aedf0413740ef426877b8))
#### `firebase_database` - `v12.1.0`
- **FEAT**(database): add support for Pigeon. Update iOS to Swift and Android to Kotlin ([#17686](https://github.com/firebase/flutterfire/issues/17686)). ([dac0b0bd](https://github.com/firebase/flutterfire/commit/dac0b0bd033b1c51446aedf0413740ef426877b8))
#### `firebase_remote_config_web` - `v1.10.1`
- **FIX**(firebase_remote_config,web): update getSource method call in RemoteConfig class and add test for getAll() method ([#17847](https://github.com/firebase/flutterfire/issues/17847)). ([71138573](https://github.com/firebase/flutterfire/commit/7113857365a8332a5feaac3fd5dbbda1b3a500ff))
## 2025-11-03 - [BoM 4.5.0](https://github.com/firebase/flutterfire/blob/main/VERSIONS.md#flutter-bom-450-2025-11-03)
### Changes
---
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- [`cloud_firestore` - `v6.1.0`](#cloud_firestore---v610)
- [`cloud_firestore_web` - `v5.1.0`](#cloud_firestore_web---v510)
- [`cloud_functions_web` - `v5.1.0`](#cloud_functions_web---v510)
- [`firebase_ai` - `v3.5.0`](#firebase_ai---v350)
- [`firebase_analytics_web` - `v0.6.1`](#firebase_analytics_web---v061)
- [`firebase_app_check_web` - `v0.2.2`](#firebase_app_check_web---v022)
- [`firebase_app_installations_web` - `v0.1.7`](#firebase_app_installations_web---v017)
- [`firebase_auth_web` - `v6.1.0`](#firebase_auth_web---v610)
- [`firebase_core_web` - `v3.3.0`](#firebase_core_web---v330)
- [`firebase_crashlytics` - `v5.0.4`](#firebase_crashlytics---v504)
- [`firebase_database_web` - `v0.2.7`](#firebase_database_web---v027)
- [`firebase_messaging_web` - `v4.1.0`](#firebase_messaging_web---v410)
- [`firebase_performance_web` - `v0.1.8`](#firebase_performance_web---v018)
- [`firebase_remote_config_web` - `v1.10.0`](#firebase_remote_config_web---v1100)
- [`firebase_storage` - `v13.0.4`](#firebase_storage---v1304)
- [`firebase_storage_platform_interface` - `v5.2.15`](#firebase_storage_platform_interface---v5215)
- [`firebase_storage_web` - `v3.11.0`](#firebase_storage_web---v3110)
- [`cloud_functions` - `v6.0.4`](#cloud_functions---v604)
- [`firebase_analytics` - `v12.0.4`](#firebase_analytics---v1204)
- [`firebase_app_check` - `v0.4.1+2`](#firebase_app_check---v0412)
- [`firebase_data_connect` - `v0.2.1+2`](#firebase_data_connect---v0212)
- [`firebase_app_installations` - `v0.4.0+4`](#firebase_app_installations---v0404)
- [`firebase_auth` - `v6.1.2`](#firebase_auth---v612)
- [`firebase_core` - `v4.2.1`](#firebase_core---v421)
- [`firebase_database` - `v12.0.4`](#firebase_database---v1204)
- [`firebase_messaging` - `v16.0.4`](#firebase_messaging---v1604)
- [`firebase_remote_config` - `v6.1.1`](#firebase_remote_config---v611)
- [`_flutterfire_internals` - `v1.3.64`](#_flutterfire_internals---v1364)
- [`firebase_auth_platform_interface` - `v8.1.4`](#firebase_auth_platform_interface---v814)
- [`firebase_in_app_messaging` - `v0.9.0+4`](#firebase_in_app_messaging---v0904)
- [`firebase_in_app_messaging_platform_interface` - `v0.2.5+15`](#firebase_in_app_messaging_platform_interface---v02515)
- [`firebase_database_platform_interface` - `v0.2.6+15`](#firebase_database_platform_interface---v02615)
- [`firebase_crashlytics_platform_interface` - `v3.8.15`](#firebase_crashlytics_platform_interface---v3815)
- [`firebase_remote_config_platform_interface` - `v2.0.5`](#firebase_remote_config_platform_interface---v205)
- [`cloud_firestore_platform_interface` - `v7.0.4`](#cloud_firestore_platform_interface---v704)
- [`firebase_messaging_platform_interface` - `v4.7.4`](#firebase_messaging_platform_interface---v474)
- [`firebase_ml_model_downloader` - `v0.4.0+4`](#firebase_ml_model_downloader---v0404)
- [`firebase_ml_model_downloader_platform_interface` - `v0.1.5+15`](#firebase_ml_model_downloader_platform_interface---v01515)
- [`firebase_analytics_platform_interface` - `v5.0.4`](#firebase_analytics_platform_interface---v504)
- [`firebase_app_check_platform_interface` - `v0.2.1+2`](#firebase_app_check_platform_interface---v0212)
- [`firebase_app_installations_platform_interface` - `v0.1.4+63`](#firebase_app_installations_platform_interface---v01463)
- [`cloud_functions_platform_interface` - `v5.8.7`](#cloud_functions_platform_interface---v587)
- [`firebase_performance` - `v0.11.1+2`](#firebase_performance---v01112)
- [`firebase_performance_platform_interface` - `v0.1.6+2`](#firebase_performance_platform_interface---v0162)
Packages with dependency updates only:
> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
- `cloud_functions` - `v6.0.4`
- `firebase_analytics` - `v12.0.4`
- `firebase_app_check` - `v0.4.1+2`
- `firebase_data_connect` - `v0.2.1+2`
- `firebase_app_installations` - `v0.4.0+4`
- `firebase_auth` - `v6.1.2`
- `firebase_core` - `v4.2.1`
- `firebase_database` - `v12.0.4`
- `firebase_messaging` - `v16.0.4`
- `firebase_remote_config` - `v6.1.1`
- `_flutterfire_internals` - `v1.3.64`
- `firebase_auth_platform_interface` - `v8.1.4`
- `firebase_in_app_messaging` - `v0.9.0+4`
- `firebase_in_app_messaging_platform_interface` - `v0.2.5+15`
- `firebase_database_platform_interface` - `v0.2.6+15`
- `firebase_crashlytics_platform_interface` - `v3.8.15`
- `firebase_remote_config_platform_interface` - `v2.0.5`
- `cloud_firestore_platform_interface` - `v7.0.4`
- `firebase_messaging_platform_interface` - `v4.7.4`
- `firebase_ml_model_downloader` - `v0.4.0+4`
- `firebase_ml_model_downloader_platform_interface` - `v0.1.5+15`
- `firebase_analytics_platform_interface` - `v5.0.4`
- `firebase_app_check_platform_interface` - `v0.2.1+2`
- `firebase_app_installations_platform_interface` - `v0.1.4+63`
- `cloud_functions_platform_interface` - `v5.8.7`
- `firebase_performance` - `v0.11.1+2`
- `firebase_performance_platform_interface` - `v0.1.6+2`
---
#### `cloud_firestore` - `v6.1.0`
- **FEAT**(firestore): add client language support for Firestore plugin on Android and iOS ([#17830](https://github.com/firebase/flutterfire/issues/17830)). ([74a37ae6](https://github.com/firebase/flutterfire/commit/74a37ae68446e700ed6cc9f9307ff296a9ff20d8))
#### `cloud_firestore_web` - `v5.1.0`
- **FIX**(firestore,web): More explicit interop types ([#17818](https://github.com/firebase/flutterfire/issues/17818)). ([8ceb461c](https://github.com/firebase/flutterfire/commit/8ceb461cb4f887bc2b1a36151188135ae1189f88))
- **FEAT**(web): add `registerVersion` support for packages ([#17780](https://github.com/firebase/flutterfire/issues/17780)). ([3c8c83d4](https://github.com/firebase/flutterfire/commit/3c8c83d4251f2965ae6fb1fe7b64c21dcb94e9ec))
#### `cloud_functions_web` - `v5.1.0`
- **REFACTOR**(functions,web): convert classes to extension types for improved interop ([#17825](https://github.com/firebase/flutterfire/issues/17825)). ([d63c0342](https://github.com/firebase/flutterfire/commit/d63c034266f7c8644981cdc922fcd374a16ed33a))
- **FEAT**(web): add `registerVersion` support for packages ([#17780](https://github.com/firebase/flutterfire/issues/17780)). ([3c8c83d4](https://github.com/firebase/flutterfire/commit/3c8c83d4251f2965ae6fb1fe7b64c21dcb94e9ec))
#### `firebase_ai` - `v3.5.0`
- **FEAT**(firebase_ai): add malformedFunctionCall reason to FinishReason enum and update tests ([#17834](https://github.com/firebase/flutterfire/issues/17834)). ([38fc083b](https://github.com/firebase/flutterfire/commit/38fc083b0f940158cb9aeb01fe9e9b96ed162e70))
- **FEAT**(firebaseai): add bidi transcript ([#17700](https://github.com/firebase/flutterfire/issues/17700)). ([be12eede](https://github.com/firebase/flutterfire/commit/be12eede158bd4a7870bc9a5dcea11b534ca6112))
#### `firebase_analytics_web` - `v0.6.1`
- **FIX**(analytics,web): More explicit interop types ([#17811](https://github.com/firebase/flutterfire/issues/17811)). ([311a57cb](https://github.com/firebase/flutterfire/commit/311a57cbb3fd36b9979d652a9105d64e01556620))
- **FEAT**(web): add `registerVersion` support for packages ([#17780](https://github.com/firebase/flutterfire/issues/17780)). ([3c8c83d4](https://github.com/firebase/flutterfire/commit/3c8c83d4251f2965ae6fb1fe7b64c21dcb94e9ec))
#### `firebase_app_check_web` - `v0.2.2`
- **FIX**(app-check,web): More explicit interop types ([#17810](https://github.com/firebase/flutterfire/issues/17810)). ([f9ca8193](https://github.com/firebase/flutterfire/commit/f9ca81939f541004e8c34935ec8f314821ef6d05))
- **FEAT**(web): add `registerVersion` support for packages ([#17780](https://github.com/firebase/flutterfire/issues/17780)). ([3c8c83d4](https://github.com/firebase/flutterfire/commit/3c8c83d4251f2965ae6fb1fe7b64c21dcb94e9ec))
#### `firebase_app_installations_web` - `v0.1.7`
- **FIX**(installations,web): More explicit interop types ([#17819](https://github.com/firebase/flutterfire/issues/17819)). ([64986b1b](https://github.com/firebase/flutterfire/commit/64986b1b8128359ed66965f9342f2465007fc1cd))
- **FEAT**(web): add `registerVersion` support for packages ([#17780](https://github.com/firebase/flutterfire/issues/17780)). ([3c8c83d4](https://github.com/firebase/flutterfire/commit/3c8c83d4251f2965ae6fb1fe7b64c21dcb94e9ec))
#### `firebase_auth_web` - `v6.1.0`
- **FIX**(auth): fix JS interop lints ([#17802](https://github.com/firebase/flutterfire/issues/17802)). ([0956646a](https://github.com/firebase/flutterfire/commit/0956646a0e1f88cbb416b748b4738a8bd83ad616))
- **FEAT**(web): add `registerVersion` support for packages ([#17780](https://github.com/firebase/flutterfire/issues/17780)). ([3c8c83d4](https://github.com/firebase/flutterfire/commit/3c8c83d4251f2965ae6fb1fe7b64c21dcb94e9ec))
#### `firebase_core_web` - `v3.3.0`
- **FIX**(core,web): More explicit interop types ([#17809](https://github.com/firebase/flutterfire/issues/17809)). ([795567a6](https://github.com/firebase/flutterfire/commit/795567a64f20c7982e171d4dd66bd7ec61a7035b))
- **FEAT**(web): add `registerVersion` support for packages ([#17780](https://github.com/firebase/flutterfire/issues/17780)). ([3c8c83d4](https://github.com/firebase/flutterfire/commit/3c8c83d4251f2965ae6fb1fe7b64c21dcb94e9ec))
#### `firebase_crashlytics` - `v5.0.4`
- **FIX**(crashlytics,iOS): reorder error reason logging to match Android implementation ([#17713](https://github.com/firebase/flutterfire/issues/17713)). ([0a9cbcef](https://github.com/firebase/flutterfire/commit/0a9cbcefa6d1f7866d63f78523ced3bd98bce03e))
#### `firebase_database_web` - `v0.2.7`
- **FIX**(database,web): more explicit interop types ([#17823](https://github.com/firebase/flutterfire/issues/17823)). ([16037fbb](https://github.com/firebase/flutterfire/commit/16037fbbdf7db0c06a21ce8111493bcf848673b4))
- **FEAT**(web): add `registerVersion` support for packages ([#17780](https://github.com/firebase/flutterfire/issues/17780)). ([3c8c83d4](https://github.com/firebase/flutterfire/commit/3c8c83d4251f2965ae6fb1fe7b64c21dcb94e9ec))
#### `firebase_messaging_web` - `v4.1.0`
- **REFACTOR**(messaging,web): convert classes to extension types for improved interop ([#17820](https://github.com/firebase/flutterfire/issues/17820)). ([ec5813a0](https://github.com/firebase/flutterfire/commit/ec5813a0cc590ba4501f26d5c3e5adb6a121b658))
- **FEAT**(web): add `registerVersion` support for packages ([#17780](https://github.com/firebase/flutterfire/issues/17780)). ([3c8c83d4](https://github.com/firebase/flutterfire/commit/3c8c83d4251f2965ae6fb1fe7b64c21dcb94e9ec))
#### `firebase_performance_web` - `v0.1.8`
- **FEAT**(web): add `registerVersion` support for packages ([#17780](https://github.com/firebase/flutterfire/issues/17780)). ([3c8c83d4](https://github.com/firebase/flutterfire/commit/3c8c83d4251f2965ae6fb1fe7b64c21dcb94e9ec))
#### `firebase_remote_config_web` - `v1.10.0`
- **FIX**(remote-config): js interop types ([#17806](https://github.com/firebase/flutterfire/issues/17806)). ([725a33ac](https://github.com/firebase/flutterfire/commit/725a33acd6a2f945578025b19bb2aaac0fe6290b))
- **FEAT**(web): add `registerVersion` support for packages ([#17780](https://github.com/firebase/flutterfire/issues/17780)). ([3c8c83d4](https://github.com/firebase/flutterfire/commit/3c8c83d4251f2965ae6fb1fe7b64c21dcb94e9ec))
#### `firebase_storage` - `v13.0.4`
- **REFACTOR**(storage): Refactor Java and Objc to Kotlin and Swift ([#17795](https://github.com/firebase/flutterfire/issues/17795)). ([9cc9054c](https://github.com/firebase/flutterfire/commit/9cc9054c22feb18f5aec187484da8dfab9b07391))
#### `firebase_storage_platform_interface` - `v5.2.15`
- **REFACTOR**(storage): Refactor Java and Objc to Kotlin and Swift ([#17795](https://github.com/firebase/flutterfire/issues/17795)). ([9cc9054c](https://github.com/firebase/flutterfire/commit/9cc9054c22feb18f5aec187484da8dfab9b07391))
#### `firebase_storage_web` - `v3.11.0`
- **FIX**(storage,web): More explicit interop types ([#17828](https://github.com/firebase/flutterfire/issues/17828)). ([65a441e7](https://github.com/firebase/flutterfire/commit/65a441e7cd08d4803a7a28834c069743af2dcf4d))
- **FEAT**(web): add `registerVersion` support for packages ([#17780](https://github.com/firebase/flutterfire/issues/17780)). ([3c8c83d4](https://github.com/firebase/flutterfire/commit/3c8c83d4251f2965ae6fb1fe7b64c21dcb94e9ec))
## 2025-10-13 - [BoM 4.4.0](https://github.com/firebase/flutterfire/blob/main/VERSIONS.md#flutter-bom-440-2025-10-13)
### Changes
---
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- [`firebase_ai` - `v3.4.0`](#firebase_ai---v340)
- [`firebase_app_check` - `v0.4.1+1`](#firebase_app_check---v0411)
- [`firebase_app_check_platform_interface` - `v0.2.1+1`](#firebase_app_check_platform_interface---v0211)
- [`firebase_core` - `v4.2.0`](#firebase_core---v420)
- [`firebase_core_platform_interface` - `v6.0.2`](#firebase_core_platform_interface---v602)
- [`firebase_core_web` - `v3.2.0`](#firebase_core_web---v320)
- [`firebase_data_connect` - `v0.2.1+1`](#firebase_data_connect---v0211)
- [`firebase_messaging` - `v16.0.3`](#firebase_messaging---v1603)
- [`firebase_messaging_platform_interface` - `v4.7.3`](#firebase_messaging_platform_interface---v473)
- [`firebase_remote_config` - `v6.1.0`](#firebase_remote_config---v610)
- [`firebase_remote_config_web` - `v1.9.0`](#firebase_remote_config_web---v190)
- [`firebase_app_check_web` - `v0.2.1+1`](#firebase_app_check_web---v0211)
- [`_flutterfire_internals` - `v1.3.63`](#_flutterfire_internals---v1363)
- [`firebase_in_app_messaging_platform_interface` - `v0.2.5+14`](#firebase_in_app_messaging_platform_interface---v02514)
- [`firebase_crashlytics_platform_interface` - `v3.8.14`](#firebase_crashlytics_platform_interface---v3814)
- [`cloud_firestore_platform_interface` - `v7.0.3`](#cloud_firestore_platform_interface---v703)
- [`firebase_crashlytics` - `v5.0.3`](#firebase_crashlytics---v503)
- [`firebase_messaging_web` - `v4.0.3`](#firebase_messaging_web---v403)
- [`firebase_in_app_messaging` - `v0.9.0+3`](#firebase_in_app_messaging---v0903)
- [`cloud_firestore_web` - `v5.0.3`](#cloud_firestore_web---v503)
- [`firebase_database_web` - `v0.2.6+20`](#firebase_database_web---v02620)
- [`cloud_firestore` - `v6.0.3`](#cloud_firestore---v603)
- [`firebase_analytics_platform_interface` - `v5.0.3`](#firebase_analytics_platform_interface---v503)
- [`firebase_database_platform_interface` - `v0.2.6+14`](#firebase_database_platform_interface---v02614)
- [`firebase_database` - `v12.0.3`](#firebase_database---v1203)
- [`firebase_analytics_web` - `v0.6.0+3`](#firebase_analytics_web---v0603)
- [`firebase_app_installations_web` - `v0.1.6+20`](#firebase_app_installations_web---v01620)
- [`firebase_app_installations_platform_interface` - `v0.1.4+62`](#firebase_app_installations_platform_interface---v01462)
- [`firebase_auth` - `v6.1.1`](#firebase_auth---v611)
- [`firebase_app_installations` - `v0.4.0+3`](#firebase_app_installations---v0403)
- [`firebase_analytics` - `v12.0.3`](#firebase_analytics---v1203)
- [`firebase_auth_web` - `v6.0.4`](#firebase_auth_web---v604)
- [`firebase_auth_platform_interface` - `v8.1.3`](#firebase_auth_platform_interface---v813)
- [`firebase_ml_model_downloader` - `v0.4.0+3`](#firebase_ml_model_downloader---v0403)
- [`firebase_ml_model_downloader_platform_interface` - `v0.1.5+14`](#firebase_ml_model_downloader_platform_interface---v01514)
- [`firebase_remote_config_platform_interface` - `v2.0.4`](#firebase_remote_config_platform_interface---v204)
- [`firebase_performance_web` - `v0.1.7+20`](#firebase_performance_web---v01720)
- [`firebase_performance` - `v0.11.1+1`](#firebase_performance---v01111)
- [`firebase_performance_platform_interface` - `v0.1.6+1`](#firebase_performance_platform_interface---v0161)
- [`firebase_storage_platform_interface` - `v5.2.14`](#firebase_storage_platform_interface---v5214)
- [`cloud_functions_web` - `v5.0.3`](#cloud_functions_web---v503)
- [`firebase_storage_web` - `v3.10.21`](#firebase_storage_web---v31021)
- [`firebase_storage` - `v13.0.3`](#firebase_storage---v1303)
- [`cloud_functions` - `v6.0.3`](#cloud_functions---v603)
- [`cloud_functions_platform_interface` - `v5.8.6`](#cloud_functions_platform_interface---v586)
Packages with dependency updates only:
> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
- `firebase_app_check_web` - `v0.2.1+1`
- `_flutterfire_internals` - `v1.3.63`
- `firebase_in_app_messaging_platform_interface` - `v0.2.5+14`
- `firebase_crashlytics_platform_interface` - `v3.8.14`
- `cloud_firestore_platform_interface` - `v7.0.3`
- `firebase_crashlytics` - `v5.0.3`
- `firebase_messaging_web` - `v4.0.3`
- `firebase_in_app_messaging` - `v0.9.0+3`
- `cloud_firestore_web` - `v5.0.3`
- `firebase_database_web` - `v0.2.6+20`
- `cloud_firestore` - `v6.0.3`
- `firebase_analytics_platform_interface` - `v5.0.3`
- `firebase_database_platform_interface` - `v0.2.6+14`
- `firebase_database` - `v12.0.3`
- `firebase_analytics_web` - `v0.6.0+3`
- `firebase_app_installations_web` - `v0.1.6+20`
- `firebase_app_installations_platform_interface` - `v0.1.4+62`
- `firebase_auth` - `v6.1.1`
- `firebase_app_installations` - `v0.4.0+3`
- `firebase_analytics` - `v12.0.3`
- `firebase_auth_web` - `v6.0.4`
- `firebase_auth_platform_interface` - `v8.1.3`
- `firebase_ml_model_downloader` - `v0.4.0+3`
- `firebase_ml_model_downloader_platform_interface` - `v0.1.5+14`
- `firebase_remote_config_platform_interface` - `v2.0.4`
- `firebase_performance_web` - `v0.1.7+20`
- `firebase_performance` - `v0.11.1+1`
- `firebase_performance_platform_interface` - `v0.1.6+1`
- `firebase_storage_platform_interface` - `v5.2.14`
- `cloud_functions_web` - `v5.0.3`
- `firebase_storage_web` - `v3.10.21`
- `firebase_storage` - `v13.0.3`
- `cloud_functions` - `v6.0.3`
- `cloud_functions_platform_interface` - `v5.8.6`
---
#### `firebase_ai` - `v3.4.0`
- **FIX**: update topics in pubspec.yaml for firebase_ai ([#17759](https://github.com/firebase/flutterfire/issues/17759)). ([ab2301d2](https://github.com/firebase/flutterfire/commit/ab2301d2b2943c87279ce7ba4694a90b49eb98fc))
- **FIX**(firebase_ai): add validation for PromptFeedback parsing and handle empty cases ([#17753](https://github.com/firebase/flutterfire/issues/17753)). ([91baa07b](https://github.com/firebase/flutterfire/commit/91baa07bb56198c687b670aa4617fb810dfad212))
- **FIX**(ai): the package version number wasn't properly updated after migrating from vertex_ai ([#17745](https://github.com/firebase/flutterfire/issues/17745)). ([43059b9b](https://github.com/firebase/flutterfire/commit/43059b9b68b0ba1d9e8fdafffa4e85b6eea8aaf3))
- **FEAT**(firebaseai): mark imagen generate function ga ([#17757](https://github.com/firebase/flutterfire/issues/17757)). ([a52255e2](https://github.com/firebase/flutterfire/commit/a52255e26306ea7cb890d48f3b9335d574147a82))
- **FEAT**(firebaseai): update of bidi input api ([#17662](https://github.com/firebase/flutterfire/issues/17662)). ([6d1a0daf](https://github.com/firebase/flutterfire/commit/6d1a0daf524bc7a8e24ea45ceb8c7869be78dbc1))
- **FEAT**(firebaseai): Add support for URL context ([#17736](https://github.com/firebase/flutterfire/issues/17736)). ([f3656634](https://github.com/firebase/flutterfire/commit/f3656634a5436ce7231aa39fc9b9814e906d2b9d))
#### `firebase_app_check` - `v0.4.1+1`
- **FIX**(app_check): Deprecate androidProvider and appleProvider parameters in activate method ([#17742](https://github.com/firebase/flutterfire/issues/17742)). ([4e7f800e](https://github.com/firebase/flutterfire/commit/4e7f800e94a895c6553bd3c1595b4f06ac69bb81))
- **FIX**(app_check): Expose AppleAppAttestProvider without importing platform interface ([#17740](https://github.com/firebase/flutterfire/issues/17740)). ([6c2355a0](https://github.com/firebase/flutterfire/commit/6c2355a05d6bba763768ce3bc09c3cc0528fa900))
#### `firebase_app_check_platform_interface` - `v0.2.1+1`
- **FIX**(app_check): Deprecate androidProvider and appleProvider parameters in activate method ([#17742](https://github.com/firebase/flutterfire/issues/17742)). ([4e7f800e](https://github.com/firebase/flutterfire/commit/4e7f800e94a895c6553bd3c1595b4f06ac69bb81))
#### `firebase_core` - `v4.2.0`
- **FIX**: a bug with the `demoProjectId` arg to `Firebase.initializeApp()` ([#17703](https://github.com/firebase/flutterfire/issues/17703)). ([09d03aac](https://github.com/firebase/flutterfire/commit/09d03aac8ced6f7f9211c24f40b57eb992f2996d))
- **FEAT**: bump Android SDK to version 34.4.0 ([#17786](https://github.com/firebase/flutterfire/issues/17786)). ([3edfc18d](https://github.com/firebase/flutterfire/commit/3edfc18d94c82fa81740fe61d075a09195aa9610))
- **FEAT**: bump Firebase iOS SDK to 12.4.0 ([#17779](https://github.com/firebase/flutterfire/issues/17779)). ([51ed3fbb](https://github.com/firebase/flutterfire/commit/51ed3fbbc2eecf41850db604e7bd145fe0db130c))
#### `firebase_core_platform_interface` - `v6.0.2`
- **FIX**: a bug with the `demoProjectId` arg to `Firebase.initializeApp()` ([#17703](https://github.com/firebase/flutterfire/issues/17703)). ([09d03aac](https://github.com/firebase/flutterfire/commit/09d03aac8ced6f7f9211c24f40b57eb992f2996d))
#### `firebase_core_web` - `v3.2.0`
- **FEAT**: bump Firebase JS SDK to 12.3.0 ([#17743](https://github.com/firebase/flutterfire/issues/17743)). ([007b2b36](https://github.com/firebase/flutterfire/commit/007b2b366f49263660e946a5a631e6919fc48eac))
#### `firebase_data_connect` - `v0.2.1+1`
- **FIX**(app_check): Deprecate androidProvider and appleProvider parameters in activate method ([#17742](https://github.com/firebase/flutterfire/issues/17742)). ([4e7f800e](https://github.com/firebase/flutterfire/commit/4e7f800e94a895c6553bd3c1595b4f06ac69bb81))
#### `firebase_messaging` - `v16.0.3`
- **FIX**(firebase_messaging): fix null apple notification when sound is of type String ([#17770](https://github.com/firebase/flutterfire/issues/17770)). ([7fe893c0](https://github.com/firebase/flutterfire/commit/7fe893c0075f0abb019c0890bebd1fd3ba37a5d3))
#### `firebase_messaging_platform_interface` - `v4.7.3`
- **FIX**(firebase_messaging): update APNS token error message for clarity ([#17763](https://github.com/firebase/flutterfire/issues/17763)). ([08a04332](https://github.com/firebase/flutterfire/commit/08a0433264f9797451dea1804257e439be11e64a))
#### `firebase_remote_config` - `v6.1.0`
- **FEAT**(remote_config,web): add web support for `onConfigUpdated` ([#17750](https://github.com/firebase/flutterfire/issues/17750)). ([799b12e4](https://github.com/firebase/flutterfire/commit/799b12e4b31a2c7c8f251dd4adbbf65227bfc1b6))
#### `firebase_remote_config_web` - `v1.9.0`
- **FEAT**(remote_config,web): add web support for `onConfigUpdated` ([#17750](https://github.com/firebase/flutterfire/issues/17750)). ([799b12e4](https://github.com/firebase/flutterfire/commit/799b12e4b31a2c7c8f251dd4adbbf65227bfc1b6))
## 2025-09-22 - [BoM 4.3.0](https://github.com/firebase/flutterfire/blob/main/VERSIONS.md#flutter-bom-430-2025-09-22)
### Changes
---
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- [`firebase_ai` - `v3.3.0`](#firebase_ai---v330)
- [`firebase_app_check` - `v0.4.1`](#firebase_app_check---v041)
- [`firebase_app_check_platform_interface` - `v0.2.1`](#firebase_app_check_platform_interface---v021)
- [`firebase_app_check_web` - `v0.2.1`](#firebase_app_check_web---v021)
- [`firebase_auth` - `v6.1.0`](#firebase_auth---v610)
- [`firebase_core_platform_interface` - `v6.0.1`](#firebase_core_platform_interface---v601)
- [`firebase_data_connect` - `v0.2.1`](#firebase_data_connect---v021)
- [`firebase_performance` - `v0.11.1`](#firebase_performance---v0111)
- [`firebase_performance_platform_interface` - `v0.1.6`](#firebase_performance_platform_interface---v016)
- [`firebase_database` - `v12.0.2`](#firebase_database---v1202)
- [`firebase_in_app_messaging` - `v0.9.0+2`](#firebase_in_app_messaging---v0902)
- [`_flutterfire_internals` - `v1.3.62`](#_flutterfire_internals---v1362)
- [`cloud_firestore` - `v6.0.2`](#cloud_firestore---v602)
- [`firebase_analytics` - `v12.0.2`](#firebase_analytics---v1202)
- [`firebase_app_installations` - `v0.4.0+2`](#firebase_app_installations---v0402)
- [`firebase_remote_config` - `v6.0.2`](#firebase_remote_config---v602)
- [`firebase_crashlytics` - `v5.0.2`](#firebase_crashlytics---v502)
- [`firebase_messaging` - `v16.0.2`](#firebase_messaging---v1602)
- [`firebase_core_web` - `v3.1.1`](#firebase_core_web---v311)
- [`firebase_core` - `v4.1.1`](#firebase_core---v411)
- [`firebase_ml_model_downloader` - `v0.4.0+2`](#firebase_ml_model_downloader---v0402)
- [`cloud_functions` - `v6.0.2`](#cloud_functions---v602)
- [`firebase_storage` - `v13.0.2`](#firebase_storage---v1302)
- [`firebase_in_app_messaging_platform_interface` - `v0.2.5+13`](#firebase_in_app_messaging_platform_interface---v02513)
- [`firebase_database_platform_interface` - `v0.2.6+13`](#firebase_database_platform_interface---v02613)
- [`firebase_analytics_platform_interface` - `v5.0.2`](#firebase_analytics_platform_interface---v502)
- [`firebase_analytics_web` - `v0.6.0+2`](#firebase_analytics_web---v0602)
- [`cloud_firestore_platform_interface` - `v7.0.2`](#cloud_firestore_platform_interface---v702)
- [`cloud_firestore_web` - `v5.0.2`](#cloud_firestore_web---v502)
- [`firebase_remote_config_platform_interface` - `v2.0.3`](#firebase_remote_config_platform_interface---v203)
- [`firebase_app_installations_web` - `v0.1.6+19`](#firebase_app_installations_web---v01619)
- [`firebase_auth_platform_interface` - `v8.1.2`](#firebase_auth_platform_interface---v812)
- [`firebase_remote_config_web` - `v1.8.12`](#firebase_remote_config_web---v1812)
- [`firebase_app_installations_platform_interface` - `v0.1.4+61`](#firebase_app_installations_platform_interface---v01461)
- [`firebase_crashlytics_platform_interface` - `v3.8.13`](#firebase_crashlytics_platform_interface---v3813)
- [`firebase_messaging_web` - `v4.0.2`](#firebase_messaging_web---v402)
- [`firebase_messaging_platform_interface` - `v4.7.2`](#firebase_messaging_platform_interface---v472)
- [`firebase_storage_platform_interface` - `v5.2.13`](#firebase_storage_platform_interface---v5213)
- [`firebase_storage_web` - `v3.10.20`](#firebase_storage_web---v31020)
- [`firebase_performance_web` - `v0.1.7+19`](#firebase_performance_web---v01719)
- [`firebase_database_web` - `v0.2.6+19`](#firebase_database_web---v02619)
- [`firebase_auth_web` - `v6.0.3`](#firebase_auth_web---v603)
- [`cloud_functions_web` - `v5.0.2`](#cloud_functions_web---v502)
- [`firebase_ml_model_downloader_platform_interface` - `v0.1.5+13`](#firebase_ml_model_downloader_platform_interface---v01513)
- [`cloud_functions_platform_interface` - `v5.8.5`](#cloud_functions_platform_interface---v585)
Packages with dependency updates only:
> Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
- `firebase_database` - `v12.0.2`
- `firebase_in_app_messaging` - `v0.9.0+2`
- `_flutterfire_internals` - `v1.3.62`
- `cloud_firestore` - `v6.0.2`
- `firebase_analytics` - `v12.0.2`
- `firebase_app_installations` - `v0.4.0+2`
- `firebase_remote_config` - `v6.0.2`
- `firebase_crashlytics` - `v5.0.2`
- `firebase_messaging` - `v16.0.2`
- `firebase_core_web` - `v3.1.1`
- `firebase_core` - `v4.1.1`
- `firebase_ml_model_downloader` - `v0.4.0+2`
- `cloud_functions` - `v6.0.2`
- `firebase_storage` - `v13.0.2`
- `firebase_in_app_messaging_platform_interface` - `v0.2.5+13`
- `firebase_database_platform_interface` - `v0.2.6+13`
- `firebase_analytics_platform_interface` - `v5.0.2`
- `firebase_analytics_web` - `v0.6.0+2`
- `cloud_firestore_platform_interface` - `v7.0.2`
- `cloud_firestore_web` - `v5.0.2`
- `firebase_remote_config_platform_interface` - `v2.0.3`
- `firebase_app_installations_web` - `v0.1.6+19`
- `firebase_auth_platform_interface` - `v8.1.2`
- `firebase_remote_config_web` - `v1.8.12`
- `firebase_app_installations_platform_interface` - `v0.1.4+61`
- `firebase_crashlytics_platform_interface` - `v3.8.13`
- `firebase_messaging_web` - `v4.0.2`
- `firebase_messaging_platform_interface` - `v4.7.2`
- `firebase_storage_platform_interface` - `v5.2.13`
- `firebase_storage_web` - `v3.10.20`
- `firebase_performance_web` - `v0.1.7+19`
- `firebase_database_web` - `v0.2.6+19`
- `firebase_auth_web` - `v6.0.3`
- `cloud_functions_web` - `v5.0.2`
- `firebase_ml_model_downloader_platform_interface` - `v0.1.5+13`
- `cloud_functions_platform_interface` - `v5.8.5`
---
#### `firebase_ai` - `v3.3.0`
- **FIX**(firebaseai): fix the json parse for toolCallCancellation ([#17690](https://github.com/firebase/flutterfire/issues/17690)). ([7c0496d6](https://github.com/firebase/flutterfire/commit/7c0496d6434d81ac35f8df3fe965d0648dcc21bc))
- **FEAT**(firebaseai): code execution ([#17661](https://github.com/firebase/flutterfire/issues/17661)). ([032a707d](https://github.com/firebase/flutterfire/commit/032a707dfc773f8dda1832635d2c969cfb426a14))
- **FEAT**(firebaseai): add imagen safetysetting attributes ([#17707](https://github.com/firebase/flutterfire/issues/17707)). ([f7070f04](https://github.com/firebase/flutterfire/commit/f7070f042a3e3319dd1001d35e4926e01c78d4dc))
#### `firebase_app_check` - `v0.4.1`
- **FEAT**(app-check): Debug token support for the activate method ([#17723](https://github.com/firebase/flutterfire/issues/17723)). ([3c638264](https://github.com/firebase/flutterfire/commit/3c638264565d902ddbe4dff5bb027aef9e1c2140))
#### `firebase_app_check_platform_interface` - `v0.2.1`
- **FEAT**(app-check): Debug token support for the activate method ([#17723](https://github.com/firebase/flutterfire/issues/17723)). ([3c638264](https://github.com/firebase/flutterfire/commit/3c638264565d902ddbe4dff5bb027aef9e1c2140))
#### `firebase_app_check_web` - `v0.2.1`
- **FEAT**(app-check): Debug token support for the activate method ([#17723](https://github.com/firebase/flutterfire/issues/17723)). ([3c638264](https://github.com/firebase/flutterfire/commit/3c638264565d902ddbe4dff5bb027aef9e1c2140))
#### `firebase_auth` - `v6.1.0`
- **FEAT**(auth): TOTP macOS support ([#17513](https://github.com/firebase/flutterfire/issues/17513)). ([41890d62](https://github.com/firebase/flutterfire/commit/41890d62a49258df097c19fd3b90e0b5de181526))
#### `firebase_core_platform_interface` - `v6.0.1`
- **DOCS**(firebase_core): correct androidClientId docs (was incorrectly labeled iOS-only)\n\n- Clarify as Android OAuth client ID\n- Note it is used on Android only\n\nFixes firebase/flutterfire[#13519](https://github.com/firebase/flutterfire/issues/13519) ([#17720](https://github.com/firebase/flutterfire/issues/17720)). ([0b6b13d0](https://github.com/firebase/flutterfire/commit/0b6b13d0e0c0c45386eadb0ceef55e895a8d357b))
#### `firebase_data_connect` - `v0.2.1`
- **FIX**(fdc): add support Int64 to nativeFromJson ([#17673](https://github.com/firebase/flutterfire/issues/17673)). ([451e7a46](https://github.com/firebase/flutterfire/commit/451e7a462ef8ecc2e4134ad6f8aec10f13793bf4))
- **FIX**(fdc): issue where if path was empty on web, the app crashed ([#17704](https://github.com/firebase/flutterfire/issues/17704)). ([e9a6c045](https://github.com/firebase/flutterfire/commit/e9a6c045054b54d464ef6dbcc63c5be63db00db9))
- **FEAT**(app-check): Debug token support for the activate method ([#17723](https://github.com/firebase/flutterfire/issues/17723)). ([3c638264](https://github.com/firebase/flutterfire/commit/3c638264565d902ddbe4dff5bb027aef9e1c2140))
#### `firebase_performance` - `v0.11.1`
- **FEAT**(performance): add support for Pigeon. Update iOS to Swift and Android to Kotlin ([#17676](https://github.com/firebase/flutterfire/issues/17676)). ([9c2ab08a](https://github.com/firebase/flutterfire/commit/9c2ab08a41edd1ddb2e08aaf19d17fe85f64a7d7))
#### `firebase_performance_platform_interface` - `v0.1.6`
- **FEAT**(performance): add support for Pigeon. Update iOS to Swift and Android to Kotlin ([#17676](https://github.com/firebase/flutterfire/issues/17676)). ([9c2ab08a](https://github.com/firebase/flutterfire/commit/9c2ab08a41edd1ddb2e08aaf19d17fe85f64a7d7))
## 2025-09-01 - [BoM 4.2.0](https://github.com/firebase/flutterfire/blob/main/VERSIONS.md#flutter-bom-420-2025-09-01)
### Changes
---
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- [`firebase_ai` - `v3.2.0`](#firebase_ai---v320)
- [`firebase_app_check` - `v0.4.0+1`](#firebase_app_check---v0401)
- [`firebase_core` - `v4.1.0`](#firebase_core---v410)
- [`firebase_core_web` - `v3.1.0`](#firebase_core_web---v310)
- [`firebase_vertexai` - `v2.2.0`](#firebase_vertexai---v220)
- [`firebase_data_connect` - `v0.2.0+2`](#firebase_data_connect---v0202)
- [`firebase_in_app_messaging` - `v0.9.0+1`](#firebase_in_app_messaging---v0901)
- [`_flutterfire_internals` - `v1.3.61`](#_flutterfire_internals---v1361)
- [`firebase_database` - `v12.0.1`](#firebase_database---v1201)
- [`firebase_crashlytics` - `v5.0.1`](#firebase_crashlytics---v501)
- [`firebase_database_platform_interface` - `v0.2.6+12`](#firebase_database_platform_interface---v02612)
- [`firebase_database_web` - `v0.2.6+18`](#firebase_database_web---v02618)
- [`firebase_crashlytics_platform_interface` - `v3.8.12`](#firebase_crashlytics_platform_interface---v3812)
- [`firebase_in_app_messaging_platform_interface` - `v0.2.5+12`](#firebase_in_app_messaging_platform_interface---v02512)
- [`firebase_remote_config` - `v6.0.1`](#firebase_remote_config---v601)
- [`firebase_auth` - `v6.0.2`](#firebase_auth---v602)
- [`firebase_auth_platform_interface` - `v8.1.1`](#firebase_auth_platform_interface---v811)
- [`firebase_auth_web` - `v6.0.2`](#firebase_auth_web---v602)
- [`cloud_firestore_platform_interface` - `v7.0.1`](#cloud_firestore_platform_interface---v701)
- [`cloud_firestore_web` - `v5.0.1`](#cloud_firestore_web---v501)
- [`firebase_app_installations_web` - `v0.1.6+18`](#firebase_app_installations_web---v01618)
- [`cloud_firestore` - `v6.0.1`](#cloud_firestore---v601)
- [`firebase_messaging` - `v16.0.1`](#firebase_messaging---v1601)
- [`firebase_app_installations_platform_interface` - `v0.1.4+60`](#firebase_app_installations_platform_interface---v01460)
- [`firebase_ap
gitextract_7w3h2ieq/
├── .clang-format
├── .editorconfig
├── .gemini/
│ └── config.yaml
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── ---documentation-feedback.md
│ │ ├── ---feature-request.md
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ └── ios_background_message_handling.yml
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── dependabot.yml
│ ├── move.yml
│ └── workflows/
│ ├── all_plugins.yaml
│ ├── android.yaml
│ ├── e2e_tests_fdc.yaml
│ ├── ios.yaml
│ ├── macos.yaml
│ ├── ossf-scorecard.yml
│ ├── pr_title.yaml
│ ├── scripts/
│ │ ├── .firebaserc
│ │ ├── build-example.sh
│ │ ├── database.rules.json
│ │ ├── drive-example.sh
│ │ ├── firebase.json
│ │ ├── firestore.indexes.json
│ │ ├── firestore.rules
│ │ ├── functions/
│ │ │ ├── .gitignore
│ │ │ ├── package.json
│ │ │ ├── src/
│ │ │ │ └── index.ts
│ │ │ └── tsconfig.json
│ │ ├── reset-firestore-emulator.sh
│ │ ├── start-firebase-emulator.sh
│ │ ├── storage.rules
│ │ ├── swift-integration.dart
│ │ └── validate-formatting.sh
│ ├── web.yaml
│ └── windows.yaml
├── .gitignore
├── .opensource/
│ └── project.json
├── .swiftformat
├── .vscode/
│ ├── settings.json
│ └── tasks.json
├── AUTHORS
├── CHANGELOG.md
├── CODEOWNERS
├── CONTRIBUTING.md
├── LICENSE
├── Package.swift
├── README.md
├── VERSIONS.md
├── all_lint_rules.yaml
├── analysis_options.yaml
├── docs/
│ ├── README.md
│ ├── analytics/
│ │ ├── _events.md
│ │ ├── _get-started.md
│ │ └── _user-properties.md
│ ├── app-check/
│ │ ├── custom-resource.md
│ │ ├── debug-provider.md
│ │ └── default-providers.md
│ ├── auth/
│ │ ├── account-linking.md
│ │ ├── anonymous-auth.md
│ │ ├── custom-auth.md
│ │ ├── email-link-auth.md
│ │ ├── errors.md
│ │ ├── federated-auth.md
│ │ ├── manage-users.md
│ │ ├── multi-factor.md
│ │ ├── passing-state-in-email-actions.md
│ │ ├── password-auth.md
│ │ ├── phone-auth.md
│ │ └── start.md
│ ├── cloud-messaging/
│ │ ├── client.md
│ │ ├── first-message.md
│ │ ├── receive.md
│ │ └── topic-messaging.md
│ ├── crashlytics/
│ │ ├── _customize-crash-reports.md
│ │ ├── _deobfuscated.md
│ │ ├── _force-test-crash.md
│ │ └── _get-started.md
│ ├── database/
│ │ ├── _usecase_security_preamble.md
│ │ ├── lists-of-data.md
│ │ ├── offline-capabilities.md
│ │ ├── read-and-write.md
│ │ ├── start.md
│ │ └── structure-data.md
│ ├── dynamic-links/
│ │ ├── create.md
│ │ └── receive.md
│ ├── in-app-messaging/
│ │ ├── _customize-messages.md
│ │ ├── _get-started.md
│ │ └── _modify-message-behavior.md
│ ├── ml/
│ │ └── use-custom-models.md
│ ├── perf-mon/
│ │ ├── _custom-code-traces.md
│ │ ├── _custom-network-traces.md
│ │ ├── _disable-sdk.md
│ │ └── get-started.md
│ ├── reference/
│ │ └── _toc.yaml
│ ├── remote-config/
│ │ └── _get-started.md
│ ├── setup/
│ │ ├── _setup_main.md
│ │ ├── _setup_prereq_android.md
│ │ ├── _setup_prereq_ios.md
│ │ └── _setup_prereq_web.md
│ ├── storage/
│ │ ├── create-reference.md
│ │ ├── delete-files.md
│ │ ├── download-files.md
│ │ ├── file-metadata.md
│ │ ├── handle-errors.md
│ │ ├── list-files.md
│ │ ├── start.md
│ │ └── upload-files.md
│ └── test-lab/
│ └── integration-testing-with-flutter.md
├── header_template.txt
├── melos.yaml
├── packages/
│ ├── _flutterfire_internals/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── _flutterfire_internals.dart
│ │ │ └── src/
│ │ │ ├── exception.dart
│ │ │ ├── interop_shimmer.dart
│ │ │ └── js_interop.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── guard_test.dart
│ ├── cloud_firestore/
│ │ ├── cloud_firestore/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── firestore/
│ │ │ │ │ ├── FlutterFirebaseFirestoreException.java
│ │ │ │ │ ├── FlutterFirebaseFirestoreExtension.java
│ │ │ │ │ ├── FlutterFirebaseFirestoreMessageCodec.java
│ │ │ │ │ ├── FlutterFirebaseFirestorePlugin.java
│ │ │ │ │ ├── FlutterFirebaseFirestoreRegistrar.java
│ │ │ │ │ ├── FlutterFirebaseFirestoreTransactionResult.java
│ │ │ │ │ ├── GeneratedAndroidFirebaseFirestore.java
│ │ │ │ │ ├── streamhandler/
│ │ │ │ │ │ ├── DocumentSnapshotsStreamHandler.java
│ │ │ │ │ │ ├── LoadBundleStreamHandler.java
│ │ │ │ │ │ ├── OnTransactionResultListener.java
│ │ │ │ │ │ ├── QuerySnapshotsStreamHandler.java
│ │ │ │ │ │ ├── SnapshotsInSyncStreamHandler.java
│ │ │ │ │ │ └── TransactionStreamHandler.java
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── ExceptionConverter.java
│ │ │ │ │ ├── PigeonParser.java
│ │ │ │ │ └── ServerTimestampBehaviorConverter.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── dartpad/
│ │ │ │ ├── dartpad_metadata.yaml
│ │ │ │ └── lib/
│ │ │ │ └── main.dart
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── firestore/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── firebase.json
│ │ │ │ ├── integration_test/
│ │ │ │ │ ├── collection_reference_e2e.dart
│ │ │ │ │ ├── document_change_e2e.dart
│ │ │ │ │ ├── document_reference_e2e.dart
│ │ │ │ │ ├── e2e_test.dart
│ │ │ │ │ ├── field_value_e2e.dart
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── firebase_options_secondary.dart
│ │ │ │ │ ├── geo_point_e2e.dart
│ │ │ │ │ ├── instance_e2e.dart
│ │ │ │ │ ├── load_bundle_e2e.dart
│ │ │ │ │ ├── query_e2e.dart
│ │ │ │ │ ├── second_database.dart
│ │ │ │ │ ├── settings_e2e.dart
│ │ │ │ │ ├── snapshot_metadata_e2e.dart
│ │ │ │ │ ├── timestamp_e2e.dart
│ │ │ │ │ ├── transaction_e2e.dart
│ │ │ │ │ ├── vector_value_e2e.dart
│ │ │ │ │ ├── web_snapshot_listeners.dart
│ │ │ │ │ └── write_batch_e2e.dart
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ ├── RunnerTests/
│ │ │ │ │ │ └── RunnerTests.swift
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ ├── web/
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── manifest.json
│ │ │ │ │ └── wasm_index.html
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── ios/
│ │ │ │ ├── cloud_firestore/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── cloud_firestore/
│ │ │ │ │ ├── FLTDocumentSnapshotStreamHandler.m
│ │ │ │ │ ├── FLTFirebaseFirestoreExtension.m
│ │ │ │ │ ├── FLTFirebaseFirestorePlugin.m
│ │ │ │ │ ├── FLTFirebaseFirestoreReader.m
│ │ │ │ │ ├── FLTFirebaseFirestoreUtils.m
│ │ │ │ │ ├── FLTFirebaseFirestoreWriter.m
│ │ │ │ │ ├── FLTFirestoreClientLanguage.mm
│ │ │ │ │ ├── FLTLoadBundleStreamHandler.m
│ │ │ │ │ ├── FLTQuerySnapshotStreamHandler.m
│ │ │ │ │ ├── FLTSnapshotsInSyncStreamHandler.m
│ │ │ │ │ ├── FLTTransactionStreamHandler.m
│ │ │ │ │ ├── FirestoreMessages.g.m
│ │ │ │ │ ├── FirestorePigeonParser.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ └── include/
│ │ │ │ │ └── cloud_firestore/
│ │ │ │ │ ├── Private/
│ │ │ │ │ │ ├── FLTDocumentSnapshotStreamHandler.h
│ │ │ │ │ │ ├── FLTFirebaseFirestoreExtension.h
│ │ │ │ │ │ ├── FLTFirebaseFirestoreReader.h
│ │ │ │ │ │ ├── FLTFirebaseFirestoreUtils.h
│ │ │ │ │ │ ├── FLTFirebaseFirestoreWriter.h
│ │ │ │ │ │ ├── FLTLoadBundleStreamHandler.h
│ │ │ │ │ │ ├── FLTQuerySnapshotStreamHandler.h
│ │ │ │ │ │ ├── FLTSnapshotsInSyncStreamHandler.h
│ │ │ │ │ │ ├── FLTTransactionStreamHandler.h
│ │ │ │ │ │ └── FirestorePigeonParser.h
│ │ │ │ │ └── Public/
│ │ │ │ │ ├── CustomPigeonHeaderFirestore.h
│ │ │ │ │ ├── FLTFirebaseFirestorePlugin.h
│ │ │ │ │ └── FirestoreMessages.g.h
│ │ │ │ ├── cloud_firestore.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── cloud_firestore.dart
│ │ │ │ └── src/
│ │ │ │ ├── aggregate_query.dart
│ │ │ │ ├── aggregate_query_snapshot.dart
│ │ │ │ ├── collection_reference.dart
│ │ │ │ ├── document_change.dart
│ │ │ │ ├── document_reference.dart
│ │ │ │ ├── document_snapshot.dart
│ │ │ │ ├── field_value.dart
│ │ │ │ ├── filters.dart
│ │ │ │ ├── firestore.dart
│ │ │ │ ├── load_bundle_task.dart
│ │ │ │ ├── load_bundle_task_snapshot.dart
│ │ │ │ ├── persistent_cache_index_manager.dart
│ │ │ │ ├── query.dart
│ │ │ │ ├── query_document_snapshot.dart
│ │ │ │ ├── query_snapshot.dart
│ │ │ │ ├── snapshot_metadata.dart
│ │ │ │ ├── transaction.dart
│ │ │ │ ├── utils/
│ │ │ │ │ └── codec_utility.dart
│ │ │ │ └── write_batch.dart
│ │ │ ├── macos/
│ │ │ │ ├── cloud_firestore/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── cloud_firestore/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── cloud_firestore.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── cloud_firestore_test.dart
│ │ │ │ ├── collection_reference_test.dart
│ │ │ │ ├── field_value_test.dart
│ │ │ │ ├── mock.dart
│ │ │ │ ├── query_test.dart
│ │ │ │ └── test_firestore_message_codec.dart
│ │ │ └── windows/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── cloud_firestore_plugin.cpp
│ │ │ ├── cloud_firestore_plugin.h
│ │ │ ├── cloud_firestore_plugin_c_api.cpp
│ │ │ ├── firestore_codec.cpp
│ │ │ ├── firestore_codec.h
│ │ │ ├── include/
│ │ │ │ └── cloud_firestore/
│ │ │ │ └── cloud_firestore_plugin_c_api.h
│ │ │ ├── messages.g.cpp
│ │ │ ├── messages.g.h
│ │ │ ├── plugin_version.h.in
│ │ │ └── test/
│ │ │ └── cloud_firestore_plugin_test.cpp
│ │ ├── cloud_firestore_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── cloud_firestore_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── blob.dart
│ │ │ │ ├── field_path.dart
│ │ │ │ ├── field_path_type.dart
│ │ │ │ ├── filters.dart
│ │ │ │ ├── geo_point.dart
│ │ │ │ ├── get_options.dart
│ │ │ │ ├── internal/
│ │ │ │ │ └── pointer.dart
│ │ │ │ ├── load_bundle_task_state.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_aggregate_query.dart
│ │ │ │ │ ├── method_channel_collection_reference.dart
│ │ │ │ │ ├── method_channel_document_change.dart
│ │ │ │ │ ├── method_channel_document_reference.dart
│ │ │ │ │ ├── method_channel_field_value.dart
│ │ │ │ │ ├── method_channel_field_value_factory.dart
│ │ │ │ │ ├── method_channel_firestore.dart
│ │ │ │ │ ├── method_channel_load_bundle_task.dart
│ │ │ │ │ ├── method_channel_persistent_cache_index_manager.dart
│ │ │ │ │ ├── method_channel_query.dart
│ │ │ │ │ ├── method_channel_query_snapshot.dart
│ │ │ │ │ ├── method_channel_transaction.dart
│ │ │ │ │ ├── method_channel_write_batch.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── auto_id_generator.dart
│ │ │ │ │ ├── exception.dart
│ │ │ │ │ ├── firestore_message_codec.dart
│ │ │ │ │ ├── maps.dart
│ │ │ │ │ └── source.dart
│ │ │ │ ├── persistence_settings.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ ├── platform_interface_aggregate_query.dart
│ │ │ │ │ ├── platform_interface_aggregate_query_snapshot.dart
│ │ │ │ │ ├── platform_interface_collection_reference.dart
│ │ │ │ │ ├── platform_interface_document_change.dart
│ │ │ │ │ ├── platform_interface_document_reference.dart
│ │ │ │ │ ├── platform_interface_document_snapshot.dart
│ │ │ │ │ ├── platform_interface_field_value.dart
│ │ │ │ │ ├── platform_interface_field_value_factory.dart
│ │ │ │ │ ├── platform_interface_firestore.dart
│ │ │ │ │ ├── platform_interface_index_definitions.dart
│ │ │ │ │ ├── platform_interface_load_bundle_task.dart
│ │ │ │ │ ├── platform_interface_load_bundle_task_snapshot.dart
│ │ │ │ │ ├── platform_interface_persistent_cache_index_manager.dart
│ │ │ │ │ ├── platform_interface_query.dart
│ │ │ │ │ ├── platform_interface_query_snapshot.dart
│ │ │ │ │ ├── platform_interface_transaction.dart
│ │ │ │ │ ├── platform_interface_write_batch.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── load_bundle_task_state.dart
│ │ │ │ ├── set_options.dart
│ │ │ │ ├── settings.dart
│ │ │ │ ├── snapshot_metadata.dart
│ │ │ │ ├── timestamp.dart
│ │ │ │ └── vector_value.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ ├── generate_pigeon.sh
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── field_path_test.dart
│ │ │ ├── geo_point_test.dart
│ │ │ ├── get_options_test.dart
│ │ │ ├── internal_tests/
│ │ │ │ └── pointer_test.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ ├── set_options_test.dart
│ │ │ ├── settings_test.dart
│ │ │ ├── timestamp_test.dart
│ │ │ └── utils/
│ │ │ └── test_firestore_message_codec.dart
│ │ └── cloud_firestore_web/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── ios/
│ │ │ └── cloud_firestore_web.podspec
│ │ ├── lib/
│ │ │ ├── cloud_firestore_web.dart
│ │ │ └── src/
│ │ │ ├── aggregate_query_web.dart
│ │ │ ├── cloud_firestore_version.dart
│ │ │ ├── collection_reference_web.dart
│ │ │ ├── document_reference_web.dart
│ │ │ ├── field_value_factory_web.dart
│ │ │ ├── field_value_web.dart
│ │ │ ├── internals.dart
│ │ │ ├── interop/
│ │ │ │ ├── firestore.dart
│ │ │ │ ├── firestore_interop.dart
│ │ │ │ └── utils/
│ │ │ │ └── utils.dart
│ │ │ ├── load_bundle_task_web.dart
│ │ │ ├── persistent_cache_index_manager_web.dart
│ │ │ ├── query_web.dart
│ │ │ ├── transaction_web.dart
│ │ │ ├── utils/
│ │ │ │ ├── decode_utility.dart
│ │ │ │ ├── encode_utility.dart
│ │ │ │ └── web_utils.dart
│ │ │ └── write_batch_web.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── field_value_factory_web_test.dart
│ │ └── test_common.dart
│ ├── cloud_functions/
│ │ ├── analysis_options.yaml
│ │ ├── cloud_functions/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── kotlin/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── functions/
│ │ │ │ │ ├── FirebaseFunctionsStreamHandler.kt
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.kt
│ │ │ │ │ ├── FlutterFirebaseFunctionsPlugin.kt
│ │ │ │ │ ├── GeneratedAndroidCloudFunctions.g.kt
│ │ │ │ │ └── StreamResponseSubscriber.kt
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── cloud_functions/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── cloud_functions/
│ │ │ │ │ ├── CloudFunctionsMessages.g.swift
│ │ │ │ │ ├── CodecUtility.swift
│ │ │ │ │ ├── Constants.swift
│ │ │ │ │ ├── FirebaseFunctionsPlugin.swift
│ │ │ │ │ ├── FunctionsStreamHandler.swift
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── cloud_functions.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── cloud_functions.dart
│ │ │ │ └── src/
│ │ │ │ ├── firebase_functions.dart
│ │ │ │ ├── https_callable.dart
│ │ │ │ ├── https_callable_result.dart
│ │ │ │ └── https_callable_stream_result.dart
│ │ │ ├── macos/
│ │ │ │ ├── cloud_functions/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── cloud_functions/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── cloud_functions.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_functions_test.dart
│ │ │ │ ├── https_callable_test.dart
│ │ │ │ ├── mock.dart
│ │ │ │ └── sample.dart
│ │ │ └── windows/
│ │ │ ├── messages.g.cpp
│ │ │ └── messages.g.h
│ │ ├── cloud_functions_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── cloud_functions_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── firebase_functions_exception.dart
│ │ │ │ ├── https_callable_options.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_functions.dart
│ │ │ │ │ ├── method_channel_https_callable.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ └── platform_interface/
│ │ │ │ ├── platform_interface_firebase_functions.dart
│ │ │ │ └── platform_interface_https_callable.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── method_channel/
│ │ │ │ ├── method_channel_firebase_functions_test.dart
│ │ │ │ ├── method_channel_https_callable_test.dart
│ │ │ │ └── utils/
│ │ │ │ └── exception_test.dart
│ │ │ ├── mock.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ └── platform_interface/
│ │ │ ├── platform_interface_firebase_functions_test.dart
│ │ │ └── platform_interface_https_callable_test.dart
│ │ └── cloud_functions_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── ios/
│ │ │ └── cloud_functions_web.podspec
│ │ ├── lib/
│ │ │ ├── cloud_functions_web.dart
│ │ │ ├── https_callable_web.dart
│ │ │ ├── interop/
│ │ │ │ ├── functions.dart
│ │ │ │ └── functions_interop.dart
│ │ │ ├── src/
│ │ │ │ └── cloud_functions_version.dart
│ │ │ └── utils.dart
│ │ └── pubspec.yaml
│ ├── firebase_ai/
│ │ ├── all_lint_rules.yaml
│ │ ├── analysis_options.yaml
│ │ └── firebase_ai/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── example/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── README.md
│ │ │ ├── analysis_options.yaml
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle.kts
│ │ │ │ │ └── src/
│ │ │ │ │ ├── debug/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ └── com/
│ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ └── firebase_ai_example/
│ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── profile/
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── build.gradle.kts
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ └── settings.gradle.kts
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Flutter/
│ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ └── Release.xcconfig
│ │ │ │ ├── Podfile
│ │ │ │ ├── Runner/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── README.md
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── Runner.xcscheme
│ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ └── firebase_app_id_file.json
│ │ │ ├── lib/
│ │ │ │ ├── main.dart
│ │ │ │ ├── pages/
│ │ │ │ │ ├── audio_page.dart
│ │ │ │ │ ├── bidi_page.dart
│ │ │ │ │ ├── chat_page.dart
│ │ │ │ │ ├── document.dart
│ │ │ │ │ ├── function_calling_page.dart
│ │ │ │ │ ├── image_prompt_page.dart
│ │ │ │ │ ├── imagen_page.dart
│ │ │ │ │ ├── json_schema_page.dart
│ │ │ │ │ ├── schema_page.dart
│ │ │ │ │ ├── server_template_page.dart
│ │ │ │ │ ├── token_count_page.dart
│ │ │ │ │ └── video_page.dart
│ │ │ │ ├── utils/
│ │ │ │ │ ├── audio_input.dart
│ │ │ │ │ ├── audio_output.dart
│ │ │ │ │ ├── image_utils.dart
│ │ │ │ │ └── video_input.dart
│ │ │ │ └── widgets/
│ │ │ │ ├── audio_visualizer.dart
│ │ │ │ ├── camera_previews.dart
│ │ │ │ ├── message_widget.dart
│ │ │ │ └── sound_waves.dart
│ │ │ ├── macos/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Flutter/
│ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ ├── Podfile
│ │ │ │ ├── Runner/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ ├── Configs/
│ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ └── Release.entitlements
│ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── Runner.xcscheme
│ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ └── firebase_app_id_file.json
│ │ │ ├── pubspec.yaml
│ │ │ └── web/
│ │ │ ├── index.html
│ │ │ └── manifest.json
│ │ ├── lib/
│ │ │ ├── firebase_ai.dart
│ │ │ └── src/
│ │ │ ├── api.dart
│ │ │ ├── base_model.dart
│ │ │ ├── chat.dart
│ │ │ ├── client.dart
│ │ │ ├── content.dart
│ │ │ ├── developer/
│ │ │ │ └── api.dart
│ │ │ ├── error.dart
│ │ │ ├── firebase_ai.dart
│ │ │ ├── firebaseai_version.dart
│ │ │ ├── generative_model.dart
│ │ │ ├── imagen/
│ │ │ │ ├── imagen_api.dart
│ │ │ │ ├── imagen_content.dart
│ │ │ │ ├── imagen_edit.dart
│ │ │ │ ├── imagen_model.dart
│ │ │ │ └── imagen_reference.dart
│ │ │ ├── live_api.dart
│ │ │ ├── live_model.dart
│ │ │ ├── live_session.dart
│ │ │ ├── schema.dart
│ │ │ ├── server_template/
│ │ │ │ ├── template_generative_model.dart
│ │ │ │ └── template_imagen_model.dart
│ │ │ ├── tool.dart
│ │ │ └── utils/
│ │ │ ├── chat_utils.dart
│ │ │ └── mutex.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── api_test.dart
│ │ ├── base_model_test.dart
│ │ ├── chat_test.dart
│ │ ├── content_test.dart
│ │ ├── developer_api_test.dart
│ │ ├── error_test.dart
│ │ ├── firebase_vertexai_test.dart
│ │ ├── google_ai_generative_model_test.dart
│ │ ├── google_ai_response_parsing_test.dart
│ │ ├── imagen_edit_test.dart
│ │ ├── imagen_model_test.dart
│ │ ├── imagen_test.dart
│ │ ├── live_test.dart
│ │ ├── mock.dart
│ │ ├── model_test.dart
│ │ ├── response_parsing_test.dart
│ │ ├── schema_test.dart
│ │ ├── server_template_test.dart
│ │ ├── tool_test.dart
│ │ └── utils/
│ │ ├── matchers.dart
│ │ └── stub_client.dart
│ ├── firebase_analytics/
│ │ ├── analysis_options.yaml
│ │ ├── firebase_analytics/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── kotlin/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── analytics/
│ │ │ │ │ ├── Constants.kt
│ │ │ │ │ ├── FlutterFirebaseAnalyticsPlugin.kt
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.kt
│ │ │ │ │ └── GeneratedAndroidFirebaseAnalytics.g.kt
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── analytics/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ └── tabs_page.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── firebase_analytics/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ ├── Sources/
│ │ │ │ │ │ └── firebase_analytics/
│ │ │ │ │ │ ├── Constants.swift
│ │ │ │ │ │ ├── FirebaseAnalyticsMessages.g.swift
│ │ │ │ │ │ ├── FirebaseAnalyticsPlugin.swift
│ │ │ │ │ │ └── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ └── analytics_storekit_config.storekit
│ │ │ │ ├── firebase_analytics.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_analytics.dart
│ │ │ │ ├── observer.dart
│ │ │ │ └── src/
│ │ │ │ └── firebase_analytics.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_analytics/
│ │ │ │ │ └── Package.swift
│ │ │ │ └── firebase_analytics.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_analytics_test.dart
│ │ │ │ └── mock.dart
│ │ │ └── windows/
│ │ │ ├── messages.g.cpp
│ │ │ └── messages.g.h
│ │ ├── firebase_analytics_platform_interface/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_analytics_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── analytics_call_options.dart
│ │ │ │ ├── analytics_event_item.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_analytics.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ └── platform_interface/
│ │ │ │ └── platform_interface_firebase_analytics.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── mock.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ └── platform_interface_tests/
│ │ │ └── platform_interface_analytics_test.dart
│ │ └── firebase_analytics_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_analytics_web.dart
│ │ │ ├── interop/
│ │ │ │ ├── analytics.dart
│ │ │ │ └── analytics_interop.dart
│ │ │ ├── src/
│ │ │ │ └── firebase_analytics_version.dart
│ │ │ └── utils/
│ │ │ └── exception.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── firebase_analytics_web_test.dart
│ │ └── firebase_analytics_web_test.mocks.dart
│ ├── firebase_app_check/
│ │ ├── firebase_app_check/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── appcheck/
│ │ │ │ │ ├── FlutterFirebaseAppCheckPlugin.java
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.java
│ │ │ │ │ └── TokenChannelStreamHandler.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── appcheck/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── Runner.entitlements
│ │ │ │ │ │ ├── RunnerRelease.entitlements
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── firebase_app_check/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_app_check/
│ │ │ │ │ ├── FLTAppCheckProvider.m
│ │ │ │ │ ├── FLTAppCheckProviderFactory.m
│ │ │ │ │ ├── FLTFirebaseAppCheckPlugin.m
│ │ │ │ │ ├── FLTTokenRefreshStreamHandler.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ └── include/
│ │ │ │ │ ├── FLTAppCheckProvider.h
│ │ │ │ │ ├── FLTAppCheckProviderFactory.h
│ │ │ │ │ ├── FLTFirebaseAppCheckPlugin.h
│ │ │ │ │ └── FLTTokenRefreshStreamHandler.h
│ │ │ │ ├── firebase_app_check.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_app_check.dart
│ │ │ │ └── src/
│ │ │ │ └── firebase_app_check.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_app_check/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_app_check/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_app_check.podspec
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── firebase_app_check_test.dart
│ │ │ └── mock.dart
│ │ ├── firebase_app_check_platform_interface/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_app_check_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── android_provider.dart
│ │ │ │ ├── android_providers.dart
│ │ │ │ ├── apple_provider.dart
│ │ │ │ ├── apple_providers.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_app_check.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── exception.dart
│ │ │ │ │ └── provider_to_string.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ └── platform_interface_firebase_app_check.dart
│ │ │ │ └── web_providers.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── method_channel_tests/
│ │ │ │ ├── method_channel_firebase_app_check_test.dart
│ │ │ │ └── utils/
│ │ │ │ └── provider_to_string_test.dart
│ │ │ ├── mock.dart
│ │ │ └── platform_interface_tests/
│ │ │ └── platform_interface_app_check_test.dart
│ │ └── firebase_app_check_web/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_app_check_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_app_check_version.dart
│ │ │ ├── internals.dart
│ │ │ └── interop/
│ │ │ ├── app_check.dart
│ │ │ └── app_check_interop.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── firebase_app_check_web_test.dart
│ │ └── firebase_app_check_web_test.mocks.dart
│ ├── firebase_app_installations/
│ │ ├── firebase_app_installations/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── installations/
│ │ │ │ │ └── firebase_app_installations/
│ │ │ │ │ ├── FirebaseInstallationsPlugin.java
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.java
│ │ │ │ │ └── TokenChannelStreamHandler.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── installations/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── firebase_app_installations/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_app_installations/
│ │ │ │ │ ├── Constants.swift
│ │ │ │ │ ├── FirebaseInstallationsPlugin.swift
│ │ │ │ │ ├── IdChangedStreamHandler.swift
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── firebase_app_installations.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_app_installations.dart
│ │ │ │ └── src/
│ │ │ │ └── firebase_app_installations.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_app_installations/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_app_installations/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_app_installations.podspec
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── firebase_installations_test.dart
│ │ ├── firebase_app_installations_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── analysis_options.yaml
│ │ │ ├── lib/
│ │ │ │ ├── firebase_app_installations_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_app_installations.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ └── platform_interface/
│ │ │ │ └── firebase_app_installations_platform_interface.dart
│ │ │ └── pubspec.yaml
│ │ └── firebase_app_installations_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib/
│ │ │ ├── firebase_app_installations_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_app_installations_version.dart
│ │ │ ├── guard.dart
│ │ │ └── interop/
│ │ │ ├── installations.dart
│ │ │ └── installations_interop.dart
│ │ └── pubspec.yaml
│ ├── firebase_auth/
│ │ ├── analysis_options.yaml
│ │ ├── firebase_auth/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── auth/
│ │ │ │ │ ├── AuthStateChannelStreamHandler.java
│ │ │ │ │ ├── Constants.java
│ │ │ │ │ ├── FlutterFirebaseAuthPlugin.java
│ │ │ │ │ ├── FlutterFirebaseAuthPluginException.java
│ │ │ │ │ ├── FlutterFirebaseAuthRegistrar.java
│ │ │ │ │ ├── FlutterFirebaseAuthUser.java
│ │ │ │ │ ├── FlutterFirebaseMultiFactor.java
│ │ │ │ │ ├── FlutterFirebaseTotpMultiFactor.java
│ │ │ │ │ ├── FlutterFirebaseTotpSecret.java
│ │ │ │ │ ├── GeneratedAndroidFirebaseAuth.java
│ │ │ │ │ ├── IdTokenChannelStreamHandler.java
│ │ │ │ │ ├── PhoneNumberVerificationStreamHandler.java
│ │ │ │ │ └── PigeonParser.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── auth/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── Runner-Bridging-Header.h
│ │ │ │ │ │ ├── Runner.entitlements
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── auth.dart
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ └── profile.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── web/
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── manifest.json
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── ios/
│ │ │ │ ├── firebase_auth/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_auth/
│ │ │ │ │ ├── FLTAuthStateChannelStreamHandler.m
│ │ │ │ │ ├── FLTFirebaseAuthPlugin.m
│ │ │ │ │ ├── FLTIdTokenChannelStreamHandler.m
│ │ │ │ │ ├── FLTPhoneNumberVerificationStreamHandler.m
│ │ │ │ │ ├── PigeonParser.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── firebase_auth_messages.g.m
│ │ │ │ │ └── include/
│ │ │ │ │ ├── Private/
│ │ │ │ │ │ ├── FLTAuthStateChannelStreamHandler.h
│ │ │ │ │ │ ├── FLTIdTokenChannelStreamHandler.h
│ │ │ │ │ │ ├── FLTPhoneNumberVerificationStreamHandler.h
│ │ │ │ │ │ └── PigeonParser.h
│ │ │ │ │ └── Public/
│ │ │ │ │ ├── CustomPigeonHeader.h
│ │ │ │ │ ├── FLTFirebaseAuthPlugin.h
│ │ │ │ │ └── firebase_auth_messages.g.h
│ │ │ │ ├── firebase_auth.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_auth.dart
│ │ │ │ └── src/
│ │ │ │ ├── confirmation_result.dart
│ │ │ │ ├── firebase_auth.dart
│ │ │ │ ├── multi_factor.dart
│ │ │ │ ├── recaptcha_verifier.dart
│ │ │ │ ├── user.dart
│ │ │ │ └── user_credential.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_auth/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_auth/
│ │ │ │ │ └── Resource/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_auth.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_auth_test.dart
│ │ │ │ ├── mock.dart
│ │ │ │ └── user_test.dart
│ │ │ └── windows/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── firebase_auth_plugin.cpp
│ │ │ ├── firebase_auth_plugin.h
│ │ │ ├── firebase_auth_plugin_c_api.cpp
│ │ │ ├── include/
│ │ │ │ └── firebase_auth/
│ │ │ │ └── firebase_auth_plugin_c_api.h
│ │ │ ├── messages.g.cpp
│ │ │ ├── messages.g.h
│ │ │ ├── plugin_version.h.in
│ │ │ └── test/
│ │ │ └── firebase_auth_plugin_test.cpp
│ │ ├── firebase_auth_platform_interface/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_auth_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── action_code_info.dart
│ │ │ │ ├── action_code_settings.dart
│ │ │ │ ├── additional_user_info.dart
│ │ │ │ ├── auth_credential.dart
│ │ │ │ ├── auth_provider.dart
│ │ │ │ ├── auth_settings.dart
│ │ │ │ ├── firebase_auth_exception.dart
│ │ │ │ ├── firebase_auth_multi_factor_exception.dart
│ │ │ │ ├── id_token_result.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_auth.dart
│ │ │ │ │ ├── method_channel_multi_factor.dart
│ │ │ │ │ ├── method_channel_user.dart
│ │ │ │ │ ├── method_channel_user_credential.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── convert_auth_provider.dart
│ │ │ │ │ ├── exception.dart
│ │ │ │ │ ├── phone_auth_callbacks.dart
│ │ │ │ │ └── pigeon_helper.dart
│ │ │ │ ├── password_policy/
│ │ │ │ │ ├── password_policy.dart
│ │ │ │ │ ├── password_policy_api.dart
│ │ │ │ │ ├── password_policy_impl.dart
│ │ │ │ │ └── password_validation_status.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ ├── platform_interface_confirmation_result.dart
│ │ │ │ │ ├── platform_interface_firebase_auth.dart
│ │ │ │ │ ├── platform_interface_multi_factor.dart
│ │ │ │ │ ├── platform_interface_recaptcha_verifier_factory.dart
│ │ │ │ │ ├── platform_interface_user.dart
│ │ │ │ │ └── platform_interface_user_credential.dart
│ │ │ │ ├── providers/
│ │ │ │ │ ├── apple_auth.dart
│ │ │ │ │ ├── email_auth.dart
│ │ │ │ │ ├── facebook_auth.dart
│ │ │ │ │ ├── game_center_auth.dart
│ │ │ │ │ ├── github_auth.dart
│ │ │ │ │ ├── google_auth.dart
│ │ │ │ │ ├── microsoft_auth.dart
│ │ │ │ │ ├── oauth.dart
│ │ │ │ │ ├── phone_auth.dart
│ │ │ │ │ ├── play_games_auth.dart
│ │ │ │ │ ├── saml_auth.dart
│ │ │ │ │ ├── twitter_auth.dart
│ │ │ │ │ └── yahoo_auth.dart
│ │ │ │ ├── types.dart
│ │ │ │ ├── user_info.dart
│ │ │ │ └── user_metadata.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── action_code_info_test.dart
│ │ │ ├── action_code_settings_test.dart
│ │ │ ├── additional_user_info_test.dart
│ │ │ ├── auth_credential_test.dart
│ │ │ ├── auth_provider_test.dart
│ │ │ ├── auth_settings_test.dart
│ │ │ ├── id_token_result_test.dart
│ │ │ ├── method_channel_tests/
│ │ │ │ ├── method_channel_user_credential_test.dart
│ │ │ │ └── utils_tests/
│ │ │ │ ├── exception_test.dart
│ │ │ │ └── phone_auth_callbacks_test.dart
│ │ │ ├── mock.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ ├── platform_interface_tests/
│ │ │ │ ├── platform_interface_auth_test.dart
│ │ │ │ ├── platform_interface_confirmation_result_test.dart
│ │ │ │ ├── platform_interface_recaptcha_verifier_factory_test.dart
│ │ │ │ ├── platform_interface_user_credential_test.dart
│ │ │ │ └── platform_interface_user_test.dart
│ │ │ ├── providers_tests/
│ │ │ │ ├── email_auth_test.dart
│ │ │ │ ├── facebook_auth_test.dart
│ │ │ │ ├── github_auth_test.dart
│ │ │ │ ├── google_auth_test.dart
│ │ │ │ ├── oauth_test.dart
│ │ │ │ ├── phone_auth_test.dart
│ │ │ │ ├── saml_auth_test.dart
│ │ │ │ └── twitter_auth_test.dart
│ │ │ ├── user_info_test.dart
│ │ │ └── user_metadata_test.dart
│ │ └── firebase_auth_web/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_auth_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_auth_version.dart
│ │ │ ├── firebase_auth_web_confirmation_result.dart
│ │ │ ├── firebase_auth_web_multi_factor.dart
│ │ │ ├── firebase_auth_web_recaptcha_verifier_factory.dart
│ │ │ ├── firebase_auth_web_user.dart
│ │ │ ├── firebase_auth_web_user_credential.dart
│ │ │ ├── interop/
│ │ │ │ ├── auth.dart
│ │ │ │ ├── auth_interop.dart
│ │ │ │ ├── multi_factor.dart
│ │ │ │ └── window_interop.dart
│ │ │ └── utils/
│ │ │ └── web_utils.dart
│ │ └── pubspec.yaml
│ ├── firebase_core/
│ │ ├── analysis_options.yaml
│ │ ├── firebase_core/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── core/
│ │ │ │ │ ├── FlutterFirebaseCorePlugin.java
│ │ │ │ │ ├── FlutterFirebaseCoreRegistrar.java
│ │ │ │ │ ├── FlutterFirebasePlugin.java
│ │ │ │ │ ├── FlutterFirebasePluginRegistry.java
│ │ │ │ │ └── GeneratedAndroidFirebaseCore.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebasecoreexample/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ └── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── web/
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── manifest.json
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── ios/
│ │ │ │ ├── firebase_core/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_core/
│ │ │ │ │ ├── FLTFirebaseCorePlugin.m
│ │ │ │ │ ├── FLTFirebasePlugin.m
│ │ │ │ │ ├── FLTFirebasePluginRegistry.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── dummy.m
│ │ │ │ │ ├── include/
│ │ │ │ │ │ └── firebase_core/
│ │ │ │ │ │ ├── .gitkeep
│ │ │ │ │ │ ├── FLTFirebaseCorePlugin.h
│ │ │ │ │ │ ├── FLTFirebasePlugin.h
│ │ │ │ │ │ ├── FLTFirebasePluginRegistry.h
│ │ │ │ │ │ ├── dummy.h
│ │ │ │ │ │ └── messages.g.h
│ │ │ │ │ └── messages.g.m
│ │ │ │ ├── firebase_core.podspec
│ │ │ │ └── firebase_sdk_version.rb
│ │ │ ├── lib/
│ │ │ │ ├── firebase_core.dart
│ │ │ │ └── src/
│ │ │ │ ├── firebase.dart
│ │ │ │ ├── firebase_app.dart
│ │ │ │ └── port_mapping.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_core/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_core/
│ │ │ │ │ ├── dummy.m
│ │ │ │ │ └── include/
│ │ │ │ │ └── dummy.h
│ │ │ │ └── firebase_core.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ └── firebase_core_test.dart
│ │ │ └── windows/
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── firebase_core_plugin.cpp
│ │ │ ├── firebase_core_plugin.h
│ │ │ ├── firebase_core_plugin_c_api.cpp
│ │ │ ├── flutter_firebase_plugin_registry.cpp
│ │ │ ├── flutter_firebase_plugin_registry.h
│ │ │ ├── include/
│ │ │ │ └── firebase_core/
│ │ │ │ ├── firebase_core_plugin_c_api.h
│ │ │ │ └── flutter_firebase_plugin.h
│ │ │ ├── messages.g.cpp
│ │ │ ├── messages.g.h
│ │ │ └── plugin_version.h.in
│ │ ├── firebase_core_platform_interface/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_core_platform_interface.dart
│ │ │ │ ├── src/
│ │ │ │ │ ├── firebase_core_exceptions.dart
│ │ │ │ │ ├── firebase_exception.dart
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── method_channel/
│ │ │ │ │ │ ├── method_channel_firebase.dart
│ │ │ │ │ │ └── method_channel_firebase_app.dart
│ │ │ │ │ ├── pigeon/
│ │ │ │ │ │ ├── messages.pigeon.dart
│ │ │ │ │ │ ├── mocks.dart
│ │ │ │ │ │ └── test_api.dart
│ │ │ │ │ └── platform_interface/
│ │ │ │ │ ├── platform_interface_firebase.dart
│ │ │ │ │ ├── platform_interface_firebase_app.dart
│ │ │ │ │ └── platform_interface_firebase_plugin.dart
│ │ │ │ └── test.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── firebase_exception_test.dart
│ │ │ ├── firebase_options_test.dart
│ │ │ └── platform_interface_tests/
│ │ │ └── platform_interface_firebase_core_test.dart
│ │ └── firebase_core_web/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_core_web.dart
│ │ │ ├── firebase_core_web_interop.dart
│ │ │ └── src/
│ │ │ ├── firebase_app_web.dart
│ │ │ ├── firebase_core_version.dart
│ │ │ ├── firebase_core_web.dart
│ │ │ ├── firebase_sdk_version.dart
│ │ │ └── interop/
│ │ │ ├── app.dart
│ │ │ ├── app_interop.dart
│ │ │ ├── core.dart
│ │ │ ├── core_interop.dart
│ │ │ ├── package_web_tweaks.dart
│ │ │ └── utils/
│ │ │ ├── es6_interop.dart
│ │ │ ├── func.dart
│ │ │ ├── js.dart
│ │ │ └── utils.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── firebase_core_tt_test.dart
│ │ ├── firebase_core_web_exceptions_test.dart
│ │ └── tools.dart
│ ├── firebase_crashlytics/
│ │ ├── firebase_crashlytics/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java/
│ │ │ │ │ │ ├── com/
│ │ │ │ │ │ │ └── google/
│ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ └── crashlytics/
│ │ │ │ │ │ │ └── FlutterFirebaseCrashlyticsInternal.java
│ │ │ │ │ │ └── io/
│ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ └── crashlytics/
│ │ │ │ │ │ ├── Constants.java
│ │ │ │ │ │ ├── FirebaseCrashlyticsTestCrash.java
│ │ │ │ │ │ ├── FlutterError.java
│ │ │ │ │ │ ├── FlutterFirebaseAppRegistrar.java
│ │ │ │ │ │ └── FlutterFirebaseCrashlyticsPlugin.java
│ │ │ │ │ └── res/
│ │ │ │ │ └── values/
│ │ │ │ │ └── values.xml
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebasecrashlyticsexample/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── crashlytics_add_upload_symbols
│ │ │ │ ├── firebase_crashlytics/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_crashlytics/
│ │ │ │ │ ├── FLTFirebaseCrashlyticsPlugin.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ └── include/
│ │ │ │ │ ├── Crashlytics_Platform.h
│ │ │ │ │ ├── ExceptionModel_Platform.h
│ │ │ │ │ └── FLTFirebaseCrashlyticsPlugin.h
│ │ │ │ ├── firebase_crashlytics.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_crashlytics.dart
│ │ │ │ └── src/
│ │ │ │ ├── firebase_crashlytics.dart
│ │ │ │ └── utils.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_crashlytics/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_crashlytics/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_crashlytics.podspec
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── firebase_crashlytics_test.dart
│ │ │ └── mock.dart
│ │ └── firebase_crashlytics_platform_interface/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_crashlytics_platform_interface.dart
│ │ │ └── src/
│ │ │ ├── method_channel/
│ │ │ │ ├── method_channel_crashlytics.dart
│ │ │ │ └── utils/
│ │ │ │ └── exception.dart
│ │ │ └── platform_interface/
│ │ │ └── platform_interface_crashlytics.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── method_channel_tests/
│ │ │ ├── method_channel_crashlytics_test.dart
│ │ │ └── utils_tests/
│ │ │ └── exception_test.dart
│ │ ├── mock.dart
│ │ └── platform_interface_tests/
│ │ └── platform_interface_crashlytics_test.dart
│ ├── firebase_data_connect/
│ │ ├── analysis_options.yaml
│ │ └── firebase_data_connect/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── example/
│ │ │ ├── .firebase/
│ │ │ │ └── .graphqlrc
│ │ │ ├── .firebaserc
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── .pubignore
│ │ │ ├── README.md
│ │ │ ├── analysis_options.yaml
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── app/
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── local-config.gradle
│ │ │ │ │ └── src/
│ │ │ │ │ ├── debug/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── main/
│ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ └── dataconnect/
│ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ └── res/
│ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── profile/
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ └── settings.gradle
│ │ │ ├── dataconnect/
│ │ │ │ ├── connector/
│ │ │ │ │ ├── connector.yaml
│ │ │ │ │ ├── movie_insert.gql
│ │ │ │ │ ├── mutations.gql
│ │ │ │ │ └── queries.gql
│ │ │ │ ├── dataconnect.yaml
│ │ │ │ └── schema/
│ │ │ │ └── schema.gql
│ │ │ ├── dataconnect.yaml
│ │ │ ├── firebase.json
│ │ │ ├── integration_test/
│ │ │ │ ├── e2e_test.dart
│ │ │ │ ├── generation_e2e.dart
│ │ │ │ ├── instance_e2e.dart
│ │ │ │ ├── listen_e2e.dart
│ │ │ │ └── query_e2e.dart
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Flutter/
│ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ └── Release.xcconfig
│ │ │ │ ├── Podfile
│ │ │ │ ├── Runner/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ └── README.md
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── Runner.xcscheme
│ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ └── RunnerTests/
│ │ │ │ └── RunnerTests.swift
│ │ │ ├── lib/
│ │ │ │ ├── firebase_options.dart
│ │ │ │ ├── generated/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── add_date_and_timestamp.dart
│ │ │ │ │ ├── add_director_to_movie.dart
│ │ │ │ │ ├── add_person.dart
│ │ │ │ │ ├── add_timestamp.dart
│ │ │ │ │ ├── create_movie.dart
│ │ │ │ │ ├── delete_movie.dart
│ │ │ │ │ ├── get_movie.dart
│ │ │ │ │ ├── list_movies.dart
│ │ │ │ │ ├── list_movies_by_partial_title.dart
│ │ │ │ │ ├── list_persons.dart
│ │ │ │ │ ├── list_thing.dart
│ │ │ │ │ ├── list_timestamps.dart
│ │ │ │ │ ├── movies.dart
│ │ │ │ │ ├── seed_data.dart
│ │ │ │ │ ├── seed_movies.dart
│ │ │ │ │ └── thing.dart
│ │ │ │ ├── login.dart
│ │ │ │ └── main.dart
│ │ │ ├── macos/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── Flutter/
│ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ ├── Podfile
│ │ │ │ ├── Runner/
│ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ └── Contents.json
│ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ ├── Configs/
│ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ ├── Info.plist
│ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ └── Release.entitlements
│ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── xcschemes/
│ │ │ │ │ └── Runner.xcscheme
│ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata/
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ └── RunnerTests/
│ │ │ │ └── RunnerTests.swift
│ │ │ ├── pubspec.yaml
│ │ │ ├── schema/
│ │ │ │ └── schema.gql
│ │ │ ├── start-firebase-emulator.sh
│ │ │ ├── test_driver/
│ │ │ │ └── integration_test.dart
│ │ │ └── web/
│ │ │ ├── index.html
│ │ │ ├── manifest.json
│ │ │ └── wasm_index.html
│ │ ├── generate_proto.sh
│ │ ├── lib/
│ │ │ ├── firebase_data_connect.dart
│ │ │ └── src/
│ │ │ ├── any_value.dart
│ │ │ ├── cache/
│ │ │ │ ├── cache.dart
│ │ │ │ ├── cache_data_types.dart
│ │ │ │ ├── cache_provider.dart
│ │ │ │ ├── in_memory_cache_provider.dart
│ │ │ │ ├── result_tree_processor.dart
│ │ │ │ └── sqlite_cache_provider.dart
│ │ │ ├── common/
│ │ │ │ ├── common_library.dart
│ │ │ │ ├── dataconnect_error.dart
│ │ │ │ └── dataconnect_options.dart
│ │ │ ├── core/
│ │ │ │ ├── empty_serializer.dart
│ │ │ │ └── ref.dart
│ │ │ ├── dataconnect_version.dart
│ │ │ ├── firebase_data_connect.dart
│ │ │ ├── generated/
│ │ │ │ ├── connector_service.pb.dart
│ │ │ │ ├── connector_service.pbenum.dart
│ │ │ │ ├── connector_service.pbgrpc.dart
│ │ │ │ ├── connector_service.pbjson.dart
│ │ │ │ ├── google/
│ │ │ │ │ └── protobuf/
│ │ │ │ │ ├── duration.pb.dart
│ │ │ │ │ ├── duration.pbenum.dart
│ │ │ │ │ ├── duration.pbjson.dart
│ │ │ │ │ ├── struct.pb.dart
│ │ │ │ │ ├── struct.pbenum.dart
│ │ │ │ │ └── struct.pbjson.dart
│ │ │ │ ├── graphql_error.pb.dart
│ │ │ │ ├── graphql_error.pbenum.dart
│ │ │ │ ├── graphql_error.pbjson.dart
│ │ │ │ ├── graphql_response_extensions.pb.dart
│ │ │ │ ├── graphql_response_extensions.pbenum.dart
│ │ │ │ └── graphql_response_extensions.pbjson.dart
│ │ │ ├── network/
│ │ │ │ ├── grpc_library.dart
│ │ │ │ ├── grpc_transport.dart
│ │ │ │ ├── rest_library.dart
│ │ │ │ ├── rest_transport.dart
│ │ │ │ ├── transport_library.dart
│ │ │ │ └── transport_stub.dart
│ │ │ ├── optional.dart
│ │ │ └── timestamp.dart
│ │ ├── protos/
│ │ │ ├── connector_service.proto
│ │ │ ├── firebase/
│ │ │ │ ├── graphql_error.proto
│ │ │ │ └── graphql_response_extensions.proto
│ │ │ └── google/
│ │ │ ├── api/
│ │ │ │ └── field_behavior.proto
│ │ │ ├── duration.proto
│ │ │ └── struct.proto
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── src/
│ │ ├── any_test.dart
│ │ ├── cache/
│ │ │ ├── cache_manager_test.dart
│ │ │ ├── cache_manager_test.mocks.dart
│ │ │ └── result_tree_processor_test.dart
│ │ ├── common/
│ │ │ ├── common_library_test.dart
│ │ │ ├── dataconnect_error_test.dart
│ │ │ └── dataconnect_options_test.dart
│ │ ├── core/
│ │ │ ├── empty_serializer_test.dart
│ │ │ └── ref_test.dart
│ │ ├── firebase_data_connect_test.dart
│ │ ├── firebase_data_connect_test.mocks.dart
│ │ ├── network/
│ │ │ ├── rest_transport_test.dart
│ │ │ ├── rest_transport_test.mocks.dart
│ │ │ └── transport_stub_test.dart
│ │ ├── optional_test.dart
│ │ └── timestamp_test.dart
│ ├── firebase_database/
│ │ ├── analysis_options.yaml
│ │ ├── firebase_database/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── analysis_options.yaml
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── kotlin/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── database/
│ │ │ │ │ ├── ChildEventsProxy.kt
│ │ │ │ │ ├── Constants.kt
│ │ │ │ │ ├── EventStreamHandler.kt
│ │ │ │ │ ├── EventsProxy.kt
│ │ │ │ │ ├── FirebaseDatabasePlugin.kt
│ │ │ │ │ ├── FlutterDataSnapshotPayload.kt
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.kt
│ │ │ │ │ ├── FlutterFirebaseDatabaseException.kt
│ │ │ │ │ ├── GeneratedAndroidFirebaseDatabase.g.kt
│ │ │ │ │ ├── QueryBuilder.kt
│ │ │ │ │ ├── TransactionExecutor.kt
│ │ │ │ │ ├── TransactionHandler.kt
│ │ │ │ │ └── ValueEventsProxy.kt
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── database/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── Runner-Bridging-Header.h
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ ├── RunnerTests/
│ │ │ │ │ │ └── RunnerTests.swift
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ └── web/
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── firebase_database/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_database/
│ │ │ │ │ ├── Constants.swift
│ │ │ │ │ ├── FLTFirebaseDatabaseObserveStreamHandler.swift
│ │ │ │ │ ├── FLTFirebaseDatabasePlugin.swift
│ │ │ │ │ ├── FLTFirebaseDatabaseUtils.swift
│ │ │ │ │ ├── FirebaseDatabaseMessages.g.swift
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── firebase_database.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_database.dart
│ │ │ │ ├── src/
│ │ │ │ │ ├── data_snapshot.dart
│ │ │ │ │ ├── database_event.dart
│ │ │ │ │ ├── database_reference.dart
│ │ │ │ │ ├── firebase_database.dart
│ │ │ │ │ ├── on_disconnect.dart
│ │ │ │ │ ├── query.dart
│ │ │ │ │ └── transaction_result.dart
│ │ │ │ └── ui/
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── firebase_animated_list.dart
│ │ │ │ ├── firebase_list.dart
│ │ │ │ ├── firebase_sorted_list.dart
│ │ │ │ └── utils/
│ │ │ │ └── stream_subscriber_mixin.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_database/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_database/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_database.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_list_test.dart
│ │ │ │ ├── instance_test.dart
│ │ │ │ └── mock.dart
│ │ │ └── windows/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── firebase_database_plugin.cpp
│ │ │ ├── firebase_database_plugin.h
│ │ │ ├── firebase_database_plugin_c_api.cpp
│ │ │ ├── include/
│ │ │ │ └── firebase_database/
│ │ │ │ └── firebase_database_plugin_c_api.h
│ │ │ ├── messages.g.cpp
│ │ │ ├── messages.g.h
│ │ │ └── plugin_version.h.in
│ │ ├── firebase_database_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_database_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_data_snapshot.dart
│ │ │ │ │ ├── method_channel_database.dart
│ │ │ │ │ ├── method_channel_database_event.dart
│ │ │ │ │ ├── method_channel_database_reference.dart
│ │ │ │ │ ├── method_channel_on_disconnect.dart
│ │ │ │ │ ├── method_channel_query.dart
│ │ │ │ │ ├── method_channel_transaction_result.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── exception.dart
│ │ │ │ │ ├── push_id_generator.dart
│ │ │ │ │ └── utils.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ ├── platform_interface_data_snapshot.dart
│ │ │ │ │ ├── platform_interface_database.dart
│ │ │ │ │ ├── platform_interface_database_event.dart
│ │ │ │ │ ├── platform_interface_database_reference.dart
│ │ │ │ │ ├── platform_interface_on_disconnect.dart
│ │ │ │ │ ├── platform_interface_query.dart
│ │ │ │ │ └── platform_interface_transaction_result.dart
│ │ │ │ ├── query_modifiers.dart
│ │ │ │ ├── server_value.dart
│ │ │ │ └── transaction.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── database_reference_test.dart
│ │ │ ├── firebase_database_test.dart
│ │ │ ├── method_channel_test.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ ├── query_modifiers_test.dart
│ │ │ └── test_common.dart
│ │ └── firebase_database_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib/
│ │ │ ├── firebase_database_web.dart
│ │ │ └── src/
│ │ │ ├── data_snapshot_web.dart
│ │ │ ├── database_event_web.dart
│ │ │ ├── database_reference_web.dart
│ │ │ ├── firebase_database_version.dart
│ │ │ ├── interop/
│ │ │ │ ├── data_snapshot_interop.dart
│ │ │ │ ├── database.dart
│ │ │ │ ├── database_interop.dart
│ │ │ │ ├── query_interop.dart
│ │ │ │ └── reference_interop.dart
│ │ │ ├── ondisconnect_web.dart
│ │ │ ├── query_web.dart
│ │ │ ├── transaction_result_web.dart
│ │ │ └── utils/
│ │ │ ├── exception.dart
│ │ │ └── snapshot_utils.dart
│ │ └── pubspec.yaml
│ ├── firebase_in_app_messaging/
│ │ ├── firebase_in_app_messaging/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── inappmessaging/
│ │ │ │ │ ├── FirebaseInAppMessagingPlugin.java
│ │ │ │ │ └── FlutterFirebaseAppRegistrar.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── tests/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ └── Podfile
│ │ │ │ └── pubspec.yaml
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── firebase_in_app_messaging/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_in_app_messaging/
│ │ │ │ │ ├── FirebaseInAppMessagingPlugin.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ └── include/
│ │ │ │ │ └── FirebaseInAppMessagingPlugin.h
│ │ │ │ ├── firebase_in_app_messaging.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ └── firebase_in_app_messaging.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ └── firebase_in_app_messaging_test.dart
│ │ └── firebase_in_app_messaging_platform_interface/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_in_app_messaging_platform_interface.dart
│ │ │ └── src/
│ │ │ ├── method_channel/
│ │ │ │ ├── method_channel_firebase_in_app_messaging.dart
│ │ │ │ └── utils/
│ │ │ │ └── exception.dart
│ │ │ └── platform_interface/
│ │ │ └── platform_interface_firebase_in_app_messaging.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── mock.dart
│ │ └── platform_interface/
│ │ └── platform_interface_firebase_in_app_messaging_test.dart
│ ├── firebase_messaging/
│ │ ├── firebase_messaging/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── messaging/
│ │ │ │ │ ├── ContextHolder.java
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.java
│ │ │ │ │ ├── FlutterFirebaseMessagingBackgroundExecutor.java
│ │ │ │ │ ├── FlutterFirebaseMessagingBackgroundService.java
│ │ │ │ │ ├── FlutterFirebaseMessagingInitProvider.java
│ │ │ │ │ ├── FlutterFirebaseMessagingPlugin.java
│ │ │ │ │ ├── FlutterFirebaseMessagingReceiver.java
│ │ │ │ │ ├── FlutterFirebaseMessagingService.java
│ │ │ │ │ ├── FlutterFirebaseMessagingStore.java
│ │ │ │ │ ├── FlutterFirebaseMessagingUtils.java
│ │ │ │ │ ├── FlutterFirebasePermissionManager.java
│ │ │ │ │ ├── FlutterFirebaseRemoteMessageLiveData.java
│ │ │ │ │ ├── FlutterFirebaseTokenLiveData.java
│ │ │ │ │ ├── JobIntentService.java
│ │ │ │ │ └── PluginRegistrantException.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── messaging/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── bundled-service-worker/
│ │ │ │ │ ├── firebase-messaging-sw.ts
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── Firebase Cloud Messaging Example.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ ├── message.dart
│ │ │ │ │ ├── message_list.dart
│ │ │ │ │ ├── permissions.dart
│ │ │ │ │ └── token_monitor.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── scripts/
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── send-message.js
│ │ │ │ └── web/
│ │ │ │ ├── firebase-messaging-sw.js
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── firebase_messaging/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_messaging/
│ │ │ │ │ ├── FLTFirebaseMessagingPlugin.m
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── PrivacyInfo.xcprivacy
│ │ │ │ │ └── include/
│ │ │ │ │ └── FLTFirebaseMessagingPlugin.h
│ │ │ │ ├── firebase_messaging.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_messaging.dart
│ │ │ │ └── src/
│ │ │ │ └── messaging.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_messaging/
│ │ │ │ │ └── Package.swift
│ │ │ │ └── firebase_messaging.podspec
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── firebase_messaging_test.dart
│ │ │ └── mock.dart
│ │ ├── firebase_messaging_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_messaging_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_messaging.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ ├── notification_settings.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ └── platform_interface_messaging.dart
│ │ │ │ ├── remote_message.dart
│ │ │ │ ├── remote_notification.dart
│ │ │ │ ├── types.dart
│ │ │ │ └── utils.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── method_channel_tests/
│ │ │ │ └── method_channel_messaging_test.dart
│ │ │ ├── mock.dart
│ │ │ ├── notification_test.dart
│ │ │ ├── platform_interface_tests/
│ │ │ │ └── platform_interface_messaging_test.dart
│ │ │ ├── remote_message_test.dart
│ │ │ └── utils_test.dart
│ │ └── firebase_messaging_web/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── ios/
│ │ │ └── firebase_messaging_web.podspec
│ │ ├── lib/
│ │ │ ├── firebase_messaging_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_messaging_version.dart
│ │ │ ├── internals.dart
│ │ │ ├── interop/
│ │ │ │ ├── messaging.dart
│ │ │ │ └── messaging_interop.dart
│ │ │ └── utils.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── firebase_messaging_web_test.dart
│ ├── firebase_ml_model_downloader/
│ │ ├── firebase_ml_model_downloader/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle/
│ │ │ │ │ └── wrapper/
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── java/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── firebase_ml_model_downloader/
│ │ │ │ │ ├── FirebaseModelDownloaderPlugin.java
│ │ │ │ │ └── FlutterFirebaseAppRegistrar.java
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── tests/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── Runner-Bridging-Header.h
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ └── pubspec.yaml
│ │ │ ├── ios/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── firebase_ml_model_downloader/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_ml_model_downloader/
│ │ │ │ │ ├── Constants.swift
│ │ │ │ │ ├── FirebaseModelDownloaderPlugin.swift
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── firebase_ml_model_downloader.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_ml_model_downloader.dart
│ │ │ │ └── src/
│ │ │ │ └── firebase_ml_model_downloader.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_ml_model_downloader/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_ml_model_downloader/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_ml_model_downloader.podspec
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── firebase_ml_model_downloader_test.dart
│ │ │ └── mock.dart
│ │ └── firebase_ml_model_downloader_platform_interface/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_ml_model_downloader_platform_interface.dart
│ │ │ └── src/
│ │ │ ├── custom_model.dart
│ │ │ ├── download_conditions.dart
│ │ │ ├── download_type.dart
│ │ │ ├── method_channel/
│ │ │ │ ├── method_channel_firebase_ml_model_downloader.dart
│ │ │ │ └── utils/
│ │ │ │ └── exception.dart
│ │ │ └── platform_interface/
│ │ │ └── platform_interface_firebase_ml_model_downloader.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── method_channel_tests/
│ │ │ └── method_channel_firebase_ml_model_downloader_test.dart
│ │ ├── mock.dart
│ │ └── platform_interface_tests/
│ │ └── platform_interface_firebase_ml_model_downloader_test.dart
│ ├── firebase_performance/
│ │ ├── analysis_options.yaml
│ │ ├── firebase_performance/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── kotlin/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── performance/
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.kt
│ │ │ │ │ ├── FlutterFirebasePerformancePlugin.kt
│ │ │ │ │ └── GeneratedAndroidFirebasePerformance.g.kt
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── tests/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── firebase.json
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── test_driver/
│ │ │ │ │ └── integration_test.dart
│ │ │ │ └── web/
│ │ │ │ ├── first-input-delay.js
│ │ │ │ ├── index.html
│ │ │ │ └── manifest.json
│ │ │ ├── ios/
│ │ │ │ ├── firebase_performance/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_performance/
│ │ │ │ │ ├── Constants.swift
│ │ │ │ │ ├── FirebasePerformanceMessages.g.swift
│ │ │ │ │ ├── FirebasePerformancePlugin.swift
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── firebase_performance.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_performance.dart
│ │ │ │ └── src/
│ │ │ │ ├── firebase_performance.dart
│ │ │ │ ├── http_metric.dart
│ │ │ │ └── trace.dart
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_performance_test.dart
│ │ │ │ └── mock.dart
│ │ │ └── windows/
│ │ │ ├── messages.g.cpp
│ │ │ └── messages.g.h
│ │ ├── firebase_performance_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── .metadata
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_performance_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_performance.dart
│ │ │ │ │ ├── method_channel_http_metric.dart
│ │ │ │ │ ├── method_channel_trace.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ └── platform_interface/
│ │ │ │ ├── platform_interface_firebase_performance.dart
│ │ │ │ ├── platform_interface_http_metric.dart
│ │ │ │ └── platform_interface_trace.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── method_channel_tests/
│ │ │ │ ├── method_channel_firebase_performance_test.dart
│ │ │ │ ├── method_channel_http_metric_test.dart
│ │ │ │ └── method_channel_trace_test.dart
│ │ │ ├── mock.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ └── platform_interface_tests/
│ │ │ ├── platform_interface_firebase_performance_test.dart
│ │ │ ├── platform_interface_http_metric_test.dart
│ │ │ └── platform_interface_trace_test.dart
│ │ └── firebase_performance_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_performance_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_performance_version.dart
│ │ │ ├── internals.dart
│ │ │ ├── interop/
│ │ │ │ ├── performance.dart
│ │ │ │ └── performance_interop.dart
│ │ │ └── trace.dart
│ │ └── pubspec.yaml
│ ├── firebase_remote_config/
│ │ ├── analysis_options.yaml
│ │ ├── firebase_remote_config/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── kotlin/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── firebaseremoteconfig/
│ │ │ │ │ ├── FirebaseRemoteConfigPlugin.kt
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.kt
│ │ │ │ │ └── GeneratedAndroidFirebaseRemoteConfig.g.kt
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebase/
│ │ │ │ │ │ │ │ └── remoteconfig/
│ │ │ │ │ │ │ │ └── example/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ ├── AppIcon.appiconset/
│ │ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ │ └── LaunchImage.imageset/
│ │ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── home_page.dart
│ │ │ │ │ └── main.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ ├── RunnerTests/
│ │ │ │ │ │ └── RunnerTests.swift
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── web/
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── manifest.json
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── ios/
│ │ │ │ ├── firebase_remote_config/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_remote_config/
│ │ │ │ │ ├── Constants.swift
│ │ │ │ │ ├── FirebaseRemoteConfigMessages.g.swift
│ │ │ │ │ ├── FirebaseRemoteConfigPlugin.swift
│ │ │ │ │ ├── FirebaseRemoteConfigUtils.swift
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── firebase_remote_config.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_remote_config.dart
│ │ │ │ └── src/
│ │ │ │ └── firebase_remote_config.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_remote_config/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_remote_config/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_remote_config.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_remote_config_test.dart
│ │ │ │ └── mock.dart
│ │ │ └── windows/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── firebase_remote_config_plugin.cpp
│ │ │ ├── firebase_remote_config_plugin.h
│ │ │ ├── firebase_remote_config_plugin_c_api.cpp
│ │ │ ├── include/
│ │ │ │ └── firebase_remote_config/
│ │ │ │ └── firebase_remote_config_plugin_c_api.h
│ │ │ ├── messages.g.cpp
│ │ │ ├── messages.g.h
│ │ │ └── plugin_version.h.in
│ │ ├── firebase_remote_config_platform_interface/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_remote_config_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_remote_config.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ └── platform_interface_firebase_remote_config.dart
│ │ │ │ ├── remote_config_settings.dart
│ │ │ │ ├── remote_config_status.dart
│ │ │ │ ├── remote_config_update.dart
│ │ │ │ └── remote_config_value.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ └── pubspec.yaml
│ │ └── firebase_remote_config_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── firebase_remote_config_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_remote_config_version.dart
│ │ │ ├── internals.dart
│ │ │ └── interop/
│ │ │ ├── firebase_remote_config.dart
│ │ │ └── firebase_remote_config_interop.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ ├── firebase_remote_config_web_test.dart
│ │ └── firebase_remote_config_web_test.mocks.dart
│ ├── firebase_storage/
│ │ ├── all_lint_rules.yaml
│ │ ├── analysis_options.yaml
│ │ ├── firebase_storage/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── android/
│ │ │ │ ├── build.gradle
│ │ │ │ ├── gradle.properties
│ │ │ │ ├── local-config.gradle
│ │ │ │ ├── settings.gradle
│ │ │ │ ├── src/
│ │ │ │ │ └── main/
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ └── kotlin/
│ │ │ │ │ └── io/
│ │ │ │ │ └── flutter/
│ │ │ │ │ └── plugins/
│ │ │ │ │ └── firebase/
│ │ │ │ │ └── storage/
│ │ │ │ │ ├── FlutterFirebaseAppRegistrar.kt
│ │ │ │ │ ├── FlutterFirebaseStorageException.kt
│ │ │ │ │ ├── FlutterFirebaseStoragePlugin.kt
│ │ │ │ │ ├── FlutterFirebaseStorageTask.kt
│ │ │ │ │ ├── GeneratedAndroidFirebaseStorage.g.kt
│ │ │ │ │ └── TaskStateChannelStreamHandler.kt
│ │ │ │ └── user-agent.gradle
│ │ │ ├── example/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .metadata
│ │ │ │ ├── README.md
│ │ │ │ ├── analysis_options.yaml
│ │ │ │ ├── android/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── build.gradle
│ │ │ │ │ │ ├── google-services.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ │ ├── main/
│ │ │ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ │ │ ├── kotlin/
│ │ │ │ │ │ │ │ └── io/
│ │ │ │ │ │ │ │ └── flutter/
│ │ │ │ │ │ │ │ └── plugins/
│ │ │ │ │ │ │ │ └── firebasestorageexample/
│ │ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ │ │ └── res/
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── drawable-v21/
│ │ │ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ │ ├── values/
│ │ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ │ └── values-night/
│ │ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── profile/
│ │ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── build.gradle
│ │ │ │ │ ├── gradle/
│ │ │ │ │ │ └── wrapper/
│ │ │ │ │ │ └── gradle-wrapper.properties
│ │ │ │ │ ├── gradle.properties
│ │ │ │ │ └── settings.gradle
│ │ │ │ ├── assets/
│ │ │ │ │ └── hello.txt
│ │ │ │ ├── cors.json
│ │ │ │ ├── ios/
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ └── Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.h
│ │ │ │ │ │ ├── AppDelegate.m
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ │ │ └── Main.storyboard
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ └── main.m
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ └── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── lib/
│ │ │ │ │ ├── firebase_options.dart
│ │ │ │ │ ├── main.dart
│ │ │ │ │ └── save_as/
│ │ │ │ │ ├── save_as.dart
│ │ │ │ │ ├── save_as_html.dart
│ │ │ │ │ └── save_as_interface.dart
│ │ │ │ ├── macos/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Flutter/
│ │ │ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ │ │ └── Flutter-Release.xcconfig
│ │ │ │ │ ├── Podfile
│ │ │ │ │ ├── Runner/
│ │ │ │ │ │ ├── AppDelegate.swift
│ │ │ │ │ │ ├── Assets.xcassets/
│ │ │ │ │ │ │ └── AppIcon.appiconset/
│ │ │ │ │ │ │ └── Contents.json
│ │ │ │ │ │ ├── Base.lproj/
│ │ │ │ │ │ │ └── MainMenu.xib
│ │ │ │ │ │ ├── Configs/
│ │ │ │ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ │ │ │ ├── Debug.xcconfig
│ │ │ │ │ │ │ ├── Release.xcconfig
│ │ │ │ │ │ │ └── Warnings.xcconfig
│ │ │ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ │ │ ├── GoogleService-Info.plist
│ │ │ │ │ │ ├── Info.plist
│ │ │ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ │ │ └── Release.entitlements
│ │ │ │ │ ├── Runner.xcodeproj/
│ │ │ │ │ │ ├── project.pbxproj
│ │ │ │ │ │ ├── project.xcworkspace/
│ │ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── xcschemes/
│ │ │ │ │ │ └── Runner.xcscheme
│ │ │ │ │ ├── Runner.xcworkspace/
│ │ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ │ └── xcshareddata/
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ │ └── firebase_app_id_file.json
│ │ │ │ ├── pubspec.yaml
│ │ │ │ ├── web/
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── manifest.json
│ │ │ │ └── windows/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── flutter/
│ │ │ │ │ └── CMakeLists.txt
│ │ │ │ └── runner/
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── Runner.rc
│ │ │ │ ├── flutter_window.cpp
│ │ │ │ ├── flutter_window.h
│ │ │ │ ├── main.cpp
│ │ │ │ ├── resource.h
│ │ │ │ ├── runner.exe.manifest
│ │ │ │ ├── utils.cpp
│ │ │ │ ├── utils.h
│ │ │ │ ├── win32_window.cpp
│ │ │ │ └── win32_window.h
│ │ │ ├── ios/
│ │ │ │ ├── firebase_storage/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_storage/
│ │ │ │ │ ├── FLTFirebaseStoragePlugin.swift
│ │ │ │ │ ├── FirebaseStorageMessages.g.swift
│ │ │ │ │ ├── Resources/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ └── TaskStateChannelStreamHandler.swift
│ │ │ │ ├── firebase_storage.podspec
│ │ │ │ └── generated_firebase_sdk_version.txt
│ │ │ ├── lib/
│ │ │ │ ├── firebase_storage.dart
│ │ │ │ └── src/
│ │ │ │ ├── firebase_storage.dart
│ │ │ │ ├── list_result.dart
│ │ │ │ ├── reference.dart
│ │ │ │ ├── task.dart
│ │ │ │ ├── task_snapshot.dart
│ │ │ │ └── utils.dart
│ │ │ ├── macos/
│ │ │ │ ├── firebase_storage/
│ │ │ │ │ ├── Package.swift
│ │ │ │ │ └── Sources/
│ │ │ │ │ └── firebase_storage/
│ │ │ │ │ └── Resources/
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── firebase_storage.podspec
│ │ │ ├── pubspec.yaml
│ │ │ ├── test/
│ │ │ │ ├── firebase_storage_test.dart
│ │ │ │ ├── list_result_test.dart
│ │ │ │ ├── mock.dart
│ │ │ │ ├── reference_test.dart
│ │ │ │ ├── task_snapshot_test.dart
│ │ │ │ ├── task_test.dart
│ │ │ │ └── utils_test.dart
│ │ │ └── windows/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── firebase_storage_plugin.cpp
│ │ │ ├── firebase_storage_plugin.h
│ │ │ ├── firebase_storage_plugin_c_api.cpp
│ │ │ ├── include/
│ │ │ │ └── firebase_storage/
│ │ │ │ └── firebase_storage_plugin_c_api.h
│ │ │ ├── messages.g.cpp
│ │ │ ├── messages.g.h
│ │ │ └── plugin_version.h.in
│ │ ├── firebase_storage_platform_interface/
│ │ │ ├── .gitignore
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── lib/
│ │ │ │ ├── firebase_storage_platform_interface.dart
│ │ │ │ └── src/
│ │ │ │ ├── full_metadata.dart
│ │ │ │ ├── internal/
│ │ │ │ │ └── pointer.dart
│ │ │ │ ├── list_options.dart
│ │ │ │ ├── method_channel/
│ │ │ │ │ ├── method_channel_firebase_storage.dart
│ │ │ │ │ ├── method_channel_list_result.dart
│ │ │ │ │ ├── method_channel_reference.dart
│ │ │ │ │ ├── method_channel_task.dart
│ │ │ │ │ ├── method_channel_task_snapshot.dart
│ │ │ │ │ └── utils/
│ │ │ │ │ └── exception.dart
│ │ │ │ ├── pigeon/
│ │ │ │ │ └── messages.pigeon.dart
│ │ │ │ ├── platform_interface/
│ │ │ │ │ ├── platform_interface_firebase_storage.dart
│ │ │ │ │ ├── platform_interface_list_result.dart
│ │ │ │ │ ├── platform_interface_reference.dart
│ │ │ │ │ ├── platform_interface_task.dart
│ │ │ │ │ └── platform_interface_task_snapshot.dart
│ │ │ │ ├── put_string_format.dart
│ │ │ │ ├── settable_metadata.dart
│ │ │ │ └── task_state.dart
│ │ │ ├── pigeons/
│ │ │ │ ├── copyright.txt
│ │ │ │ └── messages.dart
│ │ │ ├── pubspec.yaml
│ │ │ └── test/
│ │ │ ├── method_channel_tests/
│ │ │ │ ├── method_channel_firebase_storage_test.dart
│ │ │ │ ├── method_channel_list_result_test.dart
│ │ │ │ └── method_channel_reference_test.dart
│ │ │ ├── mock.dart
│ │ │ ├── pigeon/
│ │ │ │ └── test_api.dart
│ │ │ └── platform_interface_tests/
│ │ │ ├── platform_interface_firebase_storage_test.dart
│ │ │ ├── platform_interface_list_result_test.dart
│ │ │ ├── platform_interface_reference_test.dart
│ │ │ └── platform_interface_task_test.dart
│ │ └── firebase_storage_web/
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── ios/
│ │ │ └── firebase_storage_web.podspec
│ │ ├── lib/
│ │ │ ├── firebase_storage_web.dart
│ │ │ └── src/
│ │ │ ├── firebase_storage_version.dart
│ │ │ ├── firebase_storage_web.dart
│ │ │ ├── interop/
│ │ │ │ ├── storage.dart
│ │ │ │ └── storage_interop.dart
│ │ │ ├── list_result_web.dart
│ │ │ ├── reference_web.dart
│ │ │ ├── task_snapshot_web.dart
│ │ │ ├── task_web.dart
│ │ │ └── utils/
│ │ │ ├── errors.dart
│ │ │ ├── list.dart
│ │ │ ├── metadata.dart
│ │ │ ├── metadata_cache.dart
│ │ │ └── task.dart
│ │ ├── pubspec.yaml
│ │ └── test/
│ │ └── metadata_cache_test.dart
│ └── firebase_vertexai/
│ └── README.md
├── pubspec.yaml
├── scripts/
│ ├── bom_analysis.dart
│ ├── generate_bom.dart
│ ├── generate_dataconnect_version.dart
│ ├── generate_firebaseai_version.dart
│ ├── generate_tag_spm_firebase_core.dart
│ ├── generate_versions_gradle.dart
│ ├── generate_versions_spm.dart
│ ├── generate_versions_web.dart
│ ├── global-config.gradle
│ └── versions.json
└── tests/
├── .gitignore
├── .metadata
├── README.md
├── android/
│ ├── .gitignore
│ ├── app/
│ │ ├── build.gradle
│ │ ├── google-services.json
│ │ └── src/
│ │ ├── debug/
│ │ │ └── AndroidManifest.xml
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin/
│ │ │ │ └── io/
│ │ │ │ └── flutter/
│ │ │ │ └── plugins/
│ │ │ │ └── firebase/
│ │ │ │ └── tests/
│ │ │ │ └── MainActivity.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── launch_background.xml
│ │ │ ├── drawable-v21/
│ │ │ │ └── launch_background.xml
│ │ │ ├── values/
│ │ │ │ └── styles.xml
│ │ │ └── values-night/
│ │ │ └── styles.xml
│ │ └── profile/
│ │ └── AndroidManifest.xml
│ ├── build.gradle
│ ├── firebase_app_id_file.json
│ ├── gradle/
│ │ └── wrapper/
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ └── settings.gradle
├── integration_test/
│ ├── cloud_functions/
│ │ ├── cloud_functions_e2e_test.dart
│ │ └── sample_data.dart
│ ├── e2e_test.dart
│ ├── firebase_analytics/
│ │ └── firebase_analytics_e2e_test.dart
│ ├── firebase_app_check/
│ │ └── firebase_app_check_e2e_test.dart
│ ├── firebase_app_installations/
│ │ └── firebase_app_installations_e2e_test.dart
│ ├── firebase_auth/
│ │ ├── firebase_auth_e2e_test.dart
│ │ ├── firebase_auth_instance_e2e_test.dart
│ │ ├── firebase_auth_multi_factor_e2e_test.dart
│ │ ├── firebase_auth_user_e2e_test.dart
│ │ └── test_utils.dart
│ ├── firebase_core/
│ │ └── firebase_core_e2e_test.dart
│ ├── firebase_crashlytics/
│ │ └── firebase_crashlytics_e2e_test.dart
│ ├── firebase_database/
│ │ ├── data_snapshot_e2e.dart
│ │ ├── database_e2e.dart
│ │ ├── database_reference_e2e.dart
│ │ ├── firebase_database_configuration_e2e.dart
│ │ ├── firebase_database_e2e_test.dart
│ │ ├── on_disconnect_e2e.dart
│ │ ├── query_e2e.dart
│ │ ├── web_only.dart
│ │ └── web_only_stub.dart
│ ├── firebase_messaging/
│ │ └── firebase_messaging_e2e_test.dart
│ ├── firebase_ml_model_downloader/
│ │ └── firebase_ml_model_downloader_e2e_test.dart
│ ├── firebase_performance/
│ │ └── firebase_performance_e2e_test.dart
│ ├── firebase_remote_config/
│ │ └── firebase_remote_config_e2e_test.dart
│ └── firebase_storage/
│ ├── firebase_storage_e2e_test.dart
│ ├── instance_e2e.dart
│ ├── list_result_e2e.dart
│ ├── reference_e2e.dart
│ ├── second_bucket.dart
│ ├── task_e2e.dart
│ └── test_utils.dart
├── ios/
│ ├── .gitignore
│ ├── Flutter/
│ │ ├── AppFrameworkInfo.plist
│ │ ├── Debug.xcconfig
│ │ └── Release.xcconfig
│ ├── Podfile
│ ├── Runner/
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets/
│ │ │ ├── AppIcon.appiconset/
│ │ │ │ └── Contents.json
│ │ │ └── LaunchImage.imageset/
│ │ │ ├── Contents.json
│ │ │ └── README.md
│ │ ├── Base.lproj/
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── Runner-Bridging-Header.h
│ │ └── Runner.entitlements
│ ├── Runner.xcodeproj/
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata/
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata/
│ │ └── xcschemes/
│ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
│ └── firebase_app_id_file.json
├── lib/
│ ├── firebase_options.dart
│ └── main.dart
├── macos/
│ ├── .gitignore
│ ├── Flutter/
│ │ ├── Flutter-Debug.xcconfig
│ │ └── Flutter-Release.xcconfig
│ ├── Podfile
│ ├── Runner/
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets/
│ │ │ └── AppIcon.appiconset/
│ │ │ └── Contents.json
│ │ ├── Base.lproj/
│ │ │ └── MainMenu.xib
│ │ ├── Configs/
│ │ │ ├── AppInfo.xcconfig
│ │ │ ├── Debug.xcconfig
│ │ │ ├── Release.xcconfig
│ │ │ └── Warnings.xcconfig
│ │ ├── DebugProfile.entitlements
│ │ ├── Info.plist
│ │ ├── MainFlutterWindow.swift
│ │ └── Release.entitlements
│ ├── Runner.xcodeproj/
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace/
│ │ │ └── xcshareddata/
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata/
│ │ └── xcschemes/
│ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace/
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata/
│ │ └── IDEWorkspaceChecks.plist
│ └── firebase_app_id_file.json
├── pubspec.yaml
├── test_driver/
│ └── integration_test.dart
├── web/
│ ├── firebase-messaging-sw.js
│ ├── index.html
│ ├── manifest.json
│ └── wasm_index.html
└── windows/
├── .gitignore
├── CMakeLists.txt
├── flutter/
│ └── CMakeLists.txt
└── runner/
├── CMakeLists.txt
├── Runner.rc
├── flutter_window.cpp
├── flutter_window.h
├── main.cpp
├── resource.h
├── runner.exe.manifest
├── utils.cpp
├── utils.h
├── win32_window.cpp
└── win32_window.h
Showing preview only (721K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7835 symbols across 904 files)
FILE: .github/workflows/scripts/swift-integration.dart
function main (line 10) | void main(List<String> arguments)
function getCurrentBranch (line 55) | Future<String> getCurrentBranch()
function updatePackageSwiftFiles (line 122) | Future<void> updatePackageSwiftFiles(
function updatePackageSwiftForPackage (line 148) | Future<void> updatePackageSwiftForPackage(
function buildSwiftExampleApp (line 270) | Future<void> buildSwiftExampleApp(String platform, String plugins)
function _runCommand (line 444) | Future<ProcessResult> _runCommand(
FILE: packages/_flutterfire_internals/lib/_flutterfire_internals.dart
function guard (line 42) | R? guard<R>(R Function(T value) cb)
function safeCast (line 49) | R? safeCast<R>()
function _safeConvertFromPossibleJSObject (line 56) | String _safeConvertFromPossibleJSObject(dynamic value)
function _firebaseExceptionFromCoreFirebaseError (line 64) | FirebaseException _firebaseExceptionFromCoreFirebaseError(
function _testException (line 93) | bool _testException(Object? objectException)
function _mapException (line 103) | Object _mapException(
function guardWebExceptions (line 125) | R guardWebExceptions<R>(
FILE: packages/_flutterfire_internals/lib/src/exception.dart
function convertPlatformExceptionToFirebaseException (line 12) | Never convertPlatformExceptionToFirebaseException(
function platformExceptionToFirebaseException (line 37) | FirebaseException platformExceptionToFirebaseException(
function receiveGuardedBroadcastStream (line 69) | Stream<dynamic> receiveGuardedBroadcastStream({
FILE: packages/_flutterfire_internals/lib/src/interop_shimmer.dart
class JSError (line 8) | abstract class JSError {
class JSAny (line 16) | abstract class JSAny {}
class JSString (line 18) | abstract class JSString {
FILE: packages/_flutterfire_internals/test/guard_test.dart
function main (line 9) | void main()
class _FirebaseError (line 58) | class _FirebaseError implements JSError {
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestoreException.java
class FlutterFirebaseFirestoreException (line 11) | public class FlutterFirebaseFirestoreException extends Exception {
method FlutterFirebaseFirestoreException (line 45) | public FlutterFirebaseFirestoreException(
method getCode (line 215) | public String getCode() {
method getMessage (line 219) | @Override
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestoreExtension.java
class FlutterFirebaseFirestoreExtension (line 9) | public class FlutterFirebaseFirestoreExtension {
method FlutterFirebaseFirestoreExtension (line 13) | public FlutterFirebaseFirestoreExtension(FirebaseFirestore instance, S...
method getInstance (line 18) | public FirebaseFirestore getInstance() {
method getDatabaseURL (line 22) | public String getDatabaseURL() {
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestoreMessageCodec.java
class FlutterFirebaseFirestoreMessageCodec (line 37) | class FlutterFirebaseFirestoreMessageCodec extends StandardMessageCodec {
method writeValue (line 61) | @Override
method writeSnapshotMetadata (line 121) | private void writeSnapshotMetadata(ByteArrayOutputStream stream, Snaps...
method writeDocumentChange (line 128) | private void writeDocumentChange(ByteArrayOutputStream stream, Documen...
method writeQuerySnapshot (line 154) | private void writeQuerySnapshot(ByteArrayOutputStream stream, QuerySna...
method writeLoadBundleTaskProgress (line 183) | private void writeLoadBundleTaskProgress(
method writeDocumentSnapshot (line 212) | @SuppressWarnings("ConstantConditions")
method readValueOfType (line 236) | @Override
method readFirestoreInstance (line 301) | private FirebaseFirestore readFirestoreInstance(ByteBuffer buffer) {
method readFirestoreSettings (line 323) | private FirebaseFirestoreSettings readFirestoreSettings(ByteBuffer buf...
method filterFromJson (line 369) | private Filter filterFromJson(Map<String, Object> map) {
method readFirestoreQuery (line 422) | private Query readFirestoreQuery(ByteBuffer buffer) {
method toArray (line 543) | private Object[] toArray(Object source) {
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java
class FlutterFirebaseFirestorePlugin (line 64) | public class FlutterFirebaseFirestorePlugin
method getCachedFirebaseFirestoreInstanceForKey (line 93) | protected static FlutterFirebaseFirestoreExtension getCachedFirebaseFi...
method setCachedFirebaseFirestoreInstanceForKey (line 100) | protected static void setCachedFirebaseFirestoreInstanceForKey(
method getFirestoreInstanceByNameAndDatabaseUrl (line 111) | protected static FirebaseFirestore getFirestoreInstanceByNameAndDataba...
method destroyCachedFirebaseFirestoreInstanceForKey (line 125) | private static void destroyCachedFirebaseFirestoreInstanceForKey(Fireb...
method onAttachedToEngine (line 134) | @SuppressLint("RestrictedApi")
method onDetachedFromEngine (line 142) | @Override
method onAttachedToActivity (line 149) | @Override
method onDetachedFromActivityForConfigChanges (line 154) | @Override
method onReattachedToActivityForConfigChanges (line 159) | @Override
method onDetachedFromActivity (line 165) | @Override
method attachToActivity (line 170) | private void attachToActivity(ActivityPluginBinding activityPluginBind...
method detachToActivity (line 174) | private void detachToActivity() {
method initInstance (line 178) | private void initInstance(BinaryMessenger messenger) {
method getPluginConstantsForFirebaseApp (line 186) | @Override
method didReinitializeFirebaseCore (line 202) | @Override
method registerEventChannel (line 247) | private String registerEventChannel(String prefix, StreamHandler handl...
method registerEventChannel (line 264) | private String registerEventChannel(String prefix, String identifier, ...
method removeEventListeners (line 275) | private void removeEventListeners() {
method getSettingsFromPigeon (line 293) | static FirebaseFirestoreSettings getSettingsFromPigeon(
method getFirestoreFromPigeon (line 320) | public static FirebaseFirestore getFirestoreFromPigeon(
method loadBundle (line 340) | @Override
method namedQueryGet (line 351) | @Override
method clearPersistence (line 388) | @Override
method disableNetwork (line 404) | @Override
method enableNetwork (line 420) | @Override
method terminate (line 436) | @Override
method waitForPendingWrites (line 453) | @Override
method setIndexConfiguration (line 469) | @Override
method persistenceCacheIndexManagerRequest (line 489) | @Override
method setLoggingEnabled (line 518) | @Override
method snapshotsInSyncSetup (line 534) | @Override
method transactionCreate (line 545) | @Override
method transactionStoreResult (line 567) | @Override
method transactionGet (line 578) | @Override
method documentReferenceSet (line 612) | @Override
method documentReferenceUpdate (line 646) | @Override
method documentReferenceGet (line 692) | @Override
method documentReferenceDelete (line 722) | @Override
method queryGet (line 740) | @Override
method aggregateQuery (line 780) | @Override
method writeBatchCommit (line 873) | @Override
method querySnapshot (line 955) | @Override
method documentReferenceSnapshot (line 988) | @Override
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestoreRegistrar.java
class FlutterFirebaseFirestoreRegistrar (line 14) | @Keep
method getComponents (line 16) | @Override
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestoreTransactionResult.java
class FlutterFirebaseFirestoreTransactionResult (line 10) | public class FlutterFirebaseFirestoreTransactionResult {
method FlutterFirebaseFirestoreTransactionResult (line 14) | private FlutterFirebaseFirestoreTransactionResult(@NonNull Exception f...
method FlutterFirebaseFirestoreTransactionResult (line 18) | private FlutterFirebaseFirestoreTransactionResult() {
method failed (line 22) | public static FlutterFirebaseFirestoreTransactionResult failed(@NonNul...
method complete (line 26) | public static FlutterFirebaseFirestoreTransactionResult complete() {
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java
class GeneratedAndroidFirebaseFirestore (line 22) | @SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSu...
class FlutterError (line 26) | public static class FlutterError extends RuntimeException {
method FlutterError (line 34) | public FlutterError(@NonNull String code, @Nullable String message, ...
method wrapError (line 41) | @NonNull
type DocumentChangeType (line 59) | public enum DocumentChangeType {
method DocumentChangeType (line 72) | private DocumentChangeType(final int index) {
type Source (line 78) | public enum Source {
method Source (line 102) | private Source(final int index) {
type ListenSource (line 115) | public enum ListenSource {
method ListenSource (line 131) | private ListenSource(final int index) {
type ServerTimestampBehavior (line 136) | public enum ServerTimestampBehavior {
method ServerTimestampBehavior (line 152) | private ServerTimestampBehavior(final int index) {
type AggregateSource (line 158) | public enum AggregateSource {
method AggregateSource (line 164) | private AggregateSource(final int index) {
type PersistenceCacheIndexManagerRequest (line 173) | public enum PersistenceCacheIndexManagerRequest {
method PersistenceCacheIndexManagerRequest (line 180) | private PersistenceCacheIndexManagerRequest(final int index) {
type PigeonTransactionResult (line 185) | public enum PigeonTransactionResult {
method PigeonTransactionResult (line 191) | private PigeonTransactionResult(final int index) {
type PigeonTransactionType (line 196) | public enum PigeonTransactionType {
method PigeonTransactionType (line 204) | private PigeonTransactionType(final int index) {
type AggregateType (line 209) | public enum AggregateType {
method AggregateType (line 216) | private AggregateType(final int index) {
class PigeonFirebaseSettings (line 222) | public static final class PigeonFirebaseSettings {
method getPersistenceEnabled (line 225) | public @Nullable Boolean getPersistenceEnabled() {
method setPersistenceEnabled (line 229) | public void setPersistenceEnabled(@Nullable Boolean setterArg) {
method getHost (line 235) | public @Nullable String getHost() {
method setHost (line 239) | public void setHost(@Nullable String setterArg) {
method getSslEnabled (line 245) | public @Nullable Boolean getSslEnabled() {
method setSslEnabled (line 249) | public void setSslEnabled(@Nullable Boolean setterArg) {
method getCacheSizeBytes (line 255) | public @Nullable Long getCacheSizeBytes() {
method setCacheSizeBytes (line 259) | public void setCacheSizeBytes(@Nullable Long setterArg) {
method getIgnoreUndefinedProperties (line 265) | public @NonNull Boolean getIgnoreUndefinedProperties() {
method setIgnoreUndefinedProperties (line 269) | public void setIgnoreUndefinedProperties(@NonNull Boolean setterArg) {
method PigeonFirebaseSettings (line 277) | PigeonFirebaseSettings() {}
class Builder (line 279) | public static final class Builder {
method setPersistenceEnabled (line 283) | public @NonNull Builder setPersistenceEnabled(@Nullable Boolean se...
method setHost (line 290) | public @NonNull Builder setHost(@Nullable String setterArg) {
method setSslEnabled (line 297) | public @NonNull Builder setSslEnabled(@Nullable Boolean setterArg) {
method setCacheSizeBytes (line 304) | public @NonNull Builder setCacheSizeBytes(@Nullable Long setterArg) {
method setIgnoreUndefinedProperties (line 311) | public @NonNull Builder setIgnoreUndefinedProperties(@NonNull Bool...
method build (line 316) | public @NonNull PigeonFirebaseSettings build() {
method toList (line 327) | @NonNull
method fromList (line 338) | static @NonNull PigeonFirebaseSettings fromList(@NonNull ArrayList<O...
class FirestorePigeonFirebaseApp (line 360) | public static final class FirestorePigeonFirebaseApp {
method getAppName (line 363) | public @NonNull String getAppName() {
method setAppName (line 367) | public void setAppName(@NonNull String setterArg) {
method getSettings (line 376) | public @NonNull PigeonFirebaseSettings getSettings() {
method setSettings (line 380) | public void setSettings(@NonNull PigeonFirebaseSettings setterArg) {
method getDatabaseURL (line 389) | public @NonNull String getDatabaseURL() {
method setDatabaseURL (line 393) | public void setDatabaseURL(@NonNull String setterArg) {
method FirestorePigeonFirebaseApp (line 401) | FirestorePigeonFirebaseApp() {}
class Builder (line 403) | public static final class Builder {
method setAppName (line 407) | public @NonNull Builder setAppName(@NonNull String setterArg) {
method setSettings (line 414) | public @NonNull Builder setSettings(@NonNull PigeonFirebaseSetting...
method setDatabaseURL (line 421) | public @NonNull Builder setDatabaseURL(@NonNull String setterArg) {
method build (line 426) | public @NonNull FirestorePigeonFirebaseApp build() {
method toList (line 435) | @NonNull
method fromList (line 444) | static @NonNull FirestorePigeonFirebaseApp fromList(@NonNull ArrayLi...
class PigeonSnapshotMetadata (line 460) | public static final class PigeonSnapshotMetadata {
method getHasPendingWrites (line 463) | public @NonNull Boolean getHasPendingWrites() {
method setHasPendingWrites (line 467) | public void setHasPendingWrites(@NonNull Boolean setterArg) {
method getIsFromCache (line 476) | public @NonNull Boolean getIsFromCache() {
method setIsFromCache (line 480) | public void setIsFromCache(@NonNull Boolean setterArg) {
method PigeonSnapshotMetadata (line 488) | PigeonSnapshotMetadata() {}
class Builder (line 490) | public static final class Builder {
method setHasPendingWrites (line 494) | public @NonNull Builder setHasPendingWrites(@NonNull Boolean sette...
method setIsFromCache (line 501) | public @NonNull Builder setIsFromCache(@NonNull Boolean setterArg) {
method build (line 506) | public @NonNull PigeonSnapshotMetadata build() {
method toList (line 514) | @NonNull
method fromList (line 522) | static @NonNull PigeonSnapshotMetadata fromList(@NonNull ArrayList<O...
class PigeonDocumentSnapshot (line 533) | public static final class PigeonDocumentSnapshot {
method getPath (line 536) | public @NonNull String getPath() {
method setPath (line 540) | public void setPath(@NonNull String setterArg) {
method getData (line 549) | public @Nullable Map<String, Object> getData() {
method setData (line 553) | public void setData(@Nullable Map<String, Object> setterArg) {
method getMetadata (line 559) | public @NonNull PigeonSnapshotMetadata getMetadata() {
method setMetadata (line 563) | public void setMetadata(@NonNull PigeonSnapshotMetadata setterArg) {
method PigeonDocumentSnapshot (line 571) | PigeonDocumentSnapshot() {}
class Builder (line 573) | public static final class Builder {
method setPath (line 577) | public @NonNull Builder setPath(@NonNull String setterArg) {
method setData (line 584) | public @NonNull Builder setData(@Nullable Map<String, Object> sett...
method setMetadata (line 591) | public @NonNull Builder setMetadata(@NonNull PigeonSnapshotMetadat...
method build (line 596) | public @NonNull PigeonDocumentSnapshot build() {
method toList (line 605) | @NonNull
method fromList (line 614) | static @NonNull PigeonDocumentSnapshot fromList(@NonNull ArrayList<O...
class PigeonDocumentChange (line 630) | public static final class PigeonDocumentChange {
method getType (line 633) | public @NonNull DocumentChangeType getType() {
method setType (line 637) | public void setType(@NonNull DocumentChangeType setterArg) {
method getDocument (line 646) | public @NonNull PigeonDocumentSnapshot getDocument() {
method setDocument (line 650) | public void setDocument(@NonNull PigeonDocumentSnapshot setterArg) {
method getOldIndex (line 659) | public @NonNull Long getOldIndex() {
method setOldIndex (line 663) | public void setOldIndex(@NonNull Long setterArg) {
method getNewIndex (line 672) | public @NonNull Long getNewIndex() {
method setNewIndex (line 676) | public void setNewIndex(@NonNull Long setterArg) {
method PigeonDocumentChange (line 684) | PigeonDocumentChange() {}
class Builder (line 686) | public static final class Builder {
method setType (line 690) | public @NonNull Builder setType(@NonNull DocumentChangeType setter...
method setDocument (line 697) | public @NonNull Builder setDocument(@NonNull PigeonDocumentSnapsho...
method setOldIndex (line 704) | public @NonNull Builder setOldIndex(@NonNull Long setterArg) {
method setNewIndex (line 711) | public @NonNull Builder setNewIndex(@NonNull Long setterArg) {
method build (line 716) | public @NonNull PigeonDocumentChange build() {
method toList (line 726) | @NonNull
method fromList (line 736) | static @NonNull PigeonDocumentChange fromList(@NonNull ArrayList<Obj...
class PigeonQuerySnapshot (line 760) | public static final class PigeonQuerySnapshot {
method getDocuments (line 763) | public @NonNull List<PigeonDocumentSnapshot> getDocuments() {
method setDocuments (line 767) | public void setDocuments(@NonNull List<PigeonDocumentSnapshot> sette...
method getDocumentChanges (line 776) | public @NonNull List<PigeonDocumentChange> getDocumentChanges() {
method setDocumentChanges (line 780) | public void setDocumentChanges(@NonNull List<PigeonDocumentChange> s...
method getMetadata (line 789) | public @NonNull PigeonSnapshotMetadata getMetadata() {
method setMetadata (line 793) | public void setMetadata(@NonNull PigeonSnapshotMetadata setterArg) {
method PigeonQuerySnapshot (line 801) | PigeonQuerySnapshot() {}
class Builder (line 803) | public static final class Builder {
method setDocuments (line 807) | public @NonNull Builder setDocuments(@NonNull List<PigeonDocumentS...
method setDocumentChanges (line 814) | public @NonNull Builder setDocumentChanges(@NonNull List<PigeonDoc...
method setMetadata (line 821) | public @NonNull Builder setMetadata(@NonNull PigeonSnapshotMetadat...
method build (line 826) | public @NonNull PigeonQuerySnapshot build() {
method toList (line 835) | @NonNull
method fromList (line 844) | static @NonNull PigeonQuerySnapshot fromList(@NonNull ArrayList<Obje...
class PigeonGetOptions (line 860) | public static final class PigeonGetOptions {
method getSource (line 863) | public @NonNull Source getSource() {
method setSource (line 867) | public void setSource(@NonNull Source setterArg) {
method getServerTimestampBehavior (line 876) | public @NonNull ServerTimestampBehavior getServerTimestampBehavior() {
method setServerTimestampBehavior (line 880) | public void setServerTimestampBehavior(@NonNull ServerTimestampBehav...
method PigeonGetOptions (line 888) | PigeonGetOptions() {}
class Builder (line 890) | public static final class Builder {
method setSource (line 894) | public @NonNull Builder setSource(@NonNull Source setterArg) {
method setServerTimestampBehavior (line 901) | public @NonNull Builder setServerTimestampBehavior(
method build (line 907) | public @NonNull PigeonGetOptions build() {
method toList (line 915) | @NonNull
method fromList (line 923) | static @NonNull PigeonGetOptions fromList(@NonNull ArrayList<Object>...
class PigeonDocumentOption (line 935) | public static final class PigeonDocumentOption {
method getMerge (line 938) | public @Nullable Boolean getMerge() {
method setMerge (line 942) | public void setMerge(@Nullable Boolean setterArg) {
method getMergeFields (line 948) | public @Nullable List<List<String>> getMergeFields() {
method setMergeFields (line 952) | public void setMergeFields(@Nullable List<List<String>> setterArg) {
class Builder (line 956) | public static final class Builder {
method setMerge (line 960) | public @NonNull Builder setMerge(@Nullable Boolean setterArg) {
method setMergeFields (line 967) | public @NonNull Builder setMergeFields(@Nullable List<List<String>...
method build (line 972) | public @NonNull PigeonDocumentOption build() {
method toList (line 980) | @NonNull
method fromList (line 988) | static @NonNull PigeonDocumentOption fromList(@NonNull ArrayList<Obj...
class PigeonTransactionCommand (line 999) | public static final class PigeonTransactionCommand {
method getType (line 1002) | public @NonNull PigeonTransactionType getType() {
method setType (line 1006) | public void setType(@NonNull PigeonTransactionType setterArg) {
method getPath (line 1015) | public @NonNull String getPath() {
method setPath (line 1019) | public void setPath(@NonNull String setterArg) {
method getData (line 1028) | public @Nullable Map<Object, Object> getData() {
method setData (line 1032) | public void setData(@Nullable Map<Object, Object> setterArg) {
method getOption (line 1038) | public @Nullable PigeonDocumentOption getOption() {
method setOption (line 1042) | public void setOption(@Nullable PigeonDocumentOption setterArg) {
method PigeonTransactionCommand (line 1047) | PigeonTransactionCommand() {}
class Builder (line 1049) | public static final class Builder {
method setType (line 1053) | public @NonNull Builder setType(@NonNull PigeonTransactionType set...
method setPath (line 1060) | public @NonNull Builder setPath(@NonNull String setterArg) {
method setData (line 1067) | public @NonNull Builder setData(@Nullable Map<Object, Object> sett...
method setOption (line 1074) | public @NonNull Builder setOption(@Nullable PigeonDocumentOption s...
method build (line 1079) | public @NonNull PigeonTransactionCommand build() {
method toList (line 1089) | @NonNull
method fromList (line 1099) | static @NonNull PigeonTransactionCommand fromList(@NonNull ArrayList...
class DocumentReferenceRequest (line 1115) | public static final class DocumentReferenceRequest {
method getPath (line 1118) | public @NonNull String getPath() {
method setPath (line 1122) | public void setPath(@NonNull String setterArg) {
method getData (line 1131) | public @Nullable Map<Object, Object> getData() {
method setData (line 1135) | public void setData(@Nullable Map<Object, Object> setterArg) {
method getOption (line 1141) | public @Nullable PigeonDocumentOption getOption() {
method setOption (line 1145) | public void setOption(@Nullable PigeonDocumentOption setterArg) {
method getSource (line 1151) | public @Nullable Source getSource() {
method setSource (line 1155) | public void setSource(@Nullable Source setterArg) {
method getServerTimestampBehavior (line 1161) | public @Nullable ServerTimestampBehavior getServerTimestampBehavior() {
method setServerTimestampBehavior (line 1165) | public void setServerTimestampBehavior(@Nullable ServerTimestampBeha...
method DocumentReferenceRequest (line 1170) | DocumentReferenceRequest() {}
class Builder (line 1172) | public static final class Builder {
method setPath (line 1176) | public @NonNull Builder setPath(@NonNull String setterArg) {
method setData (line 1183) | public @NonNull Builder setData(@Nullable Map<Object, Object> sett...
method setOption (line 1190) | public @NonNull Builder setOption(@Nullable PigeonDocumentOption s...
method setSource (line 1197) | public @NonNull Builder setSource(@Nullable Source setterArg) {
method setServerTimestampBehavior (line 1204) | public @NonNull Builder setServerTimestampBehavior(
method build (line 1210) | public @NonNull DocumentReferenceRequest build() {
method toList (line 1221) | @NonNull
method fromList (line 1232) | static @NonNull DocumentReferenceRequest fromList(@NonNull ArrayList...
class PigeonQueryParameters (line 1253) | public static final class PigeonQueryParameters {
method getWhere (line 1256) | public @Nullable List<List<Object>> getWhere() {
method setWhere (line 1260) | public void setWhere(@Nullable List<List<Object>> setterArg) {
method getOrderBy (line 1266) | public @Nullable List<List<Object>> getOrderBy() {
method setOrderBy (line 1270) | public void setOrderBy(@Nullable List<List<Object>> setterArg) {
method getLimit (line 1276) | public @Nullable Long getLimit() {
method setLimit (line 1280) | public void setLimit(@Nullable Long setterArg) {
method getLimitToLast (line 1286) | public @Nullable Long getLimitToLast() {
method setLimitToLast (line 1290) | public void setLimitToLast(@Nullable Long setterArg) {
method getStartAt (line 1296) | public @Nullable List<Object> getStartAt() {
method setStartAt (line 1300) | public void setStartAt(@Nullable List<Object> setterArg) {
method getStartAfter (line 1306) | public @Nullable List<Object> getStartAfter() {
method setStartAfter (line 1310) | public void setStartAfter(@Nullable List<Object> setterArg) {
method getEndAt (line 1316) | public @Nullable List<Object> getEndAt() {
method setEndAt (line 1320) | public void setEndAt(@Nullable List<Object> setterArg) {
method getEndBefore (line 1326) | public @Nullable List<Object> getEndBefore() {
method setEndBefore (line 1330) | public void setEndBefore(@Nullable List<Object> setterArg) {
method getFilters (line 1336) | public @Nullable Map<String, Object> getFilters() {
method setFilters (line 1340) | public void setFilters(@Nullable Map<String, Object> setterArg) {
class Builder (line 1344) | public static final class Builder {
method setWhere (line 1348) | public @NonNull Builder setWhere(@Nullable List<List<Object>> sett...
method setOrderBy (line 1355) | public @NonNull Builder setOrderBy(@Nullable List<List<Object>> se...
method setLimit (line 1362) | public @NonNull Builder setLimit(@Nullable Long setterArg) {
method setLimitToLast (line 1369) | public @NonNull Builder setLimitToLast(@Nullable Long setterArg) {
method setStartAt (line 1376) | public @NonNull Builder setStartAt(@Nullable List<Object> setterAr...
method setStartAfter (line 1383) | public @NonNull Builder setStartAfter(@Nullable List<Object> sette...
method setEndAt (line 1390) | public @NonNull Builder setEndAt(@Nullable List<Object> setterArg) {
method setEndBefore (line 1397) | public @NonNull Builder setEndBefore(@Nullable List<Object> setter...
method setFilters (line 1404) | public @NonNull Builder setFilters(@Nullable Map<String, Object> s...
method build (line 1409) | public @NonNull PigeonQueryParameters build() {
method toList (line 1424) | @NonNull
method fromList (line 1439) | static @NonNull PigeonQueryParameters fromList(@NonNull ArrayList<Ob...
class AggregateQuery (line 1468) | public static final class AggregateQuery {
method getType (line 1471) | public @NonNull AggregateType getType() {
method setType (line 1475) | public void setType(@NonNull AggregateType setterArg) {
method getField (line 1484) | public @Nullable String getField() {
method setField (line 1488) | public void setField(@Nullable String setterArg) {
method AggregateQuery (line 1493) | AggregateQuery() {}
class Builder (line 1495) | public static final class Builder {
method setType (line 1499) | public @NonNull Builder setType(@NonNull AggregateType setterArg) {
method setField (line 1506) | public @NonNull Builder setField(@Nullable String setterArg) {
method build (line 1511) | public @NonNull AggregateQuery build() {
method toList (line 1519) | @NonNull
method fromList (line 1527) | static @NonNull AggregateQuery fromList(@NonNull ArrayList<Object> l...
class AggregateQueryResponse (line 1538) | public static final class AggregateQueryResponse {
method getType (line 1541) | public @NonNull AggregateType getType() {
method setType (line 1545) | public void setType(@NonNull AggregateType setterArg) {
method getField (line 1554) | public @Nullable String getField() {
method setField (line 1558) | public void setField(@Nullable String setterArg) {
method getValue (line 1564) | public @Nullable Double getValue() {
method setValue (line 1568) | public void setValue(@Nullable Double setterArg) {
method AggregateQueryResponse (line 1573) | AggregateQueryResponse() {}
class Builder (line 1575) | public static final class Builder {
method setType (line 1579) | public @NonNull Builder setType(@NonNull AggregateType setterArg) {
method setField (line 1586) | public @NonNull Builder setField(@Nullable String setterArg) {
method setValue (line 1593) | public @NonNull Builder setValue(@Nullable Double setterArg) {
method build (line 1598) | public @NonNull AggregateQueryResponse build() {
method toList (line 1607) | @NonNull
method fromList (line 1616) | static @NonNull AggregateQueryResponse fromList(@NonNull ArrayList<O...
type Result (line 1628) | public interface Result<T> {
method success (line 1629) | @SuppressWarnings("UnknownNullness")
method error (line 1632) | void error(@NonNull Throwable error);
class FirebaseFirestoreHostApiCodec (line 1635) | private static class FirebaseFirestoreHostApiCodec extends FlutterFire...
method FirebaseFirestoreHostApiCodec (line 1639) | private FirebaseFirestoreHostApiCodec() {}
method readValueOfType (line 1641) | @Override
method writeValue (line 1675) | @Override
type FirebaseFirestoreHostApi (line 1723) | public interface FirebaseFirestoreHostApi {
method loadBundle (line 1725) | void loadBundle(
method namedQueryGet (line 1730) | void namedQueryGet(
method clearPersistence (line 1736) | void clearPersistence(@NonNull FirestorePigeonFirebaseApp app, @NonN...
method disableNetwork (line 1738) | void disableNetwork(@NonNull FirestorePigeonFirebaseApp app, @NonNul...
method enableNetwork (line 1740) | void enableNetwork(@NonNull FirestorePigeonFirebaseApp app, @NonNull...
method terminate (line 1742) | void terminate(@NonNull FirestorePigeonFirebaseApp app, @NonNull Res...
method waitForPendingWrites (line 1744) | void waitForPendingWrites(
method setIndexConfiguration (line 1747) | void setIndexConfiguration(
method setLoggingEnabled (line 1752) | void setLoggingEnabled(@NonNull Boolean loggingEnabled, @NonNull Res...
method snapshotsInSyncSetup (line 1754) | void snapshotsInSyncSetup(
method transactionCreate (line 1757) | void transactionCreate(
method transactionStoreResult (line 1763) | void transactionStoreResult(
method transactionGet (line 1769) | void transactionGet(
method documentReferenceSet (line 1775) | void documentReferenceSet(
method documentReferenceUpdate (line 1780) | void documentReferenceUpdate(
method documentReferenceGet (line 1785) | void documentReferenceGet(
method documentReferenceDelete (line 1790) | void documentReferenceDelete(
method queryGet (line 1795) | void queryGet(
method aggregateQuery (line 1803) | void aggregateQuery(
method writeBatchCommit (line 1812) | void writeBatchCommit(
method querySnapshot (line 1817) | void querySnapshot(
method documentReferenceSnapshot (line 1827) | void documentReferenceSnapshot(
method persistenceCacheIndexManagerRequest (line 1834) | void persistenceCacheIndexManagerRequest(
method getCodec (line 1840) | static @NonNull MessageCodec<Object> getCodec() {
method setup (line 1847) | static void setup(
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/DocumentSnapshotsStreamHandler.java
class DocumentSnapshotsStreamHandler (line 24) | public class DocumentSnapshotsStreamHandler implements StreamHandler {
method DocumentSnapshotsStreamHandler (line 34) | public DocumentSnapshotsStreamHandler(
method onListen (line 48) | @Override
method onCancel (line 72) | @Override
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/LoadBundleStreamHandler.java
class LoadBundleStreamHandler (line 18) | public class LoadBundleStreamHandler implements EventChannel.StreamHandl...
method LoadBundleStreamHandler (line 20) | public LoadBundleStreamHandler(FirebaseFirestore firestore, @NonNull b...
method onListen (line 30) | @Override
method onCancel (line 45) | @Override
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/OnTransactionResultListener.java
type OnTransactionResultListener (line 13) | public interface OnTransactionResultListener {
method receiveTransactionResponse (line 14) | void receiveTransactionResponse(
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/QuerySnapshotsStreamHandler.java
class QuerySnapshotsStreamHandler (line 25) | public class QuerySnapshotsStreamHandler implements StreamHandler {
method QuerySnapshotsStreamHandler (line 35) | public QuerySnapshotsStreamHandler(
method onListen (line 47) | @Override
method onCancel (line 90) | @Override
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/SnapshotsInSyncStreamHandler.java
class SnapshotsInSyncStreamHandler (line 14) | public class SnapshotsInSyncStreamHandler implements StreamHandler {
method SnapshotsInSyncStreamHandler (line 19) | public SnapshotsInSyncStreamHandler(FirebaseFirestore firestore) {
method onListen (line 23) | @Override
method onCancel (line 30) | @Override
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/TransactionStreamHandler.java
class TransactionStreamHandler (line 34) | public class TransactionStreamHandler implements OnTransactionResultList...
type OnTransactionStartedListener (line 37) | public interface OnTransactionStartedListener {
method onStarted (line 38) | void onStarted(Transaction transaction);
method TransactionStreamHandler (line 48) | public TransactionStreamHandler(
method onListen (line 67) | @Override
method onCancel (line 183) | @Override
method receiveTransactionResponse (line 188) | @Override
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/utils/ExceptionConverter.java
class ExceptionConverter (line 19) | public class ExceptionConverter {
method createDetails (line 21) | public static Map<String, String> createDetails(Exception exception) {
method sendErrorToFlutter (line 57) | public static void sendErrorToFlutter(
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/utils/PigeonParser.java
class PigeonParser (line 26) | public class PigeonParser {
method parsePigeonSource (line 28) | public static Source parsePigeonSource(GeneratedAndroidFirebaseFiresto...
method parsePigeonServerTimestampBehavior (line 41) | public static DocumentSnapshot.ServerTimestampBehavior parsePigeonServ...
method toPigeonQuerySnapshot (line 59) | public static GeneratedAndroidFirebaseFirestore.PigeonQuerySnapshot to...
method toPigeonSnapshotMetadata (line 72) | public static GeneratedAndroidFirebaseFirestore.PigeonSnapshotMetadata...
method toPigeonDocumentChanges (line 81) | public static List<GeneratedAndroidFirebaseFirestore.PigeonDocumentCha...
method toPigeonDocumentChange (line 93) | public static GeneratedAndroidFirebaseFirestore.PigeonDocumentChange t...
method toPigeonDocumentChangeType (line 106) | public static GeneratedAndroidFirebaseFirestore.DocumentChangeType toP...
method parseListenSource (line 120) | public static ListenSource parseListenSource(
method toPigeonDocumentSnapshot (line 132) | public static GeneratedAndroidFirebaseFirestore.PigeonDocumentSnapshot...
method toPigeonDocumentSnapshots (line 143) | public static List<GeneratedAndroidFirebaseFirestore.PigeonDocumentSna...
method parseFieldPath (line 156) | public static List<FieldPath> parseFieldPath(List<List<String>> fieldP...
method parseQuery (line 164) | public static Query parseQuery(
method filterFromJson (line 270) | private static Filter filterFromJson(Map<String, Object> map) {
method parseAggregateSource (line 326) | public static AggregateSource parseAggregateSource(
FILE: packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/utils/ServerTimestampBehaviorConverter.java
class ServerTimestampBehaviorConverter (line 12) | public class ServerTimestampBehaviorConverter {
method toServerTimestampBehavior (line 13) | public static DocumentSnapshot.ServerTimestampBehavior toServerTimesta...
FILE: packages/cloud_firestore/cloud_firestore/dartpad/lib/main.dart
function main (line 10) | Future<void> main()
type MovieQuery (line 27) | enum MovieQuery {
function queryBy (line 38) | Query<Movie> queryBy(MovieQuery query)
class FirestoreExampleApp (line 54) | class FirestoreExampleApp extends StatelessWidget {
method build (line 56) | Widget build(BuildContext context)
class FilmList (line 68) | class FilmList extends StatefulWidget {
method createState (line 72) | _FilmListState createState()
class _FilmListState (line 75) | class _FilmListState extends State<FilmList> {
method build (line 79) | Widget build(BuildContext context)
method _resetLikes (line 176) | Future<void> _resetLikes()
class _MovieItem (line 188) | class _MovieItem extends StatelessWidget {
method build (line 274) | Widget build(BuildContext context)
class Likes (line 289) | class Likes extends StatefulWidget {
method createState (line 305) | _LikesState createState()
class _LikesState (line 308) | class _LikesState extends State<Likes> {
method _onLike (line 313) | Future<void> _onLike()
method didUpdateWidget (line 352) | void didUpdateWidget(Likes oldWidget)
method build (line 363) | Widget build(BuildContext context)
class Movie (line 377) | @immutable
method toJson (line 408) | Map<String, Object?> toJson()
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/collection_reference_e2e.dart
function runCollectionReferenceTests (line 11) | void runCollectionReferenceTests()
function initializeTest (line 19) | Future<CollectionReference<Map<String, dynamic>>> initializeTest(
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/document_change_e2e.dart
function runDocumentChangeTests (line 11) | void runDocumentChangeTests()
function initializeTest (line 19) | Future<CollectionReference<Map<String, dynamic>>> initializeTest(
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/document_reference_e2e.dart
function runDocumentReferenceTests (line 11) | void runDocumentReferenceTests()
function initializeTest (line 19) | Future<DocumentReference<Map<String, dynamic>>> initializeTest(
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/e2e_test.dart
function main (line 31) | void main()
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/field_value_e2e.dart
function runFieldValueTests (line 8) | void runFieldValueTests()
function initializeTest (line 16) | Future<DocumentReference<Map<String, dynamic>>> initializeTest(
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/firebase_options.dart
class DefaultFirebaseOptions (line 21) | class DefaultFirebaseOptions {
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/firebase_options_secondary.dart
class DefaultFirebaseOptions (line 21) | class DefaultFirebaseOptions {
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/geo_point_e2e.dart
function runGeoPointTests (line 8) | void runGeoPointTests()
function initializeTest (line 16) | Future<DocumentReference<Map<String, dynamic>>> initializeTest(
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/instance_e2e.dart
function runInstanceTests (line 13) | void runInstanceTests()
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/load_bundle_e2e.dart
function runLoadBundleTests (line 10) | void runLoadBundleTests()
function loadBundleSetup (line 14) | Future<Uint8List> loadBundleSetup(int number)
class ConverterPlaceholder (line 245) | class ConverterPlaceholder {
method toFirestore (line 251) | Map<String, Object?> toFirestore()
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart
function runQueryTests (line 13) | void runQueryTests()
function initializeTest (line 21) | Future<CollectionReference<Map<String, dynamic>>> initializeTest(
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/second_database.dart
function getCurrentPlatform (line 15) | String getCurrentPlatform()
function runSecondDatabaseTests (line 31) | void runSecondDatabaseTests()
function initializeTest (line 47) | Future<CollectionReference<Map<String, dynamic>>> initializeTest(
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/settings_e2e.dart
function runSettingsTest (line 8) | void runSettingsTest()
function initializeTest (line 18) | Future<Settings> initializeTest()
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/snapshot_metadata_e2e.dart
function runSnapshotMetadataTests (line 9) | void runSnapshotMetadataTests()
function initializeTest (line 19) | Future<CollectionReference> initializeTest(String id)
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/timestamp_e2e.dart
function runTimestampTests (line 8) | void runTimestampTests()
function initializeTest (line 16) | Future<DocumentReference<Map<String, dynamic>>> initializeTest(
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/transaction_e2e.dart
function runTransactionTests (line 11) | void runTransactionTests()
function initializeTest (line 21) | Future<DocumentReference<Map<String, dynamic>>> initializeTest(
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/vector_value_e2e.dart
function runVectorValueTests (line 8) | void runVectorValueTests()
function initializeTest (line 16) | Future<DocumentReference<Map<String, dynamic>>> initializeTest(
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/web_snapshot_listeners.dart
function runWebSnapshotListenersTests (line 13) | void runWebSnapshotListenersTests()
FILE: packages/cloud_firestore/cloud_firestore/example/integration_test/write_batch_e2e.dart
function runWriteBatchTests (line 8) | void runWriteBatchTests()
function initializeTest (line 16) | Future<CollectionReference<Map<String, dynamic>>> initializeTest(
FILE: packages/cloud_firestore/cloud_firestore/example/lib/firebase_options.dart
class DefaultFirebaseOptions (line 21) | class DefaultFirebaseOptions {
FILE: packages/cloud_firestore/cloud_firestore/example/lib/main.dart
function loadBundleSetup (line 19) | Future<Uint8List> loadBundleSetup(int number)
function main (line 29) | Future<void> main()
type MovieQuery (line 53) | enum MovieQuery {
function queryBy (line 64) | Query<Movie> queryBy(MovieQuery query)
class FirestoreExampleApp (line 80) | class FirestoreExampleApp extends StatelessWidget {
method build (line 82) | Widget build(BuildContext context)
class FilmList (line 94) | class FilmList extends StatefulWidget {
method createState (line 98) | _FilmListState createState()
class _FilmListState (line 101) | class _FilmListState extends State<FilmList> {
method build (line 105) | Widget build(BuildContext context)
method _resetLikes (line 300) | Future<void> _resetLikes()
class _MovieItem (line 317) | class _MovieItem extends StatelessWidget {
method build (line 403) | Widget build(BuildContext context)
class Likes (line 418) | class Likes extends StatefulWidget {
method createState (line 434) | _LikesState createState()
class _LikesState (line 437) | class _LikesState extends State<Likes> {
method _onLike (line 442) | Future<void> _onLike()
method didUpdateWidget (line 481) | void didUpdateWidget(Likes oldWidget)
method build (line 492) | Widget build(BuildContext context)
class Movie (line 506) | @immutable
method toJson (line 537) | Map<String, Object?> toJson()
FILE: packages/cloud_firestore/cloud_firestore/example/test_driver/integration_test.dart
function main (line 7) | Future<void> main()
FILE: packages/cloud_firestore/cloud_firestore/example/windows/runner/flutter_window.cpp
function LRESULT (line 52) | LRESULT
FILE: packages/cloud_firestore/cloud_firestore/example/windows/runner/flutter_window.h
function class (line 18) | class FlutterWindow : public Win32Window {
FILE: packages/cloud_firestore/cloud_firestore/example/windows/runner/main.cpp
function wWinMain (line 12) | int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,
FILE: packages/cloud_firestore/cloud_firestore/example/windows/runner/utils.cpp
function CreateAndAttachConsole (line 14) | void CreateAndAttachConsole() {
function GetCommandLineArguments (line 28) | std::vector<std::string> GetCommandLineArguments() {
function Utf8FromUtf16 (line 48) | std::string Utf8FromUtf16(const wchar_t* utf16_string) {
FILE: packages/cloud_firestore/cloud_firestore/example/windows/runner/win32_window.cpp
function Scale (line 42) | int Scale(int source, double scale_factor) {
function EnableFullDpiSupportIfAvailable (line 48) | void EnableFullDpiSupportIfAvailable(HWND hwnd) {
class WindowClassRegistrar (line 65) | class WindowClassRegistrar {
method WindowClassRegistrar (line 70) | static WindowClassRegistrar* GetInstance() {
method WindowClassRegistrar (line 86) | WindowClassRegistrar() = default;
function wchar_t (line 95) | const wchar_t* WindowClassRegistrar::GetWindowClass() {
function LRESULT (line 158) | LRESULT CALLBACK Win32Window::WndProc(HWND const window, UINT const mess...
function LRESULT (line 176) | LRESULT
function Win32Window (line 234) | Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept {
function RECT (line 250) | RECT Win32Window::GetClientArea() {
function HWND (line 256) | HWND Win32Window::GetHandle() { return window_handle_; }
FILE: packages/cloud_firestore/cloud_firestore/example/windows/runner/win32_window.h
type Size (line 27) | struct Size {
FILE: packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query.dart
class AggregateQuery (line 9) | class AggregateQuery {
method get (line 21) | Future<AggregateQuerySnapshot> get({
method count (line 29) | AggregateQuery count()
FILE: packages/cloud_firestore/cloud_firestore/lib/src/aggregate_query_snapshot.dart
class AggregateQuerySnapshot (line 8) | class AggregateQuerySnapshot {
method getSum (line 22) | double? getSum(String field)
method getAverage (line 25) | double? getAverage(String field)
FILE: packages/cloud_firestore/cloud_firestore/lib/src/collection_reference.dart
class CollectionReference (line 7) | @immutable
method add (line 29) | Future<DocumentReference<T>> add(T data)
method doc (line 39) | DocumentReference<T> doc([String? path])
method withConverter (line 65) | CollectionReference<R> withConverter<R extends Object?>({
class _JsonCollectionReference (line 74) | @immutable
method add (line 105) | Future<DocumentReference<Map<String, dynamic>>> add(
method doc (line 114) | DocumentReference<Map<String, dynamic>> doc([String? path])
method withConverter (line 129) | CollectionReference<R> withConverter<R extends Object?>({
method toString (line 151) | String toString()
class _WithConverterCollectionReference (line 157) | @immutable
method add (line 183) | Future<DocumentReference<T>> add(T data)
method doc (line 196) | DocumentReference<T> doc([String? path])
method withConverter (line 205) | CollectionReference<R> withConverter<R extends Object?>({
method toString (line 234) | String toString()
FILE: packages/cloud_firestore/cloud_firestore/lib/src/document_change.dart
class DocumentChange (line 11) | abstract class DocumentChange<T extends Object?> {
class _JsonDocumentChange (line 33) | class _JsonDocumentChange implements DocumentChange<Map<String, dynamic>> {
class _WithConverterDocumentChange (line 56) | class _WithConverterDocumentChange<T extends Object?>
FILE: packages/cloud_firestore/cloud_firestore/lib/src/document_reference.dart
class DocumentReference (line 13) | @sealed
method collection (line 33) | CollectionReference<Map<String, dynamic>> collection(String collection...
method delete (line 36) | Future<void> delete()
method update (line 44) | Future<void> update(Map<Object, Object?> data)
method get (line 51) | Future<DocumentSnapshot<T>> get([GetOptions? options])
method snapshots (line 57) | Stream<DocumentSnapshot<T>> snapshots({
method set (line 67) | Future<void> set(T data, [SetOptions? options])
method withConverter (line 92) | DocumentReference<R> withConverter<R>({
class _JsonDocumentReference (line 98) | @immutable
method collection (line 122) | CollectionReference<Map<String, dynamic>> collection(String collection...
method delete (line 140) | Future<void> delete()
method get (line 143) | Future<DocumentSnapshot<Map<String, dynamic>>> get([
method snapshots (line 155) | Stream<DocumentSnapshot<Map<String, dynamic>>> snapshots({
method set (line 178) | Future<void> set(Map<String, dynamic> data, [SetOptions? options])
method update (line 186) | Future<void> update(Map<Object, Object?> data)
method withConverter (line 192) | DocumentReference<T> withConverter<T>({
method toString (line 209) | String toString()
class _WithConverterDocumentReference (line 218) | @immutable
method collection (line 232) | CollectionReference<Map<String, dynamic>> collection(String collection...
method delete (line 237) | Future<void> delete()
method get (line 242) | Future<_WithConverterDocumentSnapshot<T>> get([GetOptions? options])
method set (line 275) | Future<void> set(T data, [SetOptions? options])
method snapshots (line 283) | Stream<_WithConverterDocumentSnapshot<T>> snapshots({
method update (line 302) | Future<void> update(Map<Object, Object?> data)
method withConverter (line 307) | DocumentReference<R> withConverter<R>({
method toString (line 335) | String toString()
FILE: packages/cloud_firestore/cloud_firestore/lib/src/document_snapshot.dart
type FromFirestore (line 7) | typedef FromFirestore<T> = T Function(
type ToFirestore (line 11) | typedef ToFirestore<T> = Map<String, Object?> Function(
class SnapshotOptions (line 21) | @sealed
class DocumentSnapshot (line 29) | @sealed
method data (line 45) | T? data()
method get (line 54) | dynamic get(Object field)
class _JsonDocumentSnapshot (line 60) | class _JsonDocumentSnapshot implements DocumentSnapshot<Map<String, dyna...
method data (line 82) | Map<String, dynamic>? data()
method get (line 91) | dynamic get(Object field)
class _WithConverterDocumentSnapshot (line 104) | class _WithConverterDocumentSnapshot<T> implements DocumentSnapshot<T> {
method data (line 116) | T? data()
method get (line 139) | dynamic get(Object field)
FILE: packages/cloud_firestore/cloud_firestore/lib/src/field_value.dart
class FieldValue (line 13) | @immutable
method arrayUnion (line 28) | FieldValue arrayUnion(List<dynamic> elements)
method arrayRemove (line 37) | FieldValue arrayRemove(List<dynamic> elements)
method delete (line 41) | FieldValue delete()
method serverTimestamp (line 45) | FieldValue serverTimestamp()
method increment (line 50) | FieldValue increment(num value)
method toString (line 56) | String toString()
FILE: packages/cloud_firestore/cloud_firestore/lib/src/filters.dart
class _FilterObject (line 7) | class _FilterObject {
method build (line 8) | Map<String, Object?> build()
class _FilterQuery (line 13) | class _FilterQuery extends _FilterObject {
method build (line 22) | Map<String, Object?> build()
class _FilterOperator (line 31) | class _FilterOperator extends _FilterObject {
method build (line 38) | Map<String, Object> build()
class Filter (line 48) | class Filter extends FilterPlatformInterface {
method _getOperator (line 157) | String _getOperator(
method _getValue (line 190) | Object? _getValue(
method or (line 226) | Filter or(
method and (line 301) | Filter and(
method _generateFilter (line 370) | Filter _generateFilter(
method toJson (line 398) | Map<String, Object?> toJson()
FILE: packages/cloud_firestore/cloud_firestore/lib/src/firestore.dart
class FirebaseFirestore (line 18) | class FirebaseFirestore extends FirebasePluginPlatform {
method instanceFor (line 34) | FirebaseFirestore instanceFor({
method collection (line 72) | CollectionReference<Map<String, dynamic>> collection(String collection...
method batch (line 91) | WriteBatch batch()
method clearPersistence (line 105) | Future<void> clearPersistence()
method loadBundle (line 109) | LoadBundleTask loadBundle(Uint8List bundle)
method useFirestoreEmulator (line 120) | void useFirestoreEmulator(
method namedQueryWithConverterGet (line 161) | Future<QuerySnapshot<T>> namedQueryWithConverterGet<T>(
method namedQueryGet (line 174) | Future<QuerySnapshot<Map<String, dynamic>>> namedQueryGet(
method collectionGroup (line 184) | Query<Map<String, dynamic>> collectionGroup(String collectionPath)
method disableNetwork (line 201) | Future<void> disableNetwork()
method doc (line 206) | DocumentReference<Map<String, dynamic>> doc(String documentPath)
method enableNetwork (line 220) | Future<void> enableNetwork()
method snapshotsInSync (line 226) | Stream<void> snapshotsInSync()
method runTransaction (line 254) | Future<T> runTransaction<T>(
method terminate (line 308) | Future<void> terminate()
method waitForPendingWrites (line 322) | Future<void> waitForPendingWrites()
method persistentCacheIndexManager (line 326) | PersistentCacheIndexManager? persistentCacheIndexManager()
method setIndexConfigurationFromJSON (line 353) | Future<void> setIndexConfigurationFromJSON(String json)
method setLoggingEnabled (line 358) | Future<void> setLoggingEnabled(bool enabled)
method toString (line 372) | String toString()
FILE: packages/cloud_firestore/cloud_firestore/lib/src/load_bundle_task.dart
class LoadBundleTask (line 7) | class LoadBundleTask {
FILE: packages/cloud_firestore/cloud_firestore/lib/src/load_bundle_task_snapshot.dart
class LoadBundleTaskSnapshot (line 8) | class LoadBundleTaskSnapshot {
FILE: packages/cloud_firestore/cloud_firestore/lib/src/persistent_cache_index_manager.dart
class PersistentCacheIndexManager (line 7) | class PersistentCacheIndexManager {
method enableIndexAutoCreation (line 18) | Future<void> enableIndexAutoCreation()
method disableIndexAutoCreation (line 24) | Future<void> disableIndexAutoCreation()
method deleteAllIndexes (line 30) | Future<void> deleteAllIndexes()
FILE: packages/cloud_firestore/cloud_firestore/lib/src/query.dart
class Query (line 11) | @sealed
method endAtDocument (line 38) | Query<T> endAtDocument(
method endAt (line 49) | Query<T> endAt(Iterable<Object?> values)
method endBeforeDocument (line 57) | Query<T> endBeforeDocument(
method endBefore (line 68) | Query<T> endBefore(Iterable<Object?> values)
method get (line 74) | Future<QuerySnapshot<T>> get([GetOptions? options])
method limit (line 78) | Query<T> limit(int limit)
method limitToLast (line 84) | Query<T> limitToLast(int limit)
method snapshots (line 87) | Stream<QuerySnapshot<T>> snapshots({
method orderBy (line 103) | Query<T> orderBy(Object field, {bool descending = false})
method startAfterDocument (line 111) | Query<T> startAfterDocument(
method startAfter (line 122) | Query<T> startAfter(Iterable<Object?> values)
method startAtDocument (line 130) | Query<T> startAtDocument(
method startAt (line 141) | Query<T> startAt(Iterable<Object?> values)
method where (line 154) | Query<T> where(
method withConverter (line 188) | Query<R> withConverter<R>({
method count (line 193) | AggregateQuery count()
method aggregate (line 197) | AggregateQuery aggregate(
class _JsonQuery (line 234) | class _JsonQuery implements Query<Map<String, dynamic>> {
method _hasStartCursor (line 258) | bool _hasStartCursor()
method _hasEndCursor (line 263) | bool _hasEndCursor()
method isNotIn (line 267) | bool isNotIn(String operator)
method _assertQueryCursorSnapshot (line 277) | Map<String, dynamic> _assertQueryCursorSnapshot(
method _assertQueryCursorValues (line 329) | Iterable<dynamic> _assertQueryCursorValues(Iterable<Object?> fields)
method _assertValidFieldType (line 342) | void _assertValidFieldType(Object field)
method endAtDocument (line 367) | Query<Map<String, dynamic>> endAtDocument(DocumentSnapshot documentSna...
method endAt (line 382) | Query<Map<String, dynamic>> endAt(Iterable<Object?> values)
method endBeforeDocument (line 394) | Query<Map<String, dynamic>> endBeforeDocument(
method endBefore (line 411) | Query<Map<String, dynamic>> endBefore(Iterable<Object?> values)
method get (line 424) | Future<QuerySnapshot<Map<String, dynamic>>> get([GetOptions? options])
method limit (line 433) | Query<Map<String, dynamic>> limit(int limit)
method limitToLast (line 443) | Query<Map<String, dynamic>> limitToLast(int limit)
method snapshots (line 455) | Stream<QuerySnapshot<Map<String, dynamic>>> snapshots({
method orderBy (line 486) | Query<Map<String, dynamic>> orderBy(
method startAfterDocument (line 530) | Query<Map<String, dynamic>> startAfterDocument(
method startAfter (line 548) | Query<Map<String, dynamic>> startAfter(Iterable<Object?> values)
method startAtDocument (line 560) | Query<Map<String, dynamic>> startAtDocument(
method startAt (line 578) | Query<Map<String, dynamic>> startAt(Iterable<Object?> values)
method where (line 596) | Query<Map<String, dynamic>> where(
method addCondition (line 637) | void addCondition(dynamic field, String operator, dynamic value)
method withConverter (line 803) | Query<R> withConverter<R extends Object?>({
method count (line 828) | AggregateQuery count()
method aggregate (line 835) | AggregateQuery aggregate(
class _WithConverterQuery (line 905) | class _WithConverterQuery<T extends Object?> implements Query<T> {
method _mapQuery (line 922) | Query<T> _mapQuery(Query<Map<String, dynamic>> newOriginalQuery)
method get (line 931) | Future<QuerySnapshot<T>> get([GetOptions? options])
method snapshots (line 941) | Stream<QuerySnapshot<T>> snapshots({
method endAt (line 960) | Query<T> endAt(Iterable<Object?> values)
method endAtDocument (line 965) | Query<T> endAtDocument(DocumentSnapshot documentSnapshot)
method endBefore (line 970) | Query<T> endBefore(Iterable<Object?> values)
method endBeforeDocument (line 975) | Query<T> endBeforeDocument(DocumentSnapshot documentSnapshot)
method limit (line 980) | Query<T> limit(int limit)
method limitToLast (line 985) | Query<T> limitToLast(int limit)
method orderBy (line 990) | Query<T> orderBy(Object field, {bool descending = false})
method startAfter (line 995) | Query<T> startAfter(Iterable<Object?> values)
method startAfterDocument (line 1000) | Query<T> startAfterDocument(DocumentSnapshot documentSnapshot)
method startAt (line 1005) | Query<T> startAt(Iterable<Object?> values)
method startAtDocument (line 1010) | Query<T> startAtDocument(DocumentSnapshot documentSnapshot)
method where (line 1015) | Query<T> where(
method withConverter (line 1048) | Query<R> withConverter<R extends Object?>({
method count (line 1075) | AggregateQuery count()
method aggregate (line 1082) | AggregateQuery aggregate(
FILE: packages/cloud_firestore/cloud_firestore/lib/src/query_document_snapshot.dart
class QueryDocumentSnapshot (line 13) | @sealed
method data (line 17) | T data()
class _JsonQueryDocumentSnapshot (line 20) | class _JsonQueryDocumentSnapshot extends _JsonDocumentSnapshot
method data (line 29) | Map<String, dynamic> data()
class _WithConverterQueryDocumentSnapshot (line 38) | class _WithConverterQueryDocumentSnapshot<T extends Object?>
method data (line 55) | T data()
FILE: packages/cloud_firestore/cloud_firestore/lib/src/query_snapshot.dart
class QuerySnapshot (line 9) | abstract class QuerySnapshot<T extends Object?> {
class _JsonQuerySnapshot (line 26) | class _JsonQuerySnapshot implements QuerySnapshot<Map<String, dynamic>> {
class _WithConverterQuerySnapshot (line 58) | class _WithConverterQuerySnapshot<T extends Object?>
FILE: packages/cloud_firestore/cloud_firestore/lib/src/snapshot_metadata.dart
class SnapshotMetadata (line 8) | class SnapshotMetadata {
FILE: packages/cloud_firestore/cloud_firestore/lib/src/transaction.dart
type TransactionHandler (line 9) | typedef TransactionHandler<T> = Future<T> Function(Transaction transacti...
class Transaction (line 12) | class Transaction {
method get (line 24) | Future<DocumentSnapshot<T>> get<T extends Object?>(
method delete (line 48) | Transaction delete(DocumentReference documentReference)
method update (line 64) | Transaction update(
method set (line 85) | Transaction set<T>(
FILE: packages/cloud_firestore/cloud_firestore/lib/src/utils/codec_utility.dart
class _CodecUtility (line 13) | class _CodecUtility {
method replaceValueWithDelegatesInMap (line 14) | Map<String, dynamic>? replaceValueWithDelegatesInMap(
method replaceValueWithDelegatesInMapFieldPath (line 28) | Map<FieldPath, dynamic>? replaceValueWithDelegatesInMapFieldPath(
method replaceValueWithDelegatesInArray (line 49) | List<dynamic>? replaceValueWithDelegatesInArray(
method replaceDelegatesWithValueInMap (line 58) | Map<String, dynamic>? replaceDelegatesWithValueInMap(
method replaceDelegatesWithValueInArray (line 70) | List<dynamic>? replaceDelegatesWithValueInArray(
method valueEncode (line 82) | dynamic valueEncode(dynamic value)
method valueDecode (line 93) | dynamic valueDecode(dynamic value, FirebaseFirestore firestore)
function convertNum (line 107) | num convertNum(num input)
FILE: packages/cloud_firestore/cloud_firestore/lib/src/write_batch.dart
class WriteBatch (line 13) | class WriteBatch {
method commit (line 24) | Future<void> commit()
method delete (line 27) | void delete(DocumentReference document)
method set (line 41) | void set<T>(
method update (line 71) | void update(DocumentReference document, Map<Object, Object?> data)
FILE: packages/cloud_firestore/cloud_firestore/test/cloud_firestore_test.dart
function main (line 11) | void main()
FILE: packages/cloud_firestore/cloud_firestore/test/collection_reference_test.dart
function main (line 11) | void main()
function fromFirestore (line 176) | int fromFirestore(
function toFirestore (line 181) | Map<String, dynamic> toFirestore(Object value, SetOptions? options)
function expectEqual (line 195) | void expectEqual(Object? a, Object? b)
function expectNotEqual (line 200) | void expectNotEqual(Object? a, Object? b)
function fromFirestore (line 317) | int fromFirestore(
function toFirestore (line 322) | Map<String, dynamic> toFirestore(Object value, SetOptions? options)
FILE: packages/cloud_firestore/cloud_firestore/test/field_value_test.dart
function main (line 8) | void main()
FILE: packages/cloud_firestore/cloud_firestore/test/mock.dart
type Callback (line 9) | typedef Callback = void Function(MethodCall call);
function setupCloudFirestoreMocks (line 11) | void setupCloudFirestoreMocks([Callback? customHandlers])
FILE: packages/cloud_firestore/cloud_firestore/test/query_test.dart
function main (line 11) | void main()
function fromFirestore (line 283) | int fromFirestore(Object? snapshot, Object? options)
function toFirestore (line 284) | Map<String, Object?> toFirestore(Object? value, Object? options)
function intToFirestore (line 285) | Map<String, Object?> intToFirestore(int value, Object? options)
function configureCache (line 374) | void configureCache(int? cacheSizeBytes)
FILE: packages/cloud_firestore/cloud_firestore/test/test_firestore_message_codec.dart
class TestFirestoreMessageCodec (line 15) | class TestFirestoreMessageCodec extends FirestoreMessageCodec {
method readValueOfType (line 31) | Object? readValueOfType(int type, ReadBuffer buffer)
FILE: packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.cpp
type cloud_firestore_windows (line 40) | namespace cloud_firestore_windows {
function RegisterEventChannelWithUUID (line 141) | std::string RegisterEventChannelWithUUID(
function RegisterEventChannel (line 159) | std::string RegisterEventChannel(
function Firestore (line 185) | Firestore* GetFirestoreFromPigeon(const FirestorePigeonFirebaseApp& pi...
function FlutterError (line 277) | FlutterError CloudFirestorePlugin::ParseError(
function GetSourceFromPigeon (line 292) | firebase::firestore::Source GetSourceFromPigeon(const Source& pigeonSo...
function GetServerTimestampBehaviorFromPigeon (line 304) | firebase::firestore::DocumentSnapshot::ServerTimestampBehavior
function EncodableValue (line 321) | EncodableValue ConvertFieldValueToEncodableValue(const FieldValue& fie...
function ConvertToEncodableMap (line 373) | flutter::EncodableMap ConvertToEncodableMap(
function PigeonSnapshotMetadata (line 385) | PigeonSnapshotMetadata ParseSnapshotMetadata(
function PigeonDocumentSnapshot (line 392) | PigeonDocumentSnapshot ParseDocumentSnapshot(
function ParseDocumentSnapshots (line 409) | flutter::EncodableList ParseDocumentSnapshots(
function DocumentChangeType (line 421) | DocumentChangeType ParseDocumentChangeType(
function PigeonDocumentChange (line 435) | PigeonDocumentChange ParseDocumentChange(
function ParseDocumentChanges (line 446) | flutter::EncodableList ParseDocumentChanges(
function PigeonQuerySnapshot (line 457) | PigeonQuerySnapshot ParseQuerySnapshot(
function ConvertToFieldValueList (line 470) | std::vector<firebase::firestore::FieldValue> ConvertToFieldValueList(
function ConvertToMapFieldValue (line 481) | firebase::firestore::MapFieldValue ConvertToMapFieldValue(
function ConvertToMapFieldPathValue (line 503) | firebase::firestore::MapFieldPathValue ConvertToMapFieldPathValue(
class LoadBundleStreamHandler (line 532) | class LoadBundleStreamHandler
method LoadBundleStreamHandler (line 535) | LoadBundleStreamHandler(Firestore* firestore, std::string bundle) {
method OnListenInternal (line 540) | std::unique_ptr<flutter::StreamHandlerError<flutter::EncodableValue>>
method OnCancelInternal (line 594) | std::unique_ptr<flutter::StreamHandlerError<flutter::EncodableValue>>
class SnapshotInSyncStreamHandler (line 755) | class SnapshotInSyncStreamHandler
method SnapshotInSyncStreamHandler (line 758) | SnapshotInSyncStreamHandler(Firestore* firestore) { firestore_ = fir...
method OnListenInternal (line 760) | std::unique_ptr<flutter::StreamHandlerError<flutter::EncodableValue>>
method OnCancelInternal (line 778) | std::unique_ptr<flutter::StreamHandlerError<flutter::EncodableValue>>
method SetSendEventFunction (line 785) | void SetSendEventFunction(std::function<void()> func) {
method SendEvent (line 789) | void SendEvent() { events_->Success(flutter::EncodableValue()); }
class TransactionStreamHandler (line 817) | class TransactionStreamHandler
method TransactionStreamHandler (line 820) | TransactionStreamHandler(Firestore* firestore, long timeout, int max...
method ReceiveTransactionResponse (line 827) | void ReceiveTransactionResponse(
method OnListenInternal (line 836) | std::unique_ptr<flutter::StreamHandlerError<flutter::EncodableValue>>
method OnCancelInternal (line 938) | std::unique_ptr<flutter::StreamHandlerError<flutter::EncodableValue>>
function ConvertToFieldPathVector (line 1041) | std::vector<firebase::firestore::FieldPath> ConvertToFieldPathVector(
function ConvertToConditions (line 1159) | std::vector<std::vector<EncodableValue>> ConvertToConditions(
function filterFromJson (line 1179) | firebase::firestore::Filter filterFromJson(const EncodableMap& map) {
function ParseQuery (line 1252) | firebase::firestore::Query ParseQuery(firebase::firestore::Firestore* ...
function GetAggregateSourceFromPigeon (line 1397) | firebase::firestore::AggregateSource GetAggregateSourceFromPigeon(
class QuerySnapshotStreamHandler (line 1540) | class QuerySnapshotStreamHandler
method QuerySnapshotStreamHandler (line 1543) | QuerySnapshotStreamHandler(
method OnListenInternal (line 1552) | std::unique_ptr<flutter::StreamHandlerError<flutter::EncodableValue>>
method OnCancelInternal (line 1609) | std::unique_ptr<flutter::StreamHandlerError<flutter::EncodableValue>>
class DocumentSnapshotStreamHandler (line 1652) | class DocumentSnapshotStreamHandler
method DocumentSnapshotStreamHandler (line 1655) | DocumentSnapshotStreamHandler(
method OnListenInternal (line 1664) | std::unique_ptr<flutter::StreamHandlerError<flutter::EncodableValue>>
method OnCancelInternal (line 1699) | std::unique_ptr<flutter::StreamHandlerError<flutter::EncodableValue>>
FILE: packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin.h
function namespace (line 22) | namespace cloud_firestore_windows {
FILE: packages/cloud_firestore/cloud_firestore/windows/cloud_firestore_plugin_c_api.cpp
function CloudFirestorePluginCApiRegisterWithRegistrar (line 11) | void CloudFirestorePluginCApiRegisterWithRegistrar(
FILE: packages/cloud_firestore/cloud_firestore/windows/firestore_codec.h
function namespace (line 22) | namespace cloud_firestore_windows {
FILE: packages/cloud_firestore/cloud_firestore/windows/messages.g.cpp
type cloud_firestore_windows (line 20) | namespace cloud_firestore_windows {
function EncodableList (line 106) | EncodableList PigeonFirebaseSettings::ToEncodableList() const {
function PigeonFirebaseSettings (line 120) | PigeonFirebaseSettings PigeonFirebaseSettings::FromEncodableList(
function PigeonFirebaseSettings (line 160) | const PigeonFirebaseSettings& FirestorePigeonFirebaseApp::settings() c...
function EncodableList (line 178) | EncodableList FirestorePigeonFirebaseApp::ToEncodableList() const {
function FirestorePigeonFirebaseApp (line 187) | FirestorePigeonFirebaseApp FirestorePigeonFirebaseApp::FromEncodableList(
function EncodableList (line 216) | EncodableList PigeonSnapshotMetadata::ToEncodableList() const {
function PigeonSnapshotMetadata (line 224) | PigeonSnapshotMetadata PigeonSnapshotMetadata::FromEncodableList(
function EncodableMap (line 250) | const EncodableMap* PigeonDocumentSnapshot::data() const {
function PigeonSnapshotMetadata (line 262) | const PigeonSnapshotMetadata& PigeonDocumentSnapshot::metadata() const {
function EncodableList (line 271) | EncodableList PigeonDocumentSnapshot::ToEncodableList() const {
function PigeonDocumentSnapshot (line 280) | PigeonDocumentSnapshot PigeonDocumentSnapshot::FromEncodableList(
function DocumentChangeType (line 302) | const DocumentChangeType& PigeonDocumentChange::type() const { return ...
function PigeonDocumentSnapshot (line 308) | const PigeonDocumentSnapshot& PigeonDocumentChange::document() const {
function EncodableList (line 329) | EncodableList PigeonDocumentChange::ToEncodableList() const {
function PigeonDocumentChange (line 339) | PigeonDocumentChange PigeonDocumentChange::FromEncodableList(
function EncodableList (line 357) | const EncodableList& PigeonQuerySnapshot::documents() const {
function EncodableList (line 365) | const EncodableList& PigeonQuerySnapshot::document_changes() const {
function PigeonSnapshotMetadata (line 373) | const PigeonSnapshotMetadata& PigeonQuerySnapshot::metadata() const {
function EncodableList (line 382) | EncodableList PigeonQuerySnapshot::ToEncodableList() const {
function PigeonQuerySnapshot (line 391) | PigeonQuerySnapshot PigeonQuerySnapshot::FromEncodableList(
function Source (line 407) | const Source& PigeonGetOptions::source() const { return source_; }
function ServerTimestampBehavior (line 413) | const ServerTimestampBehavior& PigeonGetOptions::server_timestamp_beha...
function EncodableList (line 423) | EncodableList PigeonGetOptions::ToEncodableList() const {
function PigeonGetOptions (line 431) | PigeonGetOptions PigeonGetOptions::FromEncodableList(
function EncodableList (line 459) | const EncodableList* PigeonDocumentOption::merge_fields() const {
function EncodableList (line 472) | EncodableList PigeonDocumentOption::ToEncodableList() const {
function PigeonDocumentOption (line 481) | PigeonDocumentOption PigeonDocumentOption::FromEncodableList(
function PigeonTransactionType (line 510) | const PigeonTransactionType& PigeonTransactionCommand::type() const {
function EncodableMap (line 525) | const EncodableMap* PigeonTransactionCommand::data() const {
function PigeonDocumentOption (line 537) | const PigeonDocumentOption* PigeonTransactionCommand::option() const {
function EncodableList (line 552) | EncodableList PigeonTransactionCommand::ToEncodableList() const {
function PigeonTransactionCommand (line 563) | PigeonTransactionCommand PigeonTransactionCommand::FromEncodableList(
function EncodableMap (line 605) | const EncodableMap* DocumentReferenceRequest::data() const {
function PigeonDocumentOption (line 617) | const PigeonDocumentOption* DocumentReferenceRequest::option() const {
function Source (line 632) | const Source* DocumentReferenceRequest::source() const {
function ServerTimestampBehavior (line 644) | const ServerTimestampBehavior*
function EncodableList (line 661) | EncodableList DocumentReferenceRequest::ToEncodableList() const {
function DocumentReferenceRequest (line 675) | DocumentReferenceRequest DocumentReferenceRequest::FromEncodableList(
function EncodableList (line 726) | const EncodableList* PigeonQueryParameters::where() const {
function EncodableList (line 738) | const EncodableList* PigeonQueryParameters::order_by() const {
function EncodableList (line 774) | const EncodableList* PigeonQueryParameters::start_at() const {
function EncodableList (line 787) | const EncodableList* PigeonQueryParameters::start_after() const {
function EncodableList (line 800) | const EncodableList* PigeonQueryParameters::end_at() const {
function EncodableList (line 812) | const EncodableList* PigeonQueryParameters::end_before() const {
function EncodableMap (line 825) | const EncodableMap* PigeonQueryParameters::filters() const {
function EncodableList (line 837) | EncodableList PigeonQueryParameters::ToEncodableList() const {
function PigeonQueryParameters (line 854) | PigeonQueryParameters PigeonQueryParameters::FromEncodableList(
function AggregateType (line 905) | const AggregateType& AggregateQuery::type() const { return type_; }
function EncodableList (line 923) | EncodableList AggregateQuery::ToEncodableList() const {
function AggregateQuery (line 931) | AggregateQuery AggregateQuery::FromEncodableList(const EncodableList& ...
function AggregateType (line 952) | const AggregateType& AggregateQueryResponse::type() const { return typ...
function EncodableList (line 980) | EncodableList AggregateQueryResponse::ToEncodableList() const {
function AggregateQueryResponse (line 989) | AggregateQueryResponse AggregateQueryResponse::FromEncodableList(
function EncodableValue (line 1006) | EncodableValue FirebaseFirestoreHostApiCodecSerializer::ReadValueOfType(
function EncodableValue (line 2317) | EncodableValue FirebaseFirestoreHostApi::WrapError(
function EncodableValue (line 2324) | EncodableValue FirebaseFirestoreHostApi::WrapError(const FlutterError&...
FILE: packages/cloud_firestore/cloud_firestore/windows/messages.g.h
function namespace (line 20) | namespace cloud_firestore_windows {
function has_error (line 51) | bool has_error() const { return std::holds_alternative<FlutterError>(v_); }
function T (line 58) | T TakeValue() && { return std::get<T>(std::move(v_)); }
type class (line 64) | enum class
type class (line 76) | enum class
type class (line 106) | enum class
type class (line 120) | enum class
type class (line 132) | enum class
type class (line 139) | enum class
type class (line 145) | enum class
type class (line 147) | enum class
type class (line 154) | enum class
function Source (line 359) | const Source& source() const;
function std (line 455) | const std::string& path() const;
function AggregateType (line 566) | const AggregateType& type() const;
FILE: packages/cloud_firestore/cloud_firestore/windows/test/cloud_firestore_plugin_test.cpp
type cloud_firestore_windows (line 17) | namespace cloud_firestore_windows {
type test (line 18) | namespace test {
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/cloud_firestore_platform_interface.dart
function isValidCollectionPath (line 47) | bool isValidCollectionPath(String collectionPath)
function isValidDocumentPath (line 55) | bool isValidDocumentPath(String documentPath)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/blob.dart
class Blob (line 12) | @immutable
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/field_path.dart
class FieldPath (line 16) | @immutable
method toString (line 63) | String toString()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/field_path_type.dart
type FieldPathType (line 7) | enum FieldPathType {
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/filters.dart
class FilterPlatformInterface (line 8) | abstract class FilterPlatformInterface {
method toJson (line 9) | Map<String, Object?> toJson()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/geo_point.dart
class GeoPoint (line 9) | @immutable
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/get_options.dart
class GetOptions (line 13) | class GetOptions {
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/internal/pointer.dart
class Pointer (line 13) | @immutable
method isCollection (line 42) | bool isCollection()
method isDocument (line 50) | bool isDocument()
method collectionPath (line 55) | String collectionPath(String collectionPath)
method documentPath (line 61) | String documentPath(String documentPath)
method parentPath (line 67) | String? parentPath()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/load_bundle_task_state.dart
type LoadBundleTaskState (line 9) | enum LoadBundleTaskState {
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_aggregate_query.dart
class MethodChannelAggregateQuery (line 9) | class MethodChannelAggregateQuery extends AggregateQueryPlatform {
method get (line 27) | Future<AggregateQuerySnapshotPlatform> get({
method count (line 66) | AggregateQueryPlatform count()
method sum (line 81) | AggregateQueryPlatform sum(String field)
method average (line 96) | AggregateQueryPlatform average(String field)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_collection_reference.dart
class MethodChannelCollectionReference (line 22) | class MethodChannelCollectionReference extends MethodChannelQuery
method doc (line 55) | DocumentReferencePlatform doc([String? path])
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_document_change.dart
class MethodChannelDocumentChange (line 10) | class MethodChannelDocumentChange extends DocumentChangePlatform {
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_document_reference.dart
class MethodChannelDocumentReference (line 18) | class MethodChannelDocumentReference extends DocumentReferencePlatform {
method set (line 33) | Future<void> set(Map<String, dynamic> data, [SetOptions? options])
method update (line 53) | Future<void> update(Map<FieldPath, dynamic> data)
method get (line 69) | Future<DocumentSnapshotPlatform> get(
method delete (line 94) | Future<void> delete()
method snapshots (line 109) | Stream<DocumentSnapshotPlatform> snapshots({
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_field_value.dart
type FieldValueType (line 13) | enum FieldValueType {
class MethodChannelFieldValue (line 34) | @immutable
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_field_value_factory.dart
class MethodChannelFieldValueFactory (line 14) | class MethodChannelFieldValueFactory extends FieldValueFactoryPlatform {
method arrayRemove (line 16) | MethodChannelFieldValue arrayRemove(List elements)
method arrayUnion (line 20) | MethodChannelFieldValue arrayUnion(List elements)
method delete (line 24) | MethodChannelFieldValue delete()
method increment (line 28) | MethodChannelFieldValue increment(num value)
method serverTimestamp (line 44) | MethodChannelFieldValue serverTimestamp()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_firestore.dart
class MethodChannelFirebaseFirestore (line 27) | class MethodChannelFirebaseFirestore extends FirebaseFirestorePlatform {
method querySnapshotChannel (line 37) | EventChannel querySnapshotChannel(String id)
method documentSnapshotChannel (line 45) | EventChannel documentSnapshotChannel(String id)
method snapshotsInSyncChannel (line 53) | EventChannel snapshotsInSyncChannel(String id)
method loadBundleChannel (line 61) | EventChannel loadBundleChannel(String id)
method delegateFor (line 85) | FirebaseFirestorePlatform delegateFor({
method loadBundle (line 93) | LoadBundleTaskPlatform loadBundle(Uint8List bundle)
method namedQueryGet (line 100) | Future<QuerySnapshotPlatform> namedQueryGet(
method batch (line 136) | WriteBatchPlatform batch()
method clearPersistence (line 139) | Future<void> clearPersistence()
method collection (line 148) | CollectionReferencePlatform collection(String collectionPath)
method collectionGroup (line 153) | QueryPlatform collectionGroup(String collectionPath)
method disableNetwork (line 163) | Future<void> disableNetwork()
method enableNetwork (line 172) | Future<void> enableNetwork()
method doc (line 181) | DocumentReferencePlatform doc(String documentPath)
method snapshotsInSync (line 186) | Stream<void> snapshotsInSync()
method runTransaction (line 213) | Future<T> runTransaction<T>(
method terminate (line 304) | Future<void> terminate()
method waitForPendingWrites (line 313) | Future<void> waitForPendingWrites()
method setIndexConfiguration (line 322) | Future<void> setIndexConfiguration(String indexConfiguration)
method persistentCacheIndexManager (line 334) | PersistentCacheIndexManagerPlatform? persistentCacheIndexManager()
method setLoggingEnabled (line 344) | Future<void> setLoggingEnabled(bool enabled)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_load_bundle_task.dart
class MethodChannelLoadBundleTask (line 14) | class MethodChannelLoadBundleTask extends LoadBundleTaskPlatform {
method mapNativeStream (line 18) | Stream<LoadBundleTaskSnapshotPlatform> mapNativeStream()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_persistent_cache_index_manager.dart
class MethodChannelPersistentCacheIndexManager (line 7) | class MethodChannelPersistentCacheIndexManager
method enableIndexAutoCreation (line 17) | Future<void> enableIndexAutoCreation()
method disableIndexAutoCreation (line 25) | Future<void> disableIndexAutoCreation()
method deleteAllIndexes (line 33) | Future<void> deleteAllIndexes()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query.dart
class MethodChannelQuery (line 23) | class MethodChannelQuery extends QueryPlatform {
method _copyWithParameters (line 65) | MethodChannelQuery _copyWithParameters(Map<String, dynamic> parameters)
method endAtDocument (line 78) | QueryPlatform endAtDocument(List<dynamic> orders, List<dynamic> values)
method endAt (line 87) | QueryPlatform endAt(Iterable<dynamic> fields)
method endBeforeDocument (line 95) | QueryPlatform endBeforeDocument(
method endBefore (line 105) | QueryPlatform endBefore(Iterable<dynamic> fields)
method get (line 114) | Future<QuerySnapshotPlatform> get(
method limit (line 136) | QueryPlatform limit(int limit)
method limitToLast (line 144) | QueryPlatform limitToLast(int limit)
method snapshots (line 152) | Stream<QuerySnapshotPlatform> snapshots({
method orderBy (line 217) | QueryPlatform orderBy(Iterable<List<dynamic>> orders)
method startAfterDocument (line 224) | QueryPlatform startAfterDocument(List<dynamic> orders, List<dynamic> v...
method startAfter (line 233) | QueryPlatform startAfter(Iterable<dynamic> fields)
method startAtDocument (line 241) | QueryPlatform startAtDocument(
method startAt (line 251) | QueryPlatform startAt(Iterable<dynamic> fields)
method where (line 259) | QueryPlatform where(Iterable<List<dynamic>> conditions)
method whereFilter (line 266) | QueryPlatform whereFilter(FilterPlatformInterface filter)
method count (line 273) | AggregateQueryPlatform count()
method aggregate (line 289) | AggregateQueryPlatform aggregate(
method sum (line 386) | AggregateQueryPlatform sum(String field)
method average (line 404) | AggregateQueryPlatform average(String field)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_query_snapshot.dart
class MethodChannelQuerySnapshot (line 12) | class MethodChannelQuerySnapshot extends QuerySnapshotPlatform {
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_transaction.dart
class MethodChannelTransaction (line 17) | class MethodChannelTransaction extends TransactionPlatform {
method get (line 46) | Future<DocumentSnapshotPlatform> get(String documentPath)
method delete (line 65) | MethodChannelTransaction delete(String documentPath)
method update (line 75) | MethodChannelTransaction update(
method set (line 89) | MethodChannelTransaction set(String documentPath, Map<String, dynamic>...
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/method_channel_write_batch.dart
class MethodChannelWriteBatch (line 20) | class MethodChannelWriteBatch extends WriteBatchPlatform {
method commit (line 36) | Future<void> commit()
method delete (line 53) | void delete(String documentPath)
method set (line 62) | void set(String documentPath, Map<String, dynamic> data,
method update (line 77) | void update(
method _assertNotCommitted (line 90) | void _assertNotCommitted()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/utils/auto_id_generator.dart
class AutoIdGenerator (line 17) | class AutoIdGenerator {
method autoId (line 26) | String autoId()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/utils/exception.dart
function convertPlatformException (line 12) | Never convertPlatformException(Object exception, StackTrace stackTrace)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/utils/firestore_message_codec.dart
class FirestoreMessageCodec (line 23) | class FirestoreMessageCodec extends StandardMessageCodec {
method writeValue (line 63) | void writeValue(WriteBuffer buffer, dynamic value)
method readValueOfType (line 137) | Object? readValueOfType(int type, ReadBuffer buffer)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/utils/maps.dart
function asStringKeyedMap (line 7) | Map<String, dynamic>? asStringKeyedMap(Map<dynamic, dynamic>? map)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/method_channel/utils/source.dart
function getSourceString (line 8) | String getSourceString(Source source)
function getAggregateSourceString (line 17) | String getAggregateSourceString(AggregateSource source)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/persistence_settings.dart
class PersistenceSettings (line 8) | class PersistenceSettings {
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/pigeon/messages.pigeon.dart
type DocumentChangeType (line 16) | enum DocumentChangeType {
type Source (line 30) | enum Source {
type ListenSource (line 54) | enum ListenSource {
type ServerTimestampBehavior (line 65) | enum ServerTimestampBehavior {
type AggregateSource (line 77) | enum AggregateSource {
type PersistenceCacheIndexManagerRequest (line 83) | enum PersistenceCacheIndexManagerRequest {
type PigeonTransactionResult (line 89) | enum PigeonTransactionResult {
type PigeonTransactionType (line 94) | enum PigeonTransactionType {
type AggregateType (line 101) | enum AggregateType {
class PigeonFirebaseSettings (line 107) | class PigeonFirebaseSettings {
method encode (line 126) | Object encode()
method decode (line 136) | PigeonFirebaseSettings decode(Object result)
class FirestorePigeonFirebaseApp (line 148) | class FirestorePigeonFirebaseApp {
method encode (line 161) | Object encode()
method decode (line 169) | FirestorePigeonFirebaseApp decode(Object result)
class PigeonSnapshotMetadata (line 179) | class PigeonSnapshotMetadata {
method encode (line 189) | Object encode()
method decode (line 196) | PigeonSnapshotMetadata decode(Object result)
class PigeonDocumentSnapshot (line 205) | class PigeonDocumentSnapshot {
method encode (line 218) | Object encode()
method decode (line 226) | PigeonDocumentSnapshot decode(Object result)
class PigeonDocumentChange (line 236) | class PigeonDocumentChange {
method encode (line 252) | Object encode()
method decode (line 261) | PigeonDocumentChange decode(Object result)
class PigeonQuerySnapshot (line 272) | class PigeonQuerySnapshot {
method encode (line 285) | Object encode()
method decode (line 293) | PigeonQuerySnapshot decode(Object result)
class PigeonGetOptions (line 304) | class PigeonGetOptions {
method encode (line 314) | Object encode()
method decode (line 321) | PigeonGetOptions decode(Object result)
class PigeonDocumentOption (line 331) | class PigeonDocumentOption {
method encode (line 341) | Object encode()
method decode (line 348) | PigeonDocumentOption decode(Object result)
class PigeonTransactionCommand (line 357) | class PigeonTransactionCommand {
method encode (line 373) | Object encode()
method decode (line 382) | PigeonTransactionCommand decode(Object result)
class DocumentReferenceRequest (line 395) | class DocumentReferenceRequest {
method encode (line 414) | Object encode()
method decode (line 424) | DocumentReferenceRequest decode(Object result)
class PigeonQueryParameters (line 440) | class PigeonQueryParameters {
method encode (line 471) | Object encode()
method decode (line 485) | PigeonQueryParameters decode(Object result)
class AggregateQuery (line 501) | class AggregateQuery {
method encode (line 511) | Object encode()
method decode (line 518) | AggregateQuery decode(Object result)
class AggregateQueryResponse (line 527) | class AggregateQueryResponse {
method encode (line 540) | Object encode()
method decode (line 548) | AggregateQueryResponse decode(Object result)
class _FirebaseFirestoreHostApiCodec (line 558) | class _FirebaseFirestoreHostApiCodec extends FirestoreMessageCodec {
method writeValue (line 561) | void writeValue(WriteBuffer buffer, Object? value)
method readValueOfType (line 607) | Object? readValueOfType(int type, ReadBuffer buffer)
class FirebaseFirestoreHostApi (line 641) | class FirebaseFirestoreHostApi {
method loadBundle (line 651) | Future<String> loadBundle(
method namedQueryGet (line 683) | Future<PigeonQuerySnapshot> namedQueryGet(
method clearPersistence (line 716) | Future<void> clearPersistence(FirestorePigeonFirebaseApp arg_app)
method disableNetwork (line 740) | Future<void> disableNetwork(FirestorePigeonFirebaseApp arg_app)
method enableNetwork (line 764) | Future<void> enableNetwork(FirestorePigeonFirebaseApp arg_app)
method terminate (line 788) | Future<void> terminate(FirestorePigeonFirebaseApp arg_app)
method waitForPendingWrites (line 812) | Future<void> waitForPendingWrites(FirestorePigeonFirebaseApp arg_app)
method setIndexConfiguration (line 836) | Future<void> setIndexConfiguration(
method setLoggingEnabled (line 863) | Future<void> setLoggingEnabled(bool arg_loggingEnabled)
method snapshotsInSyncSetup (line 887) | Future<String> snapshotsInSyncSetup(
method transactionCreate (line 918) | Future<String> transactionCreate(
method transactionStoreResult (line 952) | Future<void> transactionStoreResult(
method transactionGet (line 981) | Future<PigeonDocumentSnapshot> transactionGet(
method documentReferenceSet (line 1015) | Future<void> documentReferenceSet(
method documentReferenceUpdate (line 1042) | Future<void> documentReferenceUpdate(
method documentReferenceGet (line 1069) | Future<PigeonDocumentSnapshot> documentReferenceGet(
method documentReferenceDelete (line 1101) | Future<void> documentReferenceDelete(
method queryGet (line 1128) | Future<PigeonQuerySnapshot> queryGet(
method aggregateQuery (line 1168) | Future<List<AggregateQueryResponse?>> aggregateQuery(
method writeBatchCommit (line 1210) | Future<void> writeBatchCommit(
method querySnapshot (line 1237) | Future<String> querySnapshot(
method documentReferenceSnapshot (line 1281) | Future<String> documentReferenceSnapshot(
method persistenceCacheIndexManagerRequest (line 1319) | Future<void> persistenceCacheIndexManagerRequest(
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query.dart
class AggregateQueryPlatform (line 11) | abstract class AggregateQueryPlatform extends PlatformInterface {
method verify (line 22) | void verify(AggregateQueryPlatform instance)
method get (line 30) | Future<AggregateQuerySnapshotPlatform> get({
method count (line 37) | AggregateQueryPlatform count()
method sum (line 42) | AggregateQueryPlatform sum(
method average (line 49) | AggregateQueryPlatform average(String field)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_aggregate_query_snapshot.dart
class AggregateQuerySnapshotPlatform (line 10) | class AggregateQuerySnapshotPlatform extends PlatformInterface {
method verifyExtends (line 28) | void verifyExtends(AggregateQuerySnapshotPlatform instance)
method getAverage (line 43) | double? getAverage(String field)
method getSum (line 51) | double? getSum(String field)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_collection_reference.dart
class CollectionReferencePlatform (line 13) | abstract class CollectionReferencePlatform extends QueryPlatform {
method doc (line 49) | DocumentReferencePlatform doc([String? path])
method toString (line 65) | String toString()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_document_change.dart
class DocumentChangePlatform (line 13) | class DocumentChangePlatform extends PlatformInterface {
method verify (line 30) | void verify(DocumentChangePlatform instance)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_document_reference.dart
class DocumentReferencePlatform (line 18) | abstract class DocumentReferencePlatform extends PlatformInterface {
method verify (line 34) | void verify(DocumentReferencePlatform instance)
method collection (line 56) | CollectionReferencePlatform collection(String collectionPath)
method delete (line 61) | Future<void> delete()
method get (line 68) | Future<DocumentSnapshotPlatform> get(
method snapshots (line 74) | Stream<DocumentSnapshotPlatform> snapshots({
method set (line 87) | Future<void> set(Map<String, dynamic> data, [SetOptions? options])
method update (line 97) | Future<void> update(Map<FieldPath, dynamic> data)
method toString (line 113) | String toString()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_document_snapshot.dart
class DocumentSnapshotPlatform (line 15) | class DocumentSnapshotPlatform extends PlatformInterface {
method verify (line 30) | void verify(DocumentSnapshotPlatform instance)
method data (line 64) | Map<String, dynamic>? data()
method get (line 75) | dynamic get(Object field)
method _findKeyValueInMap (line 87) | dynamic _findKeyValueInMap(String key, Map<String, dynamic> map)
method _findComponent (line 108) | dynamic _findComponent(int componentIndex, Map<String, dynamic>? data)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_field_value.dart
class FieldValuePlatform (line 11) | class FieldValuePlatform {
method getDelegate (line 19) | dynamic getDelegate(FieldValuePlatform fieldValue)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_field_value_factory.dart
class FieldValueFactoryPlatform (line 14) | abstract class FieldValueFactoryPlatform extends PlatformInterface {
method verify (line 38) | void verify(FieldValueFactoryPlatform instance)
method arrayUnion (line 49) | dynamic arrayUnion(List<dynamic> elements)
method arrayRemove (line 59) | dynamic arrayRemove(List<dynamic> elements)
method delete (line 64) | dynamic delete()
method serverTimestamp (line 70) | dynamic serverTimestamp()
method increment (line 76) | dynamic increment(num value)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_firestore.dart
class FirebaseFirestorePlatform (line 16) | abstract class FirebaseFirestorePlatform extends PlatformInterface {
method delegateFor (line 68) | FirebaseFirestorePlatform delegateFor(
method useEmulator (line 75) | void useEmulator(String host, int port)
method batch (line 84) | WriteBatchPlatform batch()
method clearPersistence (line 98) | Future<void> clearPersistence()
method collection (line 103) | CollectionReferencePlatform collection(String collectionPath)
method collectionGroup (line 108) | QueryPlatform collectionGroup(String collectionPath)
method disableNetwork (line 116) | Future<void> disableNetwork()
method doc (line 121) | DocumentReferencePlatform doc(String documentPath)
method enableNetwork (line 127) | Future<void> enableNetwork()
method snapshotsInSync (line 133) | Stream<void> snapshotsInSync()
method loadBundle (line 139) | LoadBundleTaskPlatform loadBundle(Uint8List bundle)
method namedQueryGet (line 144) | Future<QuerySnapshotPlatform> namedQueryGet(
method runTransaction (line 175) | Future<T?> runTransaction<T>(TransactionHandler<T> transactionHandler,
method terminate (line 206) | Future<void> terminate()
method waitForPendingWrites (line 220) | Future<void> waitForPendingWrites()
method setIndexConfiguration (line 231) | Future<void> setIndexConfiguration(String indexConfiguration)
method persistentCacheIndexManager (line 236) | PersistentCacheIndexManagerPlatform? persistentCacheIndexManager()
method setLoggingEnabled (line 242) | Future<void> setLoggingEnabled(bool enabled)
method toString (line 256) | String toString()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_index_definitions.dart
class Index (line 6) | class Index {
method toMap (line 17) | Map<String, dynamic> toMap()
class IndexField (line 28) | class IndexField {
method toMap (line 35) | Map<String, dynamic> toMap()
class FieldOverrides (line 46) | class FieldOverrides {
method toMap (line 57) | Map<String, dynamic> toMap()
class FieldOverrideIndex (line 67) | class FieldOverrideIndex {
method toMap (line 74) | Map<String, dynamic> toMap()
type Order (line 84) | enum Order {
type ArrayConfig (line 89) | enum ArrayConfig {
type QueryScope (line 93) | enum QueryScope {
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_load_bundle_task.dart
class LoadBundleTaskPlatform (line 9) | abstract class LoadBundleTaskPlatform<T> extends PlatformInterface {
method verify (line 21) | void verify(LoadBundleTaskPlatform instance)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_load_bundle_task_snapshot.dart
class LoadBundleTaskSnapshotPlatform (line 11) | class LoadBundleTaskSnapshotPlatform extends PlatformInterface {
method verify (line 28) | void verify(LoadBundleTaskSnapshotPlatform instance)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_persistent_cache_index_manager.dart
class PersistentCacheIndexManagerPlatform (line 7) | class PersistentCacheIndexManagerPlatform extends PlatformInterface {
method verify (line 18) | void verify(PersistentCacheIndexManagerPlatform instance)
method enableIndexAutoCreation (line 25) | Future<void> enableIndexAutoCreation()
method disableIndexAutoCreation (line 31) | Future<void> disableIndexAutoCreation()
method deleteAllIndexes (line 37) | Future<void> deleteAllIndexes()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query.dart
class QueryPlatform (line 24) | @immutable
method verify (line 39) | void verify(QueryPlatform instance)
method endAtDocument (line 68) | QueryPlatform endAtDocument(List<dynamic> orders, List<dynamic> values)
method endAt (line 80) | QueryPlatform endAt(Iterable<dynamic> fields)
method endBeforeDocument (line 98) | QueryPlatform endBeforeDocument(
method endBefore (line 111) | QueryPlatform endBefore(Iterable<dynamic> fields)
method get (line 117) | Future<QuerySnapshotPlatform> get([GetOptions options = const GetOptio...
method limit (line 123) | QueryPlatform limit(int limit)
method limitToLast (line 131) | QueryPlatform limitToLast(int limit)
method snapshots (line 136) | Stream<QuerySnapshotPlatform> snapshots({
method orderBy (line 153) | QueryPlatform orderBy(Iterable<List<dynamic>> orders)
method startAfterDocument (line 171) | QueryPlatform startAfterDocument(List<dynamic> orders, List<dynamic> v...
method startAfter (line 183) | QueryPlatform startAfter(Iterable<dynamic> fields)
method startAtDocument (line 201) | QueryPlatform startAtDocument(
method startAt (line 214) | QueryPlatform startAt(Iterable<dynamic> fields)
method where (line 229) | QueryPlatform where(List<List<dynamic>> conditions)
method whereFilter (line 233) | QueryPlatform whereFilter(FilterPlatformInterface filter)
method count (line 239) | AggregateQueryPlatform count()
method aggregate (line 243) | AggregateQueryPlatform aggregate(
method sum (line 282) | AggregateQueryPlatform sum(String field)
method average (line 290) | AggregateQueryPlatform average(String field)
class AggregateField (line 295) | abstract class AggregateField {}
class count (line 300) | class count extends AggregateField {}
class sum (line 305) | class sum extends AggregateField {
class average (line 314) | class average extends AggregateField {
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_query_snapshot.dart
class QuerySnapshotPlatform (line 14) | class QuerySnapshotPlatform extends PlatformInterface {
method verify (line 30) | void verify(QuerySnapshotPlatform instance)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_transaction.dart
type TransactionHandler (line 13) | typedef TransactionHandler<T extends dynamic> = Future<T?>? Function(
class TransactionPlatform (line 17) | abstract class TransactionPlatform extends PlatformInterface {
method verify (line 29) | void verify(TransactionPlatform instance)
method get (line 42) | Future<DocumentSnapshotPlatform> get(String documentPath)
method delete (line 47) | TransactionPlatform delete(String documentPath)
method update (line 53) | TransactionPlatform update(
method set (line 63) | TransactionPlatform set(String documentPath, Map<String, dynamic> data,
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/platform_interface_write_batch.dart
class WriteBatchPlatform (line 19) | abstract class WriteBatchPlatform extends PlatformInterface {
method verify (line 30) | void verify(WriteBatchPlatform instance)
method commit (line 37) | Future<void> commit()
method delete (line 42) | void delete(String documentPath)
method set (line 52) | void set(String documentPath, Map<String, dynamic> data,
method update (line 60) | void update(
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/platform_interface/utils/load_bundle_task_state.dart
function convertToTaskState (line 8) | LoadBundleTaskState convertToTaskState(String state)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/set_options.dart
class SetOptions (line 10) | class SetOptions {
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/settings.dart
class Settings (line 11) | @immutable
method copyWith (line 108) | Settings copyWith({
method toString (line 177) | String toString()
class WebPersistentTabManager (line 190) | sealed class WebPersistentTabManager {
class WebPersistentMultipleTabManager (line 206) | @immutable
class WebPersistentSingleTabManager (line 232) | @immutable
class WebExperimentalLongPollingOptions (line 254) | @immutable
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/snapshot_metadata.dart
class SnapshotMetadataPlatform (line 7) | class SnapshotMetadataPlatform {
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/timestamp.dart
function _check (line 11) | void _check(bool expr, String name, int value)
class Timestamp (line 27) | @immutable
method toDate (line 88) | DateTime toDate()
method compareTo (line 102) | int compareTo(Timestamp other)
method toString (line 111) | String toString()
method _validateRange (line 115) | void _validateRange(int seconds, int nanoseconds)
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/vector_value.dart
class VectorValue (line 9) | @immutable
method toString (line 24) | String toString()
method toArray (line 27) | List<double> toArray()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/pigeons/messages.dart
class PigeonFirebaseSettings (line 8) | @ConfigurePigeon(
class FirestorePigeonFirebaseApp (line 47) | class FirestorePigeonFirebaseApp {
class PigeonSnapshotMetadata (line 59) | class PigeonSnapshotMetadata {
class PigeonDocumentSnapshot (line 69) | class PigeonDocumentSnapshot {
type DocumentChangeType (line 82) | enum DocumentChangeType {
class PigeonDocumentChange (line 95) | class PigeonDocumentChange {
class PigeonQuerySnapshot (line 109) | class PigeonQuerySnapshot {
type Source (line 122) | enum Source {
type ListenSource (line 146) | enum ListenSource {
type ServerTimestampBehavior (line 157) | enum ServerTimestampBehavior {
type AggregateSource (line 169) | enum AggregateSource {
type PersistenceCacheIndexManagerRequest (line 175) | enum PersistenceCacheIndexManagerRequest {
class PigeonGetOptions (line 181) | class PigeonGetOptions {
type PigeonTransactionResult (line 191) | enum PigeonTransactionResult {
type PigeonTransactionType (line 196) | enum PigeonTransactionType {
class PigeonDocumentOption (line 204) | class PigeonDocumentOption {
class PigeonTransactionCommand (line 214) | class PigeonTransactionCommand {
class DocumentReferenceRequest (line 228) | class DocumentReferenceRequest {
class PigeonQueryParameters (line 243) | class PigeonQueryParameters {
type AggregateType (line 267) | enum AggregateType {
class AggregateQuery (line 273) | class AggregateQuery {
class AggregateQueryResponse (line 283) | class AggregateQueryResponse {
class FirebaseFirestoreHostApi (line 295) | @HostApi(dartHostTestHandler: 'TestFirebaseFirestoreHostApi')
method loadBundle (line 298) | String loadBundle(
method namedQueryGet (line 304) | PigeonQuerySnapshot namedQueryGet(
method clearPersistence (line 311) | void clearPersistence(
method disableNetwork (line 316) | void disableNetwork(
method enableNetwork (line 321) | void enableNetwork(
method terminate (line 326) | void terminate(
method waitForPendingWrites (line 331) | void waitForPendingWrites(
method setIndexConfiguration (line 336) | void setIndexConfiguration(
method setLoggingEnabled (line 342) | void setLoggingEnabled(
method snapshotsInSyncSetup (line 347) | String snapshotsInSyncSetup(
method transactionCreate (line 352) | String transactionCreate(
method transactionStoreResult (line 359) | void transactionStoreResult(
method transactionGet (line 366) | PigeonDocumentSnapshot transactionGet(
method documentReferenceSet (line 373) | void documentReferenceSet(
method documentReferenceUpdate (line 379) | void documentReferenceUpdate(
method documentReferenceGet (line 385) | PigeonDocumentSnapshot documentReferenceGet(
method documentReferenceDelete (line 391) | void documentReferenceDelete(
method queryGet (line 397) | PigeonQuerySnapshot queryGet(
method aggregateQuery (line 406) | List<AggregateQueryResponse?> aggregateQuery(
method writeBatchCommit (line 416) | void writeBatchCommit(
method querySnapshot (line 422) | String querySnapshot(
method documentReferenceSnapshot (line 433) | String documentReferenceSnapshot(
method persistenceCacheIndexManagerRequest (line 441) | void persistenceCacheIndexManagerRequest(
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/test/field_path_test.dart
function main (line 9) | void main()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/test/geo_point_test.dart
function main (line 9) | void main()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/test/get_options_test.dart
function main (line 9) | void main()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/test/internal_tests/pointer_test.dart
function main (line 9) | void main()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/test/pigeon/test_api.dart
class _TestFirebaseFirestoreHostApiCodec (line 16) | class _TestFirebaseFirestoreHostApiCodec extends StandardMessageCodec {
method writeValue (line 19) | void writeValue(WriteBuffer buffer, Object? value)
method readValueOfType (line 65) | Object? readValueOfType(int type, ReadBuffer buffer)
class TestFirebaseFirestoreHostApi (line 85) | abstract class TestFirebaseFirestoreHostApi {
method loadBundle (line 91) | Future<String> loadBundle(FirestorePigeonFirebaseApp app, Uint8List bu...
method namedQueryGet (line 93) | Future<PigeonQuerySnapshot> namedQueryGet(
method clearPersistence (line 99) | Future<void> clearPersistence(FirestorePigeonFirebaseApp app)
method disableNetwork (line 101) | Future<void> disableNetwork(FirestorePigeonFirebaseApp app)
method enableNetwork (line 103) | Future<void> enableNetwork(FirestorePigeonFirebaseApp app)
method terminate (line 105) | Future<void> terminate(FirestorePigeonFirebaseApp app)
method waitForPendingWrites (line 107) | Future<void> waitForPendingWrites(FirestorePigeonFirebaseApp app)
method setIndexConfiguration (line 109) | Future<void> setIndexConfiguration(
method setLoggingEnabled (line 114) | Future<void> setLoggingEnabled(bool loggingEnabled)
method snapshotsInSyncSetup (line 116) | Future<String> snapshotsInSyncSetup(FirestorePigeonFirebaseApp app)
method transactionCreate (line 118) | Future<String> transactionCreate(
method transactionStoreResult (line 124) | Future<void> transactionStoreResult(
method transactionGet (line 130) | Future<PigeonDocumentSnapshot> transactionGet(
method documentReferenceSet (line 136) | Future<void> documentReferenceSet(
method documentReferenceUpdate (line 141) | Future<void> documentReferenceUpdate(
method documentReferenceGet (line 146) | Future<PigeonDocumentSnapshot> documentReferenceGet(
method documentReferenceDelete (line 151) | Future<void> documentReferenceDelete(
method queryGet (line 156) | Future<PigeonQuerySnapshot> queryGet(
method aggregateQuery (line 164) | Future<List<AggregateQueryResponse?>> aggregateQuery(
method writeBatchCommit (line 173) | Future<void> writeBatchCommit(
method querySnapshot (line 178) | Future<String> querySnapshot(
method documentReferenceSnapshot (line 188) | Future<String> documentReferenceSnapshot(
method persistenceCacheIndexManagerRequest (line 195) | Future<void> persistenceCacheIndexManagerRequest(
method setup (line 200) | void setup(
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/test/set_options_test.dart
function main (line 9) | void main()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/test/settings_test.dart
function main (line 9) | void main()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/test/timestamp_test.dart
function main (line 14) | void main()
FILE: packages/cloud_firestore/cloud_firestore_platform_interface/test/utils/test_firestore_message_codec.dart
class TestFirestoreMessageCodec (line 16) | class TestFirestoreMessageCodec extends FirestoreMessageCodec {
method readValueOfType (line 34) | Object? readValueOfType(int type, ReadBuffer buffer)
FILE: packages/cloud_firestore/cloud_firestore_web/lib/cloud_firestore_web.dart
class FirebaseFirestoreWeb (line 32) | class FirebaseFirestoreWeb extends FirebaseFirestorePlatform {
method registerWith (line 47) | void registerWith(Registrar registrar)
method delegateFor (line 62) | FirebaseFirestorePlatform delegateFor(
method collection (line 68) | CollectionReferencePlatform collection(String collectionPath)
method batch (line 73) | WriteBatchPlatform batch()
method clearPersistence (line 76) | Future<void> clearPersistence()
method useEmulator (line 81) | void useEmulator(String host, int port)
method collectionGroup (line 86) | QueryPlatform collectionGroup(String collectionPath)
method disableNetwork (line 93) | Future<void> disableNetwork()
method doc (line 98) | DocumentReferencePlatform doc(String documentPath)
method enableNetwork (line 102) | Future<void> enableNetwork()
method snapshotsInSync (line 107) | Stream<void> snapshotsInSync()
method runTransaction (line 112) | Future<T?> runTransaction<T>(
method terminate (line 218) | Future<void> terminate()
method waitForPendingWrites (line 223) | Future<void> waitForPendingWrites()
method loadBundle (line 228) | LoadBundleTaskPlatform loadBundle(Uint8List bundle)
method namedQueryGet (line 233) | Future<QuerySnapshotPlatform> namedQueryGet(
method setIndexConfiguration (line 249) | Future<void> setIndexConfiguration(String indexConfiguration)
method persistentCacheIndexManager (line 256) | PersistentCacheIndexManagerWeb? persistentCacheIndexManager()
method setLoggingEnabled (line 265) | Future<void> setLoggingEnabled(bool enabled)
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/aggregate_query_web.dart
class AggregateQueryWeb (line 10) | class AggregateQueryWeb extends AggregateQueryPlatform {
method get (line 29) | Future<AggregateQuerySnapshotPlatform> get({
method count (line 72) | AggregateQueryPlatform count()
method sum (line 86) | AggregateQueryPlatform sum(String field)
method average (line 98) | AggregateQueryPlatform average(String field)
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/collection_reference_web.dart
class CollectionReferenceWeb (line 13) | class CollectionReferenceWeb extends QueryWeb
method doc (line 36) | DocumentReferencePlatform doc([String? path])
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/document_reference_web.dart
class DocumentReferenceWeb (line 14) | class DocumentReferenceWeb extends DocumentReferencePlatform {
method set (line 31) | Future<void> set(Map<String, dynamic> data, [SetOptions? options])
method update (line 41) | Future<void> update(Map<Object, dynamic> data)
method get (line 48) | Future<DocumentSnapshotPlatform> get(
method delete (line 63) | Future<void> delete()
method snapshots (line 68) | Stream<DocumentSnapshotPlatform> snapshots({
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/field_value_factory_web.dart
class FieldValueFactoryWeb (line 14) | class FieldValueFactoryWeb extends FieldValueFactoryPlatform {
method arrayRemove (line 16) | FieldValueWeb arrayRemove(List elements)
method arrayUnion (line 21) | FieldValueWeb arrayUnion(List elements)
method delete (line 26) | FieldValueWeb delete()
method increment (line 30) | FieldValueWeb increment(num value)
method serverTimestamp (line 34) | FieldValueWeb serverTimestamp()
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/field_value_web.dart
class FieldValueWeb (line 12) | class FieldValueWeb {
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/internals.dart
function convertWebExceptions (line 11) | R convertWebExceptions<R>(R Function() cb)
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/interop/firestore.dart
function getFirestoreInstance (line 26) | Firestore getFirestoreInstance([
function convertListenSource (line 52) | JSString convertListenSource(ListenSource source)
class Firestore (line 62) | class Firestore extends JsObjectWrapper<firestore_interop.FirestoreJsImp...
method getInstance (line 69) | Firestore getInstance(firestore_interop.FirestoreJsImpl jsObject)
method batch (line 76) | WriteBatch? batch()
method collection (line 79) | CollectionReference collection(String collectionPath)
method collectionGroup (line 83) | Query collectionGroup(String collectionId)
method doc (line 86) | DocumentReference doc(String documentPath)
method _snapshotInSyncWindowsKey (line 91) | String _snapshotInSyncWindowsKey()
method snapshotsInSync (line 104) | Stream<void> snapshotsInSync()
method startListen (line 113) | void startListen()
method stopListen (line 122) | void stopListen()
method clearPersistence (line 136) | Future<void> clearPersistence()
method runTransaction (line 139) | Future runTransaction(
method useEmulator (line 159) | void useEmulator(String host, int port)
method enableNetwork (line 162) | Future enableNetwork()
method disableNetwork (line 164) | Future disableNetwork()
method terminate (line 166) | Future<void> terminate()
method waitForPendingWrites (line 168) | Future<void> waitForPendingWrites()
method loadBundle (line 171) | LoadBundleTask loadBundle(Uint8List bundle)
method setIndexConfiguration (line 176) | Future<void> setIndexConfiguration(String indexConfiguration)
method persistenceCacheIndexManagerRequest (line 181) | Future<void> persistenceCacheIndexManagerRequest(
method namedQuery (line 204) | Future<Query> namedQuery(String name)
method refEqual (line 222) | bool refEqual(dynamic /* DocumentReference | CollectionReference */ left,
method setLoggingEnabled (line 227) | void setLoggingEnabled(String logLevel)
class LoadBundleTask (line 232) | class LoadBundleTask
method getInstance (line 240) | LoadBundleTask getInstance(
class LoadBundleTaskProgress (line 286) | class LoadBundleTaskProgress
method getInstance (line 308) | LoadBundleTaskProgress getInstance(
class WriteBatch (line 322) | class WriteBatch extends JsObjectWrapper<firestore_interop.WriteBatchJsI...
method getInstance (line 326) | WriteBatch getInstance(firestore_interop.WriteBatchJsImpl jsObject)
method commit (line 333) | Future<void> commit()
method delete (line 335) | WriteBatch delete(DocumentReference documentRef)
method set (line 338) | WriteBatch set(DocumentReference documentRef, Map<String, dynamic> data,
method update (line 346) | WriteBatch update(DocumentReference documentRef,
class DocumentReference (line 359) | class DocumentReference
method getInstance (line 375) | DocumentReference getInstance(
method collection (line 384) | CollectionReference? collection(String collectionPath)
method delete (line 389) | Future<void> delete()
method get (line 391) | Future<DocumentSnapshot> get([firestore_interop.GetOptions? options])
method _documentSnapshotWindowsKey (line 407) | String _documentSnapshotWindowsKey()
method onSnapshot (line 421) | Stream<DocumentSnapshot> onSnapshot({
method _createSnapshotStream (line 432) | StreamController<DocumentSnapshot> _createSnapshotStream([
method startListen (line 447) | void startListen()
method stopListen (line 456) | void stopListen()
method set (line 468) | Future<void> set(Map<String, dynamic> data,
method update (line 477) | Future<void> update(Map<firestore_interop.FieldPath, dynamic> data)
class Query (line 491) | class Query<T extends firestore_interop.QueryJsImpl>
method endAt (line 498) | Query endAt({DocumentSnapshot? snapshot, List<dynamic>? fieldValues})
method endBefore (line 504) | Query endBefore({DocumentSnapshot? snapshot, List<dynamic>? fieldValues})
method get (line 510) | Future<QuerySnapshot> get([firestore_interop.GetOptions? options])
method limit (line 525) | Query limit(num limit)
method limitToLast (line 528) | Query limitToLast(num limit)
method _querySnapshotWindowsKey (line 533) | String _querySnapshotWindowsKey(hashCode)
method onSnapshot (line 546) | Stream<QuerySnapshot> onSnapshot(
method _createSnapshotStream (line 558) | StreamController<QuerySnapshot> _createSnapshotStream(
method startListen (line 573) | void startListen()
method stopListen (line 582) | void stopListen()
method orderBy (line 594) | Query orderBy(/*String|FieldPath*/ dynamic fieldPath,
method startAfter (line 604) | Query startAfter({DocumentSnapshot? snapshot, List<dynamic>? fieldValu...
method startAt (line 616) | Query startAt({DocumentSnapshot? snapshot, List<dynamic>? fieldValues})
method where (line 628) | Query where(dynamic fieldPath, String opStr, dynamic value)
method _createQueryConstraint (line 644) | firestore_interop.QueryConstraintJsImpl _createQueryConstraint<S>(
method _parseFilterWith (line 664) | Object _parseFilterWith(Map<String, Object?> map)
method filterWith (line 706) | Query filterWith(Map<String, Object?> map)
class CollectionReference (line 712) | class CollectionReference<T extends firestore_interop.CollectionReferenc...
method getInstance (line 724) | CollectionReference getInstance(
method add (line 737) | Future<DocumentReference> add(Map<String, dynamic> data)
method doc (line 744) | DocumentReference doc([String? documentPath])
method isEqual (line 752) | bool isEqual(CollectionReference other)
class DocumentChange (line 756) | class DocumentChange
method getInstance (line 769) | DocumentChange getInstance(
class DocumentSnapshot (line 778) | class DocumentSnapshot
method getInstance (line 791) | DocumentSnapshot getInstance(
method data (line 800) | Map<String, dynamic>? data([firestore_interop.SnapshotOptions? options])
method get (line 809) | dynamic get(/*String|FieldPath*/ dynamic fieldPath)
method isEqual (line 812) | bool isEqual(DocumentSnapshot other)
class QuerySnapshot (line 817) | class QuerySnapshot
method docChanges (line 822) | List<DocumentChange> docChanges(
method getInstance (line 860) | QuerySnapshot getInstance(
method forEach (line 868) | void forEach(void Function(DocumentSnapshot?) callback)
method isEqual (line 874) | bool isEqual(QuerySnapshot other)
class Transaction (line 879) | class Transaction extends JsObjectWrapper<firestore_interop.TransactionJ...
method getInstance (line 883) | Transaction getInstance(firestore_interop.TransactionJsImpl jsObject)
method delete (line 890) | Transaction delete(DocumentReference documentRef)
method get (line 893) | Future<DocumentSnapshot> get(DocumentReference documentRef)
method set (line 899) | Transaction set(DocumentReference documentRef, Map<String, dynamic> data,
method update (line 907) | Transaction update(DocumentReference documentRef,
class _FieldValueDelete (line 921) | class _FieldValueDelete implements FieldValue {
method _jsify (line 923) | firestore_interop.FieldValue _jsify()
method toString (line 926) | String toString()
class _FieldValueServerTimestamp (line 929) | class _FieldValueServerTimestamp implements FieldValue {
method _jsify (line 931) | firestore_interop.FieldValue _jsify()
method toString (line 934) | String toString()
class _FieldValueArray (line 937) | abstract class _FieldValueArray implements FieldValue {
class _FieldValueArrayUnion (line 943) | class _FieldValueArrayUnion extends _FieldValueArray {
method _jsify (line 947) | firestore_interop.FieldValue? _jsify()
method toString (line 958) | String toString()
class _FieldValueArrayRemove (line 961) | class _FieldValueArrayRemove extends _FieldValueArray {
method _jsify (line 965) | firestore_interop.FieldValue? _jsify()
method toString (line 976) | String toString()
class _FieldValueIncrement (line 979) | class _FieldValueIncrement implements FieldValue {
method _jsify (line 985) | firestore_interop.FieldValue _jsify()
method toString (line 988) | String toString()
function jsifyFieldValue (line 991) | JSAny? jsifyFieldValue(FieldValue fieldValue)
class FieldValue (line 995) | abstract class FieldValue {
method _jsify (line 996) | firestore_interop.FieldValue? _jsify()
method serverTimestamp (line 1000) | FieldValue serverTimestamp()
method delete (line 1002) | FieldValue delete()
method arrayUnion (line 1004) | FieldValue arrayUnion(List? elements)
method arrayRemove (line 1007) | FieldValue arrayRemove(List? elements)
method increment (line 1016) | FieldValue increment(num n)
class AggregateQuery (line 1024) | class AggregateQuery {
method name (line 1028) | String name(platform_interface.AggregateQuery query)
method get (line 1032) | Future<AggregateQuerySnapshot> get(
class AggregateQuerySnapshot (line 1064) | class AggregateQuerySnapshot
method getInstance (line 1070) | AggregateQuerySnapshot getInstance(
method getDataValue (line 1083) | double? getDataValue(platform_interface.AggregateQuery query)
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/interop/firestore_interop.dart
function getFirestore (line 19) | FirestoreJsImpl getFirestore([AppJsImpl? app, JSString? databaseURL])
function initializeFirestore (line 23) | FirestoreJsImpl initializeFirestore(
function addDoc (line 30) | JSPromise<DocumentReferenceJsImpl> addDoc(
function clearIndexedDbPersistence (line 37) | JSPromise clearIndexedDbPersistence(
function setIndexConfiguration (line 43) | JSPromise setIndexConfiguration(
function getPersistentCacheIndexManager (line 48) | PersistentCacheIndexManager? getPersistentCacheIndexManager(
function enablePersistentCacheIndexAutoCreation (line 53) | void enablePersistentCacheIndexAutoCreation(
function disablePersistentCacheIndexAutoCreation (line 58) | void disablePersistentCacheIndexAutoCreation(
function deleteAllPersistentCacheIndexes (line 63) | void deleteAllPersistentCacheIndexes(
function collection (line 68) | CollectionReferenceJsImpl collection(
function collectionGroup (line 75) | QueryJsImpl collectionGroup(
function connectFirestoreEmulator (line 82) | void connectFirestoreEmulator(
function deleteDoc (line 90) | JSPromise deleteDoc(
function deleteField (line 96) | FieldValue deleteField()
function disableNetwork (line 100) | JSPromise disableNetwork(FirestoreJsImpl firestore)
function doc (line 104) | DocumentReferenceJsImpl doc(
function documentId (line 112) | FieldPath documentId()
function enableMultiTabIndexedDbPersistence (line 116) | JSPromise enableMultiTabIndexedDbPersistence(
function enableNetwork (line 122) | JSPromise enableNetwork(FirestoreJsImpl firestore)
function getDoc (line 126) | JSPromise<DocumentSnapshotJsImpl> getDoc(
function getDocFromCache (line 132) | JSPromise<DocumentSnapshotJsImpl> getDocFromCache(
function getDocFromServer (line 138) | JSPromise<DocumentSnapshotJsImpl> getDocFromServer(
function getDocs (line 144) | JSPromise<QuerySnapshotJsImpl> getDocs(
function getDocsFromCache (line 150) | JSPromise<QuerySnapshotJsImpl> getDocsFromCache(
function getDocsFromServer (line 156) | JSPromise<QuerySnapshotJsImpl> getDocsFromServer(
function increment (line 162) | FieldValue increment(JSNumber n)
function limit (line 166) | QueryConstraintJsImpl limit(JSNumber limit)
function limitToLast (line 170) | QueryConstraintJsImpl limitToLast(JSNumber limit)
function loadBundle (line 174) | LoadBundleTaskJsImpl loadBundle(
function namedQuery (line 181) | JSPromise namedQuery(
function onSnapshot (line 188) | JSFunction onSnapshot(
function onSnapshotsInSync (line 197) | JSFunction onSnapshotsInSync(
function orderBy (line 202) | QueryConstraintJsImpl orderBy(
function memoryLocalCache (line 209) | MemoryLocalCache memoryLocalCache(
function memoryLruGarbageCollector (line 215) | MemoryLruGarbageCollector memoryLruGarbageCollector(
function memoryEagerGarbageCollector (line 221) | MemoryEagerGarbageCollector memoryEagerGarbageCollector()
function persistentLocalCache (line 225) | PersistentLocalCache persistentLocalCache(
function persistentSingleTabManager (line 231) | PersistentSingleTabManager persistentSingleTabManager(
function persistentMultipleTabManager (line 237) | PersistentMultipleTabManager persistentMultipleTabManager()
function query (line 241) | QueryJsImpl query(
function queryEqual (line 248) | JSBoolean queryEqual(QueryJsImpl left, QueryJsImpl right)
function refEqual (line 252) | JSBoolean refEqual(
function runTransaction (line 259) | JSPromise runTransaction(
class TransactionOptionsJsImpl (line 266) | @JS('TransactionOptions')
function serverTimestamp (line 278) | FieldValue serverTimestamp()
function setDoc (line 282) | JSPromise setDoc(
function setLogLevel (line 290) | void setLogLevel(JSString logLevel)
function snapshotEqual (line 294) | JSBoolean snapshotEqual(
function terminate (line 301) | JSPromise terminate(FirestoreJsImpl firestore)
function waitForPendingWrites (line 310) | JSPromise waitForPendingWrites(FirestoreJsImpl firestore)
function where (line 314) | QueryConstraintJsImpl where(
function writeBatch (line 334) | WriteBatchJsImpl writeBatch(FirestoreJsImpl firestore)
class FirestoreJsImpl (line 336) | @JS('Firestore')
function commit (line 346) | JSPromise commit()
function delete (line 348) | WriteBatchJsImpl delete(DocumentReferenceJsImpl documentRef)
function set (line 350) | WriteBatchJsImpl set(
function update (line 354) | WriteBatchJsImpl update(
class PersistenceSettings (line 366) | @anonymous
class FieldPath (line 377) | @JS()
function isEqual (line 393) | JSBoolean isEqual(JSObject other)
class GeoPointJsImpl (line 400) | @JS('GeoPoint')
function isEqual (line 414) | JSBoolean isEqual(JSObject other)
function toArray (line 422) | JSArray toArray()
function vector (line 427) | VectorValueJsImpl vector(JSArray values)
class BytesJsImpl (line 433) | @JS('Bytes')
method fromBase64JSString (line 437) | BytesJsImpl fromBase64JSString(JSString base64)
method fromUint8Array (line 439) | BytesJsImpl fromUint8Array(JSUint8Array list)
function toBase64 (line 443) | JSString toBase64()
function toUint8Array (line 445) | JSUint8Array toUint8Array()
function isEqual (line 448) | JSBoolean isEqual(JSObject other)
class QueryConstraintJsImpl (line 481) | @JS('QueryConstraint')
function onProgress (line 490) | void onProgress(
function then (line 494) | JSPromise then([
function data (line 519) | JSObject? data([SnapshotOptions? options])
function exists (line 520) | JSBoolean exists()
function get (line 521) | JSObject get(/*JSString|FieldPath*/ JSObject fieldPath)
function isEqual (line 530) | JSBoolean isEqual(FieldValue other)
function docChanges (line 550) | JSArray docChanges([SnapshotListenOptions? options])
function forEach (line 552) | void forEach(
function delete (line 559) | TransactionJsImpl delete(DocumentReferenceJsImpl documentRef)
function get (line 561) | JSPromise get(DocumentReferenceJsImpl documentRef)
function set (line 563) | TransactionJsImpl set(
function update (line 567) | TransactionJsImpl update(
class TimestampJsImpl (line 575) | @JS('Timestamp')
method now (line 580) | TimestampJsImpl now()
method fromMillis (line 583) | TimestampJsImpl fromMillis(JSNumber milliseconds)
function toMillis (line 592) | JSNumber toMillis()
function isEqual (line 594) | JSBoolean isEqual(TimestampJsImpl other)
class FirestoreError (line 601) | @anonymous
class SnapshotListenOptions (line 636) | @anonymous
class FirestoreSettings (line 663) | @anonymous
class ExperimentalLongPollingOptions (line 706) | @anonymous
class FirestoreLocalCache (line 734) | @anonymous
class MemoryCacheSettings (line 779) | @anonymous
class PersistentCacheSettings (line 798) | @anonymous
class PersistentSingleTabManagerSettings (line 829) | @anonymous
function isEqual (line 875) | JSBoolean isEqual(SnapshotMetadata other)
class DocumentListenOptions (line 880) | @anonymous
class GetOptions (line 903) | @anonymous
class SetOptions (line 918) | @anonymous
class SnapshotOptions (line 941) | @anonymous
function count (line 986) | JSObject count()
function average (line 990) | JSObject average(JSString field)
function sum (line 994) | JSObject sum(JSString field)
function getCountFromServer (line 998) | JSPromise getCountFromServer(
function getAggregateFromServer (line 1004) | JSPromise getAggregateFromServer(
function data (line 1010) | JSObject data()
class PersistentCacheIndexManager (line 1013) | @anonymous
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/interop/utils/utils.dart
function dartify (line 13) | dynamic dartify(dynamic object)
function convertNested (line 46) | dynamic convertNested(dynamic object)
function jsify (line 62) | JSAny? jsify(Object? dartObject)
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/load_bundle_task_web.dart
class LoadBundleTaskWeb (line 11) | class LoadBundleTaskWeb extends LoadBundleTaskPlatform {
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/persistent_cache_index_manager_web.dart
class PersistentCacheIndexManagerWeb (line 10) | class PersistentCacheIndexManagerWeb
method enableIndexAutoCreation (line 18) | Future<void> enableIndexAutoCreation()
method disableIndexAutoCreation (line 25) | Future<void> disableIndexAutoCreation()
method deleteAllIndexes (line 32) | Future<void> deleteAllIndexes()
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/query_web.dart
class QueryWeb (line 18) | class QueryWeb extends QueryPlatform {
method _copyWithParameters (line 55) | QueryWeb _copyWithParameters(Map<String, dynamic> parameters)
method _buildWebQueryWithParameters (line 68) | firestore_interop.Query _buildWebQueryWithParameters()
method endAtDocument (line 121) | QueryPlatform endAtDocument(List<dynamic> orders, List<dynamic> values)
method endAt (line 130) | QueryPlatform endAt(Iterable<dynamic> fields)
method endBeforeDocument (line 138) | QueryPlatform endBeforeDocument(
method endBefore (line 148) | QueryPlatform endBefore(Iterable<dynamic> fields)
method get (line 156) | Future<QuerySnapshotPlatform> get([GetOptions options = const GetOptio...
method limit (line 167) | QueryPlatform limit(int limit)
method limitToLast (line 175) | QueryPlatform limitToLast(int limit)
method snapshots (line 183) | Stream<QuerySnapshotPlatform> snapshots({
method orderBy (line 206) | QueryPlatform orderBy(Iterable<List<dynamic>> orders)
method startAfterDocument (line 211) | QueryPlatform startAfterDocument(List<dynamic> orders, List<dynamic> v...
method startAfter (line 220) | QueryPlatform startAfter(Iterable<dynamic> fields)
method startAtDocument (line 228) | QueryPlatform startAtDocument(
method startAt (line 238) | QueryPlatform startAt(Iterable<dynamic> fields)
method where (line 246) | QueryPlatform where(Iterable<List<dynamic>> conditions)
method whereFilter (line 253) | QueryPlatform whereFilter(FilterPlatformInterface filter)
method count (line 260) | AggregateQueryPlatform count()
method aggregate (line 273) | AggregateQueryPlatform aggregate(
method sum (line 365) | AggregateQueryPlatform sum(String field)
method average (line 379) | AggregateQueryPlatform average(String field)
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/transaction_web.dart
class TransactionWeb (line 14) | class TransactionWeb extends TransactionPlatform {
method delete (line 26) | TransactionWeb delete(String documentPath)
method get (line 32) | Future<DocumentSnapshotPlatform> get(String documentPath)
method set (line 47) | TransactionWeb set(
method update (line 61) | TransactionWeb update(
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/utils/decode_utility.dart
class DecodeUtility (line 16) | class DecodeUtility {
method decodeMapData (line 18) | Map<String, dynamic>? decodeMapData(
method decodeArrayData (line 27) | List<dynamic>? decodeArrayData(
method valueDecode (line 36) | dynamic valueDecode(
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/utils/encode_utility.dart
class EncodeUtility (line 15) | class EncodeUtility {
method encodeMapData (line 17) | Map<String, dynamic>? encodeMapData(Map<Object, dynamic>? data)
method encodeMapDataFieldPath (line 30) | Map<firestore_interop.FieldPath, dynamic>? encodeMapDataFieldPath(
method encodeArrayData (line 43) | List<dynamic>? encodeArrayData(List<dynamic>? data)
method valueEncode (line 51) | dynamic valueEncode(dynamic value)
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/utils/web_utils.dart
function getServerTimestampBehaviorString (line 19) | String getServerTimestampBehaviorString(
function convertWebQuerySnapshot (line 30) | QuerySnapshotPlatform convertWebQuerySnapshot(
function convertWebDocumentSnapshot (line 55) | DocumentSnapshotPlatform convertWebDocumentSnapshot(
function convertWebDocumentChange (line 78) | DocumentChangePlatform convertWebDocumentChange(
function convertWebDocumentChangeType (line 95) | DocumentChangeType convertWebDocumentChangeType(String changeType)
function convertWebSnapshotMetadata (line 105) | SnapshotMetadataPlatform convertWebSnapshotMetadata(
function convertGetOptions (line 112) | firestore_interop.GetOptions? convertGetOptions(GetOptions? options)
function convertSetOptions (line 125) | firestore_interop.SetOptions? convertSetOptions(SetOptions? options)
function convertFieldPath (line 144) | firestore_interop.FieldPath convertFieldPath(FieldPath fieldPath)
FILE: packages/cloud_firestore/cloud_firestore_web/lib/src/write_batch_web.dart
class WriteBatchWeb (line 14) | class WriteBatchWeb extends WriteBatchPlatform {
method commit (line 24) | Future<void> commit()
method delete (line 29) | void delete(String documentPath)
method set (line 34) | void set(String documentPath, Map<String, dynamic> data,
method update (line 41) | void update(
FILE: packages/cloud_firestore/cloud_firestore_web/test/field_value_factory_web_test.dart
function main (line 12) | void main()
FILE: packages/cloud_firestore/cloud_firestore_web/test/test_common.dart
class MockWebDocumentSnapshot (line 15) | class MockWebDocumentSnapshot extends Mock implements web.DocumentSnapsh...
class MockFirestoreWeb (line 20) | class MockFirestoreWeb extends Mock implements web.Firestore {}
class MockWebTransaction (line 22) | class MockWebTransaction extends Mock implements web.Transaction {}
class MockWebWriteBatch (line 24) | class MockWebWriteBatch extends Mock implements web.WriteBatch {}
class MockDocumentReference (line 27) | class MockDocumentReference extends Mock implements DocumentReferenceWeb {}
class MockFirestore (line 30) | class MockFirestore extends Mock implements FirebaseFirestoreWeb {}
class MockWebDocumentReference (line 32) | class MockWebDocumentReference extends Mock implements web.DocumentRefer...
class MockWebCollectionReference (line 34) | class MockWebCollectionReference extends Mock
class MockQueryWeb (line 38) | class MockQueryWeb extends Mock implements QueryWeb {}
class MockDocumentSnapshot (line 40) | class MockDocumentSnapshot extends Mock implements DocumentSnapshotPlatf...
FILE: packages/cloud_functions/cloud_functions/example/lib/firebase_options.dart
class DefaultFirebaseOptions (line 21) | class DefaultFirebaseOptions {
FILE: packages/cloud_functions/cloud_functions/example/lib/main.dart
function main (line 14) | Future<void> main()
class MyApp (line 28) | class MyApp extends StatefulWidget {
method createState (line 31) | _MyAppState createState()
class _MyAppState (line 34) | class _MyAppState extends State<MyApp> {
method initState (line 39) | void initState()
method streamFunction (line 44) | void streamFunction()
method build (line 71) | Widget build(BuildContext context)
method callingFunction (line 172) | Future<void> callingFunction(
FILE: packages/cloud_functions/cloud_functions/lib/src/firebase_functions.dart
class FirebaseFunctions (line 11) | class FirebaseFunctions extends FirebasePluginPlatform {
method instanceFor (line 42) | FirebaseFunctions instanceFor({FirebaseApp? app, String? region})
method httpsCallable (line 65) | HttpsCallable httpsCallable(
method httpsCallableFromUrl (line 77) | HttpsCallable httpsCallableFromUrl(
method httpsCallableFromUri (line 90) | HttpsCallable httpsCallableFromUri(
method useFunctionsEmulator (line 103) | void useFunctionsEmulator(String host, int port,
FILE: packages/cloud_functions/cloud_functions/lib/src/https_callable.dart
class HttpsCallable (line 11) | class HttpsCallable {
method call (line 33) | Future<HttpsCallableResult<T>> call<T>([dynamic parameters])
method stream (line 66) | Stream<StreamResponse<T, R>> stream<T, R>([Object? input])
function _updateRawDataToList (line 79) | dynamic _updateRawDataToList(dynamic value)
function _debugIsValidParameterType (line 93) | bool _debugIsValidParameterType(dynamic parameter, [bool isRoot = true])
FILE: packages/cloud_functions/cloud_functions/lib/src/https_callable_result.dart
class HttpsCallableResult (line 9) | class HttpsCallableResult<T> {
FILE: packages/cloud_functions/cloud_functions/lib/src/https_callable_stream_result.dart
class StreamResponse (line 9) | sealed class StreamResponse<T, R> {}
class Chunk (line 12) | class Chunk<T, R> extends StreamResponse<T, R> {
class Result (line 19) | class Result<T, R> extends StreamResponse<T, R> {
FILE: packages/cloud_functions/cloud_functions/test/firebase_functions_test.dart
function main (line 14) | void main()
FILE: packages/cloud_functions/cloud_functions/test/https_callable_test.dart
function main (line 16) | void main()
FILE: packages/cloud_functions/cloud_functions/test/mock.dart
type Callback (line 13) | typedef Callback = Function(MethodCall call);
function resetFirebaseCoreMocks (line 19) | void resetFirebaseCoreMocks()
class MockHttpsCallablePlatform (line 31) | class MockHttpsCallablePlatform extends HttpsCallablePlatform {
method call (line 37) | Future<dynamic> call([dynamic parameters])
class MockFirebaseFunctionsPlatform (line 43) | class MockFirebaseFunctionsPlatform extends FirebaseFunctionsPlatform {
method httpsCallable (line 48) | HttpsCallablePlatform httpsCallable(
method httpsCallableWithUri (line 56) | HttpsCallablePlatform httpsCallableWithUri(
method delegateFor (line 64) | FirebaseFunctionsPlatform delegateFor(
FILE: packages/cloud_functions/cloud_functions/windows/messages.g.cpp
type cloud_functions_windows (line 20) | namespace cloud_functions_windows {
function FlutterError (line 27) | FlutterError CreateConnectionError(const std::string channel_name) {
function EncodableValue (line 36) | EncodableValue PigeonInternalCodecSerializer::ReadValueOfType(
function EncodableValue (line 150) | EncodableValue CloudFunctionsHostApi::WrapError(
function EncodableValue (line 157) | EncodableValue CloudFunctionsHostApi::WrapError(const FlutterError& er...
FILE: packages/cloud_functions/cloud_functions/windows/messages.g.h
function namespace (line 18) | namespace cloud_functions_windows {
function has_error (line 49) | bool has_error() const { return std::holds_alternative<FlutterError>(v_); }
function T (line 56) | T TakeValue() && { return std::get<T>(std::move(v_)); }
function class (line 61) | class PigeonInternalCodecSerializer : public flutter::StandardCodecSeria...
function class (line 79) | class CloudFunctionsHostApi {
FILE: packages/cloud_functions/cloud_functions_platform_interface/lib/src/firebase_functions_exception.dart
class FirebaseFunctionsException (line 11) | class FirebaseFunctionsException extends FirebaseException
FILE: packages/cloud_functions/cloud_functions_platform_interface/lib/src/https_callable_options.dart
class HttpsCallableOptions (line 7) | class HttpsCallableOptions {
class AbortSignal (line 28) | sealed class AbortSignal {}
class TimeLimit (line 40) | class TimeLimit extends AbortSignal {
class Abort (line 56) | class Abort extends AbortSignal {
class Any (line 76) | class Any extends AbortSignal {
FILE: packages/cloud_functions/cloud_functions_platform_interface/lib/src/method_channel/method_channel_firebase_functions.dart
class MethodChannelFirebaseFunctions (line 14) | class MethodChannelFirebaseFunctions extends FirebaseFunctionsPlatform {
method delegateFor (line 40) | FirebaseFunctionsPlatform delegateFor(
method httpsCallable (line 46) | HttpsCallablePlatform httpsCallable(
method httpsCallableWithUri (line 52) | HttpsCallablePlatform httpsCallableWithUri(
FILE: packages/cloud_functions/cloud_functions_platform_interface/lib/src/method_channel/method_channel_https_callable.dart
class MethodChannelHttpsCallable (line 15) | class MethodChannelHttpsCallable extends HttpsCallablePlatform {
method call (line 27) | Future<dynamic> call([Object? parameters])
method stream (line 52) | Stream<dynamic> stream(Object? parameters)
FILE: packages/cloud_functions/cloud_functions_platform_interface/lib/src/method_channel/utils/exception.dart
function convertPlatformException (line 14) | Never convertPlatformException(Object exception, StackTrace stackTrace)
function platformExceptionToFirebaseFunctionsException (line 30) | FirebaseException platformExceptionToFirebaseFunctionsException(
FILE: packages/cloud_functions/cloud_functions_platform_interface/lib/src/pigeon/messages.pigeon.dart
function _createConnectionError (line 14) | PlatformException _createConnectionError(String channelName)
function wrapResponse (line 21) | List<Object?> wrapResponse(
class _PigeonCodec (line 32) | class _PigeonCodec extends StandardMessageCodec {
method writeValue (line 35) | void writeValue(WriteBuffer buffer, Object? value)
method readValueOfType (line 45) | Object? readValueOfType(int type, ReadBuffer buffer)
class CloudFunctionsHostApi (line 53) | class CloudFunctionsHostApi {
method call (line 68) | Future<Object?> call(Map<String, Object?> arguments)
method registerEventChannel (line 94) | Future<void> registerEventChannel(Map<String, Object> arguments)
FILE: packages/cloud_functions/cloud_functions_platform_interface/lib/src/platform_interface/platform_interface_firebase_functions.dart
class FirebaseFunctionsPlatform (line 21) | abstract class FirebaseFunctionsPlatform extends PlatformInterface {
method delegateFor (line 59) | FirebaseFunctionsPlatform delegateFor(
method httpsCallable (line 65) | HttpsCallablePlatform httpsCallable(
method httpsCallableWithUri (line 71) | HttpsCallablePlatform httpsCallableWithUri(
FILE: packages/cloud_functions/cloud_functions_platform_interface/lib/src/platform_interface/platform_interface_https_callable.dart
class HttpsCallablePlatform (line 15) | abstract class HttpsCallablePlatform extends PlatformInterface {
method verify (line 34) | void verify(HttpsCallablePlatform instance)
method call (line 67) | Future<dynamic> call([dynamic parameters])
method stream (line 85) | Stream<dynamic> stream(Object? parameters)
FILE: packages/cloud_functions/cloud_functions_platform_interface/pigeons/messages.dart
class CloudFunctionsHostApi (line 7) | @ConfigurePigeon(
method call (line 28) | Object? call(Map<String, Object?> arguments)
method registerEventChannel (line 31) | void registerEventChannel(Map<String, Object> arguments)
FILE: packages/cloud_functions/cloud_functions_platform_interface/test/method_channel/method_channel_firebase_functions_test.dart
function main (line 15) | void main()
class TestMethodChannelFirebaseFunctions (line 63) | class TestMethodChannelFirebaseFunctions
FILE: packages/cloud_functions/cloud_functions_platform_interface/test/method_channel/method_channel_https_callable_test.dart
function main (line 15) | void main()
FILE: packages/cloud_functions/cloud_functions_platform_interface/test/method_channel/utils/exception_test.dart
function main (line 11) | void main()
FILE: packages/cloud_functions/cloud_functions_platform_interface/test/mock.dart
type MethodCallCallback (line 12) | typedef MethodCallCallback = dynamic Function(MethodCall methodCall);
type Callback (line 13) | typedef Callback = Function(MethodCall call);
function setupFirebaseFunctionsMocks (line 18) | void setupFirebaseFunctionsMocks([Callback? customHandlers])
function handleMethodCall (line 24) | void handleMethodCall(MethodCallCallback methodCallCallback)
function testExceptionHandling (line 31) | Future<void> testExceptionHandling(String type, Function testMethod)
FILE: packages/cloud_functions/cloud_functions_platform_interface/test/pigeon/test_api.dart
class _PigeonCodec (line 16) | class _PigeonCodec extends StandardMessageCodec {
method writeValue (line 19) | void writeValue(WriteBuffer buffer, Object? value)
method readValueOfType (line 29) | Object? readValueOfType(int type, ReadBuffer buffer)
class TestCloudFunctionsHostApi (line 37) | abstract class TestCloudFunctionsHostApi {
method call (line 42) | Future<Object?> call(Map<String, Object?> arguments)
method registerEventChannel (line 44) | Future<void> registerEventChannel(Map<String, Object> arguments)
method setUp (line 46) | void setUp(
FILE: packages/cloud_functions/cloud_functions_platform_interface/test/platform_interface/platform_interface_firebase_functions_test.dart
function main (line 13) | void main()
class TestFirebaseFunctionsPlatform (line 99) | class TestFirebaseFunctionsPlatform extends FirebaseFunctionsPlatform {
method testDelegateFor (line 101) | FirebaseFunctionsPlatform testDelegateFor(FirebaseApp app)
FILE: packages/cloud_functions/cloud_functions_platform_interface/test/platform_interface/platform_interface_https_callable_test.dart
function main (line 13) | void main()
class TestHttpsCallablePlatform (line 52) | class TestHttpsCallablePlatform extends HttpsCallablePlatform {
class TestFirebaseFunctionsPlatform (line 57) | class TestFirebaseFunctionsPlatform extends FirebaseFunctionsPlatform {
FILE: packages/cloud_functions/cloud_functions_web/lib/cloud_functions_web.dart
class FirebaseFunctionsWeb (line 19) | class FirebaseFunctionsWeb extends FirebaseFunctionsPlatform {
method registerWith (line 42) | void registerWith(Registrar registrar)
method delegateFor (line 55) | FirebaseFunctionsPlatform delegateFor(
method httpsCallable (line 61) | HttpsCallablePlatform httpsCallable(
method httpsCallableWithUri (line 67) | HttpsCallablePlatform httpsCallableWithUri(
FILE: packages/cloud_functions/cloud_functions_web/lib/https_callable_web.dart
class HttpsCallableWeb (line 17) | class HttpsCallableWeb extends HttpsCallablePlatform {
method call (line 26) | Future<dynamic> call([Object? parameters])
method stream (line 63) | Stream<dynamic> stream(Object? parameters)
method _createJsAbortSignal (line 99) | web.AbortSignal _createJsAbortSignal(AbortSignal signal)
FILE: packages/cloud_functions/cloud_functions_web/lib/interop/functions.dart
function getFunctionsInstance (line 16) | Functions getFunctionsInstance(App app, [String? region])
class Functions (line 24) | class Functions extends JsObjectWrapper<functions_interop.FunctionsJsImp...
method getInstance (line 30) | Functions getInstance(functions_interop.FunctionsJsImpl jsObject)
method httpsCallable (line 38) | HttpsCallable httpsCallable(String name,
method httpsCallableUri (line 50) | HttpsCallable httpsCallableUri(Uri uri,
method useFunctionsEmulator (line 63) | void useFunctionsEmulator(String host, int port)
class HttpsCallable (line 67) | class HttpsCallable extends JsObjectWrapper<JSFunction> {
method getInstance (line 74) | HttpsCallable getInstance(JSFunction jsObject)
method call (line 78) | Future<HttpsCallableResult> call(JSAny? data)
method stream (line 87) | Stream<dynamic> stream(JSAny? data,
function _dartify (line 111) | dynamic _dartify(dynamic object)
function _convertNested (line 126) | dynamic _convertNested(dynamic object)
class HttpsCallableResult (line 141) | class HttpsCallableResult
method getInstance (line 152) | HttpsCallableResult getInstance(
class HttpsCallableStreamResult (line 162) | class HttpsCallableStreamResult
method getInstance (line 173) | HttpsCallableStreamResult getInstance(
FILE: packages/cloud_functions/cloud_functions_web/lib/interop/functions_interop.dart
function getFunctions (line 19) | FunctionsJsImpl getFunctions(
function connectFunctionsEmulator (line 24) | void connectFunctionsEmulator(
function httpsCallable (line 29) | JSFunction httpsCallable(FunctionsJsImpl functions, JSString name,
function httpsCallableFromURL (line 34) | JSFunction httpsCallableFromURL(
function stream (line 68) | JSPromise stream([JSAny? data, HttpsCallableStreamOptions? options])
function asStream (line 89) | Stream<dynamic> asStream()
FILE: packages/cloud_functions/cloud_functions_web/lib/utils.dart
function convertFirebaseFunctionsException (line 12) | FirebaseFunctionsException convertFirebaseFunctionsException(JSObject ex...
FILE: packages/firebase_ai/firebase_ai/example/lib/main.dart
function main (line 36) | void main()
class GenerativeAISample (line 46) | class GenerativeAISample extends StatefulWidget {
method createState (line 50) | State<GenerativeAISample> createState()
class _GenerativeAISampleState (line 53) | class _GenerativeAISampleState extends State<GenerativeAISample> {
method initState (line 67) | void initState()
method _initializeModel (line 73) | void _initializeModel(bool useVertexBackend)
method _initializeImagenModel (line 85) | ImagenModel _initializeImagenModel(FirebaseAI instance)
method _toggleBackend (line 101) | void _toggleBackend(bool value)
method build (line 109) | Widget build(BuildContext context)
class HomeScreen (line 128) | class HomeScreen extends StatefulWidget {
method createState (line 143) | State<HomeScreen> createState()
class _HomeScreenState (line 146) | class _HomeScreenState extends State<HomeScreen> {
method _onItemTapped (line 149) | void _onItemTapped(int index)
method _buildSelectedPage (line 156) | Widget _buildSelectedPage(
method build (line 212) | Widget build(BuildContext context)
FILE: packages/firebase_ai/firebase_ai/example/lib/pages/audio_page.dart
class AudioPage (line 25) | class AudioPage extends StatefulWidget {
method createState (line 32) | State<AudioPage> createState()
class _AudioPageState (line 35) | class _AudioPageState extends State<AudioPage> {
method initState (line 42) | void initState()
method recordAudio (line 47) | Future<void> recordAudio()
method stopRecord (line 73) | Future<void> stopRecord()
method _submitAudioToModel (line 99) | Future<void> _submitAudioToModel(audioPart)
method build (line 123) | Widget build(BuildContext context)
FILE: packages/firebase_ai/firebase_ai/example/lib/pages/bidi_page.dart
class BidiPage (line 28) | class BidiPage extends StatefulWidget {
method createState (line 41) | State<BidiPage> createState()
class LightControl (line 44) | class LightControl {
class _BidiPageState (line 51) | class _BidiPageState extends State<BidiPage> {
method initState (line 71) | void initState()
method _initAudio (line 100) | Future<void> _initAudio()
method _initVideo (line 114) | Future<void> _initVideo()
method _scrollDown (line 125) | void _scrollDown()
method dispose (line 134) | void dispose()
method build (line 143) | Widget build(BuildContext context)
method _setLightValues (line 296) | Future<Map<String, Object?>> _setLightValues({
method _setupSession (line 307) | Future<void> _setupSession()
method _startRecording (line 339) | Future<void> _startRecording()
method _stopRecording (line 367) | Future<void> _stopRecording()
method _startVideoStream (line 381) | Future<void> _startVideoStream()
method _stopVideoStream (line 456) | Future<void> _stopVideoStream()
method _sendTextPrompt (line 463) | Future<void> _sendTextPrompt(String textPrompt)
method _processMessagesContinuously (line 480) | Future<void> _processMessagesContinuously()
method _handleLiveServerMessage (line 491) | Future<void> _handleLiveServerMessage(LiveServerResponse response)
method _handleTranscription (line 499) | int? _handleTranscription(
method _handleLiveServerContent (line 556) | Future<void> _handleLiveServerContent(LiveServerContent response)
method _handleTextPart (line 571) | Future<void> _handleTextPart(TextPart part)
method _handleInlineDataPart (line 590) | Future<void> _handleInlineDataPart(InlineDataPart part)
method _handleLiveServerToolCall (line 596) | Future<void> _handleLiveServerToolCall(LiveServerToolCall response)
method _showError (line 622) | void _showError(String message)
FILE: packages/firebase_ai/firebase_ai/example/lib/pages/chat_page.dart
class ChatPage (line 20) | class ChatPage extends StatefulWidget {
method createState (line 31) | State<ChatPage> createState()
class _ChatPageState (line 34) | class _ChatPageState extends State<ChatPage> {
method initState (line 45) | void initState()
method _initializeChat (line 50) | void _initializeChat()
method _scrollDown (line 73) | void _scrollDown()
method build (line 86) | Widget build(BuildContext context)
method _sendStreamingChatMessage (line 179) | Future<void> _sendStreamingChatMessage(String message)
method _sendChatMessage (line 228) | Future<void> _sendChatMessage(String message)
method _showError (line 269) | void _showError(String message)
FILE: packages/firebase_ai/firebase_ai/example/lib/pages/document.dart
class DocumentPage (line 20) | class DocumentPage extends StatefulWidget {
method createState (line 27) | State<DocumentPage> createState()
class _DocumentPageState (line 30) | class _DocumentPageState extends State<DocumentPage> {
method initState (line 37) | void initState()
method _testDocumentReading (line 42) | Future<void> _testDocumentReading(model)
method build (line 72) | Widget build(BuildContext context)
FILE: packages/firebase_ai/firebase_ai/example/lib/pages/function_calling_page.dart
class FunctionCallingPage (line 20) | class FunctionCallingPage extends StatefulWidget {
method createState (line 31) | State<FunctionCallingPage> createState()
class Location (line 34) | class Location {
class _FunctionCallingPageState (line 41) | class _FunctionCallingPageState extends State<FunctionCallingPage> {
method initState (line 55) | void initState()
method findRestaurants (line 119) | Future<Map<String, Object?>> findRestaurants(
method getRestaurantMenu (line 140) | Future<Map<String, Object?>> getRestaurantMenu(String restaurantName)
method _fetchWeatherCallable (line 151) | Future<Map<String, Object?>> _fetchWeatherCallable(
method _initializeModel (line 161) | void _initializeModel()
method fetchWeather (line 209) | Future<Map<String, Object?>> fetchWeather(
method _executeFunctionCall (line 248) | Future<Map<String, Object?>> _executeFunctionCall(FunctionCall call)
method _runTest (line 261) | Future<void> _runTest(Future<void> Function() testBody)
method build (line 279) | Widget build(BuildContext context)
method _testAutoFunctionCalling (line 387) | Future<void> _testAutoFunctionCalling({bool parallel = false})
method _testStreamFunctionCalling (line 421) | Future<void> _testStreamFunctionCalling()
method _testAutoStreamFunctionCalling (line 479) | Future<void> _testAutoStreamFunctionCalling()
method _testFunctionCalling (line 527) | Future<void> _testFunctionCalling()
method _testCodeExecution (line 565) | Future<void> _testCodeExecution()
method _showError (line 611) | void _showError(String message)
FILE: packages/firebase_ai/firebase_ai/example/lib/pages/image_prompt_page.dart
class ImagePromptPage (line 19) | class ImagePromptPage extends StatefulWidget {
method createState (line 26) | State<ImagePromptPage> createState()
class _ImagePromptPageState (line 29) | class _ImagePromptPageState extends State<ImagePromptPage> {
method _scrollDown (line 36) | void _scrollDown()
method build (line 49) | Widget build(BuildContext context)
method _sendImagePrompt (line 128) | Future<void> _sendImagePrompt(String message)
method _sendStorageUriPrompt (line 184) | Future<void> _sendStorageUriPrompt(String message)
method _showError (line 227) | void _showError(String message)
FILE: packages/firebase_ai/firebase_ai/example/lib/pages/imagen_page.dart
class ImagenPage (line 25) | class ImagenPage extends StatefulWidget {
method createState (line 36) | State<ImagenPage> createState()
class _ImagenPageState (line 39) | class _ImagenPageState extends State<ImagenPage> {
method _scrollDown (line 50) | void _scrollDown()
method build (line 63) | Widget build(BuildContext context)
method _pickImage (line 198) | Future<ImagenInlineImage?> _pickImage()
method _pickSourceImage (line 219) | Future<void> _pickSourceImage()
method _pickMaskImage (line 228) | Future<void> _pickMaskImage()
method _inpaintImageHappyPath (line 237) | Future<void> _inpaintImageHappyPath()
method _editWithMask (line 289) | Future<void> _editWithMask()
method _outpaintImage (line 349) | Future<void> _outpaintImage()
method _editWithStyle (line 402) | Future<void> _editWithStyle()
method _generateImageFromPrompt (line 459) | Future<void> _generateImageFromPrompt(String prompt)
method _showError (line 523) | void _showError(String message)
FILE: packages/firebase_ai/firebase_ai/example/lib/pages/json_schema_page.dart
class JsonSchemaPage (line 21) | class JsonSchemaPage extends StatefulWidget {
method createState (line 28) | State<JsonSchemaPage> createState()
class _JsonSchemaPageState (line 31) | class _JsonSchemaPageState extends State<JsonSchemaPage> {
method _scrollDown (line 38) | void _scrollDown()
method build (line 51) | Widget build(BuildContext context)
method _promptJsonSchemaTest (line 100) | Future<void> _promptJsonSchemaTest()
method _showError (line 179) | void _showError(String message)
FILE: packages/firebase_ai/firebase_ai/example/lib/pages/schema_page.dart
class SchemaPromptPage (line 21) | class SchemaPromptPage extends StatefulWidget {
method createState (line 28) | State<SchemaPromptPage> createState()
class _SchemaPromptPageState (line 31) | class _SchemaPromptPageState extends State<SchemaPromptPage> {
method _scrollDown (line 38) | void _scrollDown()
method build (line 51) | Widget build(BuildContext context)
method _promptSchemaTest (line 100) | Future<void> _promptSchemaTest()
method _showError (line 164) | void _showError(String message)
FILE: packages/firebase_ai/firebase_ai/example/lib/pages/server_template_page.dart
class ServerTemplatePage (line 20) | class ServerTemplatePage extends StatefulWidget {
method createState (line 31) | State<ServerTemplatePage> createState()
class _ServerTemplatePageState (line 34) | class _ServerTemplatePageState extends State<ServerTemplatePage> {
method initState (line 47) | void initState()
method _initializeServerTemplate (line 52) | void _initializeServerTemplate()
method _scrollDown (line 70) | void _scrollDown()
method build (line 83) | Widget build(BuildContext context)
method _serverTemplateUrlContext (line 192) | Future<void> _serverTemplateUrlContext(String message)
method _serverTemplateImagen (line 257) | Future<void> _serverTemplateImagen(String message)
method _serverTemplateImageInput (line 306) | Future<void> _serverTemplateImageInput(String message)
method _sendServerTemplateMessage (line 353) | Future<void> _sendServerTemplateMessage(String message)
method _testCodeExecution (line 384) | Future<void> _testCodeExecution()
method _showError (line 440) | void _showError(String message)
FILE: packages/firebase_ai/firebase_ai/example/lib/pages/token_count_page.dart
class TokenCountPage (line 19) | class TokenCountPage extends StatefulWidget {
method createState (line 26) | State<TokenCountPage> createState()
class _TokenCountPageState (line 29) | class _TokenCountPageState extends State<TokenCountPage> {
method build (line 34) | Widget build(BuildContext context)
method _testCountToken (line 93) | Future<void> _testCountToken()
method _testUsageMetadata (line 109) | Future<void> _testUsageMetadata()
FILE: packages/firebase_ai/firebase_ai/example/lib/pages/video_page.dart
class VideoPage (line 20) | class VideoPage extends StatefulWidget {
method createState (line 27) | State<VideoPage> createState()
class _VideoPageState (line 30) | class _VideoPageState extends State<VideoPage> {
method initState (line 37) | void initState()
method _testVideo (line 42) | Future<void> _testVideo(model)
method build (line 69) | Widget build(BuildContext context)
FILE: packages/firebase_ai/firebase_ai/example/lib/utils/audio_input.dart
class AudioInput (line 20) | class AudioInput extends ChangeNotifier {
method init (line 36) | Future<void> init()
method dispose (line 41) | void dispose()
method _checkPermission (line 47) | Future<void> _checkPermission()
method startRecordingStream (line 56) | Future<Stream<Uint8List>?> startRecordingStream()
method stopRecording (line 160) | Future<void> stopRecording()
method togglePause (line 178) | Future<void> togglePause()
class MicrophonePermissionDeniedException (line 192) | class MicrophonePermissionDeniedException implements Exception {
method toString (line 200) | String toString()
FILE: packages/firebase_ai/firebase_ai/example/lib/utils/audio_output.dart
class AudioOutput (line 19) | class AudioOutput {
method init (line 27) | Future<void> init()
method dispose (line 37) | Future<void> dispose()
method setupNewStream (line 47) | AudioSource? setupNewStream()
method playStream (line 66) | Future<AudioSource?> playStream()
method addDataToAudioStream (line 76) | void addDataToAudioStream(Uint8List audioChunk)
method stopStream (line 83) | Future<void> stopStream()
FILE: packages/firebase_ai/firebase_ai/example/lib/utils/image_utils.dart
class _IsolateParams (line 19) | class _IsolateParams {
class _IsolateResult (line 34) | class _IsolateResult {
function _generateMaskAndPadInIsolate (line 48) | Future<_IsolateResult> _generateMaskAndPadInIsolate(
function generateMaskAndPadForOutpainting (line 114) | Future<List<ImagenReferenceImage>> generateMaskAndPadForOutpainting({
FILE: packages/firebase_ai/firebase_ai/example/lib/utils/video_input.dart
class VideoInput (line 21) | class VideoInput extends ChangeNotifier {
method init (line 34) | Future<void> init()
method dispose (line 51) | void dispose()
method setMacOSController (line 71) | void setMacOSController(dynamic controller)
method initializeCameraController (line 77) | Future<void> initializeCameraController()
method startStreamingImages (line 113) | Stream<Uint8List> startStreamingImages()
method stopStreamingImages (line 171) | Future<void> stopStreamingImages()
method flipCamera (line 197) | Future<void> flipCamera()
FILE: packages/firebase_ai/firebase_ai/example/lib/widgets/audio_visualizer.dart
class AudioVisualizer (line 19) | class AudioVisualizer extends StatelessWidget {
method build (line 30) | Widget build(BuildContext context)
FILE: packages/firebase_ai/firebase_ai/example/lib/widgets/camera_previews.dart
class SquareCameraPreview (line 21) | class SquareCameraPreview extends StatelessWidget {
method build (line 34) | Widget build(BuildContext context)
class FullCameraPreview (line 89) | class FullCameraPreview extends StatefulWidget {
method createState (line 102) | State<FullCameraPreview> createState()
class _FullCameraPreviewState (line 105) | class _FullCameraPreviewState extends State<FullCameraPreview>
method initState (line 110) | void initState()
method dispose (line 119) | void dispose()
method build (line 125) | Widget build(BuildContext context)
FILE: packages/firebase_ai/firebase_ai/example/lib/widgets/message_widget.dart
class MessageData (line 18) | class MessageData {
method copyWith (line 26) | MessageData copyWith({
class MessageWidget (line 46) | class MessageWidget extends StatelessWidget {
method build (line 61) | Widget build(BuildContext context)
FILE: packages/firebase_ai/firebase_ai/example/lib/widgets/sound_waves.dart
class CenterCircle (line 19) | class CenterCircle extends StatelessWidget {
method build (line 25) | Widget build(BuildContext context)
class Soundwaves (line 39) | class Soundwaves extends StatelessWidget {
method build (line 45) | Widget build(BuildContext context)
class NestedCirclesPainter (line 66) | class NestedCirclesPainter extends CustomPainter {
method paint (line 78) | void paint(Canvas canvas, Size size)
method shouldRepaint (line 111) | bool shouldRepaint(covariant CustomPainter oldDelegate)
FILE: packages/firebase_ai/firebase_ai/lib/src/api.dart
class CountTokensResponse (line 21) | final class CountTokensResponse {
class GenerateContentResponse (line 44) | final class GenerateContentResponse {
class PromptFeedback (line 164) | final class PromptFeedback {
class UsageMetadata (line 183) | final class UsageMetadata {
class Candidate (line 233) | final class Candidate {
class Segment (line 301) | final class Segment {
class WebGroundingChunk (line 334) | final class WebGroundingChunk {
class GroundingChunk (line 355) | final class GroundingChunk {
class GroundingSupport (line 365) | final class GroundingSupport {
class SearchEntryPoint (line 387) | final class SearchEntryPoint {
class GroundingMetadata (line 408) | final class GroundingMetadata {
type UrlRetrievalStatus (line 454) | enum UrlRetrievalStatus {
class UrlMetadata (line 495) | final class UrlMetadata {
class UrlContextMetadata (line 511) | final class UrlContextMetadata {
class SafetyRating (line 525) | final class SafetyRating {
type BlockReason (line 553) | enum BlockReason {
type HarmCategory (line 593) | enum HarmCategory {
type HarmProbability (line 638) | enum HarmProbability {
type HarmSeverity (line 681) | enum HarmSeverity {
class CitationMetadata (line 721) | final class CitationMetadata {
class Citation (line 730) | final class Citation {
type FinishReason (line 752) | enum FinishReason {
class ModalityTokenCount (line 802) | final class ModalityTokenCount {
type ContentModality (line 814) | enum ContentModality {
class SafetySetting (line 861) | final class SafetySetting {
method toJson (line 876) | Object toJson()
type HarmBlockThreshold (line 887) | enum HarmBlockThreshold {
type HarmBlockMethod (line 931) | enum HarmBlockMethod {
type ResponseModalities (line 964) | enum ResponseModalities {
type ThinkingLevel (line 985) | enum ThinkingLevel {
class ThinkingConfig (line 1006) | class ThinkingConfig {
method toJson (line 1062) | Map<String, Object?> toJson()
class BaseGenerationConfig (line 1073) | abstract class BaseGenerationConfig {
method toJson (line 1164) | Map<String, Object?> toJson()
class GenerationConfig (line 1183) | final class GenerationConfig extends BaseGenerationConfig {
method toJson (line 1248) | Map<String, Object?> toJson()
type TaskType (line 1265) | enum TaskType {
class SerializationStrategy (line 1306) | abstract interface class SerializationStrategy {
method parseGenerateContentResponse (line 1308) | GenerateContentResponse parseGenerateContentResponse(Object jsonObject)
method parseCountTokensResponse (line 1310) | CountTokensResponse parseCountTokensResponse(Object jsonObject)
method generateContentRequest (line 1312) | Map<String, Object?> generateContentRequest(
method countTokensRequest (line 1323) | Map<String, Object?> countTokensRequest(
class VertexSerialization (line 1334) | final class VertexSerialization implements SerializationStrategy {
method parseGenerateContentResponse (line 1337) | GenerateContentResponse parseGenerateContentResponse(Object jsonObject)
method parseCountTokensResponse (line 1362) | CountTokensResponse parseCountTokensResponse(Object jsonObject)
method generateContentRequest (line 1389) | Map<String, Object?> generateContentRequest(
method countTokensRequest (line 1413) | Map<String, Object?> countTokensRequest(
function _parseCandidate (line 1425) | Candidate _parseCandidate(Object? jsonObject)
function _parsePromptFeedback (line 1465) | PromptFeedback _parsePromptFeedback(Object jsonObject)
function parseUsageMetadata (line 1495) | UsageMetadata parseUsageMetadata(Object jsonObject)
function _parseModalityTokenCount (line 1563) | ModalityTokenCount _parseModalityTokenCount(Object? jsonObject)
function _parseSafetyRating (line 1576) | SafetyRating _parseSafetyRating(Object? jsonObject)
function parseCitationMetadata (line 1597) | CitationMetadata parseCitationMetadata(Object? jsonObject)
function _parseCitationSource (line 1608) | Citation _parseCitationSource(Object? jsonObject)
function parseGroundingMetadata (line 1627) | GroundingMetadata parseGroundingMetadata(Object? jsonObject)
function _parseSegment (line 1668) | Segment _parseSegment(Object? jsonObject)
function _parseWebGroundingChunk (line 1680) | WebGroundingChunk _parseWebGroundingChunk(Object? jsonObject)
function _parseGroundingChunk (line 1692) | GroundingChunk _parseGroundingChunk(Object? jsonObject)
function _parseGroundingSupport (line 1704) | GroundingSupport? _parseGroundingSupport(Object? jsonObject)
function _parseSearchEntryPoint (line 1723) | SearchEntryPoint _parseSearchEntryPoint(Object? jsonObject)
function _parseUrlMetadata (line 1738) | UrlMetadata _parseUrlMetadata(Object? jsonObject)
function parseUrlContextMetadata (line 1754) | UrlContextMetadata parseUrlContextMetadata(Object? jsonObject)
type CodeLanguage (line 1766) | enum CodeLanguage {
type Outcome (line 1792) | enum Outcome {
FILE: packages/firebase_ai/firebase_ai/lib/src/base_model.dart
type Task (line 48) | enum Task {
type TemplateTask (line 63) | enum TemplateTask {
class _ModelUri (line 74) | abstract interface class _ModelUri {
method taskUri (line 77) | Uri taskUri(Task task)
class _VertexUri (line 81) | final class _VertexUri implements _ModelUri {
method _normalizeModelName (line 96) | ({String prefix, String name}) _normalizeModelName(String modelName)
method _vertexUri (line 102) | Uri _vertexUri(FirebaseApp app, String location)
method taskUri (line 122) | Uri taskUri(Task task)
class _GoogleAIUri (line 129) | final class _GoogleAIUri implements _ModelUri {
method _normalizeModelName (line 140) | ({String prefix, String name}) _normalizeModelName(String modelName)
method _googleAIBaseUri (line 149) | Uri _googleAIBaseUri(
method taskUri (line 166) | Uri taskUri(Task task)
class _TemplateUri (line 171) | abstract interface class _TemplateUri {
method templateTaskUri (line 174) | Uri templateTaskUri(TemplateTask task, String templateId)
method templateName (line 175) | String templateName(String templateId)
class _TemplateVertexUri (line 178) | final class _TemplateVertexUri implements _TemplateUri {
method _vertexTemplateUri (line 189) | Uri _vertexTemplateUri(FirebaseApp app, String location)
method _vertexTemplateName (line 197) | String _vertexTemplateName(FirebaseApp app, String location)
method templateTaskUri (line 209) | Uri templateTaskUri(TemplateTask task, String templateId)
method templateName (line 216) | String templateName(String templateId)
class _TemplateGoogleAIUri (line 220) | final class _TemplateGoogleAIUri implements _TemplateUri {
method _googleAITemplateUri (line 231) | Uri _googleAITemplateUri(
method _googleAITemplateName (line 236) | String _googleAITemplateName({required FirebaseApp app})
method templateTaskUri (line 246) | Uri templateTaskUri(TemplateTask task, String templateId)
method templateName (line 253) | String templateName(String templateId)
class BaseModel (line 261) | abstract class BaseModel {
method firebaseTokens (line 275) | FutureOr<Map<String, String>> Function() firebaseTokens(
method taskUri (line 308) | Uri taskUri(Task task)
class BaseApiClientModel (line 320) | abstract class BaseApiClientModel extends BaseModel {
method makeRequest (line 335) | Future<T> makeRequest<T>(Task task, Map<String, Object?> params,
class BaseTemplateApiClientModel (line 346) | abstract class BaseTemplateApiClientModel extends BaseApiClientModel {
method makeTemplateRequest (line 362) | Future<T> makeTemplateRequest<T>(
method streamTemplateRequest (line 384) | Stream<T> streamTemplateRequest<T>(
method templateTaskUri (line 403) | Uri templateTaskUri(TemplateTask task, String templateId)
method templateName (line 407) | String templateName(String templateId)
FILE: packages/firebase_ai/firebase_ai/lib/src/chat.dart
class ChatSession (line 30) | final class ChatSession {
method sendMessage (line 81) | Future<GenerateContentResponse> sendMessage(Content message)
method sendMessageStream (line 156) | Stream<GenerateContentResponse> sendMessageStream(Content message)
function startChat (line 237) | ChatSession startChat(
FILE: packages/firebase_ai/firebase_ai/lib/src/client.dart
class ApiClient (line 27) | abstract interface class ApiClient {
method makeRequest (line 29) | Future<Map<String, Object?>> makeRequest(Uri uri, Map<String, Object?>...
method streamRequest (line 32) | Stream<Map<String, Object?>> streamRequest(
class HttpApiClient (line 41) | final class HttpApiClient implements ApiClient {
method _headers (line 55) | Future<Map<String, String>> _headers()
method makeRequest (line 64) | Future<Map<String, Object?>> makeRequest(
method streamRequest (line 81) | Stream<Map<String, Object?>> streamRequest(
FILE: packages/firebase_ai/firebase_ai/lib/src/content.dart
class Content (line 25) | final class Content {
method text (line 41) | Content text(String text)
method inlineData (line 44) | Content inlineData(String mimeType, Uint8List bytes)
method multi (line 48) | Content multi(Iterable<Part> parts)
method model (line 51) | Content model(Iterable<Part> parts)
method functionResponse (line 54) | Content functionResponse(String name, Map<String, Object?> response,
method functionResponses (line 59) | Content functionResponses(Iterable<FunctionResponse> responses)
method system (line 63) | Content system(String instructions)
method toJson (line 67) | Map<String, Object?> toJson()
function parseContent (line 76) | Content parseContent(Object jsonObject)
function parsePart (line 89) | Part parsePart(Object? jsonObject)
class Part (line 186) | sealed class Part {
method toJson (line 197) | Object toJson()
class UnknownPart (line 205) | final class UnknownPart extends Part {
method toJson (line 213) | Object toJson()
class TextPart (line 220) | final class TextPart extends Part {
method toJson (line 251) | Object toJson()
class InlineDataPart (line 258) | final class InlineDataPart extends Part {
method toJson (line 304) | Object toJson()
method toMediaChunkJson (line 317) | Object toMediaChunkJson()
class FunctionCall (line 327) | final class FunctionCall extends Part {
method toJson (line 376) | Object toJson()
class FunctionResponse (line 390) | final class FunctionResponse extends Part {
method toJson (line 417) | Object toJson()
class FileData (line 431) | final class FileData extends Part {
method toJson (line 472) | Object toJson()
class ExecutableCodePart (line 482) | final class ExecutableCodePart extends Part {
method toJson (line 510) | Object toJson()
class CodeExecutionResultPart (line 520) | final class CodeExecutionResultPart extends Part {
method toJson (line 548) | Object toJson()
FILE: packages/firebase_ai/firebase_ai/lib/src/developer/api.dart
function _harmBlockThresholdToJson (line 38) | String _harmBlockThresholdToJson(HarmBlockThreshold? threshold)
function _harmCategoryToJson (line 47) | String _harmCategoryToJson(HarmCategory harmCategory)
function _safetySettingToJson (line 55) | Object _safetySettingToJson(SafetySetting safetySetting)
class DeveloperSerialization (line 67) | final class DeveloperSerialization implements SerializationStrategy {
method parseGenerateContentResponse (line 69) | GenerateContentResponse parseGenerateContentResponse(Object jsonObject)
method parseCountTokensResponse (line 91) | CountTokensResponse parseCountTokensResponse(Object jsonObject)
method generateContentRequest (line 100) | Map<String, Object?> generateContentRequest(
method countTokensRequest (line 124) | Map<String, Object?> countTokensRequest(
function _parseCandidate (line 146) | Candidate _parseCandidate(Object? jsonObject)
function _parsePromptFeedback (line 188) | PromptFeedback _parsePromptFeedback(Object jsonObject)
function _parseSafetyRating (line 209) | SafetyRating _parseSafetyRating(Object? jsonObject)
function _parseHarmProbability (line 229) | HarmProbability _parseHarmProbability(Object jsonObject)
function _parseHarmCategory (line 238) | HarmCategory _parseHarmCategory(Object jsonObject)
FILE: packages/firebase_ai/firebase_ai/lib/src/error.dart
class FirebaseAIException (line 18) | final class FirebaseAIException implements Exception {
method toString (line 26) | String toString()
class InvalidApiKey (line 30) | final class InvalidApiKey implements FirebaseAIException {
method toString (line 37) | String toString()
class UnsupportedUserLocation (line 41) | final class UnsupportedUserLocation implements FirebaseAIException {
class ServiceApiNotEnabled (line 48) | final class ServiceApiNotEnabled implements FirebaseAIException {
method toString (line 64) | String toString()
class QuotaExceeded (line 72) | final class QuotaExceeded implements FirebaseAIException {
method toString (line 79) | String toString()
class ServerException (line 83) | final class ServerException implements FirebaseAIException {
method toString (line 90) | String toString()
class FirebaseAISdkException (line 98) | final class FirebaseAISdkException implements Exception {
method toString (line 106) | String toString()
class ImagenImagesBlockedException (line 118) | final class ImagenImagesBlockedException implements Exception {
method toString (line 126) | String toString()
class LiveWebSocketClosedException (line 133) | final class LiveWebSocketClosedException implements Exception {
method toString (line 141) | String toString()
function parseError (line 153) | FirebaseAIException parseError(Object jsonObject)
function unhandledFormat (line 184) | Exception unhandledFormat(String name, Object? jsonObject)
FILE: packages/firebase_ai/firebase_ai/lib/src/firebase_ai.dart
class FirebaseAI (line 28) | class FirebaseAI extends FirebasePluginPlatform {
method vertexAI (line 63) | FirebaseAI vertexAI({
method googleAI (line 96) | FirebaseAI googleAI({
method generativeModel (line 133) | GenerativeModel generativeModel({
method imagenModel (line 161) | ImagenModel imagenModel(
method liveGenerativeModel (line 181) | LiveGenerativeModel liveGenerativeModel({
method templateGenerativeModel (line 205) | TemplateGenerativeModel templateGenerativeModel()
method templateImagenModel (line 219) | TemplateImagenModel templateImagenModel()
FILE: packages/firebase_ai/firebase_ai/lib/src/generative_model.dart
class GenerativeModel (line 22) | final class GenerativeModel extends BaseApiClientModel {
method generateContent (line 116) | Future<GenerateContentResponse> generateContent(Iterable<Content> prompt,
method generateContentStream (line 146) | Stream<GenerateContentResponse> generateContentStream(
method countTokens (line 183) | Future<CountTokensResponse> countTokens(
function createGenerativeModel (line 200) | GenerativeModel createGenerativeModel({
function createModelWithClient (line 232) | GenerativeModel createModelWithClient({
FILE: packages/firebase_ai/firebase_ai/lib/src/imagen/imagen_api.dart
type ImagenSafetyFilterLevel (line 19) | enum ImagenSafetyFilterLevel {
type ImagenPersonFilterLevel (line 60) | enum ImagenPersonFilterLevel {
class ImagenSafetySettings (line 95) | final class ImagenSafetySettings {
method toJson (line 106) | Map<String, Object?> toJson()
type ImagenAspectRatio (line 117) | enum ImagenAspectRatio {
class ImagenGenerationConfig (line 158) | final class ImagenGenerationConfig {
method toJson (line 188) | Map<String, dynamic> toJson()
class ImagenFormat (line 198) | final class ImagenFormat {
method toJson (line 221) | Map<String, dynamic> toJson()
FILE: packages/firebase_ai/firebase_ai/lib/src/imagen/imagen_content.dart
class ImagenImage (line 19) | sealed class ImagenImage {
method toJson (line 27) | Object toJson()
class ImagenInlineImage (line 31) | final class ImagenInlineImage implements ImagenImage {
method toJson (line 56) | Object toJson()
class ImagenGCSImage (line 63) | final class ImagenGCSImage implements ImagenImage {
method toJson (line 88) | Object toJson()
class ImagenGenerationResponse (line 95) | final class ImagenGenerationResponse<T extends ImagenImage> {
function parseImagenGenerationResponse (line 150) | ImagenGenerationResponse<T>
FILE: packages/firebase_ai/firebase_ai/lib/src/imagen/imagen_edit.dart
type ImagenEditMode (line 20) | @experimental
type ImagenSubjectReferenceType (line 39) | @experimental
type ImagenControlType (line 58) | @experimental
type ImagenMaskMode (line 83) | @experimental
class ImagenReferenceConfig (line 104) | sealed class ImagenReferenceConfig {
method toJson (line 106) | Map<String, Object?> toJson()
class ImagenMaskConfig (line 110) | @experimental
method toJson (line 129) | Map<String, Object?> toJson()
class ImagenSubjectConfig (line 139) | @experimental
method toJson (line 154) | Map<String, Object?> toJson()
class ImagenStyleConfig (line 163) | @experimental
method toJson (line 173) | Map<String, Object?> toJson()
class ImagenControlConfig (line 181) | @experimental
method toJson (line 203) | Map<String, Object?> toJson()
class ImagenEditingConfig (line 216) | @experimental
class ImagenDimensions (line 232) | @experimental
class ImagenImagePlacement (line 248) | @experimental
method fromCoordinate (line 259) | ImagenImagePlacement fromCoordinate(int x, int y)
method normalizeToDimensions (line 297) | ImagenImagePlacement normalizeToDimensions(
FILE: packages/firebase_ai/firebase_ai/lib/src/imagen/imagen_model.dart
class ImagenModel (line 27) | final class ImagenModel extends BaseApiClientModel {
method _generateImagenRequest (line 57) | Map<String, Object?> _generateImagenRequest(
method generateImages (line 88) | Future<ImagenGenerationResponse<ImagenInlineImage>> generateImages(
method _generateImagesGCS (line 104) | Future<ImagenGenerationResponse<ImagenGCSImage>> _generateImagesGCS(
method editImage (line 120) | Future<ImagenGenerationResponse<ImagenInlineImage>> editImage(
method inpaintImage (line 138) | Future<ImagenGenerationResponse<ImagenInlineImage>> inpaintImage(
method _generateImagenEditRequest (line 153) | Map<String, Object?> _generateImagenEditRequest(
function createImagenModel (line 197) | ImagenModel createImagenModel({
FILE: packages/firebase_ai/firebase_ai/lib/src/imagen/imagen_reference.dart
type _ReferenceType (line 19) | enum _ReferenceType {
class ImagenReferenceImage (line 32) | @experimental
method toJson (line 54) | Map<String, Object?> toJson({int referenceIdOverrideIfNull = 0})
class ImagenMaskReference (line 74) | @experimental
class ImagenRawImage (line 88) | @experimental
class ImagenRawMask (line 98) | @experimental
class ImagenSemanticMask (line 115) | @experimental
class ImagenBackgroundMask (line 132) | @experimental
class ImagenForegroundMask (line 147) | @experimental
class ImagenSubjectReference (line 162) | @experimental
class ImagenStyleReference (line 181) | @experimental
class ImagenControlReference (line 198) | @experimental
FILE: packages/firebase_ai/firebase_ai/lib/src/live_api.dart
class PrebuiltVoiceConfig (line 21) | class PrebuiltVoiceConfig {
method toJson (line 31) | Map<String, Object?> toJson()
class VoiceConfig (line 38) | class VoiceConfig {
method toJson (line 45) | Map<String, Object?> toJson()
class SpeechConfig (line 54) | class SpeechConfig {
method toJson (line 68) | Map<String, Object?> toJson()
class AudioTranscriptionConfig (line 75) | class AudioTranscriptionConfig {
method toJson (line 77) | Map<String, Object?> toJson()
class LiveGenerationConfig (line 81) | final class LiveGenerationConfig extends BaseGenerationConfig {
method toJson (line 107) | Map<String, Object?> toJson()
class LiveServerMessage (line 119) | sealed class LiveServerMessage {}
class LiveServerSetupComplete (line 125) | class LiveServerSetupComplete implements LiveServerMessage {}
class Transcription (line 128) | class Transcription {
class LiveServerContent (line 140) | class LiveServerContent implements LiveServerMessage {
class LiveServerToolCall (line 185) | class LiveServerToolCall implements LiveServerMessage {
class LiveServerToolCallCancellation (line 202) | class LiveServerToolCallCancellation implements LiveServerMessage {
class GoingAwayNotice (line 214) | class GoingAwayNotice implements LiveServerMessage {
class LiveServerResponse (line 230) | class LiveServerResponse {
class LiveClientRealtimeInput (line 239) | class LiveClientRealtimeInput {
method toJson (line 283) | Map<String, dynamic> toJson()
class LiveClientContent (line 296) | class LiveClientContent {
method toJson (line 314) | Map<String, dynamic> toJson()
class LiveClientToolResponse (line 323) | class LiveClientToolResponse {
method toJson (line 332) | Map<String, dynamic> toJson()
function parseServerResponse (line 384) | LiveServerResponse parseServerResponse(Object jsonObject)
function _parseServerMessage (line 389) | LiveServerMessage _parseServerMessage(Object jsonObject)
function _parseTranscription (line 407) | Transcription? _parseTranscription(String key)
FILE: packages/firebase_ai/firebase_ai/lib/src/live_model.dart
class LiveGenerativeModel (line 31) | final class LiveGenerativeModel extends BaseModel {
method _vertexAIUri (line 76) | String _vertexAIUri()
method _vertexAIModelString (line 80) | String _vertexAIModelString()
method _googleAIUri (line 83) | String _googleAIUri()
method _googleAIModelString (line 86) | String _googleAIModelString()
method connect (line 96) | Future<LiveSession> connect()
function createLiveGenerativeModel (line 139) | LiveGenerativeModel createLiveGenerativeModel({
FILE: packages/firebase_ai/firebase_ai/lib/src/live_session.dart
class LiveSession (line 27) | class LiveSession {
method send (line 55) | Future<void> send({
method sendToolResponse (line 70) | Future<void> sendToolResponse(
method sendAudioRealtime (line 84) | Future<void> sendAudioRealtime(InlineDataPart audio)
method sendVideoRealtime (line 96) | Future<void> sendVideoRealtime(InlineDataPart video)
method sendTextRealtime (line 108) | Future<void> sendTextRealtime(String text)
method sendMediaChunks (line 120) | Future<void> sendMediaChunks({
method sendMediaStream (line 137) | Future<void> sendMediaStream(Stream<InlineDataPart> mediaChunkStream)
method _sendMediaChunk (line 151) | Future<void> _sendMediaChunk(InlineDataPart chunk)
method receive (line 164) | Stream<LiveServerResponse> receive()
method close (line 176) | Future<void> close()
method _checkWsStatus (line 182) | void _checkWsStatus()
FILE: packages/firebase_ai/firebase_ai/lib/src/schema.dart
class Schema (line 20) | final class Schema {
method toJson (line 261) | Map<String, Object> toJson()
type SchemaType (line 294) | enum SchemaType {
FILE: packages/firebase_ai/firebase_ai/lib/src/server_template/template_generative_model.dart
class TemplateGenerativeModel (line 19) | @experimental
method generateContent (line 71) | Future<GenerateContentResponse> generateContent(String templateId,
method generateContentStream (line 81) | Stream<GenerateContentResponse> generateContentStream(String templateId,
function createTemplateGenerativeModel (line 95) | TemplateGenerativeModel createTemplateGenerativeModel({
function createTestTemplateGenerativeModel (line 115) | TemplateGenerativeModel createTestTemplateGenerativeModel({
FILE: packages/firebase_ai/firebase_ai/lib/src/server_template/template_imagen_model.dart
class TemplateImagenModel (line 18) | @experimental
method generateImages (line 64) | Future<ImagenGenerationResponse<ImagenInlineImage>> generateImages(
function createTemplateImagenModel (line 80) | TemplateImagenModel createTemplateImagenModel({
function createTestTemplateImagenModel (line 100) | TemplateImagenModel createTestTemplateImagenModel({
FILE: packages/firebase_ai/firebase_ai/lib/src/tool.dart
class Tool (line 24) | final class Tool {
method functionDeclarations (line 30) | Tool functionDeclarations(
method googleSearch (line 52) | Tool googleSearch({GoogleSearch googleSearch = const GoogleSearch()})
method codeExecution (line 57) | Tool codeExecution(
method urlContext (line 75) | Tool urlContext({UrlContext urlContext = const UrlContext()})
method toJson (line 110) | Map<String, Objec
Copy disabled (too large)
Download .json
Condensed preview — 2912 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (14,602K chars).
[
{
"path": ".clang-format",
"chars": 29,
"preview": "---\nBasedOnStyle: Google\n---\n"
},
{
"path": ".editorconfig",
"chars": 181,
"preview": "# editorconfig\nroot = true\n\n[*]\nindent_style = space\nindent_size = 2\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whit"
},
{
"path": ".gemini/config.yaml",
"chars": 185,
"preview": "have_fun: false\ncode_review:\n disable: false\n comment_severity_threshold: LOW\n max_review_comments: -1\n pull_request"
},
{
"path": ".github/ISSUE_TEMPLATE/---documentation-feedback.md",
"chars": 460,
"preview": "---\nname: \"\\U0001F4DA Documentation Feedback\"\nabout: Report an issue with the firebase.google.com/docs/flutter documenta"
},
{
"path": ".github/ISSUE_TEMPLATE/---feature-request.md",
"chars": 399,
"preview": "---\nname: \"🚀 Feature Request\"\nabout: Make a feature request for FlutterFire.\ntitle: \"\\U0001F680 [PLUGIN_NAME_HERE] Your "
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 3656,
"preview": "name: ⚠️ Bug Report\ndescription:\n Report a bug with existing FlutterFire features\ntitle: \"[PLUGIN_NAME_HERE]: <YOUR TIT"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 350,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Ask a Question\n url: https://github.com/firebase/flutterfire/dis"
},
{
"path": ".github/ISSUE_TEMPLATE/ios_background_message_handling.yml",
"chars": 9031,
"preview": "name: iOS background message handling bug report for Firebase Messaging\ndescription:\n Create an issue specific to recei"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 1882,
"preview": "## Description\n\n*Replace this paragraph with a description of what this PR is doing. If you're modifying existing behavi"
},
{
"path": ".github/dependabot.yml",
"chars": 232,
"preview": "# Dependabot configuration file.\n# See https://docs.github.com/en/code-security/dependabot/dependabot-version-updates\n\nv"
},
{
"path": ".github/move.yml",
"chars": 411,
"preview": "# Configuration for move-issues - https://github.com/dessant/move-issues\n\n# Delete the command comment when it contains "
},
{
"path": ".github/workflows/all_plugins.yaml",
"chars": 8105,
"preview": "name: all_plugins\n\nconcurrency:\n group: ${{ github.workflow }}-${{ github.ref }}\n cancel-in-progress: true\n\non:\n pull"
},
{
"path": ".github/workflows/android.yaml",
"chars": 5476,
"preview": "name: e2e-android\n\nconcurrency:\n group: ${{ github.workflow }}-${{ github.ref }}\n cancel-in-progress: true\n\non:\n pull"
},
{
"path": ".github/workflows/e2e_tests_fdc.yaml",
"chars": 18484,
"preview": "name: e2e-fdc\n\nconcurrency:\n group: ${{ github.workflow }}-${{ github.ref }}\n cancel-in-progress: true\n\non:\n pull_req"
},
{
"path": ".github/workflows/ios.yaml",
"chars": 6786,
"preview": "name: e2e-iOS\n\nconcurrency:\n group: ${{ github.workflow }}-${{ github.ref }}\n cancel-in-progress: true\n\non:\n pull_req"
},
{
"path": ".github/workflows/macos.yaml",
"chars": 5900,
"preview": "name: e2e-macOS\n\nconcurrency:\n group: ${{ github.workflow }}-${{ github.ref }}\n cancel-in-progress: true\n\non:\n pull_r"
},
{
"path": ".github/workflows/ossf-scorecard.yml",
"chars": 2978,
"preview": "# This workflow uses actions that are not certified by GitHub. They are provided\n# by a third-party and are governed by "
},
{
"path": ".github/workflows/pr_title.yaml",
"chars": 360,
"preview": "name: pr_title\n\non:\n pull_request_target:\n types:\n - opened\n - edited\n - synchronize\n\njobs:\n validat"
},
{
"path": ".github/workflows/scripts/.firebaserc",
"chars": 149,
"preview": "{\n \"projects\": {\n \"default\": \"flutterfire-e2e-tests\",\n \"react-native-firebase-testing\": \"react-native-firebase-te"
},
{
"path": ".github/workflows/scripts/build-example.sh",
"chars": 996,
"preview": "#!/bin/bash\n\nDEFAULT_TARGET=\"./integration_test/MELOS_PARENT_PACKAGE_NAME_e2e_test.dart\"\n\nACTION=$1\nTARGET_FILE=${2:-$DE"
},
{
"path": ".github/workflows/scripts/database.rules.json",
"chars": 626,
"preview": "{\n \"rules\": {\n \".read\": false,\n \".write\": false,\n \"denied_read\": {\n \".read\": false,\n \".write\": false"
},
{
"path": ".github/workflows/scripts/drive-example.sh",
"chars": 1838,
"preview": "#!/bin/bash\n\nACTION=$1\n\nif [ \"$ACTION\" == \"android\" ]\nthen\n # Sleep to allow emulator to settle.\n sleep 15\n melos exe"
},
{
"path": ".github/workflows/scripts/firebase.json",
"chars": 564,
"preview": "{\n \"firestore\": {\n \"rules\": \"firestore.rules\",\n \"indexes\": \"firestore.indexes.json\"\n },\n \"database\": {\n \"rul"
},
{
"path": ".github/workflows/scripts/firestore.indexes.json",
"chars": 4767,
"preview": "{\n \"indexes\": [\n {\n \"collectionGroup\": \"firebasePerfTest\",\n \"queryScope\": \"COLLECTION\",\n \"f"
},
{
"path": ".github/workflows/scripts/firestore.rules",
"chars": 1116,
"preview": "rules_version = '2';\nservice cloud.firestore {\n match /databases/{database}/documents {\n match /{document=**} {\n "
},
{
"path": ".github/workflows/scripts/functions/.gitignore",
"chars": 120,
"preview": "## Compiled JavaScript files\n**/*.js\n**/*.js.map\n# Typescript v1 declaration files\ntypings/\n\nnode_modules/\n\n.idea\n*.log\n"
},
{
"path": ".github/workflows/scripts/functions/package.json",
"chars": 622,
"preview": "{\n \"name\": \"functions\",\n \"scripts\": {\n \"build\": \"tsc\",\n \"postinstall\": \"npm run build\",\n \"serve\": \"npm run bu"
},
{
"path": ".github/workflows/scripts/functions/src/index.ts",
"chars": 4922,
"preview": "import * as assert from 'assert';\nimport * as functions from 'firebase-functions';\nimport * as functionsv2 from 'firebas"
},
{
"path": ".github/workflows/scripts/functions/tsconfig.json",
"chars": 307,
"preview": "{\n \"compilerOptions\": {\n \"lib\": [\"ES2021\"],\n \"module\": \"commonjs\",\n \"target\": \"ES2021\",\n \"noImplicitReturns"
},
{
"path": ".github/workflows/scripts/reset-firestore-emulator.sh",
"chars": 127,
"preview": "#!/bin/bash\ncurl -v -X DELETE \"http://localhost:8080/emulator/v1/projects/flutterfire-e2e-tests/databases/(default)/docu"
},
{
"path": ".github/workflows/scripts/start-firebase-emulator.sh",
"chars": 2263,
"preview": "#!/bin/bash\nif ! [ -x \"$(command -v firebase)\" ]; then\n echo \"❌ Firebase tools CLI is missing.\"\n exit 1\nfi\n\nif ! [ -x "
},
{
"path": ".github/workflows/scripts/storage.rules",
"chars": 1013,
"preview": "rules_version = '2';\nservice firebase.storage {\n // Default bucket\n match /b/flutterfire-e2e-tests.appspot.com/o {\n "
},
{
"path": ".github/workflows/scripts/swift-integration.dart",
"chars": 14883,
"preview": "// Copyright 2024, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": ".github/workflows/scripts/validate-formatting.sh",
"chars": 829,
"preview": "#!/bin/bash\nif [[ $(git ls-files --modified) ]]; then\n echo \"\"\n echo \"\"\n echo \"These files are not formatted correctl"
},
{
"path": ".github/workflows/web.yaml",
"chars": 11077,
"preview": "name: e2e-web\n\nconcurrency:\n group: ${{ github.workflow }}-${{ github.ref }}\n cancel-in-progress: true\n\non:\n pull_req"
},
{
"path": ".github/workflows/windows.yaml",
"chars": 3441,
"preview": "name: e2e-windows\n\nconcurrency:\n group: ${{ github.workflow }}-${{ github.ref }}\n cancel-in-progress: true\n\non:\n pull"
},
{
"path": ".gitignore",
"chars": 1278,
"preview": ".DS_Store\n.atom/\n.idea/\n.vscode/*\n.melos_tool/*\n!.vscode/tasks.json\n!.vscode/settings.json\n\n.packages\n.pub/\n.dart_tool/\n"
},
{
"path": ".opensource/project.json",
"chars": 1100,
"preview": "{\n \"name\": \"FlutterFire\",\n \"platforms\": [\n \"Android\",\n \"iOS\"\n ],\n \"content\": \"README.md\",\n \"pages\": {\n \"pa"
},
{
"path": ".swiftformat",
"chars": 221,
"preview": "--indent 2\n--maxwidth 100\n--wrapparameters afterfirst\n--disable sortedImports,unusedArguments,wrapMultilineStatementBrac"
},
{
"path": ".vscode/settings.json",
"chars": 50,
"preview": "{\n \"dart.runPubGetOnPubspecChanges\": \"always\",\n}\n"
},
{
"path": ".vscode/tasks.json",
"chars": 6260,
"preview": "{\n \"version\": \"2.0.0\",\n \"tasks\": [\n {\n \"label\": \"melos:bootstrap\",\n \"type\": \"shell\",\n \"command\": \"me"
},
{
"path": "AUTHORS",
"chars": 2536,
"preview": "# Below is a list of people and organizations that have contributed\n# to the Flutter project. Names should be added to t"
},
{
"path": "CHANGELOG.md",
"chars": 1314313,
"preview": "# Change Log\n\nAll notable changes to this project will be documented in this file.\nSee [Conventional Commits](https://co"
},
{
"path": "CODEOWNERS",
"chars": 393,
"preview": "# Below is a list of Flutter team members who are suggested reviewers\n# for contributions to plugins in this repository."
},
{
"path": "CONTRIBUTING.md",
"chars": 14950,
"preview": "# Contributing to FlutterFire\n\n<a href=\"https://github.com/firebase/flutterfire/actions?query=workflow%3Aall_plugins\">\n "
},
{
"path": "LICENSE",
"chars": 1481,
"preview": "Copyright 2017 The Chromium Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or wi"
},
{
"path": "Package.swift",
"chars": 1587,
"preview": "// swift-tools-version: 5.9\n// The swift-tools-version declares the minimum version of Swift required to build this pack"
},
{
"path": "README.md",
"chars": 12829,
"preview": "<p align=\"center\">\n <a href=\"https://firebase.google.com/docs/flutter\">\n <img width=\"250px\" src=\".github/images/flut"
},
{
"path": "VERSIONS.md",
"chars": 139703,
"preview": "# FlutterFire Compatible Versions\n\nThis document is listing all the compatible versions of the FlutterFire plugins. This"
},
{
"path": "all_lint_rules.yaml",
"chars": 6512,
"preview": "# Copyright 2021 The Chromium Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style license"
},
{
"path": "analysis_options.yaml",
"chars": 4112,
"preview": "# Copyright 2021 The Chromium Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style license"
},
{
"path": "docs/README.md",
"chars": 3713,
"preview": "# Flutter docs on firebase.google.com\n\nThis directory contains the source of the Flutter documentation on\nhttps://fireba"
},
{
"path": "docs/analytics/_events.md",
"chars": 5022,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.com/docs/analyti"
},
{
"path": "docs/analytics/_get-started.md",
"chars": 3723,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.com/docs/an"
},
{
"path": "docs/analytics/_user-properties.md",
"chars": 1387,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.com/doc"
},
{
"path": "docs/app-check/custom-resource.md",
"chars": 1917,
"preview": "Project: /docs/app-check/_project.yaml\nBook: /docs/_book.yaml\n\n{% include \"docs/app-check/_local_variables.html\" %}\n{% i"
},
{
"path": "docs/app-check/debug-provider.md",
"chars": 6992,
"preview": "Project: /docs/app-check/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{% include \"docs/app-check/_local_variab"
},
{
"path": "docs/app-check/default-providers.md",
"chars": 6021,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/auth/account-linking.md",
"chars": 3274,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/auth/anonymous-auth.md",
"chars": 4841,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/auth/custom-auth.md",
"chars": 2656,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/auth/email-link-auth.md",
"chars": 10650,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/auth/errors.md",
"chars": 4174,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/auth/federated-auth.md",
"chars": 19085,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/auth/manage-users.md",
"chars": 7459,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/auth/multi-factor.md",
"chars": 10662,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/auth/passing-state-in-email-actions.md",
"chars": 11431,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/auth/password-auth.md",
"chars": 4834,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/auth/phone-auth.md",
"chars": 10884,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/auth/start.md",
"chars": 8127,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/cloud-messaging/client.md",
"chars": 10486,
"preview": "<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n# Set up a Firebase Cloud Messaging client app on Flu"
},
{
"path": "docs/cloud-messaging/first-message.md",
"chars": 5698,
"preview": "Project: /docs/cloud-messaging/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{% include \"_shared/apis/console/_"
},
{
"path": "docs/cloud-messaging/receive.md",
"chars": 25763,
"preview": "Project: /docs/cloud-messaging/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{% include \"_shared/apis/console/_"
},
{
"path": "docs/cloud-messaging/topic-messaging.md",
"chars": 3329,
"preview": "Project: /docs/cloud-messaging/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{% include \"_shared/apis/console/_"
},
{
"path": "docs/crashlytics/_customize-crash-reports.md",
"chars": 11483,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.goog"
},
{
"path": "docs/crashlytics/_deobfuscated.md",
"chars": 10829,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.goo"
},
{
"path": "docs/crashlytics/_force-test-crash.md",
"chars": 1115,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.c"
},
{
"path": "docs/crashlytics/_get-started.md",
"chars": 7690,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.com/docs/"
},
{
"path": "docs/database/_usecase_security_preamble.md",
"chars": 430,
"preview": "Note: By default, read and write access to your database is restricted so only\nauthenticated users can read or write dat"
},
{
"path": "docs/database/lists-of-data.md",
"chars": 13199,
"preview": "Project: /docs/database/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n<link rel=\"stylesheet\" type=\"text/css\" hr"
},
{
"path": "docs/database/offline-capabilities.md",
"chars": 11552,
"preview": "Project: /docs/database/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n<link rel=\"stylesheet\" type=\"text/css\" hr"
},
{
"path": "docs/database/read-and-write.md",
"chars": 14515,
"preview": "Project: /docs/database/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n<link rel=\"stylesheet\" type=\"text/css\" hr"
},
{
"path": "docs/database/start.md",
"chars": 4006,
"preview": "Project: /docs/database/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n<link rel=\"stylesheet\" type=\"text/css\" hr"
},
{
"path": "docs/database/structure-data.md",
"chars": 7213,
"preview": "Project: /docs/database/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n<link rel=\"stylesheet\" type=\"text/css\" hr"
},
{
"path": "docs/dynamic-links/create.md",
"chars": 11143,
"preview": "Project: /docs/dynamic-links/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{% include \"_local_variables.html\" %"
},
{
"path": "docs/dynamic-links/receive.md",
"chars": 8620,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/in-app-messaging/_customize-messages.md",
"chars": 1708,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.goo"
},
{
"path": "docs/in-app-messaging/_get-started.md",
"chars": 3230,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.com/"
},
{
"path": "docs/in-app-messaging/_modify-message-behavior.md",
"chars": 5190,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase"
},
{
"path": "docs/ml/use-custom-models.md",
"chars": 6307,
"preview": "Project: /docs/_project.yaml\nBook: /docs/_book.yaml\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/docs.css\" />\n\n"
},
{
"path": "docs/perf-mon/_custom-code-traces.md",
"chars": 9012,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.com/d"
},
{
"path": "docs/perf-mon/_custom-network-traces.md",
"chars": 2376,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.co"
},
{
"path": "docs/perf-mon/_disable-sdk.md",
"chars": 2759,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.com/docs/per"
},
{
"path": "docs/perf-mon/get-started.md",
"chars": 6422,
"preview": "Project: /docs/perf-mon/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{% include \"_shared/apis/console/_local_v"
},
{
"path": "docs/reference/_toc.yaml",
"chars": 2924,
"preview": "toc:\n- title: cloud_firestore\n path: https://pub.dev/documentation/cloud_firestore/latest/\n status: external\n- title: "
},
{
"path": "docs/remote-config/_get-started.md",
"chars": 8649,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.com/doc"
},
{
"path": "docs/setup/_setup_main.md",
"chars": 14783,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.com/docs/flutter/setup #"
},
{
"path": "docs/setup/_setup_prereq_android.md",
"chars": 1113,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.com/docs/flutter/setup #"
},
{
"path": "docs/setup/_setup_prereq_ios.md",
"chars": 1386,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.com/docs/flutter/setup #"
},
{
"path": "docs/setup/_setup_prereq_web.md",
"chars": 715,
"preview": "{# This content gets published to the following location: #}\n{# https://firebase.google.com/docs/flutter/setup #"
},
{
"path": "docs/storage/create-reference.md",
"chars": 4522,
"preview": "Project: /docs/storage/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{# The following is at site root, /third_p"
},
{
"path": "docs/storage/delete-files.md",
"chars": 1313,
"preview": "Project: /docs/storage/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{# The following is at site root, /third_p"
},
{
"path": "docs/storage/download-files.md",
"chars": 5128,
"preview": "Project: /docs/storage/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{# The following is at site root, /third_p"
},
{
"path": "docs/storage/file-metadata.md",
"chars": 4542,
"preview": "Project: /docs/storage/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{# The following is at site root, /third_p"
},
{
"path": "docs/storage/handle-errors.md",
"chars": 3665,
"preview": "Project: /docs/storage/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{# The following is at site root, /third_p"
},
{
"path": "docs/storage/list-files.md",
"chars": 4097,
"preview": "Project: /docs/storage/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n<link rel=\"stylesheet\" type=\"text/css\" hre"
},
{
"path": "docs/storage/start.md",
"chars": 7299,
"preview": "Project: /docs/storage/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{# The following is at site root, /third_p"
},
{
"path": "docs/storage/upload-files.md",
"chars": 7544,
"preview": "Project: /docs/storage/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{% include \"_shared/apis/console/_local_va"
},
{
"path": "docs/test-lab/integration-testing-with-flutter.md",
"chars": 3780,
"preview": "Project: /docs/test-lab/_project.yaml\nBook: /docs/_book.yaml\npage_type: guide\n\n{% include \"_shared/apis/console/_local_v"
},
{
"path": "header_template.txt",
"chars": 211,
"preview": "Copyright {{.Year}}, the Chromium project authors. Please see the AUTHORS file\nfor details. All rights reserved. Use of"
},
{
"path": "melos.yaml",
"chars": 11747,
"preview": "name: FlutterFire\nrepository: https://github.com/firebase/flutterfire\n\npackages:\n - packages/*\n - packages/*/*\n - pac"
},
{
"path": "packages/_flutterfire_internals/CHANGELOG.md",
"chars": 7755,
"preview": "## 1.3.67\n\n - **FIX**(database): improve error handling in `platformExceptionToFirebaseException` ([#18007](https://gith"
},
{
"path": "packages/_flutterfire_internals/LICENSE",
"chars": 1528,
"preview": "Copyright 2017, the Chromium project authors. All rights reserved.\nRedistribution and use in source and binary forms, wi"
},
{
"path": "packages/_flutterfire_internals/README.md",
"chars": 136,
"preview": "# \\_flutterfire_internals\n\nThis package is hosting Dart code shared between FlutterFire plugins. It is not\nmeant for pub"
},
{
"path": "packages/_flutterfire_internals/lib/_flutterfire_internals.dart",
"chars": 5181,
"preview": "// Copyright 2022, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/_flutterfire_internals/lib/src/exception.dart",
"chars": 2714,
"preview": "// ignore_for_file: require_trailing_commas\n// Copyright 2020, the Chromium project authors. Please see the AUTHORS fil"
},
{
"path": "packages/_flutterfire_internals/lib/src/interop_shimmer.dart",
"chars": 558,
"preview": "// Copyright 2022, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/_flutterfire_internals/lib/src/js_interop.dart",
"chars": 320,
"preview": "// Copyright 2024, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/_flutterfire_internals/pubspec.yaml",
"chars": 556,
"preview": "name: _flutterfire_internals\ndescription: A package hosting Dart code shared between FlutterFire plugins.\nhomepage: http"
},
{
"path": "packages/_flutterfire_internals/test/guard_test.dart",
"chars": 1957,
"preview": "// Copyright 2022, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/CHANGELOG.md",
"chars": 64603,
"preview": "## 6.1.3\n\n - **FIX**: resolve lint issues ([#18017](https://github.com/firebase/flutterfire/issues/18017)). ([e8e85397]("
},
{
"path": "packages/cloud_firestore/cloud_firestore/LICENSE",
"chars": 1528,
"preview": "Copyright 2017, the Chromium project authors. All rights reserved.\nRedistribution and use in source and binary forms, wi"
},
{
"path": "packages/cloud_firestore/cloud_firestore/README.md",
"chars": 1403,
"preview": "[<img src=\"https://raw.githubusercontent.com/firebase/flutterfire/main/.github/images/flutter_favorite.png\" width=\"200\" "
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/build.gradle",
"chars": 2078,
"preview": "group 'io.flutter.plugins.firebase.cloudfirestore'\nversion '1.0-SNAPSHOT'\n\napply plugin: 'com.android.library'\napply fro"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/local-config.gradle",
"chars": 141,
"preview": "ext {\n compileSdk=34\n minSdk=23\n targetSdk=34\n javaVersion = JavaVersion.toVersion(17)\n androidGradlePlug"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/settings.gradle",
"chars": 284,
"preview": "rootProject.name = 'cloud_firestore'\n\napply from: file(\"local-config.gradle\")\n\npluginManagement {\n plugins {\n "
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/AndroidManifest.xml",
"chars": 511,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package=\"io.flutter.plugins.firebase.firestore\">\n"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestoreException.java",
"chars": 8622,
"preview": "// Copyright 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licen"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestoreExtension.java",
"chars": 699,
"preview": "// Copyright 2023 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licen"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestoreMessageCodec.java",
"chars": 22700,
"preview": "// Copyright 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licen"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestorePlugin.java",
"chars": 40877,
"preview": "// Copyright 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licen"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestoreRegistrar.java",
"chars": 756,
"preview": "// Copyright 2019 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licen"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/FlutterFirebaseFirestoreTransactionResult.java",
"chars": 914,
"preview": "// Copyright 2020 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licen"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/GeneratedAndroidFirebaseFirestore.java",
"chars": 91807,
"preview": "// Copyright 2023, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/DocumentSnapshotsStreamHandler.java",
"chars": 3034,
"preview": "/*\n * Copyright 2022, the Chromium project authors. Please see the AUTHORS file\n * for details. All rights reserved. Us"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/LoadBundleStreamHandler.java",
"chars": 1619,
"preview": "/*\n * Copyright 2022, the Chromium project authors. Please see the AUTHORS file\n * for details. All rights reserved. Us"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/OnTransactionResultListener.java",
"chars": 693,
"preview": "/*\n * Copyright 2022, the Chromium project authors. Please see the AUTHORS file\n * for details. All rights reserved. Us"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/QuerySnapshotsStreamHandler.java",
"chars": 3899,
"preview": "/*\n * Copyright 2022, the Chromium project authors. Please see the AUTHORS file\n * for details. All rights reserved. Us"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/SnapshotsInSyncStreamHandler.java",
"chars": 1186,
"preview": "/*\n * Copyright 2022, the Chromium project authors. Please see the AUTHORS file\n * for details. All rights reserved. Us"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/TransactionStreamHandler.java",
"chars": 8332,
"preview": "/*\n * Copyright 2022, the Chromium project authors. Please see the AUTHORS file\n * for details. All rights reserved. Us"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/utils/ExceptionConverter.java",
"chars": 2421,
"preview": "/*\n * Copyright 2022, the Chromium project authors. Please see the AUTHORS file\n * for details. All rights reserved. Us"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/utils/PigeonParser.java",
"chars": 13930,
"preview": "/*\n * Copyright 2023, the Chromium project authors. Please see the AUTHORS file\n * for details. All rights reserved. Us"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/src/main/java/io/flutter/plugins/firebase/firestore/utils/ServerTimestampBehaviorConverter.java",
"chars": 987,
"preview": "/*\n * Copyright 2022, the Chromium project authors. Please see the AUTHORS file\n * for details. All rights reserved. Us"
},
{
"path": "packages/cloud_firestore/cloud_firestore/android/user-agent.gradle",
"chars": 828,
"preview": "import java.util.regex.Matcher\nimport java.util.regex.Pattern\n\nString libraryVersionName = \"UNKNOWN\"\nString libraryName "
},
{
"path": "packages/cloud_firestore/cloud_firestore/dartpad/dartpad_metadata.yaml",
"chars": 75,
"preview": "name: Cloud Firestore Example\nmode: flutter\nfiles:\n - name: lib/main.dart\n"
},
{
"path": "packages/cloud_firestore/cloud_firestore/dartpad/lib/main.dart",
"chars": 12241,
"preview": "// ignore_for_file: prefer_const_constructors_in_immutables,unnecessary_const,library_private_types_in_public_api,avoid_"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/.gitignore",
"chars": 420,
"preview": "# Logs\n*.log\nfirebase-debug.log*\n\n# Firebase cache\n.firebase/\n\n# Firebase config\n\n# Uncomment this if you'd like others "
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/.metadata",
"chars": 964,
"preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/README.md",
"chars": 182,
"preview": "# firestore_example\n\nDemonstrates how to use the firestore plugin.\n\n## Getting Started\n\nFor help getting started with Fl"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/analysis_options.yaml",
"chars": 327,
"preview": "# Copyright 2021 The Chromium Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style license"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/.gitignore",
"chars": 285,
"preview": "gradle-wrapper.jar\n/.gradle\n/captures/\n/gradlew\n/gradlew.bat\n/local.properties\nGeneratedPluginRegistrant.java\n\n# Remembe"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/app/build.gradle",
"chars": 2010,
"preview": "plugins {\n id \"com.android.application\"\n // START: FlutterFire Configuration\n id 'com.google.gms.google-service"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/app/google-services.json",
"chars": 19376,
"preview": "{\n \"project_info\": {\n \"project_number\": \"406099696497\",\n \"firebase_url\": \"https://flutterfire-e2e-tests-default-r"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/app/src/debug/AndroidManifest.xml",
"chars": 378,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <!-- The INTERNET permission is required for d"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/app/src/main/AndroidManifest.xml",
"chars": 2195,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <application\n android:label=\"example\"\n "
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/app/src/main/kotlin/io/flutter/plugins/firebase/firestore/example/MainActivity.kt",
"chars": 146,
"preview": "package io.flutter.plugins.firebase.firestore.example\n\nimport io.flutter.embedding.android.FlutterActivity\n\nclass MainAc"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/app/src/main/res/drawable/launch_background.xml",
"chars": 434,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Modify this file to customize your launch splash screen -->\n<layer-list xmln"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/app/src/main/res/drawable-v21/launch_background.xml",
"chars": 438,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Modify this file to customize your launch splash screen -->\n<layer-list xmln"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/app/src/main/res/values/styles.xml",
"chars": 996,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <!-- Theme applied to the Android Window while the process is sta"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/app/src/main/res/values-night/styles.xml",
"chars": 995,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <!-- Theme applied to the Android Window while the process is sta"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/app/src/profile/AndroidManifest.xml",
"chars": 378,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <!-- The INTERNET permission is required for d"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/build.gradle",
"chars": 322,
"preview": "allprojects {\n repositories {\n google()\n mavenCentral()\n }\n}\n\nrootProject.buildDir = \"../build\"\nsubp"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/gradle/wrapper/gradle-wrapper.properties",
"chars": 199,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dist"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/gradle.properties",
"chars": 143,
"preview": "org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError\nandroid.useAndroidX=true\nandroid.enableJetifier=true\nandroidGr"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/android/settings.gradle",
"chars": 898,
"preview": "pluginManagement {\n def flutterSdkPath = {\n def properties = new Properties()\n file(\"local.properties\")"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/firebase.json",
"chars": 191,
"preview": "{\"flutter\":{\"platforms\":{\"android\":{\"default\":{\"projectId\":\"flutterfire-e2e-tests\",\"appId\":\"1:406099696497:android:175ea"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/collection_reference_e2e.dart",
"chars": 6876,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/document_change_e2e.dart",
"chars": 7017,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/document_reference_e2e.dart",
"chars": 23448,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/e2e_test.dart",
"chars": 2124,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/field_value_e2e.dart",
"chars": 9326,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/firebase_options.dart",
"chars": 3655,
"preview": "// Copyright 2021 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licen"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/firebase_options_secondary.dart",
"chars": 2854,
"preview": "// Copyright 2022, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/geo_point_e2e.dart",
"chars": 1771,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/instance_e2e.dart",
"chars": 13191,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/load_bundle_e2e.dart",
"chars": 8440,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/query_e2e.dart",
"chars": 133018,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/second_database.dart",
"chars": 103544,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/settings_e2e.dart",
"chars": 2577,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/snapshot_metadata_e2e.dart",
"chars": 1535,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/timestamp_e2e.dart",
"chars": 2476,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/transaction_e2e.dart",
"chars": 17858,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/vector_value_e2e.dart",
"chars": 5410,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/web_snapshot_listeners.dart",
"chars": 5668,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/integration_test/write_batch_e2e.dart",
"chars": 5045,
"preview": "// Copyright 2020, the Chromium project authors. Please see the AUTHORS file\n// for details. All rights reserved. Use o"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/.gitignore",
"chars": 569,
"preview": "**/dgph\n*.mode1v3\n*.mode2v3\n*.moved-aside\n*.pbxuser\n*.perspectivev3\n**/*sync/\n.sconsign.dblite\n.tags*\n**/.vagrant/\n**/De"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Flutter/AppFrameworkInfo.plist",
"chars": 774,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Flutter/Debug.xcconfig",
"chars": 107,
"preview": "#include? \"Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig\"\n#include \"Generated.xcconfig\"\n"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Flutter/Release.xcconfig",
"chars": 109,
"preview": "#include? \"Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig\"\n#include \"Generated.xcconfig\"\n"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Podfile",
"chars": 2569,
"preview": "# Uncomment this line to define a global platform for your project\nplatform :ios, '15.0'\n\nrequire 'yaml'\n\npubspec = YAML"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Runner/AppDelegate.swift",
"chars": 391,
"preview": "import UIKit\nimport Flutter\n\n@main\n@objc class AppDelegate: FlutterAppDelegate {\n override func application(\n _ appl"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
"chars": 2519,
"preview": "{\n \"images\" : [\n {\n \"size\" : \"20x20\",\n \"idiom\" : \"iphone\",\n \"filename\" : \"Icon-App-20x20@2x.png\",\n "
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
"chars": 391,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"filename\" : \"LaunchImage.png\",\n \"scale\" : \"1x\"\n },\n "
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
"chars": 336,
"preview": "# Launch Screen Assets\n\nYou can customize the launch screen with your own desired assets by replacing the image files in"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Runner/Base.lproj/LaunchScreen.storyboard",
"chars": 2377,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Runner/Base.lproj/Main.storyboard",
"chars": 1605,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Runner/GoogleService-Info.plist",
"chars": 1387,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Runner/Info.plist",
"chars": 2269,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Runner/Runner-Bridging-Header.h",
"chars": 38,
"preview": "#import \"GeneratedPluginRegistrant.h\"\n"
},
{
"path": "packages/cloud_firestore/cloud_firestore/example/ios/Runner.xcodeproj/project.pbxproj",
"chars": 24954,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 54;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
}
]
// ... and 2712 more files (download for full content)
About this extraction
This page contains the full source code of the firebase/flutterfire GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2912 files (13.1 MB), approximately 3.6M tokens, and a symbol index with 7835 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.