diff --git a/.github/workflows/firestore_tests.yml b/.github/workflows/firestore_tests.yml
new file mode 100644
index 00000000..273b3e2b
--- /dev/null
+++ b/.github/workflows/firestore_tests.yml
@@ -0,0 +1,199 @@
+name: Run unit/integration/testlab
+
+on:
+ workflow_dispatch:
+ pull_request:
+ types: [opened, reopened, synchronize]
+ paths:
+ - "firestore/**"
+ push:
+ paths-ignore:
+ - "**.md"
+
+jobs:
+ unit_tests:
+ runs-on: ubuntu-latest
+ timeout-minutes: 5
+ steps:
+ - name: "checkout"
+ uses: actions/checkout@v2
+ - name: "install flutter"
+ uses: subosito/flutter-action@v2
+ - name: "Run widget tests"
+ working-directory: firestore
+ run: flutter test
+ test_lab:
+ runs-on: ubuntu-latest
+ timeout-minutes: 30
+ steps:
+ - uses: actions/checkout@v3
+ # FIXME need to build the app here
+ - name: "Test lab run"
+ id: ftl_test # removed - here
+ uses: FirebaseExtended/github-actions/firebase-test-lab@v1.2
+ with:
+ credentials_json: ${{ secrets.TEST_LAB }} # FIXME test this
+ test_type: "robo" # FIXME instrumentation better
+ testapp_dir: firestore/testapp
+ test_devices: model=redfin,version=30
+ - run: echo '${{ steps.ftl_test.outputs.test_summary }}'
+
+
+# firebase-ios-sdk .github/workflows/dynamiclinks.yml
+# See also .github/workflows/crashlytics.yml
+ # env:
+ # plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
+ # signin_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
+ # runs-on: macos-12
+ # steps:
+ # - uses: actions/checkout@v3
+ # - uses: ruby/setup-ruby@v1
+ # - name: Setup quickstart
+ # run: scripts/setup_quickstart.sh DynamicLinks
+ # - name: Install Secret GoogleService-Info.plist
+ # run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-dynamiclinks.plist.gpg \
+ # quickstart-ios/dynamiclinks/GoogleService-Info.plist "$plist_secret"
+ # - name: Update Environment Variable For DynamicLinks
+ # run: |
+ # sed -i '' 's#DYNAMIC_LINK_DOMAIN#https://qpf6m.app.goo.gl#' quickstart-ios/dynamiclinks/DynamicLinksExample/DynamicLinksExample.entitlements
+ # sed -i '' 's#YOUR_DOMAIN_URI_PREFIX";#https://qpf6m.app.goo.gl";#' quickstart-ios/dynamiclinks/DynamicLinksExample/ViewController.m
+ # sed -i '' 's#YOUR_DOMAIN_URI_PREFIX";#https://qpf6m.app.goo.gl";#' quickstart-ios/dynamiclinks/DynamicLinksExampleSwift/ViewController.swift
+ # # - name: Build objc quickstart
+ # # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh DynamicLinks)
+ # - name: Build swift quickstart
+ # if: ${{ always() }}
+ # run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh DynamicLinks swift)
+ # - id: ftl_test
+ # uses: FirebaseExtended/github-actions/firebase-test-lab@v1.2
+ # with:
+ # credentials_json: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS }}
+ # testapp_dir: quickstart-ios/build-for-testing
+ # test_type: "xctest"
+
+
+ # firebase-cpp-sdk
+ # test_android:
+ # name: test-android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}
+ # needs: [check_and_prepare, build_android]
+ # runs-on: macos-12
+ # if: contains(needs.check_and_prepare.outputs.matrix_platform, 'Android') && needs.check_and_prepare.outputs.apis != '' && !cancelled()
+ # strategy:
+ # fail-fast: false
+ # matrix:
+ # build_os: ${{ fromJson(needs.check_and_prepare.outputs.matrix_os) }}
+ # android_device: ${{ fromJson(needs.check_and_prepare.outputs.android_device) }}
+ # test_type: ["gameloop"]
+ # exclude:
+ # - android_device: "android_target"
+ # test_type: "uitest"
+ # - android_device: "android_latest"
+ # test_type: "uitest"
+ # steps:
+ # - uses: actions/checkout@v3
+ # with:
+ # ref: ${{needs.check_and_prepare.outputs.github_ref}}
+ # - name: Download Android integration tests artifact
+ # uses: actions/download-artifact@v3
+ # with:
+ # path: testapps/testapps-android-${{ matrix.build_os }}
+ # name: testapps-android-${{ matrix.build_os }}
+ # - name: Setup python
+ # uses: actions/setup-python@v4
+ # with:
+ # python-version: ${{ env.pythonVersion }}
+ # - name: Install prerequisites for testing
+ # uses: nick-invision/retry@v2
+ # with:
+ # shell: bash
+ # timeout_minutes: 5
+ # max_attempts: 3
+ # command: scripts/gha/install_test_workflow_prereqs.sh -p Android -t true
+ # - name: Get Device Info
+ # id: device-info
+ # run: |
+ # echo "device_type=$( python scripts/gha/print_matrix_configuration.py -k ${{ matrix.android_device }} -get_device_type)" >> $GITHUB_OUTPUT
+ # echo "device=$( python scripts/gha/print_matrix_configuration.py -k ${{ matrix.android_device }} -get_ftl_device)" >> $GITHUB_OUTPUT
+ # - name: Setup java 8 for test_simulator.py
+ # uses: actions/setup-java@v3
+ # with:
+ # distribution: 'temurin'
+ # java-version: '8'
+ # - name: Run Android integration tests on Emulator locally
+ # timeout-minutes: 150
+ # if: steps.device-info.outputs.device_type == 'virtual'
+ # run: |
+ # python scripts/gha/test_simulator.py --testapp_dir testapps \
+ # --test_type "${{ matrix.test_type }}" \
+ # --android_device "${{ matrix.android_device }}" \
+ # --logfile_name "android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}" \
+ # --ci
+ # - id: ftl_test
+ # if: steps.device-info.outputs.device_type == 'ftl'
+ # uses: FirebaseExtended/github-actions/firebase-test-lab@v1.2
+ # timeout-minutes: 90
+ # with:
+ # credentials_json: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS }}
+ # testapp_dir: testapps
+ # test_type: "game-loop"
+ # test_devices: ${{ steps.device-info.outputs.device }}
+ # max_attempts: 3
+ # validator: ${GITHUB_WORKSPACE}/scripts/gha/integration_testing/ftl_gha_validator.py
+ # - name: Read FTL Test Result
+ # if: ${{ steps.device-info.outputs.device_type == 'ftl' && !cancelled() }}
+ # shell: bash
+ # run: |
+ # python scripts/gha/read_ftl_test_result.py --test_result '${{ steps.ftl_test.outputs.test_summary }}' \
+ # --output_path testapps/test-results-android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}.log
+ # - name: Prepare results summary artifact
+ # if: ${{ !cancelled() }}
+ # shell: bash
+ # run: |
+ # # If testapps do not exist, then it's a build error not test error.
+ # if [ -d "testapps/testapps-android-${{ matrix.build_os }}" ] && [ ! -f "testapps/test-results-android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}.log.json" ]; then
+ # mkdir -p testapps && echo "__SUMMARY_MISSING__" > "testapps/test-results-android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}.log.json"
+ # fi
+ # - name: Upload Android test results artifact
+ # if: ${{ !cancelled() }}
+ # uses: actions/upload-artifact@v3
+ # with:
+ # name: log-artifact
+ # path: testapps/test-results-android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}*
+ # retention-days: ${{ env.artifactRetentionDays }}
+ # - name: Upload Android test video artifact
+ # if: ${{ steps.device-info.outputs.device_type == 'virtual' && !cancelled() }}
+ # uses: actions/upload-artifact@v3
+ # with:
+ # name: mobile-simulator-test-video-artifact
+ # path: testapps/video-*-android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}.mp4
+ # retention-days: ${{ env.artifactRetentionDays }}
+ # - name: Upload Android test logcat artifact
+ # if: ${{ steps.device-info.outputs.device_type == 'virtual' && !cancelled() }}
+ # uses: actions/upload-artifact@v3
+ # with:
+ # name: mobile-simulator-test-logcat-artifact
+ # path: testapps/logcat-*-android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}.txt
+ # retention-days: ${{ env.artifactRetentionDays }}
+ # - name: Download log artifacts
+ # if: ${{ needs.check_and_prepare.outputs.pr_number && failure() && !cancelled() }}
+ # uses: actions/download-artifact@v3
+ # with:
+ # path: test_results
+ # name: log-artifact
+ # - name: Update PR label and comment
+ # if: ${{ needs.check_and_prepare.outputs.pr_number && failure() && !cancelled() }}
+ # shell: bash
+ # run: |
+ # python scripts/gha/it_workflow.py --stage progress \
+ # --token ${{github.token}} \
+ # --issue_number ${{needs.check_and_prepare.outputs.pr_number}}\
+ # --actor ${{github.actor}} \
+ # --commit ${{needs.check_and_prepare.outputs.github_ref}} \
+ # --run_id ${{github.run_id}}
+ # - name: Summarize test results
+ # if: ${{ !cancelled() }}
+ # shell: bash
+ # run: |
+ # cat "testapps/test-results-android-${{ matrix.build_os }}-${{ matrix.android_device }}-${{ matrix.test_type }}.log"
+ # if [[ "${{ job.status }}" != "success" ]]; then
+ # exit 1
+ # fi
\ No newline at end of file
diff --git a/firestore/README.md b/firestore/README.md
index 6edf0fd0..a4772ac3 100644
--- a/firestore/README.md
+++ b/firestore/README.md
@@ -48,6 +48,11 @@ service cloud.firestore {
**Add Some** from the overflow menu to add some
new entries.
+### Run the App Web
+
+In order to display images without a CORS exception, use the --web-renderer html flag:
+`flutter run -d chrome --web-renderer html`
+
### Result
diff --git a/firestore/android/app/build.gradle b/firestore/android/app/build.gradle
index 7715865e..ded18ffb 100644
--- a/firestore/android/app/build.gradle
+++ b/firestore/android/app/build.gradle
@@ -22,6 +22,9 @@ if (flutterVersionName == null) {
}
apply plugin: 'com.android.application'
+// START: FlutterFire Configuration
+apply plugin: 'com.google.gms.google-services'
+// END: FlutterFire Configuration
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
diff --git a/firestore/android/app/google-services.json b/firestore/android/app/google-services.json
new file mode 100644
index 00000000..0b7783c5
--- /dev/null
+++ b/firestore/android/app/google-services.json
@@ -0,0 +1,46 @@
+{
+ "project_info": {
+ "project_number": "905001072058",
+ "project_id": "ctflutterquickstart",
+ "storage_bucket": "ctflutterquickstart.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:905001072058:android:6b4d615e68771837801983",
+ "android_client_info": {
+ "package_name": "com.example.firestore"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "905001072058-o40uoh0mn4staje7e49gudg3rl8b1723.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBeYHWDZI-VYzraflj-GJ9Yj-5vKdqd1uE"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "905001072058-o40uoh0mn4staje7e49gudg3rl8b1723.apps.googleusercontent.com",
+ "client_type": 3
+ },
+ {
+ "client_id": "905001072058-58k5uvhubqhj8loen93npuv833qqnte5.apps.googleusercontent.com",
+ "client_type": 2,
+ "ios_info": {
+ "bundle_id": "com.example.firestore"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/firestore/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java b/firestore/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java
new file mode 100644
index 00000000..752fc185
--- /dev/null
+++ b/firestore/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java
@@ -0,0 +1,25 @@
+// Generated file.
+//
+// If you wish to remove Flutter's multidex support, delete this entire file.
+//
+// Modifications to this file should be done in a copy under a different name
+// as this file may be regenerated.
+
+package io.flutter.app;
+
+import android.app.Application;
+import android.content.Context;
+import androidx.annotation.CallSuper;
+import androidx.multidex.MultiDex;
+
+/**
+ * Extension of {@link android.app.Application}, adding multidex support.
+ */
+public class FlutterMultiDexApplication extends Application {
+ @Override
+ @CallSuper
+ protected void attachBaseContext(Context base) {
+ super.attachBaseContext(base);
+ MultiDex.install(this);
+ }
+}
diff --git a/firestore/android/build.gradle b/firestore/android/build.gradle
index 4256f917..56cce25e 100644
--- a/firestore/android/build.gradle
+++ b/firestore/android/build.gradle
@@ -6,7 +6,10 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:4.1.0'
+ classpath 'com.android.tools.build:gradle:7.4.1'
+ // START: FlutterFire Configuration
+ classpath 'com.google.gms:google-services:4.3.14'
+ // END: FlutterFire Configuration
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
@@ -26,6 +29,6 @@ subprojects {
project.evaluationDependsOn(':app')
}
-task clean(type: Delete) {
+tasks.register("clean", Delete) {
delete rootProject.buildDir
}
diff --git a/firestore/android/gradle/wrapper/gradle-wrapper.properties b/firestore/android/gradle/wrapper/gradle-wrapper.properties
index bc6a58af..6b665338 100644
--- a/firestore/android/gradle/wrapper/gradle-wrapper.properties
+++ b/firestore/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
diff --git a/firestore/lib/firebase_options.dart b/firestore/lib/firebase_options.dart
index 42cd91ad..10e649c9 100644
--- a/firestore/lib/firebase_options.dart
+++ b/firestore/lib/firebase_options.dart
@@ -35,21 +35,20 @@ class DefaultFirebaseOptions {
}
static const FirebaseOptions web = FirebaseOptions(
- apiKey: 'AIzaSyAfj_GOB5yKD6lPaVS9hSskKITPuquzpZQ',
- appId: '1:993083111617:web:380d3567efd5f99a67bc40',
- messagingSenderId: '993083111617',
- projectId: 'friendlyeats-flutter-68d79',
- authDomain: 'friendlyeats-flutter-68d79.firebaseapp.com',
- storageBucket: 'friendlyeats-flutter-68d79.appspot.com',
- measurementId: 'G-FSYS2SH1N4',
+ apiKey: 'AIzaSyC8VCwBMvvfKAqnXC5vxBvgEmEISz1N5XA',
+ appId: '1:905001072058:web:e25193a00a843ca7801983',
+ messagingSenderId: '905001072058',
+ projectId: 'ctflutterquickstart',
+ authDomain: 'ctflutterquickstart.firebaseapp.com',
+ storageBucket: 'ctflutterquickstart.appspot.com',
);
static const FirebaseOptions android = FirebaseOptions(
- apiKey: 'AIzaSyAiC9yhzOEeMcP6dIuKEZCfOdknTzNtYGM',
- appId: '1:993083111617:android:a1aded9943e3dd0367bc40',
- messagingSenderId: '993083111617',
- projectId: 'friendlyeats-flutter-68d79',
- storageBucket: 'friendlyeats-flutter-68d79.appspot.com',
+ apiKey: 'AIzaSyBeYHWDZI-VYzraflj-GJ9Yj-5vKdqd1uE',
+ appId: '1:905001072058:android:6b4d615e68771837801983',
+ messagingSenderId: '905001072058',
+ projectId: 'ctflutterquickstart',
+ storageBucket: 'ctflutterquickstart.appspot.com',
);
static const FirebaseOptions ios = FirebaseOptions(
@@ -58,7 +57,8 @@ class DefaultFirebaseOptions {
messagingSenderId: '993083111617',
projectId: 'friendlyeats-flutter-68d79',
storageBucket: 'friendlyeats-flutter-68d79.appspot.com',
- iosClientId: '993083111617-a9q0thbihk8tl0487gfem1hm1ahaieab.apps.googleusercontent.com',
+ iosClientId:
+ '993083111617-a9q0thbihk8tl0487gfem1hm1ahaieab.apps.googleusercontent.com',
iosBundleId: 'friendlyeats.example.app',
);
@@ -68,7 +68,8 @@ class DefaultFirebaseOptions {
messagingSenderId: '993083111617',
projectId: 'friendlyeats-flutter-68d79',
storageBucket: 'friendlyeats-flutter-68d79.appspot.com',
- iosClientId: '993083111617-lh0dmnumalopnegi244kmfm2o0brl7dg.apps.googleusercontent.com',
+ iosClientId:
+ '993083111617-lh0dmnumalopnegi244kmfm2o0brl7dg.apps.googleusercontent.com',
iosBundleId: 'friendlyears.example.app',
);
}
diff --git a/firestore/lib/src/data/restaurant_provider.dart b/firestore/lib/src/data/restaurant_provider.dart
index 9fc0f8d0..ad7ac3b3 100644
--- a/firestore/lib/src/data/restaurant_provider.dart
+++ b/firestore/lib/src/data/restaurant_provider.dart
@@ -18,7 +18,7 @@ import 'dart:async';
import 'package:cloud_firestore/cloud_firestore.dart';
-import '../model/filter.dart';
+import '../model/filter.dart' as modelFilter;
import '../model/restaurant.dart';
import '../model/review.dart';
@@ -29,7 +29,7 @@ abstract class RestaurantProvider {
{required String restaurantId, required Review review});
void addRestaurantsBatch(List restaurants);
void loadAllRestaurants();
- void loadFilteredRestaurants(Filter filter);
+ void loadFilteredRestaurants(modelFilter.Filter filter);
Future getRestaurantById(String restaurantId);
void dispose();
}
@@ -116,7 +116,7 @@ class FirestoreRestaurantProvider implements RestaurantProvider {
}
@override
- void loadFilteredRestaurants(Filter filter) {
+ void loadFilteredRestaurants(modelFilter.Filter filter) {
Query collection = FirebaseFirestore.instance.collection('restaurants');
if (filter.category != null) {
collection = collection.where('category', isEqualTo: filter.category);
diff --git a/firestore/pubspec.lock b/firestore/pubspec.lock
index ed78b8f5..c47480e9 100644
--- a/firestore/pubspec.lock
+++ b/firestore/pubspec.lock
@@ -5,10 +5,10 @@ packages:
dependency: transitive
description:
name: _flutterfire_internals
- sha256: "2f428053492f92303e42c9afa8e3a78ad1886760e7b594e2b5a6b6ee47376360"
+ sha256: "1a5e13736d59235ce0139621b4bbe29bc89839e202409081bc667eb3cd20674c"
url: "https://pub.dev"
source: hosted
- version: "1.0.2"
+ version: "1.3.5"
async:
dependency: transitive
description:
@@ -45,26 +45,26 @@ packages:
dependency: "direct main"
description:
name: cloud_firestore
- sha256: "9194bf1845ee073bea64ec94e72c9dcf5d15f755e96496d8ccfee9def38b666f"
+ sha256: "0ff0baec167e308df192398dbd81ec13c1799635885c6aa6ed9ab8b5ed61f52c"
url: "https://pub.dev"
source: hosted
- version: "3.5.1"
+ version: "4.9.1"
cloud_firestore_platform_interface:
dependency: transitive
description:
name: cloud_firestore_platform_interface
- sha256: d023142c18c28b2610c23c196e829c96976569cc2aa2f8e45328ae8a64c428d1
+ sha256: "5749b81aea93afdce220e02d34369162010d210011054ac494b2c38c4e9ebeb7"
url: "https://pub.dev"
source: hosted
- version: "5.7.7"
+ version: "5.16.0"
cloud_firestore_web:
dependency: transitive
description:
name: cloud_firestore_web
- sha256: "3d7d4fa8c1dc5a1f7cb33985ae0ab9924d33d76d4959fe26aed84b7d282887e3"
+ sha256: fef99ad0599e983092adb1bb01f14a596dba601a7a8efaaffd7b2721d64e2c51
url: "https://pub.dev"
source: hosted
- version: "2.8.10"
+ version: "3.7.0"
collection:
dependency: transitive
description:
@@ -93,34 +93,34 @@ packages:
dependency: "direct main"
description:
name: firebase_auth
- sha256: ca3034d35d6ca894487ec80aa1162a135fef7c5d0abef8154789cbeea3a6deaf
+ sha256: "6d9be853426ab686d68076b8007ac29b2c31e7d549444a45b5c3fe1abc249fb0"
url: "https://pub.dev"
source: hosted
- version: "3.11.2"
+ version: "4.9.0"
firebase_auth_platform_interface:
dependency: transitive
description:
name: firebase_auth_platform_interface
- sha256: ab20ecbc411726e139250a49fa03fe1ae0105fd990c5330b2a148ec08dfb140b
+ sha256: "2946cfdc17f925fa9771dd0ba3ce9dd2d019100a8685d0557c161f7786ea9b14"
url: "https://pub.dev"
source: hosted
- version: "6.10.1"
+ version: "6.18.0"
firebase_auth_web:
dependency: transitive
description:
name: firebase_auth_web
- sha256: bbe4f4fffcc378ca05c3d8ff33853be86dd27d0fafc85a953acaf5190531b6f9
+ sha256: d8972d754702a3f4881184706b8056e2837d0dae91613a43b988c960b8e0d988
url: "https://pub.dev"
source: hosted
- version: "4.6.1"
+ version: "5.8.0"
firebase_core:
dependency: "direct main"
description:
name: firebase_core
- sha256: "4f1d7c13a909e82ff026679c9b8493cdeb35a9c76bc46c42bf9e2240c9e57e80"
+ sha256: c78132175edda4bc532a71e01a32964e4b4fcf53de7853a422d96dac3725f389
url: "https://pub.dev"
source: hosted
- version: "1.24.0"
+ version: "2.15.1"
firebase_core_platform_interface:
dependency: transitive
description:
@@ -133,10 +133,10 @@ packages:
dependency: transitive
description:
name: firebase_core_web
- sha256: "839f1b48032a61962792cea1225fae030d4f27163867f181d6d2072dd40acbee"
+ sha256: "4cf4d2161530332ddc3c562f19823fb897ff37a9a774090d28df99f47370e973"
url: "https://pub.dev"
source: hosted
- version: "1.7.3"
+ version: "2.7.0"
flutter:
dependency: "direct main"
description: flutter
@@ -160,14 +160,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.0.2"
- intl:
- dependency: transitive
- description:
- name: intl
- sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91"
- url: "https://pub.dev"
- source: hosted
- version: "0.17.0"
js:
dependency: transitive
description:
diff --git a/firestore/pubspec.yaml b/firestore/pubspec.yaml
index 89f32d45..59290665 100644
--- a/firestore/pubspec.yaml
+++ b/firestore/pubspec.yaml
@@ -11,9 +11,9 @@ dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
- firebase_core: ^1.15.0
- firebase_auth: ^3.3.15
- cloud_firestore: ^3.1.13
+ firebase_core: ^2.15.1
+ firebase_auth: ^4.9.0
+ cloud_firestore: ^4.9.1
dev_dependencies:
pedantic: ^1.9.0
diff --git a/firestore/test/widget_test.dart b/firestore/test/widget_test.dart
index e69de29b..0056c6c6 100644
--- a/firestore/test/widget_test.dart
+++ b/firestore/test/widget_test.dart
@@ -0,0 +1,8 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+void main() {
+ testWidgets('Test fails', (WidgetTester tester) async {
+ // autopass
+ });
+}
diff --git a/firestore/testapp/app-release.apk b/firestore/testapp/app-release.apk
new file mode 100644
index 00000000..0d01121d
Binary files /dev/null and b/firestore/testapp/app-release.apk differ
diff --git a/firestore/windows/flutter/generated_plugin_registrant.cc b/firestore/windows/flutter/generated_plugin_registrant.cc
index 8b6d4680..1a82e7d0 100644
--- a/firestore/windows/flutter/generated_plugin_registrant.cc
+++ b/firestore/windows/flutter/generated_plugin_registrant.cc
@@ -6,6 +6,9 @@
#include "generated_plugin_registrant.h"
+#include
void RegisterPlugins(flutter::PluginRegistry* registry) {
+ FirebaseCorePluginCApiRegisterWithRegistrar(
+ registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
}
diff --git a/firestore/windows/flutter/generated_plugins.cmake b/firestore/windows/flutter/generated_plugins.cmake
index b93c4c30..fa8a39ba 100644
--- a/firestore/windows/flutter/generated_plugins.cmake
+++ b/firestore/windows/flutter/generated_plugins.cmake
@@ -3,6 +3,7 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
+ firebase_core
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST