From 198ccb3472cc52eef1aa88592760b5db9a3c2eb4 Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Wed, 27 Aug 2025 13:56:15 +1000 Subject: [PATCH 1/7] Update `firebase-get-to-know-flutter` --- .../ios/Runner.xcodeproj/project.pbxproj | 134 +++++++++--------- .../macos/Runner.xcodeproj/project.pbxproj | 76 +++++----- .../step_02/pubspec.yaml | 2 +- .../ios/Runner.xcodeproj/project.pbxproj | 134 +++++++++--------- .../macos/Runner.xcodeproj/project.pbxproj | 76 +++++----- .../step_04/pubspec.yaml | 4 +- .../ios/Runner.xcodeproj/project.pbxproj | 134 +++++++++--------- .../macos/Runner.xcodeproj/project.pbxproj | 76 +++++----- .../step_05/pubspec.yaml | 4 +- .../ios/Runner.xcodeproj/project.pbxproj | 134 +++++++++--------- .../macos/Runner.xcodeproj/project.pbxproj | 76 +++++----- .../step_06/pubspec.yaml | 4 +- .../ios/Runner.xcodeproj/project.pbxproj | 134 +++++++++--------- .../macos/Runner.xcodeproj/project.pbxproj | 76 +++++----- .../step_07/pubspec.yaml | 4 +- .../ios/Runner.xcodeproj/project.pbxproj | 134 +++++++++--------- .../macos/Runner.xcodeproj/project.pbxproj | 76 +++++----- .../step_09/pubspec.yaml | 4 +- 18 files changed, 641 insertions(+), 641 deletions(-) diff --git a/firebase-get-to-know-flutter/step_02/ios/Runner.xcodeproj/project.pbxproj b/firebase-get-to-know-flutter/step_02/ios/Runner.xcodeproj/project.pbxproj index 1c8af2a288..55d0ae8462 100644 --- a/firebase-get-to-know-flutter/step_02/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-get-to-know-flutter/step_02/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ - 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 2B027299A23D7BF1C4EFC6DF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */; }; + AA6CFCEA4448F4CB0A3A9FFA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,12 +44,12 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - 3074BD6EA1476781038F859F /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3A7722B896AF171FD56C440D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -60,19 +60,19 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AC5032432E6ADD68772BCA07 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - C8B24E84FC200EA381489361 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + ABF5BECD0D1DF9237DD53384 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + BF5E80A0810A59156F92FC67 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 896D3A1B7C4F5545470D30A4 /* Frameworks */ = { + 94281A890070D366A37A816C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */, + 2B027299A23D7BF1C4EFC6DF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */, + AA6CFCEA4448F4CB0A3A9FFA /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 79EEF8D08A8312EF51875428 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */, - F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - C7145ABD4CE8720655CB1CDE /* Pods */, - 79EEF8D08A8312EF51875428 /* Frameworks */, + D39E3B5FEA869186EE71FC1C /* Pods */, + C7E151332A9FC9A1410B35AD /* Frameworks */, ); sourceTree = ""; }; @@ -151,15 +142,24 @@ path = Runner; sourceTree = ""; }; - C7145ABD4CE8720655CB1CDE /* Pods */ = { + C7E151332A9FC9A1410B35AD /* Frameworks */ = { + isa = PBXGroup; + children = ( + C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */, + 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + D39E3B5FEA869186EE71FC1C /* Pods */ = { isa = PBXGroup; children = ( - AC5032432E6ADD68772BCA07 /* Pods-Runner.debug.xcconfig */, - 3074BD6EA1476781038F859F /* Pods-Runner.release.xcconfig */, - C8B24E84FC200EA381489361 /* Pods-Runner.profile.xcconfig */, - 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */, - C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */, - C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */, + BF5E80A0810A59156F92FC67 /* Pods-Runner.debug.xcconfig */, + 3A7722B896AF171FD56C440D /* Pods-Runner.release.xcconfig */, + ABF5BECD0D1DF9237DD53384 /* Pods-Runner.profile.xcconfig */, + EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */, + 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */, + C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */, + 5F482629E11201B5FBC8DA9A /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 896D3A1B7C4F5545470D30A4 /* Frameworks */, + 94281A890070D366A37A816C /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */, + 83A9373CAA1DA92E535F199B /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */, + D4E32CB60C2AC46BB61523C2 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,28 +270,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -308,24 +286,29 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */ = { + 5F482629E11201B5FBC8DA9A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */ = { + 83A9373CAA1DA92E535F199B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -340,7 +323,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -362,6 +345,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + D4E32CB60C2AC46BB61523C2 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -488,7 +488,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -507,7 +507,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -524,7 +524,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; diff --git a/firebase-get-to-know-flutter/step_02/macos/Runner.xcodeproj/project.pbxproj b/firebase-get-to-know-flutter/step_02/macos/Runner.xcodeproj/project.pbxproj index 59937692e7..c6a54e8413 100644 --- a/firebase-get-to-know-flutter/step_02/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-get-to-know-flutter/step_02/macos/Runner.xcodeproj/project.pbxproj @@ -27,8 +27,8 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */; }; - ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */; }; + 5EF32C325609B4458B3961A2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */; }; + B1AD4604D3BF6597F003DB23 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2047370DB6C77BDA2191181D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; @@ -79,15 +79,15 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 74D857ADB9D4AED45297B536 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 561B05C50FC0102FE48024ED /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 938D32545318679DA3807335 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - ED3045A038F9B6FA302121D9 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - F3B2EAA66CDB29EBDDAEACFF /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */, + B1AD4604D3BF6597F003DB23 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */, + 5EF32C325609B4458B3961A2 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 11A71C9A618FF7C1AD40A9A6 /* Pods */ = { + isa = PBXGroup; + children = ( + 938D32545318679DA3807335 /* Pods-Runner.debug.xcconfig */, + 2047370DB6C77BDA2191181D /* Pods-Runner.release.xcconfig */, + 561B05C50FC0102FE48024ED /* Pods-Runner.profile.xcconfig */, + AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */, + 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */, + DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 779340C43E8641722E4AC30F /* Pods */, + 11A71C9A618FF7C1AD40A9A6 /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 779340C43E8641722E4AC30F /* Pods */ = { - isa = PBXGroup; - children = ( - ED3045A038F9B6FA302121D9 /* Pods-Runner.debug.xcconfig */, - 74D857ADB9D4AED45297B536 /* Pods-Runner.release.xcconfig */, - F3B2EAA66CDB29EBDDAEACFF /* Pods-Runner.profile.xcconfig */, - EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */, - D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */, - D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */, - D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */, + 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */, + 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 058D4328BC92A9DE474B0A71 /* [CP] Check Pods Manifest.lock */, + 2A7011B290D4077430AE7B2A /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -234,13 +234,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */, + 840BE06649B3E3914C1EFE28 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */, + 4091FC9023CE4570367C1809 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,7 +323,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 058D4328BC92A9DE474B0A71 /* [CP] Check Pods Manifest.lock */ = { + 2A7011B290D4077430AE7B2A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -383,7 +383,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */ = { + 4091FC9023CE4570367C1809 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */ = { + 840BE06649B3E3914C1EFE28 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; diff --git a/firebase-get-to-know-flutter/step_02/pubspec.yaml b/firebase-get-to-know-flutter/step_02/pubspec.yaml index 874d2485e3..de451a61cb 100644 --- a/firebase-get-to-know-flutter/step_02/pubspec.yaml +++ b/firebase-get-to-know-flutter/step_02/pubspec.yaml @@ -36,7 +36,7 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 google_fonts: ^6.3.0 - go_router: ^16.1.0 + go_router: ^16.2.0 dev_dependencies: flutter_test: diff --git a/firebase-get-to-know-flutter/step_04/ios/Runner.xcodeproj/project.pbxproj b/firebase-get-to-know-flutter/step_04/ios/Runner.xcodeproj/project.pbxproj index 1c8af2a288..55d0ae8462 100644 --- a/firebase-get-to-know-flutter/step_04/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-get-to-know-flutter/step_04/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ - 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 2B027299A23D7BF1C4EFC6DF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */; }; + AA6CFCEA4448F4CB0A3A9FFA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,12 +44,12 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - 3074BD6EA1476781038F859F /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3A7722B896AF171FD56C440D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -60,19 +60,19 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AC5032432E6ADD68772BCA07 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - C8B24E84FC200EA381489361 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + ABF5BECD0D1DF9237DD53384 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + BF5E80A0810A59156F92FC67 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 896D3A1B7C4F5545470D30A4 /* Frameworks */ = { + 94281A890070D366A37A816C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */, + 2B027299A23D7BF1C4EFC6DF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */, + AA6CFCEA4448F4CB0A3A9FFA /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 79EEF8D08A8312EF51875428 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */, - F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - C7145ABD4CE8720655CB1CDE /* Pods */, - 79EEF8D08A8312EF51875428 /* Frameworks */, + D39E3B5FEA869186EE71FC1C /* Pods */, + C7E151332A9FC9A1410B35AD /* Frameworks */, ); sourceTree = ""; }; @@ -151,15 +142,24 @@ path = Runner; sourceTree = ""; }; - C7145ABD4CE8720655CB1CDE /* Pods */ = { + C7E151332A9FC9A1410B35AD /* Frameworks */ = { + isa = PBXGroup; + children = ( + C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */, + 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + D39E3B5FEA869186EE71FC1C /* Pods */ = { isa = PBXGroup; children = ( - AC5032432E6ADD68772BCA07 /* Pods-Runner.debug.xcconfig */, - 3074BD6EA1476781038F859F /* Pods-Runner.release.xcconfig */, - C8B24E84FC200EA381489361 /* Pods-Runner.profile.xcconfig */, - 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */, - C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */, - C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */, + BF5E80A0810A59156F92FC67 /* Pods-Runner.debug.xcconfig */, + 3A7722B896AF171FD56C440D /* Pods-Runner.release.xcconfig */, + ABF5BECD0D1DF9237DD53384 /* Pods-Runner.profile.xcconfig */, + EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */, + 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */, + C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */, + 5F482629E11201B5FBC8DA9A /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 896D3A1B7C4F5545470D30A4 /* Frameworks */, + 94281A890070D366A37A816C /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */, + 83A9373CAA1DA92E535F199B /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */, + D4E32CB60C2AC46BB61523C2 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,28 +270,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -308,24 +286,29 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */ = { + 5F482629E11201B5FBC8DA9A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */ = { + 83A9373CAA1DA92E535F199B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -340,7 +323,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -362,6 +345,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + D4E32CB60C2AC46BB61523C2 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -488,7 +488,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -507,7 +507,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -524,7 +524,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; diff --git a/firebase-get-to-know-flutter/step_04/macos/Runner.xcodeproj/project.pbxproj b/firebase-get-to-know-flutter/step_04/macos/Runner.xcodeproj/project.pbxproj index 59937692e7..c6a54e8413 100644 --- a/firebase-get-to-know-flutter/step_04/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-get-to-know-flutter/step_04/macos/Runner.xcodeproj/project.pbxproj @@ -27,8 +27,8 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */; }; - ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */; }; + 5EF32C325609B4458B3961A2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */; }; + B1AD4604D3BF6597F003DB23 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2047370DB6C77BDA2191181D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; @@ -79,15 +79,15 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 74D857ADB9D4AED45297B536 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 561B05C50FC0102FE48024ED /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 938D32545318679DA3807335 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - ED3045A038F9B6FA302121D9 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - F3B2EAA66CDB29EBDDAEACFF /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */, + B1AD4604D3BF6597F003DB23 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */, + 5EF32C325609B4458B3961A2 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 11A71C9A618FF7C1AD40A9A6 /* Pods */ = { + isa = PBXGroup; + children = ( + 938D32545318679DA3807335 /* Pods-Runner.debug.xcconfig */, + 2047370DB6C77BDA2191181D /* Pods-Runner.release.xcconfig */, + 561B05C50FC0102FE48024ED /* Pods-Runner.profile.xcconfig */, + AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */, + 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */, + DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 779340C43E8641722E4AC30F /* Pods */, + 11A71C9A618FF7C1AD40A9A6 /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 779340C43E8641722E4AC30F /* Pods */ = { - isa = PBXGroup; - children = ( - ED3045A038F9B6FA302121D9 /* Pods-Runner.debug.xcconfig */, - 74D857ADB9D4AED45297B536 /* Pods-Runner.release.xcconfig */, - F3B2EAA66CDB29EBDDAEACFF /* Pods-Runner.profile.xcconfig */, - EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */, - D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */, - D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */, - D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */, + 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */, + 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 058D4328BC92A9DE474B0A71 /* [CP] Check Pods Manifest.lock */, + 2A7011B290D4077430AE7B2A /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -234,13 +234,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */, + 840BE06649B3E3914C1EFE28 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */, + 4091FC9023CE4570367C1809 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,7 +323,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 058D4328BC92A9DE474B0A71 /* [CP] Check Pods Manifest.lock */ = { + 2A7011B290D4077430AE7B2A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -383,7 +383,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */ = { + 4091FC9023CE4570367C1809 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */ = { + 840BE06649B3E3914C1EFE28 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; diff --git a/firebase-get-to-know-flutter/step_04/pubspec.yaml b/firebase-get-to-know-flutter/step_04/pubspec.yaml index 5b877247ac..5b72e1e7d6 100644 --- a/firebase-get-to-know-flutter/step_04/pubspec.yaml +++ b/firebase-get-to-know-flutter/step_04/pubspec.yaml @@ -36,11 +36,11 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 google_fonts: ^6.3.0 - go_router: ^16.1.0 + go_router: ^16.2.0 cloud_firestore: ^6.0.0 firebase_auth: ^6.0.1 firebase_core: ^4.0.0 - provider: ^6.1.5 + provider: ^6.1.5+1 firebase_ui_auth: ^3.0.0 dev_dependencies: diff --git a/firebase-get-to-know-flutter/step_05/ios/Runner.xcodeproj/project.pbxproj b/firebase-get-to-know-flutter/step_05/ios/Runner.xcodeproj/project.pbxproj index 1c8af2a288..55d0ae8462 100644 --- a/firebase-get-to-know-flutter/step_05/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-get-to-know-flutter/step_05/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ - 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 2B027299A23D7BF1C4EFC6DF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */; }; + AA6CFCEA4448F4CB0A3A9FFA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,12 +44,12 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - 3074BD6EA1476781038F859F /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3A7722B896AF171FD56C440D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -60,19 +60,19 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AC5032432E6ADD68772BCA07 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - C8B24E84FC200EA381489361 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + ABF5BECD0D1DF9237DD53384 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + BF5E80A0810A59156F92FC67 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 896D3A1B7C4F5545470D30A4 /* Frameworks */ = { + 94281A890070D366A37A816C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */, + 2B027299A23D7BF1C4EFC6DF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */, + AA6CFCEA4448F4CB0A3A9FFA /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 79EEF8D08A8312EF51875428 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */, - F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - C7145ABD4CE8720655CB1CDE /* Pods */, - 79EEF8D08A8312EF51875428 /* Frameworks */, + D39E3B5FEA869186EE71FC1C /* Pods */, + C7E151332A9FC9A1410B35AD /* Frameworks */, ); sourceTree = ""; }; @@ -151,15 +142,24 @@ path = Runner; sourceTree = ""; }; - C7145ABD4CE8720655CB1CDE /* Pods */ = { + C7E151332A9FC9A1410B35AD /* Frameworks */ = { + isa = PBXGroup; + children = ( + C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */, + 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + D39E3B5FEA869186EE71FC1C /* Pods */ = { isa = PBXGroup; children = ( - AC5032432E6ADD68772BCA07 /* Pods-Runner.debug.xcconfig */, - 3074BD6EA1476781038F859F /* Pods-Runner.release.xcconfig */, - C8B24E84FC200EA381489361 /* Pods-Runner.profile.xcconfig */, - 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */, - C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */, - C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */, + BF5E80A0810A59156F92FC67 /* Pods-Runner.debug.xcconfig */, + 3A7722B896AF171FD56C440D /* Pods-Runner.release.xcconfig */, + ABF5BECD0D1DF9237DD53384 /* Pods-Runner.profile.xcconfig */, + EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */, + 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */, + C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */, + 5F482629E11201B5FBC8DA9A /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 896D3A1B7C4F5545470D30A4 /* Frameworks */, + 94281A890070D366A37A816C /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */, + 83A9373CAA1DA92E535F199B /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */, + D4E32CB60C2AC46BB61523C2 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,28 +270,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -308,24 +286,29 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */ = { + 5F482629E11201B5FBC8DA9A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */ = { + 83A9373CAA1DA92E535F199B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -340,7 +323,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -362,6 +345,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + D4E32CB60C2AC46BB61523C2 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -488,7 +488,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -507,7 +507,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -524,7 +524,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; diff --git a/firebase-get-to-know-flutter/step_05/macos/Runner.xcodeproj/project.pbxproj b/firebase-get-to-know-flutter/step_05/macos/Runner.xcodeproj/project.pbxproj index 59937692e7..c6a54e8413 100644 --- a/firebase-get-to-know-flutter/step_05/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-get-to-know-flutter/step_05/macos/Runner.xcodeproj/project.pbxproj @@ -27,8 +27,8 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */; }; - ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */; }; + 5EF32C325609B4458B3961A2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */; }; + B1AD4604D3BF6597F003DB23 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2047370DB6C77BDA2191181D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; @@ -79,15 +79,15 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 74D857ADB9D4AED45297B536 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 561B05C50FC0102FE48024ED /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 938D32545318679DA3807335 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - ED3045A038F9B6FA302121D9 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - F3B2EAA66CDB29EBDDAEACFF /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */, + B1AD4604D3BF6597F003DB23 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */, + 5EF32C325609B4458B3961A2 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 11A71C9A618FF7C1AD40A9A6 /* Pods */ = { + isa = PBXGroup; + children = ( + 938D32545318679DA3807335 /* Pods-Runner.debug.xcconfig */, + 2047370DB6C77BDA2191181D /* Pods-Runner.release.xcconfig */, + 561B05C50FC0102FE48024ED /* Pods-Runner.profile.xcconfig */, + AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */, + 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */, + DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 779340C43E8641722E4AC30F /* Pods */, + 11A71C9A618FF7C1AD40A9A6 /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 779340C43E8641722E4AC30F /* Pods */ = { - isa = PBXGroup; - children = ( - ED3045A038F9B6FA302121D9 /* Pods-Runner.debug.xcconfig */, - 74D857ADB9D4AED45297B536 /* Pods-Runner.release.xcconfig */, - F3B2EAA66CDB29EBDDAEACFF /* Pods-Runner.profile.xcconfig */, - EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */, - D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */, - D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */, - D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */, + 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */, + 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 058D4328BC92A9DE474B0A71 /* [CP] Check Pods Manifest.lock */, + 2A7011B290D4077430AE7B2A /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -234,13 +234,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */, + 840BE06649B3E3914C1EFE28 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */, + 4091FC9023CE4570367C1809 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,7 +323,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 058D4328BC92A9DE474B0A71 /* [CP] Check Pods Manifest.lock */ = { + 2A7011B290D4077430AE7B2A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -383,7 +383,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */ = { + 4091FC9023CE4570367C1809 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */ = { + 840BE06649B3E3914C1EFE28 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; diff --git a/firebase-get-to-know-flutter/step_05/pubspec.yaml b/firebase-get-to-know-flutter/step_05/pubspec.yaml index 5b877247ac..5b72e1e7d6 100644 --- a/firebase-get-to-know-flutter/step_05/pubspec.yaml +++ b/firebase-get-to-know-flutter/step_05/pubspec.yaml @@ -36,11 +36,11 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 google_fonts: ^6.3.0 - go_router: ^16.1.0 + go_router: ^16.2.0 cloud_firestore: ^6.0.0 firebase_auth: ^6.0.1 firebase_core: ^4.0.0 - provider: ^6.1.5 + provider: ^6.1.5+1 firebase_ui_auth: ^3.0.0 dev_dependencies: diff --git a/firebase-get-to-know-flutter/step_06/ios/Runner.xcodeproj/project.pbxproj b/firebase-get-to-know-flutter/step_06/ios/Runner.xcodeproj/project.pbxproj index 1c8af2a288..55d0ae8462 100644 --- a/firebase-get-to-know-flutter/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-get-to-know-flutter/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ - 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 2B027299A23D7BF1C4EFC6DF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */; }; + AA6CFCEA4448F4CB0A3A9FFA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,12 +44,12 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - 3074BD6EA1476781038F859F /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3A7722B896AF171FD56C440D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -60,19 +60,19 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AC5032432E6ADD68772BCA07 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - C8B24E84FC200EA381489361 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + ABF5BECD0D1DF9237DD53384 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + BF5E80A0810A59156F92FC67 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 896D3A1B7C4F5545470D30A4 /* Frameworks */ = { + 94281A890070D366A37A816C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */, + 2B027299A23D7BF1C4EFC6DF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */, + AA6CFCEA4448F4CB0A3A9FFA /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 79EEF8D08A8312EF51875428 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */, - F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - C7145ABD4CE8720655CB1CDE /* Pods */, - 79EEF8D08A8312EF51875428 /* Frameworks */, + D39E3B5FEA869186EE71FC1C /* Pods */, + C7E151332A9FC9A1410B35AD /* Frameworks */, ); sourceTree = ""; }; @@ -151,15 +142,24 @@ path = Runner; sourceTree = ""; }; - C7145ABD4CE8720655CB1CDE /* Pods */ = { + C7E151332A9FC9A1410B35AD /* Frameworks */ = { + isa = PBXGroup; + children = ( + C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */, + 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + D39E3B5FEA869186EE71FC1C /* Pods */ = { isa = PBXGroup; children = ( - AC5032432E6ADD68772BCA07 /* Pods-Runner.debug.xcconfig */, - 3074BD6EA1476781038F859F /* Pods-Runner.release.xcconfig */, - C8B24E84FC200EA381489361 /* Pods-Runner.profile.xcconfig */, - 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */, - C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */, - C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */, + BF5E80A0810A59156F92FC67 /* Pods-Runner.debug.xcconfig */, + 3A7722B896AF171FD56C440D /* Pods-Runner.release.xcconfig */, + ABF5BECD0D1DF9237DD53384 /* Pods-Runner.profile.xcconfig */, + EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */, + 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */, + C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */, + 5F482629E11201B5FBC8DA9A /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 896D3A1B7C4F5545470D30A4 /* Frameworks */, + 94281A890070D366A37A816C /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */, + 83A9373CAA1DA92E535F199B /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */, + D4E32CB60C2AC46BB61523C2 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,28 +270,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -308,24 +286,29 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */ = { + 5F482629E11201B5FBC8DA9A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */ = { + 83A9373CAA1DA92E535F199B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -340,7 +323,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -362,6 +345,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + D4E32CB60C2AC46BB61523C2 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -488,7 +488,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -507,7 +507,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -524,7 +524,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; diff --git a/firebase-get-to-know-flutter/step_06/macos/Runner.xcodeproj/project.pbxproj b/firebase-get-to-know-flutter/step_06/macos/Runner.xcodeproj/project.pbxproj index 59937692e7..c6a54e8413 100644 --- a/firebase-get-to-know-flutter/step_06/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-get-to-know-flutter/step_06/macos/Runner.xcodeproj/project.pbxproj @@ -27,8 +27,8 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */; }; - ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */; }; + 5EF32C325609B4458B3961A2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */; }; + B1AD4604D3BF6597F003DB23 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2047370DB6C77BDA2191181D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; @@ -79,15 +79,15 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 74D857ADB9D4AED45297B536 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 561B05C50FC0102FE48024ED /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 938D32545318679DA3807335 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - ED3045A038F9B6FA302121D9 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - F3B2EAA66CDB29EBDDAEACFF /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */, + B1AD4604D3BF6597F003DB23 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */, + 5EF32C325609B4458B3961A2 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 11A71C9A618FF7C1AD40A9A6 /* Pods */ = { + isa = PBXGroup; + children = ( + 938D32545318679DA3807335 /* Pods-Runner.debug.xcconfig */, + 2047370DB6C77BDA2191181D /* Pods-Runner.release.xcconfig */, + 561B05C50FC0102FE48024ED /* Pods-Runner.profile.xcconfig */, + AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */, + 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */, + DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 779340C43E8641722E4AC30F /* Pods */, + 11A71C9A618FF7C1AD40A9A6 /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 779340C43E8641722E4AC30F /* Pods */ = { - isa = PBXGroup; - children = ( - ED3045A038F9B6FA302121D9 /* Pods-Runner.debug.xcconfig */, - 74D857ADB9D4AED45297B536 /* Pods-Runner.release.xcconfig */, - F3B2EAA66CDB29EBDDAEACFF /* Pods-Runner.profile.xcconfig */, - EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */, - D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */, - D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */, - D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */, + 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */, + 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 058D4328BC92A9DE474B0A71 /* [CP] Check Pods Manifest.lock */, + 2A7011B290D4077430AE7B2A /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -234,13 +234,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */, + 840BE06649B3E3914C1EFE28 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */, + 4091FC9023CE4570367C1809 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,7 +323,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 058D4328BC92A9DE474B0A71 /* [CP] Check Pods Manifest.lock */ = { + 2A7011B290D4077430AE7B2A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -383,7 +383,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */ = { + 4091FC9023CE4570367C1809 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */ = { + 840BE06649B3E3914C1EFE28 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; diff --git a/firebase-get-to-know-flutter/step_06/pubspec.yaml b/firebase-get-to-know-flutter/step_06/pubspec.yaml index 5b877247ac..5b72e1e7d6 100644 --- a/firebase-get-to-know-flutter/step_06/pubspec.yaml +++ b/firebase-get-to-know-flutter/step_06/pubspec.yaml @@ -36,11 +36,11 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 google_fonts: ^6.3.0 - go_router: ^16.1.0 + go_router: ^16.2.0 cloud_firestore: ^6.0.0 firebase_auth: ^6.0.1 firebase_core: ^4.0.0 - provider: ^6.1.5 + provider: ^6.1.5+1 firebase_ui_auth: ^3.0.0 dev_dependencies: diff --git a/firebase-get-to-know-flutter/step_07/ios/Runner.xcodeproj/project.pbxproj b/firebase-get-to-know-flutter/step_07/ios/Runner.xcodeproj/project.pbxproj index 1c8af2a288..55d0ae8462 100644 --- a/firebase-get-to-know-flutter/step_07/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-get-to-know-flutter/step_07/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ - 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 2B027299A23D7BF1C4EFC6DF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */; }; + AA6CFCEA4448F4CB0A3A9FFA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,12 +44,12 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - 3074BD6EA1476781038F859F /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3A7722B896AF171FD56C440D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -60,19 +60,19 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AC5032432E6ADD68772BCA07 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - C8B24E84FC200EA381489361 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + ABF5BECD0D1DF9237DD53384 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + BF5E80A0810A59156F92FC67 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 896D3A1B7C4F5545470D30A4 /* Frameworks */ = { + 94281A890070D366A37A816C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */, + 2B027299A23D7BF1C4EFC6DF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */, + AA6CFCEA4448F4CB0A3A9FFA /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 79EEF8D08A8312EF51875428 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */, - F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - C7145ABD4CE8720655CB1CDE /* Pods */, - 79EEF8D08A8312EF51875428 /* Frameworks */, + D39E3B5FEA869186EE71FC1C /* Pods */, + C7E151332A9FC9A1410B35AD /* Frameworks */, ); sourceTree = ""; }; @@ -151,15 +142,24 @@ path = Runner; sourceTree = ""; }; - C7145ABD4CE8720655CB1CDE /* Pods */ = { + C7E151332A9FC9A1410B35AD /* Frameworks */ = { + isa = PBXGroup; + children = ( + C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */, + 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + D39E3B5FEA869186EE71FC1C /* Pods */ = { isa = PBXGroup; children = ( - AC5032432E6ADD68772BCA07 /* Pods-Runner.debug.xcconfig */, - 3074BD6EA1476781038F859F /* Pods-Runner.release.xcconfig */, - C8B24E84FC200EA381489361 /* Pods-Runner.profile.xcconfig */, - 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */, - C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */, - C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */, + BF5E80A0810A59156F92FC67 /* Pods-Runner.debug.xcconfig */, + 3A7722B896AF171FD56C440D /* Pods-Runner.release.xcconfig */, + ABF5BECD0D1DF9237DD53384 /* Pods-Runner.profile.xcconfig */, + EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */, + 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */, + C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */, + 5F482629E11201B5FBC8DA9A /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 896D3A1B7C4F5545470D30A4 /* Frameworks */, + 94281A890070D366A37A816C /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */, + 83A9373CAA1DA92E535F199B /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */, + D4E32CB60C2AC46BB61523C2 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,28 +270,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -308,24 +286,29 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */ = { + 5F482629E11201B5FBC8DA9A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */ = { + 83A9373CAA1DA92E535F199B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -340,7 +323,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -362,6 +345,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + D4E32CB60C2AC46BB61523C2 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -488,7 +488,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -507,7 +507,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -524,7 +524,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; diff --git a/firebase-get-to-know-flutter/step_07/macos/Runner.xcodeproj/project.pbxproj b/firebase-get-to-know-flutter/step_07/macos/Runner.xcodeproj/project.pbxproj index 59937692e7..c6a54e8413 100644 --- a/firebase-get-to-know-flutter/step_07/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-get-to-know-flutter/step_07/macos/Runner.xcodeproj/project.pbxproj @@ -27,8 +27,8 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */; }; - ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */; }; + 5EF32C325609B4458B3961A2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */; }; + B1AD4604D3BF6597F003DB23 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2047370DB6C77BDA2191181D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; @@ -79,15 +79,15 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 74D857ADB9D4AED45297B536 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 561B05C50FC0102FE48024ED /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 938D32545318679DA3807335 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - ED3045A038F9B6FA302121D9 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - F3B2EAA66CDB29EBDDAEACFF /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */, + B1AD4604D3BF6597F003DB23 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */, + 5EF32C325609B4458B3961A2 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 11A71C9A618FF7C1AD40A9A6 /* Pods */ = { + isa = PBXGroup; + children = ( + 938D32545318679DA3807335 /* Pods-Runner.debug.xcconfig */, + 2047370DB6C77BDA2191181D /* Pods-Runner.release.xcconfig */, + 561B05C50FC0102FE48024ED /* Pods-Runner.profile.xcconfig */, + AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */, + 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */, + DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 779340C43E8641722E4AC30F /* Pods */, + 11A71C9A618FF7C1AD40A9A6 /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 779340C43E8641722E4AC30F /* Pods */ = { - isa = PBXGroup; - children = ( - ED3045A038F9B6FA302121D9 /* Pods-Runner.debug.xcconfig */, - 74D857ADB9D4AED45297B536 /* Pods-Runner.release.xcconfig */, - F3B2EAA66CDB29EBDDAEACFF /* Pods-Runner.profile.xcconfig */, - EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */, - D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */, - D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */, - D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */, + 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */, + 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 058D4328BC92A9DE474B0A71 /* [CP] Check Pods Manifest.lock */, + 2A7011B290D4077430AE7B2A /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -234,13 +234,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */, + 840BE06649B3E3914C1EFE28 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */, + 4091FC9023CE4570367C1809 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,7 +323,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 058D4328BC92A9DE474B0A71 /* [CP] Check Pods Manifest.lock */ = { + 2A7011B290D4077430AE7B2A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -383,7 +383,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */ = { + 4091FC9023CE4570367C1809 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */ = { + 840BE06649B3E3914C1EFE28 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; diff --git a/firebase-get-to-know-flutter/step_07/pubspec.yaml b/firebase-get-to-know-flutter/step_07/pubspec.yaml index 5b877247ac..5b72e1e7d6 100644 --- a/firebase-get-to-know-flutter/step_07/pubspec.yaml +++ b/firebase-get-to-know-flutter/step_07/pubspec.yaml @@ -36,11 +36,11 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 google_fonts: ^6.3.0 - go_router: ^16.1.0 + go_router: ^16.2.0 cloud_firestore: ^6.0.0 firebase_auth: ^6.0.1 firebase_core: ^4.0.0 - provider: ^6.1.5 + provider: ^6.1.5+1 firebase_ui_auth: ^3.0.0 dev_dependencies: diff --git a/firebase-get-to-know-flutter/step_09/ios/Runner.xcodeproj/project.pbxproj b/firebase-get-to-know-flutter/step_09/ios/Runner.xcodeproj/project.pbxproj index 1c8af2a288..55d0ae8462 100644 --- a/firebase-get-to-know-flutter/step_09/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-get-to-know-flutter/step_09/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ - 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 2B027299A23D7BF1C4EFC6DF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */; }; + AA6CFCEA4448F4CB0A3A9FFA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,12 +44,12 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - 3074BD6EA1476781038F859F /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3A7722B896AF171FD56C440D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -60,19 +60,19 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AC5032432E6ADD68772BCA07 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - C8B24E84FC200EA381489361 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + ABF5BECD0D1DF9237DD53384 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + BF5E80A0810A59156F92FC67 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 896D3A1B7C4F5545470D30A4 /* Frameworks */ = { + 94281A890070D366A37A816C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */, + 2B027299A23D7BF1C4EFC6DF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */, + AA6CFCEA4448F4CB0A3A9FFA /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 79EEF8D08A8312EF51875428 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */, - F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - C7145ABD4CE8720655CB1CDE /* Pods */, - 79EEF8D08A8312EF51875428 /* Frameworks */, + D39E3B5FEA869186EE71FC1C /* Pods */, + C7E151332A9FC9A1410B35AD /* Frameworks */, ); sourceTree = ""; }; @@ -151,15 +142,24 @@ path = Runner; sourceTree = ""; }; - C7145ABD4CE8720655CB1CDE /* Pods */ = { + C7E151332A9FC9A1410B35AD /* Frameworks */ = { + isa = PBXGroup; + children = ( + C8A10912A2D0A9371A1D9D10 /* Pods_Runner.framework */, + 34F0D45C4994EAD00718AB8F /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + D39E3B5FEA869186EE71FC1C /* Pods */ = { isa = PBXGroup; children = ( - AC5032432E6ADD68772BCA07 /* Pods-Runner.debug.xcconfig */, - 3074BD6EA1476781038F859F /* Pods-Runner.release.xcconfig */, - C8B24E84FC200EA381489361 /* Pods-Runner.profile.xcconfig */, - 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */, - C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */, - C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */, + BF5E80A0810A59156F92FC67 /* Pods-Runner.debug.xcconfig */, + 3A7722B896AF171FD56C440D /* Pods-Runner.release.xcconfig */, + ABF5BECD0D1DF9237DD53384 /* Pods-Runner.profile.xcconfig */, + EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */, + 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */, + C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */, + 5F482629E11201B5FBC8DA9A /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 896D3A1B7C4F5545470D30A4 /* Frameworks */, + 94281A890070D366A37A816C /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */, + 83A9373CAA1DA92E535F199B /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */, + D4E32CB60C2AC46BB61523C2 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,28 +270,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -308,24 +286,29 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */ = { + 5F482629E11201B5FBC8DA9A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */ = { + 83A9373CAA1DA92E535F199B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -340,7 +323,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -362,6 +345,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + D4E32CB60C2AC46BB61523C2 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -488,7 +488,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = EE60219468D3F9F806C96A89 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -507,7 +507,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 3CE31A3AD55E20845623C769 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -524,7 +524,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C8627EFAAD0977AC5862E22D /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; diff --git a/firebase-get-to-know-flutter/step_09/macos/Runner.xcodeproj/project.pbxproj b/firebase-get-to-know-flutter/step_09/macos/Runner.xcodeproj/project.pbxproj index 59937692e7..c6a54e8413 100644 --- a/firebase-get-to-know-flutter/step_09/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-get-to-know-flutter/step_09/macos/Runner.xcodeproj/project.pbxproj @@ -27,8 +27,8 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */; }; - ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */; }; + 5EF32C325609B4458B3961A2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */; }; + B1AD4604D3BF6597F003DB23 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2047370DB6C77BDA2191181D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; @@ -79,15 +79,15 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 74D857ADB9D4AED45297B536 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 561B05C50FC0102FE48024ED /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 938D32545318679DA3807335 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - ED3045A038F9B6FA302121D9 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - F3B2EAA66CDB29EBDDAEACFF /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */, + B1AD4604D3BF6597F003DB23 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */, + 5EF32C325609B4458B3961A2 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 11A71C9A618FF7C1AD40A9A6 /* Pods */ = { + isa = PBXGroup; + children = ( + 938D32545318679DA3807335 /* Pods-Runner.debug.xcconfig */, + 2047370DB6C77BDA2191181D /* Pods-Runner.release.xcconfig */, + 561B05C50FC0102FE48024ED /* Pods-Runner.profile.xcconfig */, + AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */, + 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */, + DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 779340C43E8641722E4AC30F /* Pods */, + 11A71C9A618FF7C1AD40A9A6 /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 779340C43E8641722E4AC30F /* Pods */ = { - isa = PBXGroup; - children = ( - ED3045A038F9B6FA302121D9 /* Pods-Runner.debug.xcconfig */, - 74D857ADB9D4AED45297B536 /* Pods-Runner.release.xcconfig */, - F3B2EAA66CDB29EBDDAEACFF /* Pods-Runner.profile.xcconfig */, - EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */, - D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */, - D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */, - D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */, + 7CD4014C09C5C30DA3A7B043 /* Pods_Runner.framework */, + 9C870C1DD78521AB781605B6 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 058D4328BC92A9DE474B0A71 /* [CP] Check Pods Manifest.lock */, + 2A7011B290D4077430AE7B2A /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -234,13 +234,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */, + 840BE06649B3E3914C1EFE28 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */, + 4091FC9023CE4570367C1809 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,7 +323,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 058D4328BC92A9DE474B0A71 /* [CP] Check Pods Manifest.lock */ = { + 2A7011B290D4077430AE7B2A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -383,7 +383,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */ = { + 4091FC9023CE4570367C1809 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */ = { + 840BE06649B3E3914C1EFE28 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = AD90C72C2AEC4D2FAFD5D9E5 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E5BAD0D95789DE994985E5A /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = DFE54DD90C080BDE68589FC3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; diff --git a/firebase-get-to-know-flutter/step_09/pubspec.yaml b/firebase-get-to-know-flutter/step_09/pubspec.yaml index 5b877247ac..5b72e1e7d6 100644 --- a/firebase-get-to-know-flutter/step_09/pubspec.yaml +++ b/firebase-get-to-know-flutter/step_09/pubspec.yaml @@ -36,11 +36,11 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 google_fonts: ^6.3.0 - go_router: ^16.1.0 + go_router: ^16.2.0 cloud_firestore: ^6.0.0 firebase_auth: ^6.0.1 firebase_core: ^4.0.0 - provider: ^6.1.5 + provider: ^6.1.5+1 firebase_ui_auth: ^3.0.0 dev_dependencies: From fab691f251ebc73ac301aaf756160babcd61f66a Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Wed, 27 Aug 2025 14:04:31 +1000 Subject: [PATCH 2/7] Update codelab --- .../steps/index.lab.md | 636 ++++++++++++------ 1 file changed, 413 insertions(+), 223 deletions(-) diff --git a/firebase-get-to-know-flutter/steps/index.lab.md b/firebase-get-to-know-flutter/steps/index.lab.md index b604933f70..c65f2ab9f4 100644 --- a/firebase-get-to-know-flutter/steps/index.lab.md +++ b/firebase-get-to-know-flutter/steps/index.lab.md @@ -1,8 +1,8 @@ --- id: firebase-get-to-know-flutter summary: Learn how to build a Flutter mobile app with Firebase. -status: [draft] -authors: brettmorgan +status: published +authors: Brett Morgan categories: Firebase,Flutter tags: kiosk,tag-android,tag-firebase,tag-flutter,tag-ios,web feedback link: https://github.com/flutter/flutter/issues/new @@ -11,105 +11,145 @@ keywords: Flutter, firebasesolution, buildbackend, docType:Codelab, product:Fire --- +{# disableFinding(METADATA_BOOK) #} +{# disableFinding(METADATA_PROJECT) #} +{# disableFinding(HEADING_NO_ID_H2) #} +{# disableFinding(HEADING_NO_ID_H3) #} +{# disableFinding("native") #} + # Get to know Firebase for Flutter [Codelab Feedback](https://github.com/flutter/flutter/issues/new) - ## Before you begin -Duration: 01:00 -In this codelab, you learn some of the basics of [Firebase](http://firebase.google.com) to create Flutter mobile apps for Android and iOS. +Duration: 01:00 +In this codelab, you learn some of the basics of +[Firebase](http://firebase.google.com) to create Flutter mobile apps for Android +and iOS. ### Prerequisites -* Familiarity with Flutter -* [The Flutter SDK](https://flutter.dev/get-started/install/) -* [A text editor of your choice](https://flutter.dev/get-started/editor/) +- Familiarity with Flutter +- [The Flutter SDK](https://flutter.dev/get-started/install/) +- [A text editor of your choice](https://flutter.dev/get-started/editor/) ### What you'll learn -* How to to build an event RSVP and guestbook chat app on Android, iOS, the Web, and macOS with Flutter. -* How to authenticate users with Firebase Authentication and sync data with Firestore. +- How to to build an event RSVP and guestbook chat app on Android, iOS, the Web, and macOS with Flutter. +- How to authenticate users with Firebase Authentication and sync data with Firestore. |

The home screen of the app on Android

| The home screen of the app on iOS | -| --- | --- | -| | | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| | | ### What you'll need Any of the following devices: -* A physical Android or iOS device connected to your computer and set to developer mode. -* The iOS simulator (Requires [Xcode tools](https://apps.apple.com/us/app/xcode/id497799835)). -* The Android emulator (Requires setup in [Android Studio](https://developer.android.com/studio/install)). + +- A physical Android or iOS device connected to your computer and set to developer mode. +- The iOS simulator (Requires [Xcode tools](https://apps.apple.com/us/app/xcode/id497799835)). +- The Android emulator (Requires setup in [Android Studio](https://developer.android.com/studio/install)). You also need the following: -* A browser of your choice, such as Google Chrome. -* An IDE or text editor of your choice configured with the Dart and Flutter plugins, such as [Android Studio](https://developer.android.com/studio) or [Visual Studio Code](https://code.visualstudio.com/). -* The latest `stable` version of [Flutter](https://flutter.dev/docs/get-started/web#set-up) or `beta` if you enjoy living on the edge. -* A Google Account for the creation and management of your Firebase project. -* The [`Firebase` CLI](https://firebase.google.com/docs/cli) logged in to your Google Account. +- A browser of your choice, such as Google Chrome. +- An IDE or text editor of your choice configured with the Dart and Flutter + plugins, such as [Android Studio](https://developer.android.com/studio) or + [Visual Studio Code](https://code.visualstudio.com/). +- The latest `stable` version of + [Flutter](https://flutter.dev/docs/get-started/web#set-up) or `beta` if you + enjoy living on the edge. +- A Google Account for the creation and management of your Firebase project. +- The [`Firebase` CLI](https://firebase.google.com/docs/cli) logged in to your + Google Account. ## Get the sample code + Duration: 02:00 Download the initial version of your project from GitHub: -1. From the command line, clone the [GitHub repository](https://github.com/flutter/codelabs) in the `flutter-codelabs` directory: + +1. From the command line, clone the [GitHub repository](https://github.com/flutter/codelabs) in the `flutter-codelabs` directory: ```console git clone https://github.com/flutter/codelabs.git flutter-codelabs ``` -The `flutter-codelabs` directory contains the code for a collection of codelabs. The code for this codelab is in the `flutter-codelabs/firebase-get-to-know-flutter` directory. The directory contains a series of snapshots that show how your project should look at the end of each step. For example, you're on the second step. +The `flutter-codelabs` directory contains the code for a collection of codelabs. +The code for this codelab is in the +`flutter-codelabs/firebase-get-to-know-flutter` directory. The directory +contains a series of snapshots that show how your project should look at the end +of each step. For example, you're on the second step. -2. Find the matching files for the second step: +2. Find the matching files for the second step: ```console cd flutter-codelabs/firebase-get-to-know-flutter/step_02 ``` -If you want to skip forward or see how something should look after a step, look in the directory named after the step in which you're interested. +If you want to skip forward or see how something should look after a step, look +in the directory named after the step in which you're interested. ### Import the starter app -* Open or import the `flutter-codelabs/firebase-get-to-know-flutter/step_02` directory in your preferred IDE. This directory contains the starter code for the codelab, which consists of a not-yet-functional Flutter meetup app. +- Open or import the `flutter-codelabs/firebase-get-to-know-flutter/step_02` + directory in your preferred IDE. This directory contains the starter code + for the codelab, which consists of a not-yet-functional Flutter meetup app. ### Locate the files that need work -The code in this app is spread over multiple directories. This split of functionality makes the work easier because it groups the code by functionality. - -* Locate the following files: - * `lib/main.dart`: This file contains the main entry point and the app widget. - * `lib/home_page.dart`: This file contains the home page widget. - * `lib/src/widgets.dart`: This file contains a handful of widgets to help standardize the style of the app. They compose the screen of the starter app. - * `lib/src/authentication.dart`: This file contains a partial implementation of [Authentication](https://firebase.google.com/docs/auth) with a set of widgets to create a login user experience for Firebase email-based authentication. These widgets for the auth flow aren't yet used in the starter app, but you add them soon. +The code in this app is spread over multiple directories. This split of +functionality makes the work easier because it groups the code by functionality. + +- Locate the following files: + - `lib/main.dart`: This file contains the main entry point and the app + widget. + - `lib/home_page.dart`: This file contains the home page widget. + - `lib/src/widgets.dart`: This file contains a handful of widgets to help + standardize the style of the app. They compose the screen of the starter + app. + - `lib/src/authentication.dart`: This file contains a partial + implementation of + [Authentication](https://firebase.google.com/docs/auth) with a set of + widgets to create a login user experience for Firebase email-based + authentication. These widgets for the auth flow aren't yet used in the + starter app, but you add them soon. You add additional files as required to build the rest of the app. ### Review the `lib/main.dart` file -This app takes advantage of the [`google_fonts`](https://pub.dev/packages/google_fonts) package to make Roboto the default font throughout the app. You can explore [fonts.google.com](https://fonts.google.com/) and use the fonts that you discover there in different parts of the app. +This app takes advantage of the +[`google_fonts`](https://pub.dev/packages/google_fonts) package to make Roboto +the default font throughout the app. You can explore +[fonts.google.com](https://fonts.google.com/) and use the fonts that you +discover there in different parts of the app. -You use the helper widgets from the `lib/src/widgets.dart` file in the form of `Header`, `Paragraph` and `IconAndDetail`. These widgets eliminate duplicated code to reduce clutter in the page layout described in `HomePage`. This also enables a consistent look and feel. +You use the helper widgets from the `lib/src/widgets.dart` file in the form of +`Header`, `Paragraph` and `IconAndDetail`. These widgets eliminate duplicated +code to reduce clutter in the page layout described in `HomePage`. This also +enables a consistent look and feel. Here's what your app looks like on Android, iOS, the Web, and macOS: -|

The home screen of the app on Android

| The home screen of the app on iOS | -| --- | --- | -| The home screen of the app on web | The home screen of the app on macOS | - +|

The home screen of the app on Android

| The home screen of the app on iOS | +| ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | +| The home screen of the app on web | The home screen of the app on macOS | ## Create and configure a Firebase project -Duration: 07:00 -The display of event information is great for your guests, but it isn't very useful for anybody on its own. You need to add some dynamic functionality to the app. To do so, you need to connect Firebase to your app. To get started with Firebase, you need to create and configure a Firebase project. +Duration: 07:00 +The display of event information is great for your guests, but it isn't very +useful for anybody on its own. You need to add some dynamic functionality to the +app. To do so, you need to connect Firebase to your app. To get started with +Firebase, you need to create and configure a Firebase project. ### Create a Firebase project -1. Sign in to [Firebase](https://console.firebase.google.com/). +1. Sign in to [Firebase](https://console.firebase.google.com/). 2. In the console, click **Add Project** or **Create a project**. 3. In the **Project name** field, enter **Firebase-Flutter-Codelab** and then click **Continue**. @@ -119,106 +159,116 @@ The display of event information is great for your guests, but it isn't very use b7138cde5f2c7b61.png -To learn more about Firebase projects, see [Understand Firebase projects](https://www.google.com/url?q=https://firebase.google.com/docs/projects/learn-more&sa=D&ust=1568059744191000&usg=AFQjCNEo043D9nD4a1aS2AjK8ReenvZ3Pg). +To learn more about Firebase projects, see [Understand Firebase projects](https://www.google.com/url?q=https://firebase.google.com/docs/projects/learn-more&sa=D&ust=1568059744191000&usg=AFQjCNEo043D9nD4a1aS2AjK8ReenvZ3Pg). The app uses the following Firebase products, which are available for web apps: -* **Authentication:** Lets users sign in to your app. -* **Firestore:** Saves structured data on the cloud and gets instant notifications when data changes. -* **Firebase Security Rules:** Secures your database. -Some of these products need special configuration or you need to enable them in the Firebase console. +- **Authentication:** Lets users sign in to your app. +- **Firestore:** Saves structured data on the cloud and gets instant + notifications when data changes. +- **Firebase Security Rules:** Secures your database. + +Some of these products need special configuration or you need to enable them in +the Firebase console. ### Enable email sign-in authentication -1. In the Firebase console's **Project overview** pane, expand the **Build** menu. -2. Click **Authentication > Get Started > Sign-in method > Email/Password > Enable > Save**. +1. In the Firebase console's **Project overview** pane, expand the **Build** + menu. +2. Click **Authentication > Get Started > Sign-in method > Email/Password > + Enable > Save**. 58e3e3e23c2f16a4.png -### Enable Firestore +### Set up Firestore -The web app uses [Firestore](https://firebase.google.com/docs/firestore/) to save chat messages and receive new chat messages. +The web app uses [Firestore](https://firebase.google.com/docs/firestore/) +to save chat messages and receive new chat messages. -Enable Firestore: -* In the **Build** menu, click **Firestore Database > Create database**. +Here's how to set up Firestore in your Firebase project: -99e8429832d23fa3.png +1. In the left-panel of the Firebase console, expand **Build** and then select + [**Firestore database**](https://console.firebase.google.com/project/_/firestore). -> aside negative -> -> **Caution:** Ensure that you enable Firestore and *not* the Firebase Realtime Database for this codelab. To learn the difference between the two, see [Choose a Database: Firestore or Realtime Database](https://firebase.google.com/docs/database/rtdb-vs-firestore). +1. Click **Create database**. -3. Select **Start in test mode** and then read the disclaimer about the security rules. Test mode ensures that you can freely write to the database during development. +1. Leave the _Database ID_ set to `(default)`. -6be00e26c72ea032.png +1. Select a location for your database, then click _Next_.
-> aside negative -> -> **Caution:** In the first stages of this codelab, you use test mode. Later in the codelab, you write Firebase Security Rules to secure your database. -> -> For your apps, especially production apps, it's important that you secure your database with security rules. To learn more about security rules, see [Firebase Security Rules](https://firebase.google.com/docs/rules). + For a real app, you want to choose a location that's close to your users. -4. Click **Next** and then select the location for your database. You can use the default. You can't change the location later. +1. Click **Start in test mode**. Read the disclaimer about the security rules.
-278656eefcfb0216.png - -5. Click **Enable**. + Later in this codelab, you'll add Security Rules to secure your data. + **Do _not_ distribute or expose an app publicly without adding Security + Rules for your database.** +1. Click **Create**. ## Configure Firebase + Duration: 08:00 > aside positive > -> **Note:** If you only intend to use iOS or Android, you only need one of the following configurations. This step includes instructions for both for completeness sake. +> **Note:** If you only intend to use iOS or Android, you only +> need one of the following configurations. This step includes instructions for +> both for completeness sake. + +To use Firebase with Flutter, you need to complete the following tasks to +configure the Flutter project to use the `FlutterFire` libraries correctly: -To use Firebase with Flutter, you need to complete the following tasks to configure the Flutter project to use the `FlutterFire` libraries correctly: 1. Add the `FlutterFire` dependencies to your project. -2. Register the desired platform on the Firebase project. +2. Register the chosen platform on the Firebase project. 3. Download the platform-specific configuration file and then add it to the code. - > aside negative > -> **Caution**: You need to register all the platforms that you want to use in the same Firebase project. +> **Caution**: You need to register all the platforms that you want to use in +> the same Firebase project. -In the top-level directory of your Flutter app, there are `android`, `ios`, `macos` and `web` subdirectories, which hold the platform-specific configuration files for iOS and Android, respectively. +In the top-level directory of your Flutter app, there are `android`, `ios`, +`macos` and `web` subdirectories, which hold the platform-specific configuration +files for iOS and Android, respectively. ### Configure dependencies -You need to add the `FlutterFire` libraries for the two Firebase products that you use in this app: Authentication and Firestore. - -* From the command line, add the following depencies: - -```console -$ flutter pub add firebase_core -``` - -The [`firebase_core` package](https://pub.dev/packages/firebase_core) is the common code required for all Firebase Flutter plugins. - -```console -$ flutter pub add firebase_auth -``` - -The [`firebase_auth` package](https://pub.dev/packages/firebase_auth) enables integration with Authentication. - -```console -$ flutter pub add cloud_firestore -``` +You need to add the `FlutterFire` libraries for the two Firebase products that +you use in this app: Authentication and Firestore. -The [`cloud_firestore` package](https://pub.dev/packages/cloud_firestore) enables access to Firestore data storage. +- From the command line, add the following dependencies: ```console -$ flutter pub add provider +$ flutter pub add firebase_core firebase_auth cloud_firestore provider firebase_ui_auth ``` -The [`firebase_ui_auth` package](https://pub.dev/packages/firebase_ui_auth) provides a set of widgets and utilities to increase developer velocity with authentication flows. - -```console -$ flutter pub add firebase_ui_auth -``` - -You added the required packages, but you also need to configure the iOS, Android, macOS, and Web runner projects to appropriately use Firebase. You also use the [`provider` package](https://pub.dev/packages/provider) that enables separation of business logic from display logic. +To use Firebase in your Flutter app, you'll need to combine a few specialized +packages: + +- [`firebase_core` package][]: This is the essential starting point. You must + have this package, as all other Firebase tools for Flutter depend on it. +- [`firebase_auth` package][]: This package is for handling user accounts. It + lets you add features like sign-up, login, and logout. +- [`cloud_firestore` package][]: Use this to connect your app to the Firestore + database, allowing you to save and access your app's data. +- [`firebase_ui_auth` package][]: This package makes setting up authentication + much faster. It provides ready-to-use widgets (like prebuilt login screens) + so you don't have to build everything from scratch. +- [`provider` package][]: This is a popular choice for state management. It + helps your app keep track of information (like who is logged in) and make + that data available across all the different screens that need it. + +[`firebase_core` package]: https://pub.dev/packages/firebase_core +[`firebase_auth` package]: https://pub.dev/packages/firebase_auth +[`cloud_firestore` package]: https://pub.dev/packages/cloud_firestore +[`firebase_ui_auth` package]: https://pub.dev/packages/firebase_ui_auth +[`provider` package]: https://pub.dev/packages/provider + +You added the required packages, but you also need to configure the iOS, +Android, macOS, and Web runner projects to appropriately use Firebase. You also +use the [`provider` package](https://pub.dev/packages/provider) that enables +separation of business logic from display logic. ### Install the FlutterFire CLI @@ -236,7 +286,8 @@ Once installed, the `flutterfire` command is globally available. ### Configure your apps -The CLI extracts information from your Firebase project and selected project apps to generate all the configuration for a specific platform. +The CLI extracts information from your Firebase project and selected project +apps to generate all the configuration for a specific platform. In the root of your app, run the `configure` command: @@ -245,16 +296,30 @@ $ flutterfire configure ``` The configuration command guides you through the following processes: -1. Select a Firebase project based on the `.firebaserc` file or from the Firebase Console. -1. Determine platforms for configuration, such as Android, iOS, macOS, and web. -1. Identify the Firebase apps from which to extract configuration. By default, the CLI attempts to automatically match Firebase apps based on your current project configuration. -1. Generate a `firebase_options.dart` file in your project. + +1. Select a Firebase project based on the `.firebaserc` file or from the + Firebase Console. +1. Determine platforms for configuration, such as Android, iOS, macOS, and web. +1. Identify the Firebase apps from which to extract configuration. By default, + the CLI attempts to automatically match Firebase apps based on your current + project configuration. +1. Generate a `firebase_options.dart` file in your project. + +> aside negative +> +> **Caution:** Within the code repository there is a different +> Flutter project for each step. If you switch between projects as you move +> through the codelab, you will need to re-run `flutterfire configure` in each +> project. ### Configure macOS -Flutter on macOS builds fully sandboxed apps. As this app integrates with the network to communicate with the Firebase servers, you need to configure your app with network client privileges. +Flutter on macOS builds fully sandboxed apps. As this app integrates with the +network to communicate with the Firebase servers, you need to configure your app +with network client privileges. + +#### [macos/Runner/DebugProfile.entitlements](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_04/macos/Runner/DebugProfile.entitlements) -#### [macos/Runner/DebugProfile.entitlements](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_04/macos/Runner/DebugProfile.entitlements) ```xml @@ -273,7 +338,8 @@ Flutter on macOS builds fully sandboxed apps. As this app integrates with the ne ``` -#### [macos/Runner/Release.entitlements](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_04/macos/Runner/Release.entitlements) +#### [macos/Runner/Release.entitlements](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_04/macos/Runner/Release.entitlements) + ```xml @@ -291,19 +357,27 @@ Flutter on macOS builds fully sandboxed apps. As this app integrates with the ne For more information, see [Desktop support for Flutter](https://docs.flutter.dev/development/platform-integration/desktop). ## Add RSVP functionality + Duration: 10:00 -Now that you added Firebase to the app, you can create an **RSVP** button that registers people with [Authentication](https://firebase.google.com/docs/auth). For Android native, iOS native, and Web, there are prebuilt `FirebaseUI Auth` packages, but you need to build this capability for Flutter. +Now that you added Firebase to the app, you can create an **RSVP** button that +registers people with [Authentication](https://firebase.google.com/docs/auth). +For Android native, iOS native, and Web, there are prebuilt `FirebaseUI Auth` +packages, but you need to build this capability for Flutter. -The project that you retrieved earlier included a set of widgets that implements the user interface for most of the authentication flow. You implement the business logic to integrate Authentication with the app. +The project that you retrieved earlier included a set of widgets that implements +the user interface for most of the authentication flow. You implement the +business logic to integrate Authentication with the app. ### Add business logic with the `Provider` package -Use the [`provider` package](https://pub.dev/packages/provider) to make a centralized app state object available throughout the app's tree of Flutter widgets: +Use the [`provider` package](https://pub.dev/packages/provider) to make a +centralized app state object available throughout the app's tree of Flutter +widgets: 1. Create a new file named `app_state.dart` with the following content: -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_05/lib/app_state.dart#L1) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_05/lib/app_state.dart#L1) ```dart import 'package:firebase_auth/firebase_auth.dart' @@ -342,17 +416,23 @@ class ApplicationState extends ChangeNotifier { } ``` -The `import` statements introduce Firebase Core and Auth, pull in the `provider` package that makes app state object available throughout the widget tree, and include the authentication widgets from the `firebase_ui_auth` package. +The `import` statements introduce Firebase Core and Auth, pull in the `provider` +package that makes app state object available throughout the widget tree, and +include the authentication widgets from the `firebase_ui_auth` package. -This `ApplicationState` application state object has one main responsibility for this step, which is to alert the widget tree that there was an update to an authenticated state. +This `ApplicationState` application state object has one main responsibility for +this step, which is to alert the widget tree that there was an update to an +authenticated state. -You only use a provider to communicate the state of a user's login status to the app. To let a user log in, you use the UIs provided by the `firebase_ui_auth` package, which is a great way to quickly bootstrap login screens in your apps. +You only use a provider to communicate the state of a user's login status to the +app. To let a user sign in, you use the UIs provided by the `firebase_ui_auth` +package, which is a great way to quickly bootstrap login screens in your apps. ### Integrate the authentication flow -1. Modify the imports at the top of the `lib/main.dart` file: +1. Modify the imports at the top of the `lib/main.dart` file: -#### [lib/main.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_05/lib/main.dart#L1) +#### [lib/main.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_05/lib/main.dart#L1) ```dart import 'package:firebase_ui_auth/firebase_ui_auth.dart'; // new @@ -367,7 +447,7 @@ import 'home_page.dart'; 2. Connect the app state with the app initialization and then add the authentication flow to `HomePage`: -#### [lib/main.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_05/lib/main.dart#L14) +#### [lib/main.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_05/lib/main.dart#L14) ```dart void main() { @@ -382,11 +462,16 @@ void main() { } ``` -The modification to the `main()` function makes the provider package responsible for the instantiation of the app state object with the `ChangeNotifierProvider` widget. You use this specific `provider` class because the app state object extends the `ChangeNotifier` class, which lets the `provider` package know when to redisplay dependent widgets. +The modification to the `main()` function makes the provider package responsible +for the instantiation of the app state object with the `ChangeNotifierProvider` +widget. You use this specific `provider` class because the app state object +extends the `ChangeNotifier` class, which lets the `provider` package know when +to redisplay dependent widgets. -3. Update your app to handle navigation to different screens that FirebaseUI provides for you, by creating a `GoRouter` configuration: +3. Update your app to handle navigation to different screens that `FirebaseUI` + provides for you, by creating a `GoRouter` configuration: -#### [lib/main.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_05/lib/main.dart#L23) +#### [lib/main.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_05/lib/main.dart#L23) ```dart // Add GoRouter configuration outside the App class @@ -483,6 +568,7 @@ class App extends StatelessWidget { Theme.of(context).textTheme, ), visualDensity: VisualDensity.adaptivePlatformDensity, + useMaterial3: true, ), routerConfig: _router, // new ); @@ -490,11 +576,15 @@ class App extends StatelessWidget { } ``` -Each screen has a different type of action associated with it based on the new state of the authentication flow. After most state changes in authentication, you can reroute back to a preferred screen, whether it's the home screen or a different screen, such as profile. +Each screen has a different type of action associated with it based on the new +state of the authentication flow. After most state changes in authentication, +you can reroute back to a preferred screen, whether it's the home screen or a +different screen, such as profile. -4. In the `HomePage` class's build method, integrate the app state with the `AuthFunc` widget: +4. In the `HomePage` class's build method, integrate the app state with the + `AuthFunc` widget: -#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_05/lib/home_page.dart#L14) +#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_05/lib/home_page.dart#L14) ```dart import 'package:firebase_auth/firebase_auth.dart' // new @@ -548,7 +638,10 @@ class HomePage extends StatelessWidget { } ``` -You instantiate the `AuthFunc` widget and wrap it in a `Consumer` widget. The Consumer widget is the usual way that the `provider` package can be used to rebuild part of the tree when the app state changes. The `AuthFunc` widget is the supplementary widgets that you test. +You instantiate the `AuthFunc` widget and wrap it in a `Consumer` widget. The +Consumer widget is the usual way that the `provider` package can be used to +rebuild part of the tree when the app state changes. The `AuthFunc` widget is +the supplementary widgets that you test. #### Test the authentication flow @@ -571,31 +664,42 @@ You instantiate the `AuthFunc` widget and wrap it in a `Consumer` widget. The Co 4ed811a25b0cf816.png ## Write messages to Firestore -Duration: 10:00 +Duration: 10:00 -It's great to know that users are coming, but you need to give the guests something else to do in the app. What if they could leave messages in a guestbook? They can share why they're excited to come or who they hope to meet. - +It's great to know that users are coming, but you need to give the guests +something else to do in the app. What if they could leave messages in a +guestbook? They can share why they're excited to come or who they hope to meet. -To store the chat messages that users write in the app, you use [Firestore](https://firebase.google.com/docs/firestore/). +To store the chat messages that users write in the app, you use +[Firestore](https://firebase.google.com/docs/firestore/). ### Data model -Firestore is a NoSQL database, and data stored in the database is split into collections, documents, fields, and subcollections. You store each message of the chat as a document in a `guestbook` collection, which is a top-level collection. +Firestore is a NoSQL database, and data stored in the database is split into +collections, documents, fields, and subcollections. You store each message of +the chat as a document in a `guestbook` collection, which is a top-level +collection. 7c20dc8424bb1d84.png > aside positive > -> **Note**: To learn more about the Firestore data model, see [Firestore Data model](https://firebase.google.com/docs/firestore/data-model)and [this great series of videos](https://www.youtube.com/playlist?list=PLl-K7zZEsYLluG5MCVEzXAQ7ACZBCuZgZ). +> **Note**: To learn more about the Firestore data model, see +> [Firestore Data model](https://firebase.google.com/docs/firestore/data-model) +> and +> [this great series of videos](https://www.youtube.com/playlist?list=PLl-K7zZEsYLluG5MCVEzXAQ7ACZBCuZgZ). ### Add messages to Firestore -In this section, you add the functionality for users to write messages to the database. First, you add a form field and send button, and then you add the code that connects these elements with the database. +In this section, you add the functionality for users to write messages to the +database. First, you add a form field and send button, and then you add the code +that connects these elements with the database. -1. Create a new file named `guest_book.dart`, add a `GuestBook` stateful widget to construct the UI elements of a message field and a send button: +1. Create a new file named `guest_book.dart`, add a `GuestBook` stateful widget + to construct the UI elements of a message field and a send button: -#### [lib/guest_book.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_06/lib/guest_book.dart) +#### [lib/guest_book.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_06/lib/guest_book.dart) ```dart import 'dart:async'; @@ -663,13 +767,27 @@ class _GuestBookState extends State { } ``` -There are a couple of points of interest here. First, you instantiate a form so that you can validate that the message actually contains content and show the user an error message if there isn't any. To validate a form, you access the form state behind the form with a `GlobalKey`. For more information about Keys and how to use them, see [When to Use Keys](https://www.youtube.com/watch?v=kn0EOS-ZiIc). +There are a couple of points of interest here. First, you instantiate a form so +that you can validate that the message actually contains content and show the +user an error message if there isn't any. To validate a form, you access the +form state behind the form with a `GlobalKey`. For more information about Keys +and how to use them, see [When to Use Keys][]. + +[When to Use Keys]: https://www.youtube.com/watch?v=kn0EOS-ZiIc + +Also note the way that the widgets are laid out, you have a `Row` with a +`TextFormField` and a `StyledButton`, which contains a `Row`. Also note the +`TextFormField` is wrapped in an `Expanded` widget, which forces the +`TextFormField` to fill any extra space in the row. To better understand why +this is required, see [Understanding constraints][]. -Also note the way that the widgets are laid out, you have a `Row` with a `TextFormField` and a `StyledButton`, which contains a `Row`. Also note the `TextFormField` is wrapped in an `Expanded` widget, which forces the `TextFormField` to fill any extra space in the row. To better understand why this is required, see [Understanding constraints](https://flutter.dev/docs/development/ui/layout/constraints). +[Understanding constraints]: https://flutter.dev/docs/development/ui/layout/constraints -Now that you have a widget that enables the user to enter some text to add to the Guest Book, you need to get it on the screen. +Now that you have a widget that enables the user to enter some text to add to +the Guest Book, you need to get it on the screen. -2. Edit the body of `HomePage` to add the following two lines at the end of the `ListView`'s children: +2. Edit the body of `HomePage` to add the following two lines at the end of the + `ListView`'s children: ```dart const Header("What we'll be doing"), @@ -681,21 +799,28 @@ const Header('Discussion'), GuestBook(addMessage: (message) => print(message)), ``` -While this is enough to display the widget, it isn't sufficient to do anything useful. You update this code shortly to make it functional. +While this is enough to display the widget, it isn't sufficient to do anything +useful. You update this code shortly to make it functional. #### App preview -|

The home screen of the app on Android with chat integration

| The home screen of the app on iOS with chat integration | -| --- | --- | -| The home screen of the app on web with chat integration | The home screen of the app on macOS with chat integration | +|

The home screen of the app on Android with chat integration

| The home screen of the app on iOS with chat integration | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| The home screen of the app on web with chat integration | The home screen of the app on macOS with chat integration | -When a user clicks **SEND**, it triggers the following code snippet. It adds the contents of the message input field to the `guestbook` collection of the database. Specifically, the `addMessageToGuestBook` method adds the message content to a new document with an automatically generated ID in the `guestbook` collection. +When a user clicks **SEND**, it triggers the following code snippet. It adds the +contents of the message input field to the `guestbook` collection of the +database. Specifically, the `addMessageToGuestBook` method adds the message +content to a new document with an automatically generated ID in the `guestbook` +collection. -Note that `FirebaseAuth.instance.currentUser.uid` is a reference to the autogenerated unique ID that Authentication gives for all logged-in users. +Note that `FirebaseAuth.instance.currentUser.uid` is a reference to the +auto-generated unique ID that Authentication gives for all logged-in users. -* In the `lib/app_state.dart` file, add the `addMessageToGuestBook` method. You connect this capability with the user interface in the next step. +- In the `lib/app_state.dart` file, add the `addMessageToGuestBook` method. + You connect this capability with the user interface in the next step. -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_06/lib/app_state.dart#L41) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_06/lib/app_state.dart#L41) ```dart import 'package:cloud_firestore/cloud_firestore.dart'; // new @@ -732,11 +857,14 @@ class ApplicationState extends ChangeNotifier { ### Connect UI and database -You have a UI where the user can enter the text they want to add to the Guest Book and you have the code to add the entry to Firestore. Now all you need to do is connect the two. +You have a UI where the user can enter the text they want to add to the Guest +Book and you have the code to add the entry to Firestore. Now all you need to do +is connect the two. -* In the `lib/home_page.dart` file, make the following change to the `HomePage` widget: +- In the `lib/home_page.dart` file, make the following change to the + `HomePage` widget: -#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_06/lib/home_page.dart#L15) +#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_06/lib/home_page.dart#L15) ```dart import 'package:firebase_auth/firebase_auth.dart' @@ -805,31 +933,46 @@ class HomePage extends StatelessWidget { } ``` -You replaced the two lines that you added at the start of this step with the full implementation. You again use `Consumer<ApplicationState>` to make the app state available to the part of the tree that you render. This lets you react to someone who enters a message in the UI and publish it in the database. In the next section, you test whether the added messages are published in the database. +You replaced the two lines that you added at the start of this step with the +full implementation. You again use `Consumer<ApplicationState>` to make +the app state available to the part of the tree that you render. This lets you +react to someone who enters a message in the UI and publish it in the database. +In the next section, you test whether the added messages are published in the +database. ### Test sending messages -1. If necessary, sign in to the app. -2. Enter a message, such as `Hey there!`, and then click **SEND**. +1. If necessary, sign in to the app. +2. Enter a message, such as `Hey there!`, and then click **SEND**. -This action writes the message to your Firestore database. However, you don't see the message in your actual Flutter app because you still need to implement retrieval of the data, which you do in the next step. However, in the Firebase console's [**Database** dashboard](https://console.firebase.google.com/project/_/database), you can see your added message in the `guestbook` collection. If you send more messages, you add more documents to your `guestbook` collection. For example, see the following code snippet: +This action writes the message to your Firestore database. However, you don't +see the message in your actual Flutter app because you still need to implement +retrieval of the data, which you do in the next step. However, in the Firebase +console [**Database** dashboard][], you can see your added message in the +`guestbook` collection. If you send more messages, you add more documents to +your `guestbook` collection. For example, see the following code snippet: -713870af0b3b63c.png +[**Database** dashboard]: https://console.firebase.google.com/project/_/database +713870af0b3b63c.png ## Read messages -Duration: 10:00 -It's lovely that guests can write messages to the database, but they can't see them in the app yet. Time to fix that! +Duration: 10:00 +It's lovely that guests can write messages to the database, but they can't see +them in the app yet. Time to fix that! ### Synchronize messages -To display messages, you need to add listeners that trigger when data changes and then create a UI element that shows new messages. You add code to the app state that listens for newly added messages from the app. +To display messages, you need to add listeners that trigger when data changes +and then create a UI element that shows new messages. You add code to the app +state that listens for newly added messages from the app. -1. Create a new file `guest_book_message.dart`, add the following class to expose a structured view of the data that you store in Firestore. +1. Create a new file `guest_book_message.dart`, add the following class to + expose a structured view of the data that you store in Firestore. -#### [lib/guest_book_message.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/guest_book_message.dart) +#### [lib/guest_book_message.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/guest_book_message.dart) ```dart class GuestBookMessage { @@ -842,7 +985,7 @@ class GuestBookMessage { 2. In the `lib/app_state.dart` file, add the following imports: -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/app_state.dart#L1) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/app_state.dart#L1) ```dart import 'dart:async'; // new @@ -860,7 +1003,7 @@ import 'guest_book_message.dart'; // new 3. In section of `ApplicationState` where you define state and getters, add the following lines: -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/app_state.dart#L22) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/app_state.dart#L22) ```dart bool _loggedIn = false; @@ -875,7 +1018,7 @@ import 'guest_book_message.dart'; // new 4. In the initialization section of `ApplicationState`, add the following lines to subscribe to a query over the document collection when a user logs in and unsubscribe when they log out: -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/app_state.dart#L29) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/app_state.dart#L29) ```dart Future init() async { @@ -885,7 +1028,7 @@ import 'guest_book_message.dart'; // new FirebaseUIAuth.configureProviders([ EmailAuthProvider(), ]); - + FirebaseAuth.instance.userChanges().listen((user) { if (user != null) { _loggedIn = true; @@ -915,11 +1058,11 @@ import 'guest_book_message.dart'; // new } ``` -This section is important because it's where you construct a query over the `guestbook` collection, and handle subscribing and unsubscribing to this collection. You listen to the stream, where you reconstruct a local cache of the messages in the `guestbook` collection and also store a reference to this subscription so that you can unsubscribe from it later. There's a lot going on here, so you should explore it in a debugger to inspect what happens to get a clearer mental model. For more information, see [Get realtime updates with Firestore](https://firebase.google.com/docs/firestore/query-data/listen). +This section is important because it's where you construct a query over the `guestbook` collection, and handle subscribing and unsubscribing to this collection. You listen to the stream, where you reconstruct a local cache of the messages in the `guestbook` collection and also store a reference to this subscription so that you can unsubscribe from it later. There's a lot going on here, so you should explore it in a debugger to inspect what happens to get a clearer mental model. For more information, see [Get realtime updates with Firestore](https://firebase.google.com/docs/firestore/query-data/listen). > aside positive > -> **Note**: For a faster refresh, you can update only the changed documents instead of the whole list. To learn more, see [View changes between snapshots](https://firebase.google.com/docs/firestore/query-data/listen#view_changes_between_snapshots). +> **Note**: For a faster refresh, you can update only the changed documents instead of the whole list. To learn more, see [View changes between snapshots](https://firebase.google.com/docs/firestore/query-data/listen#view_changes_between_snapshots). 5. In the `lib/guest_book.dart` file, add the following import: @@ -929,14 +1072,14 @@ import 'guest_book_message.dart'; 6. In the `GuestBook` widget, add a list of messages as part of the configuration to connect this changing state to the user interface: -#### [lib/guest_book.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/guest_book.dart#L12) +#### [lib/guest_book.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/guest_book.dart#L12) ```dart class GuestBook extends StatefulWidget { // Modify the following line: const GuestBook({ - super.key, - required this.addMessage, + super.key, + required this.addMessage, required this.messages, }); @@ -950,7 +1093,7 @@ class GuestBook extends StatefulWidget { 7. In `_GuestBookState`, modify the `build` method as follows to expose this configuration: -#### [lib/guest_book.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/guest_book.dart#L26) +#### [lib/guest_book.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/guest_book.dart#L26) ```dart class _GuestBookState extends State { @@ -1016,11 +1159,16 @@ class _GuestBookState extends State { } ``` -You wrap the previous content of the `build()` method with a `Column` widget and then you add a [collection for](https://dart.dev/guides/language/language-tour#collection-operators) at the tail of the `Column`'s children to generate a new `Paragraph` for each message in the list of messages. +You wrap the previous content of the `build()` method with a `Column` widget and +then you add a [collection for][] at the tail of the `Column`'s children to +generate a new `Paragraph` for each message in the list of messages. + +[collection for]: https://dart.dev/guides/language/language-tour#collection-operators -8. Update the body of `HomePage` to correctly construct `GuestBook` with the new `messages` parameter: +8. Update the body of `HomePage` to correctly construct `GuestBook` with the + new `messages` parameter: -#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/home_page.dart#L48) +#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/home_page.dart#L48) ```dart Consumer( @@ -1042,43 +1190,61 @@ Consumer( ### Test message synchronization -Firestore automatically and instantly synchronizes data with clients subscribed to the database. +Firestore automatically and instantly synchronizes data with clients subscribed +to the database. Test message synchronization: -1. In the app, find the messages that you created earlier in the database. -2. Write new messages. They appear instantly. -3. Open your workspace in multiple windows or tabs. The messages sync in real time across the windows and tabs. -4. Optional: In the Firebase console's **Database** menu, manually delete, modify, or add new messages. All changes appear in the UI. + +1. In the app, find the messages that you created earlier in the database. +2. Write new messages. They appear instantly. +3. Open your workspace in multiple windows or tabs. The messages sync in real + time across the windows and tabs. +4. Optional: In the Firebase console **Database** menu, manually delete, + modify, or add new messages. All changes appear in the UI. Congratulations! You read Firestore documents in your app! #### App preview -|

The home screen of the app on Android with chat integration

| The home screen of the app on iOS with chat integration | -| --- | --- | -| The home screen of the app on web with chat integration | The home screen of the app on macOS with chat integration | - +|

The home screen of the app on Android with chat integration

| The home screen of the app on iOS with chat integration | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| The home screen of the app on web with chat integration | The home screen of the app on macOS with chat integration | ## Set up basic security rules + Duration: 05:00 -You initially set up Firestore to use test mode, which means that your database is open for reads and writes. However, you should only use test mode during early stages of development. As a best practice, you should set up security rules for your database as you develop your app. Security is integral to your app's structure and behavior. +You initially set up Firestore to use test mode, which means that your database +is open for reads and writes. However, you should only use test mode during +early stages of development. As a best practice, you should set up security +rules for your database as you develop your app. Security is integral to your +app's structure and behavior. -Firebase Security Rules let you control access to documents and collections in your database. The flexible rules syntax lets you create rules that match anything from all writes to the entire database to operations on a specific document. +Firebase Security Rules let you control access to documents and collections in +your database. The flexible rules syntax lets you create rules that match +anything from all writes to the entire database to operations on a specific +document. Set up basic security rules: -1. In the Firebase console's **Develop** menu, click **Database > Rules**. You should see the following default security rules and a warning about the rules being public: +1. In the Firebase console's **Develop** menu, click **Database > Rules**. You + should see the following default security rules and a warning about the + rules being public: 7767a2d2e64e7275.png > aside positive > -> To learn more about security rules, see [Firebase Security Rules](https://firebase.google.com/docs/rules) and [the Understanding Firebase Security Rules playlist on YouTube](https://www.youtube.com/watch?v=QEuu9X9L-MU&list=PLl-K7zZEsYLn8h1NyU_OV6dX8mBhH2s_L). +> To learn more about security rules, see [Firebase Security Rules][] and +> [the Understanding Firebase Security Rules playlist on YouTube][]. + +[Firebase Security Rules]: https://firebase.google.com/docs/rules +[the Understanding Firebase Security Rules playlist on YouTube]: https://www.youtube.com/watch?v=QEuu9X9L-MU&list=PLl-K7zZEsYLn8h1NyU_OV6dX8mBhH2s_L 2. Identify the collections to which the app writes data: -In `match /databases/{database}/documents`, identify the collection that you want to secure: +In `match /databases/{database}/documents`, identify the collection that you +want to secure: ```javascript rules_version = '2'; @@ -1090,9 +1256,11 @@ service cloud.firestore { } ``` -Because you used the Authentication UID as a field in each guestbook document, you can get the Authentication UID and verify that anyone attempting to write to the document has a matching Authentication UID. +Because you used the Authentication UID as a field in each guestbook document, +you can get the Authentication UID and verify that anyone attempting to write to +the document has a matching Authentication UID. -3. Add the read and write rules to your rule set: +3. Add the read and write rules to your rule set: ```javascript rules_version = '2'; @@ -1107,9 +1275,11 @@ service cloud.firestore { } ``` -Now, only signed-in users can read messages in the guest book, but only a message's author can edit a message. +Now, only signed-in users can read messages in the guest book, but only a +message's author can edit a message. -4. Add data validation to ensure that all the expected fields are present in the document: +4. Add data validation to ensure that all the expected fields are present in + the document: ```javascript rules_version = '2'; @@ -1127,19 +1297,24 @@ service cloud.firestore { } ``` - ## Bonus step: Practice what you've learned - ### Record an attendee's RSVP status -Right now, your app only allows people to chat when they're interested in the event. Also, the only way that you know whether someone's coming is when they say so in the chat. +Right now, your app only allows people to chat when they're interested in the +event. Also, the only way that you know whether someone's coming is when they +say so in the chat. -In this step, you get organized and let people know how many people are coming. You add a couple of capabilities to the app state. The first is the ability for a logged-in user to nominate whether they're attending. The second is a counter of how many people are attending. +In this step, you get organized and let people know how many people are coming. +You add a couple of capabilities to the app state. The first is the ability for +a logged-in user to nominate whether they're attending. The second is a counter +of how many people are attending. -1. In the `lib/app_state.dart` file, add the following lines to the accessors section of the `ApplicationState` so that the UI code can interact with this state: +1. In the `lib/app_state.dart` file, add the following lines to the accessors + section of the `ApplicationState` so that the UI code can interact with this + state: -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_09/lib/app_state.dart#L37) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_09/lib/app_state.dart#L37) ```dart int _attendees = 0; @@ -1162,7 +1337,7 @@ set attending(Attending attending) { 2. Update the `ApplicationState`'s `init()` method as follows: -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_09/lib/app_state.dart#L80) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_09/lib/app_state.dart#L80) ```dart Future init() async { @@ -1186,7 +1361,8 @@ set attending(Attending attending) { FirebaseAuth.instance.userChanges().listen((user) { if (user != null) { - _loginState = ApplicationLoginState.loggedIn; + _loggedIn = true; + _emailVerified = user.emailVerified; _guestBookSubscription = FirebaseFirestore.instance .collection('guestbook') .orderBy('timestamp', descending: true) @@ -1222,7 +1398,8 @@ set attending(Attending attending) { }); // ...to here. } else { - _loginState = ApplicationLoginState.loggedOut; + _loggedIn = false; + _emailVerified = false; _guestBookMessages = []; _guestBookSubscription?.cancel(); _attendingSubscription?.cancel(); // new @@ -1232,19 +1409,22 @@ set attending(Attending attending) { } ``` -This code adds an always-subscribed query to determine the number of attendees and a second query that's only active while a user is logged in to determine whether the user is attending. +This code adds an always-subscribed query to determine the number of attendees +and a second query that's only active while a user is logged in to determine +whether the user is attending. -3. Add the following enumeration at the top of the `lib/app_state.dart` file. +3. Add the following enumeration at the top of the `lib/app_state.dart` file. -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_09/lib/app_state.dart#L5) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_09/lib/app_state.dart#L5) ```dart enum Attending { yes, no, unknown } ``` -4. Create a new file `yes_no_selection.dart`, define a new widget that acts like radio buttons: +4. Create a new file `yes_no_selection.dart`, define a new widget that acts + like radio buttons: -#### [lib/yes_no_selection.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_09/lib/yes_no_selection.dart) +#### [lib/yes_no_selection.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_09/lib/yes_no_selection.dart) ```dart import 'package:flutter/material.dart'; @@ -1317,11 +1497,16 @@ class YesNoSelection extends StatelessWidget { } ``` -It starts in an indeterminate state with neither **Yes** nor **No** selected. Once the user selects whether they're attending, you show that option highlighted with a filled button and the other option recedes with a flat rendering. +It starts in an indeterminate state with neither **Yes** nor **No** selected. +Once the user selects whether they're attending, you show that option +highlighted with a filled button and the other option recedes with a flat +rendering. -5. Update `HomePage`'s `build()` method to take advantage of `YesNoSelection`, enable a logged-in user to nominate whether they're attending, and display the number of attendees for the event: +5. Update `HomePage`'s `build()` method to take advantage of `YesNoSelection`, + enable a logged-in user to nominate whether they're attending, and display + the number of attendees for the event: -#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_09/lib/home_page.dart#L56) +#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_09/lib/home_page.dart#L56) ```dart Consumer( @@ -1356,9 +1541,13 @@ Consumer( ### Add rules -You already set up some rules, so the data that you add with the buttons will be rejected. You need to update the rules to allow additions to the `attendees` collection. +You already set up some rules, so the data that you add with the buttons will be +rejected. You need to update the rules to allow additions to the `attendees` +collection. -1. In the `attendees` collection, grab the Authentication UID that you used as the document name and verify that the submitter's `uid` is the same as the document they're writing: +1. In the `attendees` collection, grab the Authentication UID that you used as + the document name and verify that the submitter's `uid` is the same as the + document they're writing: ```javascript rules_version = '2'; @@ -1373,9 +1562,11 @@ service cloud.firestore { } ``` -This lets everyone read the attendees list because there's no private data there, but only the creator can update it. +This lets everyone read the attendees list because there's no private data +there, but only the creator can update it. -2. Add data validation to ensure that all the expected fields are present in the document: +2. Add data validation to ensure that all the expected fields are present in + the document: ```javascript rules_version = '2'; @@ -1396,10 +1587,9 @@ service cloud.firestore { #### App preview -|

The home screen of the app on Android

| The home screen of the app on iOS | -| --- | --- | -| The home screen of the app on web | The home screen of the app on macOS | - +|

The home screen of the app on Android

| The home screen of the app on iOS | +| ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | +| The home screen of the app on web | The home screen of the app on macOS | ## Congratulations! @@ -1407,10 +1597,10 @@ You used Firebase to build an interactive, real-time web app! ### Learn more -* [Firebase](https://firebase.google.com) -* [Flutter](https://flutter.dev/) -* [FlutterFire](https://firebase.flutter.dev/) -* [Firebase YouTube channel](https://www.youtube.com/user/Firebase/featured) -* [Flutter YouTube channel](https://www.youtube.com/FlutterDev) -* [Firestore web codelab](https://codelabs.developers.google.com/codelabs/firestore-web) -* [Get to know Firestore YouTube playlist](https://www.youtube.com/watch?v=v_hR4K4auoQ&list=PLl-K7zZEsYLluG5MCVEzXAQ7ACZBCuZgZ&index=2&t=0s) +- [Firebase](https://firebase.google.com) +- [Flutter](https://flutter.dev/) +- [FlutterFire](https://firebase.flutter.dev/) +- [Firebase YouTube channel](https://www.youtube.com/user/Firebase/featured) +- [Flutter YouTube channel](https://www.youtube.com/FlutterDev) +- [Firestore web codelab](https://codelabs.developers.google.com/codelabs/firestore-web) +- [Get to know Firestore YouTube playlist](https://www.youtube.com/watch?v=v_hR4K4auoQ&list=PLl-K7zZEsYLluG5MCVEzXAQ7ACZBCuZgZ&index=2&t=0s) From 0c61b70fb24d7bb4f5aa3564304c65b2d7d0c35e Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Thu, 28 Aug 2025 16:01:14 +1000 Subject: [PATCH 3/7] Update firebase-get-to-know-flutter/steps/index.lab.md Co-authored-by: Parker Lougheed --- firebase-get-to-know-flutter/steps/index.lab.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firebase-get-to-know-flutter/steps/index.lab.md b/firebase-get-to-know-flutter/steps/index.lab.md index c65f2ab9f4..0de804c6a2 100644 --- a/firebase-get-to-know-flutter/steps/index.lab.md +++ b/firebase-get-to-know-flutter/steps/index.lab.md @@ -1163,7 +1163,7 @@ You wrap the previous content of the `build()` method with a `Column` widget and then you add a [collection for][] at the tail of the `Column`'s children to generate a new `Paragraph` for each message in the list of messages. -[collection for]: https://dart.dev/guides/language/language-tour#collection-operators +[collection for]: https://dart.dev/language/collections#for-element 8. Update the body of `HomePage` to correctly construct `GuestBook` with the new `messages` parameter: From 0a5f7222b65f0ea9ee996f8daa241846007b42ee Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Thu, 28 Aug 2025 16:01:56 +1000 Subject: [PATCH 4/7] Update firebase-get-to-know-flutter/steps/index.lab.md Co-authored-by: Parker Lougheed --- firebase-get-to-know-flutter/steps/index.lab.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firebase-get-to-know-flutter/steps/index.lab.md b/firebase-get-to-know-flutter/steps/index.lab.md index 0de804c6a2..3152c88925 100644 --- a/firebase-get-to-know-flutter/steps/index.lab.md +++ b/firebase-get-to-know-flutter/steps/index.lab.md @@ -781,7 +781,7 @@ Also note the way that the widgets are laid out, you have a `Row` with a `TextFormField` to fill any extra space in the row. To better understand why this is required, see [Understanding constraints][]. -[Understanding constraints]: https://flutter.dev/docs/development/ui/layout/constraints +[Understanding constraints]: https://docs.flutter.dev/ui/layout/constraints Now that you have a widget that enables the user to enter some text to add to the Guest Book, you need to get it on the screen. From 6d3328eead4b1b503f617ce803b00a450fe2ca12 Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Thu, 28 Aug 2025 16:02:05 +1000 Subject: [PATCH 5/7] Update firebase-get-to-know-flutter/steps/index.lab.md Co-authored-by: Parker Lougheed --- firebase-get-to-know-flutter/steps/index.lab.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firebase-get-to-know-flutter/steps/index.lab.md b/firebase-get-to-know-flutter/steps/index.lab.md index 3152c88925..5a75c2fd19 100644 --- a/firebase-get-to-know-flutter/steps/index.lab.md +++ b/firebase-get-to-know-flutter/steps/index.lab.md @@ -33,7 +33,7 @@ and iOS. - Familiarity with Flutter - [The Flutter SDK](https://flutter.dev/get-started/install/) -- [A text editor of your choice](https://flutter.dev/get-started/editor/) +- [A text editor of your choice](https://docs.flutter.dev/tools/editors) ### What you'll learn From 2d184b33c5c233a0ed105a597ba9d52d9b31ed9b Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Thu, 28 Aug 2025 16:02:30 +1000 Subject: [PATCH 6/7] Update firebase-get-to-know-flutter/steps/index.lab.md Co-authored-by: Parker Lougheed --- firebase-get-to-know-flutter/steps/index.lab.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firebase-get-to-know-flutter/steps/index.lab.md b/firebase-get-to-know-flutter/steps/index.lab.md index 5a75c2fd19..ec049c2f49 100644 --- a/firebase-get-to-know-flutter/steps/index.lab.md +++ b/firebase-get-to-know-flutter/steps/index.lab.md @@ -59,7 +59,7 @@ You also need the following: plugins, such as [Android Studio](https://developer.android.com/studio) or [Visual Studio Code](https://code.visualstudio.com/). - The latest `stable` version of - [Flutter](https://flutter.dev/docs/get-started/web#set-up) or `beta` if you + [Flutter](https://docs.flutter.dev/get-started/install) or `beta` if you enjoy living on the edge. - A Google Account for the creation and management of your Firebase project. - The [`Firebase` CLI](https://firebase.google.com/docs/cli) logged in to your From 340283a63d84afa875cef9ac562092b1524c201c Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Thu, 28 Aug 2025 16:05:18 +1000 Subject: [PATCH 7/7] `master` -> `main` --- .../steps/index.lab.md | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/firebase-get-to-know-flutter/steps/index.lab.md b/firebase-get-to-know-flutter/steps/index.lab.md index ec049c2f49..3b509394b8 100644 --- a/firebase-get-to-know-flutter/steps/index.lab.md +++ b/firebase-get-to-know-flutter/steps/index.lab.md @@ -318,7 +318,7 @@ Flutter on macOS builds fully sandboxed apps. As this app integrates with the network to communicate with the Firebase servers, you need to configure your app with network client privileges. -#### [macos/Runner/DebugProfile.entitlements](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_04/macos/Runner/DebugProfile.entitlements) +#### [macos/Runner/DebugProfile.entitlements](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_04/macos/Runner/DebugProfile.entitlements) ```xml @@ -338,7 +338,7 @@ with network client privileges. ``` -#### [macos/Runner/Release.entitlements](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_04/macos/Runner/Release.entitlements) +#### [macos/Runner/Release.entitlements](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_04/macos/Runner/Release.entitlements) ```xml @@ -377,7 +377,7 @@ widgets: 1. Create a new file named `app_state.dart` with the following content: -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_05/lib/app_state.dart#L1) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_05/lib/app_state.dart#L1) ```dart import 'package:firebase_auth/firebase_auth.dart' @@ -432,7 +432,7 @@ package, which is a great way to quickly bootstrap login screens in your apps. 1. Modify the imports at the top of the `lib/main.dart` file: -#### [lib/main.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_05/lib/main.dart#L1) +#### [lib/main.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_05/lib/main.dart#L1) ```dart import 'package:firebase_ui_auth/firebase_ui_auth.dart'; // new @@ -447,7 +447,7 @@ import 'home_page.dart'; 2. Connect the app state with the app initialization and then add the authentication flow to `HomePage`: -#### [lib/main.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_05/lib/main.dart#L14) +#### [lib/main.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_05/lib/main.dart#L14) ```dart void main() { @@ -471,7 +471,7 @@ to redisplay dependent widgets. 3. Update your app to handle navigation to different screens that `FirebaseUI` provides for you, by creating a `GoRouter` configuration: -#### [lib/main.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_05/lib/main.dart#L23) +#### [lib/main.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_05/lib/main.dart#L23) ```dart // Add GoRouter configuration outside the App class @@ -584,7 +584,7 @@ different screen, such as profile. 4. In the `HomePage` class's build method, integrate the app state with the `AuthFunc` widget: -#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_05/lib/home_page.dart#L14) +#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_05/lib/home_page.dart#L14) ```dart import 'package:firebase_auth/firebase_auth.dart' // new @@ -699,7 +699,7 @@ that connects these elements with the database. 1. Create a new file named `guest_book.dart`, add a `GuestBook` stateful widget to construct the UI elements of a message field and a send button: -#### [lib/guest_book.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_06/lib/guest_book.dart) +#### [lib/guest_book.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_06/lib/guest_book.dart) ```dart import 'dart:async'; @@ -820,7 +820,7 @@ auto-generated unique ID that Authentication gives for all logged-in users. - In the `lib/app_state.dart` file, add the `addMessageToGuestBook` method. You connect this capability with the user interface in the next step. -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_06/lib/app_state.dart#L41) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_06/lib/app_state.dart#L41) ```dart import 'package:cloud_firestore/cloud_firestore.dart'; // new @@ -864,7 +864,7 @@ is connect the two. - In the `lib/home_page.dart` file, make the following change to the `HomePage` widget: -#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_06/lib/home_page.dart#L15) +#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_06/lib/home_page.dart#L15) ```dart import 'package:firebase_auth/firebase_auth.dart' @@ -972,7 +972,7 @@ state that listens for newly added messages from the app. 1. Create a new file `guest_book_message.dart`, add the following class to expose a structured view of the data that you store in Firestore. -#### [lib/guest_book_message.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/guest_book_message.dart) +#### [lib/guest_book_message.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/guest_book_message.dart) ```dart class GuestBookMessage { @@ -985,7 +985,7 @@ class GuestBookMessage { 2. In the `lib/app_state.dart` file, add the following imports: -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/app_state.dart#L1) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/app_state.dart#L1) ```dart import 'dart:async'; // new @@ -1003,7 +1003,7 @@ import 'guest_book_message.dart'; // new 3. In section of `ApplicationState` where you define state and getters, add the following lines: -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/app_state.dart#L22) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/app_state.dart#L22) ```dart bool _loggedIn = false; @@ -1018,7 +1018,7 @@ import 'guest_book_message.dart'; // new 4. In the initialization section of `ApplicationState`, add the following lines to subscribe to a query over the document collection when a user logs in and unsubscribe when they log out: -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/app_state.dart#L29) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/app_state.dart#L29) ```dart Future init() async { @@ -1072,7 +1072,7 @@ import 'guest_book_message.dart'; 6. In the `GuestBook` widget, add a list of messages as part of the configuration to connect this changing state to the user interface: -#### [lib/guest_book.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/guest_book.dart#L12) +#### [lib/guest_book.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/guest_book.dart#L12) ```dart class GuestBook extends StatefulWidget { @@ -1093,7 +1093,7 @@ class GuestBook extends StatefulWidget { 7. In `_GuestBookState`, modify the `build` method as follows to expose this configuration: -#### [lib/guest_book.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/guest_book.dart#L26) +#### [lib/guest_book.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/guest_book.dart#L26) ```dart class _GuestBookState extends State { @@ -1168,7 +1168,7 @@ generate a new `Paragraph` for each message in the list of messages. 8. Update the body of `HomePage` to correctly construct `GuestBook` with the new `messages` parameter: -#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_07/lib/home_page.dart#L48) +#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_07/lib/home_page.dart#L48) ```dart Consumer( @@ -1314,7 +1314,7 @@ of how many people are attending. section of the `ApplicationState` so that the UI code can interact with this state: -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_09/lib/app_state.dart#L37) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_09/lib/app_state.dart#L37) ```dart int _attendees = 0; @@ -1337,7 +1337,7 @@ set attending(Attending attending) { 2. Update the `ApplicationState`'s `init()` method as follows: -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_09/lib/app_state.dart#L80) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_09/lib/app_state.dart#L80) ```dart Future init() async { @@ -1415,7 +1415,7 @@ whether the user is attending. 3. Add the following enumeration at the top of the `lib/app_state.dart` file. -#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_09/lib/app_state.dart#L5) +#### [lib/app_state.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_09/lib/app_state.dart#L5) ```dart enum Attending { yes, no, unknown } @@ -1424,7 +1424,7 @@ enum Attending { yes, no, unknown } 4. Create a new file `yes_no_selection.dart`, define a new widget that acts like radio buttons: -#### [lib/yes_no_selection.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_09/lib/yes_no_selection.dart) +#### [lib/yes_no_selection.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_09/lib/yes_no_selection.dart) ```dart import 'package:flutter/material.dart'; @@ -1506,7 +1506,7 @@ rendering. enable a logged-in user to nominate whether they're attending, and display the number of attendees for the event: -#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/master/firebase-get-to-know-flutter/step_09/lib/home_page.dart#L56) +#### [lib/home_page.dart](https://github.com/flutter/codelabs/blob/main/firebase-get-to-know-flutter/step_09/lib/home_page.dart#L56) ```dart Consumer(