diff --git a/adaptive_app/codelab_rebuild.yaml b/adaptive_app/codelab_rebuild.yaml index c60d0eadca..454bd5d349 100644 --- a/adaptive_app/codelab_rebuild.yaml +++ b/adaptive_app/codelab_rebuild.yaml @@ -19,6 +19,21 @@ steps: avoid_print: false - name: Remove README rm: adaptive_app/README.md + - name: Add .gemini directory + mkdir: adaptive_app/.gemini + - name: Add .gemini/settings.json + path: adaptive_app/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add .vscode directory mkdir: adaptive_app/.vscode - name: Add .vscode/launch.json @@ -175,10 +190,10 @@ steps: // utility in the flutter_test package. For example, you can send tap and scroll // gestures. You can also use WidgetTester to find child widgets in the widget // tree, read text, and verify that the values of widget properties are correct. - + import 'package:adaptive_app/main.dart'; import 'package:flutter_test/flutter_test.dart'; - + void main() { testWidgets('Counter increments smoke test', (tester) async { // Build our app and trigger a frame. @@ -189,21 +204,24 @@ steps: path: adaptive_app flutter: pub upgrade --major-versions - name: Build iOS simulator bundle - platforms: [ macos ] + platforms: [macos] path: adaptive_app flutter: build ios --simulator - name: Build macOS app - platforms: [ macos ] + platforms: [macos] path: adaptive_app flutter: build macos - name: Build Linux app - platforms: [ linux ] + platforms: [linux] path: adaptive_app flutter: build linux - name: Build Windows app - platforms: [ windows ] + platforms: [windows] path: adaptive_app flutter: build windows + - name: Build Web app + path: adaptive_app + flutter: build web - name: Copy step_03 copydir: from: adaptive_app @@ -218,6 +236,9 @@ steps: - name: Add googleapis http provider url_launcher flex_color_scheme go_router path: adaptive_app flutter: pub add googleapis http provider url_launcher flex_color_scheme go_router + - name: Update flex_color_scheme to flex_color_scheme:^8.2.1-dev.1 + path: adaptive_app + flutter: pub add flex_color_scheme:^8.2.1-dev.1 - name: Patch android/app/src/main/AndroidManifest.xml path: adaptive_app/android/app/src/main/AndroidManifest.xml patch-u: | @@ -711,17 +732,23 @@ steps: }); } - name: Rebuild ios/Podfile.lock - platforms: [ macos ] + platforms: [macos] path: adaptive_app/ios pod: install - name: Rebuild macos/Podfile.lock - platforms: [ macos ] + platforms: [macos] path: adaptive_app/macos pod: install + - name: Build Web app + path: adaptive_app + flutter: build web - name: Copy step_04 copydir: - from: adaptive_app + from: adaptive_app to: step_04 + - name: Flutter clean + path: step_04 + flutter: clean - name: step_05 steps: - name: Remove generated code @@ -737,12 +764,12 @@ steps: @@ -9,9 +9,9 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:provider/provider.dart'; - + +import 'src/adaptive_playlists.dart'; import 'src/app_state.dart'; import 'src/playlist_details.dart'; -import 'src/playlists.dart'; - + // From https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw const flutterDevAccountId = 'UCwXdFgeE9KYzlDdR7TG9cMw'; @@ -24,7 +24,7 @@ final _router = GoRouter( @@ -773,20 +800,20 @@ steps: +++ a/adaptive_app/step_05/lib/src/playlists.dart @@ -3,44 +3,71 @@ // found in the LICENSE file. - + import 'package:flutter/material.dart'; -import 'package:go_router/go_router.dart'; import 'package:googleapis/youtube/v3.dart'; import 'package:provider/provider.dart'; - + import 'app_state.dart'; - + class Playlists extends StatelessWidget { - const Playlists({super.key}); + const Playlists({super.key, required this.playlistSelected}); + + final PlaylistsListSelected playlistSelected; - + @override Widget build(BuildContext context) { - return Scaffold( @@ -803,7 +830,7 @@ steps: + if (playlists.isEmpty) { + return const Center(child: CircularProgressIndicator()); + } - + - return _PlaylistsListView(items: playlists); - }, - ), @@ -815,7 +842,7 @@ steps: ); } } - + -class _PlaylistsListView extends StatelessWidget { - const _PlaylistsListView({required this.items}); +typedef PlaylistsListSelected = void Function(Playlist playlist); @@ -825,7 +852,7 @@ steps: + required this.items, + required this.playlistSelected, + }); - + final List items; + final PlaylistsListSelected playlistSelected; + @@ -847,7 +874,7 @@ steps: + _scrollController.dispose(); + super.dispose(); + } - + @override Widget build(BuildContext context) { return ListView.builder( @@ -882,7 +909,7 @@ steps: --- b/adaptive_app/step_05/lib/src/playlist_details.dart +++ a/adaptive_app/step_05/lib/src/playlist_details.dart @@ -20,32 +20,50 @@ class PlaylistDetails extends StatelessWidget { - + @override Widget build(BuildContext context) { - return Scaffold( @@ -899,7 +926,7 @@ steps: + if (playlistItems.isEmpty) { + return const Center(child: CircularProgressIndicator()); + } - + - return _PlaylistDetailsListView(playlistItems: playlistItems); - }, - ), @@ -908,12 +935,12 @@ steps: ); } } - + -class _PlaylistDetailsListView extends StatelessWidget { +class _PlaylistDetailsListView extends StatefulWidget { const _PlaylistDetailsListView({required this.playlistItems}); final List playlistItems; - + + @override + State<_PlaylistDetailsListView> createState() => + _PlaylistDetailsListViewState(); @@ -1042,10 +1069,16 @@ steps: ); } } + - name: Build Web app + path: adaptive_app + flutter: build web - name: Copy step_05 copydir: from: adaptive_app to: step_05 + - name: Flutter clean + path: step_05 + flutter: clean - name: step_06 steps: - name: Remove generated code @@ -1062,6 +1095,21 @@ steps: - name: Upgrade dart dependencies path: adaptive_app/yt_cors_proxy dart: pub upgrade --major-versions + - name: Add .gemini directory + mkdir: adaptive_app/yt_cors_proxy/.gemini + - name: Add .gemini/settings.json + path: adaptive_app/yt_cors_proxy/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Patch yt_cors_proxy/pubspec.yaml path: adaptive_app/yt_cors_proxy/pubspec.yaml patch-u: | @@ -1088,7 +1136,7 @@ steps: // Copyright 2022 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - + import 'dart:async'; import 'dart:io'; @@ -1139,11 +1187,11 @@ steps: @@ -7,6 +7,8 @@ import 'package:googleapis/youtube/v3.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/link.dart'; - + +import 'adaptive_image.dart'; +import 'adaptive_text.dart'; import 'app_state.dart'; - + class PlaylistDetails extends StatelessWidget { @@ -72,7 +74,9 @@ class _PlaylistDetailsListViewState extends State<_PlaylistDetailsListView> { alignment: Alignment.center, @@ -1182,10 +1230,10 @@ steps: @@ -6,6 +6,7 @@ import 'package:flutter/material.dart'; import 'package:googleapis/youtube/v3.dart'; import 'package:provider/provider.dart'; - + +import 'adaptive_image.dart'; import 'app_state.dart'; - + class Playlists extends StatelessWidget { @@ -71,7 +72,7 @@ class _PlaylistsListViewState extends State<_PlaylistsListView> { return Padding( @@ -1246,17 +1294,20 @@ steps: }; } } + - name: Build Web app + path: adaptive_app + flutter: build web - name: Copy step_06 copydir: from: adaptive_app to: step_06 + - name: Flutter clean + path: step_06 + flutter: clean - name: step_07 steps: - name: Remove generated code rmdir: step_07 - - name: Remove http package - path: adaptive_app - flutter: pub remove http - name: flutter clean path: adaptive_app flutter: clean @@ -1265,18 +1316,7 @@ steps: flutter: pub get - name: Add googleapis_auth google_sign_in extension_google_sign_in_as_googleapis_auth path: adaptive_app - flutter: pub add googleapis_auth google_sign_in extension_google_sign_in_as_googleapis_auth http - - name: Patch macos/Podfile - path: adaptive_app/macos/Podfile - patch-u: | - --- b/adaptive_app/step_07/macos/Podfile - +++ a/adaptive_app/step_07/macos/Podfile - @@ -1,4 +1,4 @@ - -platform :osx, '10.14' - +platform :osx, '10.15' - - # CocoaPods analytics sends network stats synchronously affecting flutter build latency. - ENV['COCOAPODS_DISABLE_STATS'] = 'true' + flutter: pub add googleapis_auth google_sign_in:^6.3.0 extension_google_sign_in_as_googleapis_auth:^2.0.13 - name: Patch .gitignore path: adaptive_app/.gitignore patch-u: | @@ -1469,7 +1509,7 @@ steps: @@ -2,22 +2,25 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - + -import 'dart:io'; - import 'package:flex_color_scheme/flex_color_scheme.dart'; @@ -1477,17 +1517,17 @@ steps: import 'package:go_router/go_router.dart'; +import 'package:googleapis_auth/googleapis_auth.dart'; import 'package:provider/provider.dart'; - + +import 'src/adaptive_login.dart'; import 'src/adaptive_playlists.dart'; import 'src/app_state.dart'; import 'src/playlist_details.dart'; - + -// From https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw -const flutterDevAccountId = 'UCwXdFgeE9KYzlDdR7TG9cMw'; +// From https://developers.google.com/youtube/v3/guides/auth/installed-apps#identify-access-scopes +final scopes = ['https://www.googleapis.com/auth/youtube.readonly']; - + -// TODO: Replace with your YouTube API Key -const youTubeApiKey = 'AIzaNotAnApiKey'; +// TODO: Replace with your Client ID and Client Secret for Desktop configuration @@ -1495,7 +1535,7 @@ steps: + 'TODO-Client-ID.apps.googleusercontent.com', + 'TODO-Client-secret', +); - + final _router = GoRouter( routes: [ @@ -26,7 +29,24 @@ final _router = GoRouter( @@ -1525,7 +1565,7 @@ steps: builder: (context, state) { @@ -44,17 +64,9 @@ final _router = GoRouter( ); - + void main() { - if (youTubeApiKey == 'AIzaNotAnApiKey') { - print('youTubeApiKey has not been configured.'); @@ -1585,7 +1625,7 @@ steps: @@ -8,23 +8,22 @@ import 'package:flutter/foundation.dart'; import 'package:googleapis/youtube/v3.dart'; import 'package:http/http.dart' as http; - + -class FlutterDevPlaylists extends ChangeNotifier { - FlutterDevPlaylists({ - required String flutterDevAccountId, @@ -1597,13 +1637,13 @@ steps: + _api = YouTubeApi(client); _loadPlaylists(); } - + + bool get isLoggedIn => _api != null; + Future _loadPlaylists() async { String? nextPageToken; _playlists.clear(); - + do { - final response = await _api.playlists.list( + final response = await _api!.playlists.list( @@ -1616,11 +1656,11 @@ steps: @@ -39,8 +38,7 @@ class FlutterDevPlaylists extends ChangeNotifier { } while (nextPageToken != null); } - + - final String _flutterDevAccountId; - late final YouTubeApi _api; + YouTubeApi? _api; - + final List _playlists = []; List get playlists => UnmodifiableListView(_playlists); @@ -57,7 +55,7 @@ class FlutterDevPlaylists extends ChangeNotifier { @@ -1661,7 +1701,7 @@ steps: --- b/adaptive_app/step_07/lib/src/playlist_details.dart +++ a/adaptive_app/step_07/lib/src/playlist_details.dart @@ -22,7 +22,7 @@ class PlaylistDetails extends StatelessWidget { - + @override Widget build(BuildContext context) { - return Consumer( @@ -1675,7 +1715,7 @@ steps: --- b/adaptive_app/step_07/lib/src/playlists.dart +++ a/adaptive_app/step_07/lib/src/playlists.dart @@ -16,7 +16,7 @@ class Playlists extends StatelessWidget { - + @override Widget build(BuildContext context) { - return Consumer( @@ -1708,14 +1748,14 @@ steps: import 'package:googleapis/youtube/v3.dart'; +import 'package:http/src/client.dart'; import 'package:provider/provider.dart'; - + -class FakeFlutterDevPlaylists extends ChangeNotifier - implements FlutterDevPlaylists { +class FakeAuthedUserPlaylists extends ChangeNotifier + implements AuthedUserPlaylists { @override List playlistItems({required String playlistId}) => []; - + @override List get playlists => []; + @@ -1725,7 +1765,7 @@ steps: + @override + bool get isLoggedIn => true; } - + void main() { testWidgets('smoke test', (tester) async { // Build our app and trigger a frame. @@ -1745,7 +1785,7 @@ steps: @@ -29,6 +29,9 @@ - + + + + @@ -1753,32 +1793,32 @@ steps: - name: Rebuild ios/Podfile.lock - platforms: [ macos ] + platforms: [macos] path: adaptive_app/ios pod: install - name: Rebuild macos/Podfile.lock - platforms: [ macos ] + platforms: [macos] path: adaptive_app/macos pod: install + - name: Build Web app + path: adaptive_app + flutter: build web - name: Build iOS simulator bundle - platforms: [ macos ] + platforms: [macos] path: adaptive_app flutter: build ios --simulator - name: Build macOS app - platforms: [ macos ] + platforms: [macos] path: adaptive_app flutter: build macos - name: Build Linux app - platforms: [ linux ] + platforms: [linux] path: adaptive_app flutter: build linux - name: Build Windows app - platforms: [ windows ] + platforms: [windows] path: adaptive_app flutter: build windows - - name: Build Web app - path: adaptive_app - flutter: build web - name: Copy step_07 copydir: from: adaptive_app @@ -1787,4 +1827,4 @@ steps: path: step_07 flutter: clean - name: Cleanup - rmdir: adaptive_app \ No newline at end of file + rmdir: adaptive_app diff --git a/adaptive_app/step_03/.gemini/settings.json b/adaptive_app/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/adaptive_app/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/adaptive_app/step_03/.gitignore b/adaptive_app/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/adaptive_app/step_03/.gitignore +++ b/adaptive_app/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/adaptive_app/step_03/android/build.gradle.kts b/adaptive_app/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/adaptive_app/step_03/android/build.gradle.kts +++ b/adaptive_app/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/adaptive_app/step_03/android/settings.gradle.kts b/adaptive_app/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/adaptive_app/step_03/android/settings.gradle.kts +++ b/adaptive_app/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/adaptive_app/step_03/ios/Flutter/AppFrameworkInfo.plist b/adaptive_app/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/adaptive_app/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/adaptive_app/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/adaptive_app/step_03/ios/Runner.xcodeproj/project.pbxproj b/adaptive_app/step_03/ios/Runner.xcodeproj/project.pbxproj index bb459227ae..47831bd361 100644 --- a/adaptive_app/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/adaptive_app/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/adaptive_app/step_03/linux/runner/my_application.cc b/adaptive_app/step_03/linux/runner/my_application.cc index c839eec643..b1c20a8cc6 100644 --- a/adaptive_app/step_03/linux/runner/my_application.cc +++ b/adaptive_app/step_03/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/adaptive_app/step_03/macos/Runner.xcodeproj/project.pbxproj b/adaptive_app/step_03/macos/Runner.xcodeproj/project.pbxproj index c8d53e0551..ec52974bac 100644 --- a/adaptive_app/step_03/macos/Runner.xcodeproj/project.pbxproj +++ b/adaptive_app/step_03/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/adaptive_app/step_03/pubspec.yaml b/adaptive_app/step_03/pubspec.yaml index a5bf90d68c..ff1c884cf7 100644 --- a/adaptive_app/step_03/pubspec.yaml +++ b/adaptive_app/step_03/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions diff --git a/adaptive_app/step_04/.gemini/settings.json b/adaptive_app/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/adaptive_app/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/adaptive_app/step_04/.gitignore b/adaptive_app/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/adaptive_app/step_04/.gitignore +++ b/adaptive_app/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/adaptive_app/step_04/android/build.gradle.kts b/adaptive_app/step_04/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/adaptive_app/step_04/android/build.gradle.kts +++ b/adaptive_app/step_04/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/adaptive_app/step_04/android/settings.gradle.kts b/adaptive_app/step_04/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/adaptive_app/step_04/android/settings.gradle.kts +++ b/adaptive_app/step_04/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/adaptive_app/step_04/ios/Flutter/AppFrameworkInfo.plist b/adaptive_app/step_04/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/adaptive_app/step_04/ios/Flutter/AppFrameworkInfo.plist +++ b/adaptive_app/step_04/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/adaptive_app/step_04/ios/Podfile b/adaptive_app/step_04/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/adaptive_app/step_04/ios/Podfile +++ b/adaptive_app/step_04/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/adaptive_app/step_04/ios/Runner.xcodeproj/project.pbxproj b/adaptive_app/step_04/ios/Runner.xcodeproj/project.pbxproj index da68fa7d62..90b81ddee4 100644 --- a/adaptive_app/step_04/ios/Runner.xcodeproj/project.pbxproj +++ b/adaptive_app/step_04/ios/Runner.xcodeproj/project.pbxproj @@ -14,8 +14,8 @@ 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 */; }; - A1C89E061BAEC57793AF0423 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7913B5BE734E5B5842A77895 /* Pods_RunnerTests.framework */; }; - CF0777223D629493332F6619 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D1B4FC934C461D51AE27A75 /* Pods_Runner.framework */; }; + D919CBDEA8199BF7F3037A0F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BAD4B0D9B4AF560DF64D9263 /* Pods_Runner.framework */; }; + EE4E0321C6D207299A309F85 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D54E47CD81DC1ACCE65DE836 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,21 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0E9B8C43E0B476A3CE78C911 /* 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 = ""; }; 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 = ""; }; + 2A67537E1535AA793826B3DF /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 3D1B4FC934C461D51AE27A75 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 40686FFCE5908685B6BBA593 /* 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 = ""; }; 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 = ""; }; - 7913B5BE734E5B5842A77895 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 88EEBDF0A90DBC07B005080D /* 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 = ""; }; - 89B4DBAA2962EA0F8405D81F /* 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 = ""; }; - 8A4EAC319F0D3F4F96F72BC5 /* 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 = ""; }; - 958F061A923542E7B1981278 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -64,15 +59,20 @@ 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 = ""; }; - E83900C7BBE4621C9E5E0B94 /* 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 = ""; }; + BAD4B0D9B4AF560DF64D9263 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C8A8B46A8A11BC12852BCCC3 /* 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 = ""; }; + D54E47CD81DC1ACCE65DE836 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E0B57B214410ED2D0D1B4F65 /* 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 = ""; }; + ECD5DBF924B10E098CD32513 /* 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 = ""; }; + FAF26331C8E9E35EF24B441F /* 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 */ - 12EEC02CDC30735211CB339F /* Frameworks */ = { + 12F33DDBDEEA8B4B36AF936F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A1C89E061BAEC57793AF0423 /* Pods_RunnerTests.framework in Frameworks */, + EE4E0321C6D207299A309F85 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,36 +80,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CF0777223D629493332F6619 /* Pods_Runner.framework in Frameworks */, + D919CBDEA8199BF7F3037A0F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 204983CF09BAB82168F83FFA /* Pods */ = { - isa = PBXGroup; - children = ( - E83900C7BBE4621C9E5E0B94 /* Pods-Runner.debug.xcconfig */, - 88EEBDF0A90DBC07B005080D /* Pods-Runner.release.xcconfig */, - 0E9B8C43E0B476A3CE78C911 /* Pods-Runner.profile.xcconfig */, - 8A4EAC319F0D3F4F96F72BC5 /* Pods-RunnerTests.debug.xcconfig */, - 89B4DBAA2962EA0F8405D81F /* Pods-RunnerTests.release.xcconfig */, - 958F061A923542E7B1981278 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - 209968BCF8BE0521E877B0C6 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 3D1B4FC934C461D51AE27A75 /* Pods_Runner.framework */, - 7913B5BE734E5B5842A77895 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 204983CF09BAB82168F83FFA /* Pods */, - 209968BCF8BE0521E877B0C6 /* Frameworks */, + DF41E4CC229A1E4D29531112 /* Pods */, + CD42BD1304B063555D1E6C1A /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + CD42BD1304B063555D1E6C1A /* Frameworks */ = { + isa = PBXGroup; + children = ( + BAD4B0D9B4AF560DF64D9263 /* Pods_Runner.framework */, + D54E47CD81DC1ACCE65DE836 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + DF41E4CC229A1E4D29531112 /* Pods */ = { + isa = PBXGroup; + children = ( + E0B57B214410ED2D0D1B4F65 /* Pods-Runner.debug.xcconfig */, + 40686FFCE5908685B6BBA593 /* Pods-Runner.release.xcconfig */, + ECD5DBF924B10E098CD32513 /* Pods-Runner.profile.xcconfig */, + FAF26331C8E9E35EF24B441F /* Pods-RunnerTests.debug.xcconfig */, + 2A67537E1535AA793826B3DF /* Pods-RunnerTests.release.xcconfig */, + C8A8B46A8A11BC12852BCCC3 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - FBF4D49B201320BDBA305533 /* [CP] Check Pods Manifest.lock */, + 13BDD1348EFEB68B9E4F8FAC /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 12EEC02CDC30735211CB339F /* Frameworks */, + 12F33DDBDEEA8B4B36AF936F /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 63D10688E4ADA2110F24F49D /* [CP] Check Pods Manifest.lock */, + 32BA1ACDB39011AE658B75F8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - FE7B177F8AFBC784CFE6BC34 /* [CP] Embed Pods Frameworks */, + 92F74D0528FD4EFF565C7283 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,23 +270,29 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 13BDD1348EFEB68B9E4F8FAC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 63D10688E4ADA2110F24F49D /* [CP] Check Pods Manifest.lock */ = { + 32BA1ACDB39011AE658B75F8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,59 +314,53 @@ 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; }; - 9740EEB61CF901F6004384FC /* Run Script */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "Run Script"; + name = "Thin Binary"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - FBF4D49B201320BDBA305533 /* [CP] Check Pods Manifest.lock */ = { + 92F74D0528FD4EFF565C7283 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - FE7B177F8AFBC784CFE6BC34 /* [CP] Embed Pods Frameworks */ = { + 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + name = "Run Script"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A4EAC319F0D3F4F96F72BC5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = FAF26331C8E9E35EF24B441F /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 89B4DBAA2962EA0F8405D81F /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2A67537E1535AA793826B3DF /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 958F061A923542E7B1981278 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C8A8B46A8A11BC12852BCCC3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/adaptive_app/step_04/linux/runner/my_application.cc b/adaptive_app/step_04/linux/runner/my_application.cc index c839eec643..b1c20a8cc6 100644 --- a/adaptive_app/step_04/linux/runner/my_application.cc +++ b/adaptive_app/step_04/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/adaptive_app/step_04/macos/Podfile b/adaptive_app/step_04/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/adaptive_app/step_04/macos/Podfile +++ b/adaptive_app/step_04/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/adaptive_app/step_04/macos/Runner.xcodeproj/project.pbxproj b/adaptive_app/step_04/macos/Runner.xcodeproj/project.pbxproj index 48809f00a7..ece5a83eaa 100644 --- a/adaptive_app/step_04/macos/Runner.xcodeproj/project.pbxproj +++ b/adaptive_app/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 */; }; - 9841C265DCBC9764CAA2502D /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A0E92644C09A723239DDFF65 /* Pods_Runner.framework */; }; - DF111A8403B0350AE9548309 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFB2C83CE937EBE2CD5F1BEB /* Pods_RunnerTests.framework */; }; + 7BDB475EAE12196F47FFEACF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A76F6D0F9A9ECF5F372C2225 /* Pods_Runner.framework */; }; + E9B346FCCB84F4EA1D68C334 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 730B02D05566FDB3B0AEDB76 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 1470B482ABB6941D617891F9 /* 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 = ""; }; - 18843C4BCE62F5B21C5E18DA /* 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 = ""; }; + 14895E96298C624464DBFB8C /* 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 = ""; }; + 29C543CCDB05C79A3F587798 /* 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 = ""; }; 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 = ""; }; @@ -80,14 +80,14 @@ 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 = ""; }; + 5FD9945727C4F1E36849A9F7 /* 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 = ""; }; + 730B02D05566FDB3B0AEDB76 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 953A6E0007AE99DF01823F3B /* 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 = ""; }; + 88BE8072AAD162173C43127D /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A0E92644C09A723239DDFF65 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A68705C4B0AC00F49ADFF083 /* 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 = ""; }; - D3E5215E11B9C9B23316D8C1 /* 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 = ""; }; - DC091DBFAE4E0BDE7CD8FB13 /* 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 = ""; }; - FFB2C83CE937EBE2CD5F1BEB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9B72268C6ED12489C79A9053 /* 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 = ""; }; + A76F6D0F9A9ECF5F372C2225 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E0BA8669BFAF0D7D3530D231 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DF111A8403B0350AE9548309 /* Pods_RunnerTests.framework in Frameworks */, + E9B346FCCB84F4EA1D68C334 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9841C265DCBC9764CAA2502D /* Pods_Runner.framework in Frameworks */, + 7BDB475EAE12196F47FFEACF /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - B3517287266940714026D566 /* Pods */, + D9486C6BFEBDC468325B5CA3 /* Pods */, ); sourceTree = ""; }; @@ -185,27 +185,27 @@ path = Runner; sourceTree = ""; }; - B3517287266940714026D566 /* Pods */ = { + D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - DC091DBFAE4E0BDE7CD8FB13 /* Pods-Runner.debug.xcconfig */, - 953A6E0007AE99DF01823F3B /* Pods-Runner.release.xcconfig */, - D3E5215E11B9C9B23316D8C1 /* Pods-Runner.profile.xcconfig */, - A68705C4B0AC00F49ADFF083 /* Pods-RunnerTests.debug.xcconfig */, - 1470B482ABB6941D617891F9 /* Pods-RunnerTests.release.xcconfig */, - 18843C4BCE62F5B21C5E18DA /* Pods-RunnerTests.profile.xcconfig */, + A76F6D0F9A9ECF5F372C2225 /* Pods_Runner.framework */, + 730B02D05566FDB3B0AEDB76 /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { + D9486C6BFEBDC468325B5CA3 /* Pods */ = { isa = PBXGroup; children = ( - A0E92644C09A723239DDFF65 /* Pods_Runner.framework */, - FFB2C83CE937EBE2CD5F1BEB /* Pods_RunnerTests.framework */, + 29C543CCDB05C79A3F587798 /* Pods-Runner.debug.xcconfig */, + E0BA8669BFAF0D7D3530D231 /* Pods-Runner.release.xcconfig */, + 5FD9945727C4F1E36849A9F7 /* Pods-Runner.profile.xcconfig */, + 14895E96298C624464DBFB8C /* Pods-RunnerTests.debug.xcconfig */, + 9B72268C6ED12489C79A9053 /* Pods-RunnerTests.release.xcconfig */, + 88BE8072AAD162173C43127D /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; /* End PBXGroup section */ @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 38EA2B585BF6D8112C96AD9C /* [CP] Check Pods Manifest.lock */, + C174CBC3E8D2724091838EDC /* [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 = ( - 033A6BE0FDF1936005DCED81 /* [CP] Check Pods Manifest.lock */, + FA3DA86855CBE4C6E115CE10 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - EC5638112C9AEF0F74E41B84 /* [CP] Embed Pods Frameworks */, + D76E5D624E19B5A423D1EBD9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,28 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 033A6BE0FDF1936005DCED81 /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -383,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 38EA2B585BF6D8112C96AD9C /* [CP] Check Pods Manifest.lock */ = { + C174CBC3E8D2724091838EDC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -405,7 +383,7 @@ 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; }; - EC5638112C9AEF0F74E41B84 /* [CP] Embed Pods Frameworks */ = { + D76E5D624E19B5A423D1EBD9 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -422,6 +400,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + FA3DA86855CBE4C6E115CE10 /* [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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A68705C4B0AC00F49ADFF083 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 14895E96298C624464DBFB8C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1470B482ABB6941D617891F9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9B72268C6ED12489C79A9053 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 18843C4BCE62F5B21C5E18DA /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 88BE8072AAD162173C43127D /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/adaptive_app/step_04/pubspec.yaml b/adaptive_app/step_04/pubspec.yaml index cc5d9dc22c..1d84aafe7f 100644 --- a/adaptive_app/step_04/pubspec.yaml +++ b/adaptive_app/step_04/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -35,11 +35,11 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 googleapis: ^14.0.0 - http: ^1.4.0 + http: ^1.5.0 provider: ^6.1.5 - url_launcher: ^6.3.1 - flex_color_scheme: ^8.2.0 - go_router: ^15.1.2 + url_launcher: ^6.3.2 + flex_color_scheme: ^8.2.1-dev.1 + go_router: ^16.1.0 dev_dependencies: flutter_test: diff --git a/adaptive_app/step_05/.gemini/settings.json b/adaptive_app/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/adaptive_app/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/adaptive_app/step_05/.gitignore b/adaptive_app/step_05/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/adaptive_app/step_05/.gitignore +++ b/adaptive_app/step_05/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/adaptive_app/step_05/android/build.gradle.kts b/adaptive_app/step_05/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/adaptive_app/step_05/android/build.gradle.kts +++ b/adaptive_app/step_05/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/adaptive_app/step_05/android/settings.gradle.kts b/adaptive_app/step_05/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/adaptive_app/step_05/android/settings.gradle.kts +++ b/adaptive_app/step_05/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/adaptive_app/step_05/ios/Flutter/AppFrameworkInfo.plist b/adaptive_app/step_05/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/adaptive_app/step_05/ios/Flutter/AppFrameworkInfo.plist +++ b/adaptive_app/step_05/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/adaptive_app/step_05/ios/Podfile b/adaptive_app/step_05/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/adaptive_app/step_05/ios/Podfile +++ b/adaptive_app/step_05/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/adaptive_app/step_05/ios/Runner.xcodeproj/project.pbxproj b/adaptive_app/step_05/ios/Runner.xcodeproj/project.pbxproj index da68fa7d62..90b81ddee4 100644 --- a/adaptive_app/step_05/ios/Runner.xcodeproj/project.pbxproj +++ b/adaptive_app/step_05/ios/Runner.xcodeproj/project.pbxproj @@ -14,8 +14,8 @@ 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 */; }; - A1C89E061BAEC57793AF0423 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7913B5BE734E5B5842A77895 /* Pods_RunnerTests.framework */; }; - CF0777223D629493332F6619 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D1B4FC934C461D51AE27A75 /* Pods_Runner.framework */; }; + D919CBDEA8199BF7F3037A0F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BAD4B0D9B4AF560DF64D9263 /* Pods_Runner.framework */; }; + EE4E0321C6D207299A309F85 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D54E47CD81DC1ACCE65DE836 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,21 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0E9B8C43E0B476A3CE78C911 /* 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 = ""; }; 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 = ""; }; + 2A67537E1535AA793826B3DF /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 3D1B4FC934C461D51AE27A75 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 40686FFCE5908685B6BBA593 /* 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 = ""; }; 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 = ""; }; - 7913B5BE734E5B5842A77895 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 88EEBDF0A90DBC07B005080D /* 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 = ""; }; - 89B4DBAA2962EA0F8405D81F /* 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 = ""; }; - 8A4EAC319F0D3F4F96F72BC5 /* 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 = ""; }; - 958F061A923542E7B1981278 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -64,15 +59,20 @@ 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 = ""; }; - E83900C7BBE4621C9E5E0B94 /* 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 = ""; }; + BAD4B0D9B4AF560DF64D9263 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C8A8B46A8A11BC12852BCCC3 /* 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 = ""; }; + D54E47CD81DC1ACCE65DE836 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E0B57B214410ED2D0D1B4F65 /* 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 = ""; }; + ECD5DBF924B10E098CD32513 /* 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 = ""; }; + FAF26331C8E9E35EF24B441F /* 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 */ - 12EEC02CDC30735211CB339F /* Frameworks */ = { + 12F33DDBDEEA8B4B36AF936F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A1C89E061BAEC57793AF0423 /* Pods_RunnerTests.framework in Frameworks */, + EE4E0321C6D207299A309F85 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,36 +80,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CF0777223D629493332F6619 /* Pods_Runner.framework in Frameworks */, + D919CBDEA8199BF7F3037A0F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 204983CF09BAB82168F83FFA /* Pods */ = { - isa = PBXGroup; - children = ( - E83900C7BBE4621C9E5E0B94 /* Pods-Runner.debug.xcconfig */, - 88EEBDF0A90DBC07B005080D /* Pods-Runner.release.xcconfig */, - 0E9B8C43E0B476A3CE78C911 /* Pods-Runner.profile.xcconfig */, - 8A4EAC319F0D3F4F96F72BC5 /* Pods-RunnerTests.debug.xcconfig */, - 89B4DBAA2962EA0F8405D81F /* Pods-RunnerTests.release.xcconfig */, - 958F061A923542E7B1981278 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - 209968BCF8BE0521E877B0C6 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 3D1B4FC934C461D51AE27A75 /* Pods_Runner.framework */, - 7913B5BE734E5B5842A77895 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 204983CF09BAB82168F83FFA /* Pods */, - 209968BCF8BE0521E877B0C6 /* Frameworks */, + DF41E4CC229A1E4D29531112 /* Pods */, + CD42BD1304B063555D1E6C1A /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + CD42BD1304B063555D1E6C1A /* Frameworks */ = { + isa = PBXGroup; + children = ( + BAD4B0D9B4AF560DF64D9263 /* Pods_Runner.framework */, + D54E47CD81DC1ACCE65DE836 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + DF41E4CC229A1E4D29531112 /* Pods */ = { + isa = PBXGroup; + children = ( + E0B57B214410ED2D0D1B4F65 /* Pods-Runner.debug.xcconfig */, + 40686FFCE5908685B6BBA593 /* Pods-Runner.release.xcconfig */, + ECD5DBF924B10E098CD32513 /* Pods-Runner.profile.xcconfig */, + FAF26331C8E9E35EF24B441F /* Pods-RunnerTests.debug.xcconfig */, + 2A67537E1535AA793826B3DF /* Pods-RunnerTests.release.xcconfig */, + C8A8B46A8A11BC12852BCCC3 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - FBF4D49B201320BDBA305533 /* [CP] Check Pods Manifest.lock */, + 13BDD1348EFEB68B9E4F8FAC /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 12EEC02CDC30735211CB339F /* Frameworks */, + 12F33DDBDEEA8B4B36AF936F /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 63D10688E4ADA2110F24F49D /* [CP] Check Pods Manifest.lock */, + 32BA1ACDB39011AE658B75F8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - FE7B177F8AFBC784CFE6BC34 /* [CP] Embed Pods Frameworks */, + 92F74D0528FD4EFF565C7283 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,23 +270,29 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 13BDD1348EFEB68B9E4F8FAC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 63D10688E4ADA2110F24F49D /* [CP] Check Pods Manifest.lock */ = { + 32BA1ACDB39011AE658B75F8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,59 +314,53 @@ 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; }; - 9740EEB61CF901F6004384FC /* Run Script */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "Run Script"; + name = "Thin Binary"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - FBF4D49B201320BDBA305533 /* [CP] Check Pods Manifest.lock */ = { + 92F74D0528FD4EFF565C7283 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - FE7B177F8AFBC784CFE6BC34 /* [CP] Embed Pods Frameworks */ = { + 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + name = "Run Script"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A4EAC319F0D3F4F96F72BC5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = FAF26331C8E9E35EF24B441F /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 89B4DBAA2962EA0F8405D81F /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2A67537E1535AA793826B3DF /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 958F061A923542E7B1981278 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C8A8B46A8A11BC12852BCCC3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/adaptive_app/step_05/linux/runner/my_application.cc b/adaptive_app/step_05/linux/runner/my_application.cc index c839eec643..b1c20a8cc6 100644 --- a/adaptive_app/step_05/linux/runner/my_application.cc +++ b/adaptive_app/step_05/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/adaptive_app/step_05/macos/Podfile b/adaptive_app/step_05/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/adaptive_app/step_05/macos/Podfile +++ b/adaptive_app/step_05/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/adaptive_app/step_05/macos/Runner.xcodeproj/project.pbxproj b/adaptive_app/step_05/macos/Runner.xcodeproj/project.pbxproj index 48809f00a7..ece5a83eaa 100644 --- a/adaptive_app/step_05/macos/Runner.xcodeproj/project.pbxproj +++ b/adaptive_app/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 */; }; - 9841C265DCBC9764CAA2502D /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A0E92644C09A723239DDFF65 /* Pods_Runner.framework */; }; - DF111A8403B0350AE9548309 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFB2C83CE937EBE2CD5F1BEB /* Pods_RunnerTests.framework */; }; + 7BDB475EAE12196F47FFEACF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A76F6D0F9A9ECF5F372C2225 /* Pods_Runner.framework */; }; + E9B346FCCB84F4EA1D68C334 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 730B02D05566FDB3B0AEDB76 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 1470B482ABB6941D617891F9 /* 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 = ""; }; - 18843C4BCE62F5B21C5E18DA /* 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 = ""; }; + 14895E96298C624464DBFB8C /* 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 = ""; }; + 29C543CCDB05C79A3F587798 /* 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 = ""; }; 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 = ""; }; @@ -80,14 +80,14 @@ 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 = ""; }; + 5FD9945727C4F1E36849A9F7 /* 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 = ""; }; + 730B02D05566FDB3B0AEDB76 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 953A6E0007AE99DF01823F3B /* 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 = ""; }; + 88BE8072AAD162173C43127D /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A0E92644C09A723239DDFF65 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A68705C4B0AC00F49ADFF083 /* 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 = ""; }; - D3E5215E11B9C9B23316D8C1 /* 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 = ""; }; - DC091DBFAE4E0BDE7CD8FB13 /* 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 = ""; }; - FFB2C83CE937EBE2CD5F1BEB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9B72268C6ED12489C79A9053 /* 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 = ""; }; + A76F6D0F9A9ECF5F372C2225 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E0BA8669BFAF0D7D3530D231 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DF111A8403B0350AE9548309 /* Pods_RunnerTests.framework in Frameworks */, + E9B346FCCB84F4EA1D68C334 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9841C265DCBC9764CAA2502D /* Pods_Runner.framework in Frameworks */, + 7BDB475EAE12196F47FFEACF /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - B3517287266940714026D566 /* Pods */, + D9486C6BFEBDC468325B5CA3 /* Pods */, ); sourceTree = ""; }; @@ -185,27 +185,27 @@ path = Runner; sourceTree = ""; }; - B3517287266940714026D566 /* Pods */ = { + D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - DC091DBFAE4E0BDE7CD8FB13 /* Pods-Runner.debug.xcconfig */, - 953A6E0007AE99DF01823F3B /* Pods-Runner.release.xcconfig */, - D3E5215E11B9C9B23316D8C1 /* Pods-Runner.profile.xcconfig */, - A68705C4B0AC00F49ADFF083 /* Pods-RunnerTests.debug.xcconfig */, - 1470B482ABB6941D617891F9 /* Pods-RunnerTests.release.xcconfig */, - 18843C4BCE62F5B21C5E18DA /* Pods-RunnerTests.profile.xcconfig */, + A76F6D0F9A9ECF5F372C2225 /* Pods_Runner.framework */, + 730B02D05566FDB3B0AEDB76 /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { + D9486C6BFEBDC468325B5CA3 /* Pods */ = { isa = PBXGroup; children = ( - A0E92644C09A723239DDFF65 /* Pods_Runner.framework */, - FFB2C83CE937EBE2CD5F1BEB /* Pods_RunnerTests.framework */, + 29C543CCDB05C79A3F587798 /* Pods-Runner.debug.xcconfig */, + E0BA8669BFAF0D7D3530D231 /* Pods-Runner.release.xcconfig */, + 5FD9945727C4F1E36849A9F7 /* Pods-Runner.profile.xcconfig */, + 14895E96298C624464DBFB8C /* Pods-RunnerTests.debug.xcconfig */, + 9B72268C6ED12489C79A9053 /* Pods-RunnerTests.release.xcconfig */, + 88BE8072AAD162173C43127D /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; /* End PBXGroup section */ @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 38EA2B585BF6D8112C96AD9C /* [CP] Check Pods Manifest.lock */, + C174CBC3E8D2724091838EDC /* [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 = ( - 033A6BE0FDF1936005DCED81 /* [CP] Check Pods Manifest.lock */, + FA3DA86855CBE4C6E115CE10 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - EC5638112C9AEF0F74E41B84 /* [CP] Embed Pods Frameworks */, + D76E5D624E19B5A423D1EBD9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,28 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 033A6BE0FDF1936005DCED81 /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -383,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 38EA2B585BF6D8112C96AD9C /* [CP] Check Pods Manifest.lock */ = { + C174CBC3E8D2724091838EDC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -405,7 +383,7 @@ 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; }; - EC5638112C9AEF0F74E41B84 /* [CP] Embed Pods Frameworks */ = { + D76E5D624E19B5A423D1EBD9 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -422,6 +400,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + FA3DA86855CBE4C6E115CE10 /* [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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A68705C4B0AC00F49ADFF083 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 14895E96298C624464DBFB8C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1470B482ABB6941D617891F9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9B72268C6ED12489C79A9053 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 18843C4BCE62F5B21C5E18DA /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 88BE8072AAD162173C43127D /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/adaptive_app/step_05/pubspec.yaml b/adaptive_app/step_05/pubspec.yaml index e1697302b4..e2d5767245 100644 --- a/adaptive_app/step_05/pubspec.yaml +++ b/adaptive_app/step_05/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -35,11 +35,11 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 googleapis: ^14.0.0 - http: ^1.4.0 + http: ^1.5.0 provider: ^6.1.5 - url_launcher: ^6.3.1 - flex_color_scheme: ^8.2.0 - go_router: ^15.1.2 + url_launcher: ^6.3.2 + flex_color_scheme: ^8.2.1-dev.1 + go_router: ^16.1.0 split_view: ^3.2.1 dev_dependencies: diff --git a/adaptive_app/step_06/.gemini/settings.json b/adaptive_app/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/adaptive_app/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/adaptive_app/step_06/.gitignore b/adaptive_app/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/adaptive_app/step_06/.gitignore +++ b/adaptive_app/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/adaptive_app/step_06/android/build.gradle.kts b/adaptive_app/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/adaptive_app/step_06/android/build.gradle.kts +++ b/adaptive_app/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/adaptive_app/step_06/android/settings.gradle.kts b/adaptive_app/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/adaptive_app/step_06/android/settings.gradle.kts +++ b/adaptive_app/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/adaptive_app/step_06/ios/Flutter/AppFrameworkInfo.plist b/adaptive_app/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/adaptive_app/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/adaptive_app/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/adaptive_app/step_06/ios/Podfile b/adaptive_app/step_06/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/adaptive_app/step_06/ios/Podfile +++ b/adaptive_app/step_06/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/adaptive_app/step_06/ios/Runner.xcodeproj/project.pbxproj b/adaptive_app/step_06/ios/Runner.xcodeproj/project.pbxproj index da68fa7d62..90b81ddee4 100644 --- a/adaptive_app/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/adaptive_app/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -14,8 +14,8 @@ 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 */; }; - A1C89E061BAEC57793AF0423 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7913B5BE734E5B5842A77895 /* Pods_RunnerTests.framework */; }; - CF0777223D629493332F6619 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D1B4FC934C461D51AE27A75 /* Pods_Runner.framework */; }; + D919CBDEA8199BF7F3037A0F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BAD4B0D9B4AF560DF64D9263 /* Pods_Runner.framework */; }; + EE4E0321C6D207299A309F85 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D54E47CD81DC1ACCE65DE836 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,21 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0E9B8C43E0B476A3CE78C911 /* 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 = ""; }; 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 = ""; }; + 2A67537E1535AA793826B3DF /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 3D1B4FC934C461D51AE27A75 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 40686FFCE5908685B6BBA593 /* 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 = ""; }; 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 = ""; }; - 7913B5BE734E5B5842A77895 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 88EEBDF0A90DBC07B005080D /* 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 = ""; }; - 89B4DBAA2962EA0F8405D81F /* 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 = ""; }; - 8A4EAC319F0D3F4F96F72BC5 /* 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 = ""; }; - 958F061A923542E7B1981278 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -64,15 +59,20 @@ 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 = ""; }; - E83900C7BBE4621C9E5E0B94 /* 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 = ""; }; + BAD4B0D9B4AF560DF64D9263 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C8A8B46A8A11BC12852BCCC3 /* 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 = ""; }; + D54E47CD81DC1ACCE65DE836 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E0B57B214410ED2D0D1B4F65 /* 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 = ""; }; + ECD5DBF924B10E098CD32513 /* 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 = ""; }; + FAF26331C8E9E35EF24B441F /* 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 */ - 12EEC02CDC30735211CB339F /* Frameworks */ = { + 12F33DDBDEEA8B4B36AF936F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A1C89E061BAEC57793AF0423 /* Pods_RunnerTests.framework in Frameworks */, + EE4E0321C6D207299A309F85 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,36 +80,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CF0777223D629493332F6619 /* Pods_Runner.framework in Frameworks */, + D919CBDEA8199BF7F3037A0F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 204983CF09BAB82168F83FFA /* Pods */ = { - isa = PBXGroup; - children = ( - E83900C7BBE4621C9E5E0B94 /* Pods-Runner.debug.xcconfig */, - 88EEBDF0A90DBC07B005080D /* Pods-Runner.release.xcconfig */, - 0E9B8C43E0B476A3CE78C911 /* Pods-Runner.profile.xcconfig */, - 8A4EAC319F0D3F4F96F72BC5 /* Pods-RunnerTests.debug.xcconfig */, - 89B4DBAA2962EA0F8405D81F /* Pods-RunnerTests.release.xcconfig */, - 958F061A923542E7B1981278 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - 209968BCF8BE0521E877B0C6 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 3D1B4FC934C461D51AE27A75 /* Pods_Runner.framework */, - 7913B5BE734E5B5842A77895 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 204983CF09BAB82168F83FFA /* Pods */, - 209968BCF8BE0521E877B0C6 /* Frameworks */, + DF41E4CC229A1E4D29531112 /* Pods */, + CD42BD1304B063555D1E6C1A /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + CD42BD1304B063555D1E6C1A /* Frameworks */ = { + isa = PBXGroup; + children = ( + BAD4B0D9B4AF560DF64D9263 /* Pods_Runner.framework */, + D54E47CD81DC1ACCE65DE836 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + DF41E4CC229A1E4D29531112 /* Pods */ = { + isa = PBXGroup; + children = ( + E0B57B214410ED2D0D1B4F65 /* Pods-Runner.debug.xcconfig */, + 40686FFCE5908685B6BBA593 /* Pods-Runner.release.xcconfig */, + ECD5DBF924B10E098CD32513 /* Pods-Runner.profile.xcconfig */, + FAF26331C8E9E35EF24B441F /* Pods-RunnerTests.debug.xcconfig */, + 2A67537E1535AA793826B3DF /* Pods-RunnerTests.release.xcconfig */, + C8A8B46A8A11BC12852BCCC3 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - FBF4D49B201320BDBA305533 /* [CP] Check Pods Manifest.lock */, + 13BDD1348EFEB68B9E4F8FAC /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 12EEC02CDC30735211CB339F /* Frameworks */, + 12F33DDBDEEA8B4B36AF936F /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 63D10688E4ADA2110F24F49D /* [CP] Check Pods Manifest.lock */, + 32BA1ACDB39011AE658B75F8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - FE7B177F8AFBC784CFE6BC34 /* [CP] Embed Pods Frameworks */, + 92F74D0528FD4EFF565C7283 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,23 +270,29 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 13BDD1348EFEB68B9E4F8FAC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 63D10688E4ADA2110F24F49D /* [CP] Check Pods Manifest.lock */ = { + 32BA1ACDB39011AE658B75F8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,59 +314,53 @@ 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; }; - 9740EEB61CF901F6004384FC /* Run Script */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "Run Script"; + name = "Thin Binary"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - FBF4D49B201320BDBA305533 /* [CP] Check Pods Manifest.lock */ = { + 92F74D0528FD4EFF565C7283 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - FE7B177F8AFBC784CFE6BC34 /* [CP] Embed Pods Frameworks */ = { + 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + name = "Run Script"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A4EAC319F0D3F4F96F72BC5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = FAF26331C8E9E35EF24B441F /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 89B4DBAA2962EA0F8405D81F /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2A67537E1535AA793826B3DF /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 958F061A923542E7B1981278 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C8A8B46A8A11BC12852BCCC3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/adaptive_app/step_06/linux/runner/my_application.cc b/adaptive_app/step_06/linux/runner/my_application.cc index c839eec643..b1c20a8cc6 100644 --- a/adaptive_app/step_06/linux/runner/my_application.cc +++ b/adaptive_app/step_06/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/adaptive_app/step_06/macos/Podfile b/adaptive_app/step_06/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/adaptive_app/step_06/macos/Podfile +++ b/adaptive_app/step_06/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/adaptive_app/step_06/macos/Runner.xcodeproj/project.pbxproj b/adaptive_app/step_06/macos/Runner.xcodeproj/project.pbxproj index 48809f00a7..ece5a83eaa 100644 --- a/adaptive_app/step_06/macos/Runner.xcodeproj/project.pbxproj +++ b/adaptive_app/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 */; }; - 9841C265DCBC9764CAA2502D /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A0E92644C09A723239DDFF65 /* Pods_Runner.framework */; }; - DF111A8403B0350AE9548309 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFB2C83CE937EBE2CD5F1BEB /* Pods_RunnerTests.framework */; }; + 7BDB475EAE12196F47FFEACF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A76F6D0F9A9ECF5F372C2225 /* Pods_Runner.framework */; }; + E9B346FCCB84F4EA1D68C334 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 730B02D05566FDB3B0AEDB76 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 1470B482ABB6941D617891F9 /* 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 = ""; }; - 18843C4BCE62F5B21C5E18DA /* 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 = ""; }; + 14895E96298C624464DBFB8C /* 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 = ""; }; + 29C543CCDB05C79A3F587798 /* 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 = ""; }; 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 = ""; }; @@ -80,14 +80,14 @@ 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 = ""; }; + 5FD9945727C4F1E36849A9F7 /* 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 = ""; }; + 730B02D05566FDB3B0AEDB76 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 953A6E0007AE99DF01823F3B /* 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 = ""; }; + 88BE8072AAD162173C43127D /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A0E92644C09A723239DDFF65 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A68705C4B0AC00F49ADFF083 /* 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 = ""; }; - D3E5215E11B9C9B23316D8C1 /* 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 = ""; }; - DC091DBFAE4E0BDE7CD8FB13 /* 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 = ""; }; - FFB2C83CE937EBE2CD5F1BEB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9B72268C6ED12489C79A9053 /* 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 = ""; }; + A76F6D0F9A9ECF5F372C2225 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E0BA8669BFAF0D7D3530D231 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DF111A8403B0350AE9548309 /* Pods_RunnerTests.framework in Frameworks */, + E9B346FCCB84F4EA1D68C334 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9841C265DCBC9764CAA2502D /* Pods_Runner.framework in Frameworks */, + 7BDB475EAE12196F47FFEACF /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - B3517287266940714026D566 /* Pods */, + D9486C6BFEBDC468325B5CA3 /* Pods */, ); sourceTree = ""; }; @@ -185,27 +185,27 @@ path = Runner; sourceTree = ""; }; - B3517287266940714026D566 /* Pods */ = { + D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - DC091DBFAE4E0BDE7CD8FB13 /* Pods-Runner.debug.xcconfig */, - 953A6E0007AE99DF01823F3B /* Pods-Runner.release.xcconfig */, - D3E5215E11B9C9B23316D8C1 /* Pods-Runner.profile.xcconfig */, - A68705C4B0AC00F49ADFF083 /* Pods-RunnerTests.debug.xcconfig */, - 1470B482ABB6941D617891F9 /* Pods-RunnerTests.release.xcconfig */, - 18843C4BCE62F5B21C5E18DA /* Pods-RunnerTests.profile.xcconfig */, + A76F6D0F9A9ECF5F372C2225 /* Pods_Runner.framework */, + 730B02D05566FDB3B0AEDB76 /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { + D9486C6BFEBDC468325B5CA3 /* Pods */ = { isa = PBXGroup; children = ( - A0E92644C09A723239DDFF65 /* Pods_Runner.framework */, - FFB2C83CE937EBE2CD5F1BEB /* Pods_RunnerTests.framework */, + 29C543CCDB05C79A3F587798 /* Pods-Runner.debug.xcconfig */, + E0BA8669BFAF0D7D3530D231 /* Pods-Runner.release.xcconfig */, + 5FD9945727C4F1E36849A9F7 /* Pods-Runner.profile.xcconfig */, + 14895E96298C624464DBFB8C /* Pods-RunnerTests.debug.xcconfig */, + 9B72268C6ED12489C79A9053 /* Pods-RunnerTests.release.xcconfig */, + 88BE8072AAD162173C43127D /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; /* End PBXGroup section */ @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 38EA2B585BF6D8112C96AD9C /* [CP] Check Pods Manifest.lock */, + C174CBC3E8D2724091838EDC /* [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 = ( - 033A6BE0FDF1936005DCED81 /* [CP] Check Pods Manifest.lock */, + FA3DA86855CBE4C6E115CE10 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - EC5638112C9AEF0F74E41B84 /* [CP] Embed Pods Frameworks */, + D76E5D624E19B5A423D1EBD9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,28 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 033A6BE0FDF1936005DCED81 /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -383,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 38EA2B585BF6D8112C96AD9C /* [CP] Check Pods Manifest.lock */ = { + C174CBC3E8D2724091838EDC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -405,7 +383,7 @@ 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; }; - EC5638112C9AEF0F74E41B84 /* [CP] Embed Pods Frameworks */ = { + D76E5D624E19B5A423D1EBD9 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -422,6 +400,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + FA3DA86855CBE4C6E115CE10 /* [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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A68705C4B0AC00F49ADFF083 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 14895E96298C624464DBFB8C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1470B482ABB6941D617891F9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9B72268C6ED12489C79A9053 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 18843C4BCE62F5B21C5E18DA /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 88BE8072AAD162173C43127D /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/adaptive_app/step_06/pubspec.yaml b/adaptive_app/step_06/pubspec.yaml index e1697302b4..e2d5767245 100644 --- a/adaptive_app/step_06/pubspec.yaml +++ b/adaptive_app/step_06/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -35,11 +35,11 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 googleapis: ^14.0.0 - http: ^1.4.0 + http: ^1.5.0 provider: ^6.1.5 - url_launcher: ^6.3.1 - flex_color_scheme: ^8.2.0 - go_router: ^15.1.2 + url_launcher: ^6.3.2 + flex_color_scheme: ^8.2.1-dev.1 + go_router: ^16.1.0 split_view: ^3.2.1 dev_dependencies: diff --git a/adaptive_app/step_06/yt_cors_proxy/.gemini/settings.json b/adaptive_app/step_06/yt_cors_proxy/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/adaptive_app/step_06/yt_cors_proxy/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/adaptive_app/step_06/yt_cors_proxy/pubspec.yaml b/adaptive_app/step_06/yt_cors_proxy/pubspec.yaml index 24cdd4ca25..a0c6704f27 100644 --- a/adaptive_app/step_06/yt_cors_proxy/pubspec.yaml +++ b/adaptive_app/step_06/yt_cors_proxy/pubspec.yaml @@ -3,11 +3,11 @@ description: A YouTube CORS Proxy Server. version: 1.0.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: - shelf: ^1.4.0 - http: ^1.4.0 + shelf: ^1.4.2 + http: ^1.5.0 shelf_cors_headers: ^0.1.5 dev_dependencies: diff --git a/adaptive_app/step_07/.gemini/settings.json b/adaptive_app/step_07/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/adaptive_app/step_07/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/adaptive_app/step_07/.gitignore b/adaptive_app/step_07/.gitignore index 7e5d8fcbc3..4db18ffa95 100644 --- a/adaptive_app/step_07/.gitignore +++ b/adaptive_app/step_07/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/adaptive_app/step_07/android/build.gradle.kts b/adaptive_app/step_07/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/adaptive_app/step_07/android/build.gradle.kts +++ b/adaptive_app/step_07/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/adaptive_app/step_07/android/settings.gradle.kts b/adaptive_app/step_07/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/adaptive_app/step_07/android/settings.gradle.kts +++ b/adaptive_app/step_07/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/adaptive_app/step_07/ios/Flutter/AppFrameworkInfo.plist b/adaptive_app/step_07/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/adaptive_app/step_07/ios/Flutter/AppFrameworkInfo.plist +++ b/adaptive_app/step_07/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/adaptive_app/step_07/ios/Podfile b/adaptive_app/step_07/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/adaptive_app/step_07/ios/Podfile +++ b/adaptive_app/step_07/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/adaptive_app/step_07/ios/Runner.xcodeproj/project.pbxproj b/adaptive_app/step_07/ios/Runner.xcodeproj/project.pbxproj index 92b2fb87f0..41079d2162 100644 --- a/adaptive_app/step_07/ios/Runner.xcodeproj/project.pbxproj +++ b/adaptive_app/step_07/ios/Runner.xcodeproj/project.pbxproj @@ -14,8 +14,8 @@ 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 */; }; - A1C89E061BAEC57793AF0423 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7913B5BE734E5B5842A77895 /* Pods_RunnerTests.framework */; }; - CF0777223D629493332F6619 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D1B4FC934C461D51AE27A75 /* Pods_Runner.framework */; }; + D919CBDEA8199BF7F3037A0F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BAD4B0D9B4AF560DF64D9263 /* Pods_Runner.framework */; }; + EE4E0321C6D207299A309F85 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D54E47CD81DC1ACCE65DE836 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,21 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0E9B8C43E0B476A3CE78C911 /* 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 = ""; }; 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 = ""; }; + 2A67537E1535AA793826B3DF /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 3D1B4FC934C461D51AE27A75 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 40686FFCE5908685B6BBA593 /* 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 = ""; }; 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 = ""; }; - 7913B5BE734E5B5842A77895 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 88EEBDF0A90DBC07B005080D /* 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 = ""; }; - 89B4DBAA2962EA0F8405D81F /* 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 = ""; }; - 8A4EAC319F0D3F4F96F72BC5 /* 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 = ""; }; - 958F061A923542E7B1981278 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -64,15 +59,20 @@ 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 = ""; }; - E83900C7BBE4621C9E5E0B94 /* 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 = ""; }; + BAD4B0D9B4AF560DF64D9263 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C8A8B46A8A11BC12852BCCC3 /* 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 = ""; }; + D54E47CD81DC1ACCE65DE836 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E0B57B214410ED2D0D1B4F65 /* 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 = ""; }; + ECD5DBF924B10E098CD32513 /* 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 = ""; }; + FAF26331C8E9E35EF24B441F /* 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 */ - 12EEC02CDC30735211CB339F /* Frameworks */ = { + 12F33DDBDEEA8B4B36AF936F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A1C89E061BAEC57793AF0423 /* Pods_RunnerTests.framework in Frameworks */, + EE4E0321C6D207299A309F85 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,36 +80,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CF0777223D629493332F6619 /* Pods_Runner.framework in Frameworks */, + D919CBDEA8199BF7F3037A0F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 204983CF09BAB82168F83FFA /* Pods */ = { - isa = PBXGroup; - children = ( - E83900C7BBE4621C9E5E0B94 /* Pods-Runner.debug.xcconfig */, - 88EEBDF0A90DBC07B005080D /* Pods-Runner.release.xcconfig */, - 0E9B8C43E0B476A3CE78C911 /* Pods-Runner.profile.xcconfig */, - 8A4EAC319F0D3F4F96F72BC5 /* Pods-RunnerTests.debug.xcconfig */, - 89B4DBAA2962EA0F8405D81F /* Pods-RunnerTests.release.xcconfig */, - 958F061A923542E7B1981278 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - 209968BCF8BE0521E877B0C6 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 3D1B4FC934C461D51AE27A75 /* Pods_Runner.framework */, - 7913B5BE734E5B5842A77895 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 204983CF09BAB82168F83FFA /* Pods */, - 209968BCF8BE0521E877B0C6 /* Frameworks */, + DF41E4CC229A1E4D29531112 /* Pods */, + CD42BD1304B063555D1E6C1A /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + CD42BD1304B063555D1E6C1A /* Frameworks */ = { + isa = PBXGroup; + children = ( + BAD4B0D9B4AF560DF64D9263 /* Pods_Runner.framework */, + D54E47CD81DC1ACCE65DE836 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + DF41E4CC229A1E4D29531112 /* Pods */ = { + isa = PBXGroup; + children = ( + E0B57B214410ED2D0D1B4F65 /* Pods-Runner.debug.xcconfig */, + 40686FFCE5908685B6BBA593 /* Pods-Runner.release.xcconfig */, + ECD5DBF924B10E098CD32513 /* Pods-Runner.profile.xcconfig */, + FAF26331C8E9E35EF24B441F /* Pods-RunnerTests.debug.xcconfig */, + 2A67537E1535AA793826B3DF /* Pods-RunnerTests.release.xcconfig */, + C8A8B46A8A11BC12852BCCC3 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - FBF4D49B201320BDBA305533 /* [CP] Check Pods Manifest.lock */, + 13BDD1348EFEB68B9E4F8FAC /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 12EEC02CDC30735211CB339F /* Frameworks */, + 12F33DDBDEEA8B4B36AF936F /* Frameworks */, ); buildRules = ( ); @@ -191,15 +191,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 63D10688E4ADA2110F24F49D /* [CP] Check Pods Manifest.lock */, + 32BA1ACDB39011AE658B75F8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - FE7B177F8AFBC784CFE6BC34 /* [CP] Embed Pods Frameworks */, - 336BC08050BC2B117D2465F6 /* [CP] Copy Pods Resources */, + 92F74D0528FD4EFF565C7283 /* [CP] Embed Pods Frameworks */, + 9CF24DDA76AD46B3C373ED4A /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -271,40 +271,29 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 336BC08050BC2B117D2465F6 /* [CP] Copy Pods Resources */ = { + 13BDD1348EFEB68B9E4F8FAC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 63D10688E4ADA2110F24F49D /* [CP] Check Pods Manifest.lock */ = { + 32BA1ACDB39011AE658B75F8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -326,58 +315,69 @@ 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; }; - 9740EEB61CF901F6004384FC /* Run Script */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "Run Script"; + name = "Thin Binary"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - FBF4D49B201320BDBA305533 /* [CP] Check Pods Manifest.lock */ = { + 92F74D0528FD4EFF565C7283 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + 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; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - FE7B177F8AFBC784CFE6BC34 /* [CP] Embed Pods Frameworks */ = { + 9CF24DDA76AD46B3C373ED4A /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -505,7 +505,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A4EAC319F0D3F4F96F72BC5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = FAF26331C8E9E35EF24B441F /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -523,7 +523,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 89B4DBAA2962EA0F8405D81F /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2A67537E1535AA793826B3DF /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -539,7 +539,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 958F061A923542E7B1981278 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C8A8B46A8A11BC12852BCCC3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -602,7 +602,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -653,7 +653,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/adaptive_app/step_07/linux/runner/my_application.cc b/adaptive_app/step_07/linux/runner/my_application.cc index c839eec643..b1c20a8cc6 100644 --- a/adaptive_app/step_07/linux/runner/my_application.cc +++ b/adaptive_app/step_07/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/adaptive_app/step_07/macos/Runner.xcodeproj/project.pbxproj b/adaptive_app/step_07/macos/Runner.xcodeproj/project.pbxproj index d2af9c6424..1fb76e038e 100644 --- a/adaptive_app/step_07/macos/Runner.xcodeproj/project.pbxproj +++ b/adaptive_app/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 */; }; - 9841C265DCBC9764CAA2502D /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A0E92644C09A723239DDFF65 /* Pods_Runner.framework */; }; - DF111A8403B0350AE9548309 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFB2C83CE937EBE2CD5F1BEB /* Pods_RunnerTests.framework */; }; + 7BDB475EAE12196F47FFEACF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A76F6D0F9A9ECF5F372C2225 /* Pods_Runner.framework */; }; + E9B346FCCB84F4EA1D68C334 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 730B02D05566FDB3B0AEDB76 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 1470B482ABB6941D617891F9 /* 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 = ""; }; - 18843C4BCE62F5B21C5E18DA /* 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 = ""; }; + 14895E96298C624464DBFB8C /* 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 = ""; }; + 29C543CCDB05C79A3F587798 /* 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 = ""; }; 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 = ""; }; @@ -80,14 +80,14 @@ 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 = ""; }; + 5FD9945727C4F1E36849A9F7 /* 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 = ""; }; + 730B02D05566FDB3B0AEDB76 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 953A6E0007AE99DF01823F3B /* 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 = ""; }; + 88BE8072AAD162173C43127D /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A0E92644C09A723239DDFF65 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A68705C4B0AC00F49ADFF083 /* 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 = ""; }; - D3E5215E11B9C9B23316D8C1 /* 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 = ""; }; - DC091DBFAE4E0BDE7CD8FB13 /* 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 = ""; }; - FFB2C83CE937EBE2CD5F1BEB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9B72268C6ED12489C79A9053 /* 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 = ""; }; + A76F6D0F9A9ECF5F372C2225 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E0BA8669BFAF0D7D3530D231 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DF111A8403B0350AE9548309 /* Pods_RunnerTests.framework in Frameworks */, + E9B346FCCB84F4EA1D68C334 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9841C265DCBC9764CAA2502D /* Pods_Runner.framework in Frameworks */, + 7BDB475EAE12196F47FFEACF /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - B3517287266940714026D566 /* Pods */, + D9486C6BFEBDC468325B5CA3 /* Pods */, ); sourceTree = ""; }; @@ -185,27 +185,27 @@ path = Runner; sourceTree = ""; }; - B3517287266940714026D566 /* Pods */ = { + D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - DC091DBFAE4E0BDE7CD8FB13 /* Pods-Runner.debug.xcconfig */, - 953A6E0007AE99DF01823F3B /* Pods-Runner.release.xcconfig */, - D3E5215E11B9C9B23316D8C1 /* Pods-Runner.profile.xcconfig */, - A68705C4B0AC00F49ADFF083 /* Pods-RunnerTests.debug.xcconfig */, - 1470B482ABB6941D617891F9 /* Pods-RunnerTests.release.xcconfig */, - 18843C4BCE62F5B21C5E18DA /* Pods-RunnerTests.profile.xcconfig */, + A76F6D0F9A9ECF5F372C2225 /* Pods_Runner.framework */, + 730B02D05566FDB3B0AEDB76 /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { + D9486C6BFEBDC468325B5CA3 /* Pods */ = { isa = PBXGroup; children = ( - A0E92644C09A723239DDFF65 /* Pods_Runner.framework */, - FFB2C83CE937EBE2CD5F1BEB /* Pods_RunnerTests.framework */, + 29C543CCDB05C79A3F587798 /* Pods-Runner.debug.xcconfig */, + E0BA8669BFAF0D7D3530D231 /* Pods-Runner.release.xcconfig */, + 5FD9945727C4F1E36849A9F7 /* Pods-Runner.profile.xcconfig */, + 14895E96298C624464DBFB8C /* Pods-RunnerTests.debug.xcconfig */, + 9B72268C6ED12489C79A9053 /* Pods-RunnerTests.release.xcconfig */, + 88BE8072AAD162173C43127D /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; /* End PBXGroup section */ @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 38EA2B585BF6D8112C96AD9C /* [CP] Check Pods Manifest.lock */, + C174CBC3E8D2724091838EDC /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -234,14 +234,14 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 033A6BE0FDF1936005DCED81 /* [CP] Check Pods Manifest.lock */, + FA3DA86855CBE4C6E115CE10 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - EC5638112C9AEF0F74E41B84 /* [CP] Embed Pods Frameworks */, - 64F0D8929FF146EB8AAB61AD /* [CP] Copy Pods Resources */, + D76E5D624E19B5A423D1EBD9 /* [CP] Embed Pods Frameworks */, + 385658418FA376D11E21F59C /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -324,67 +324,62 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 033A6BE0FDF1936005DCED81 /* [CP] Check Pods Manifest.lock */ = { + 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; 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; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; }; - 3399D490228B24CF009A79C7 /* ShellScript */ = { + 33CC111E2044C6BF0003C045 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( + Flutter/ephemeral/tripwire, ); outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { + 385658418FA376D11E21F59C /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, - ); - inputPaths = ( - Flutter/ephemeral/tripwire, + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, - ); - outputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; }; - 38EA2B585BF6D8112C96AD9C /* [CP] Check Pods Manifest.lock */ = { + C174CBC3E8D2724091838EDC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -406,38 +401,43 @@ 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; }; - 64F0D8929FF146EB8AAB61AD /* [CP] Copy Pods Resources */ = { + D76E5D624E19B5A423D1EBD9 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + "${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-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - EC5638112C9AEF0F74E41B84 /* [CP] Embed Pods Frameworks */ = { + FA3DA86855CBE4C6E115CE10 /* [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-Runner-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; }; /* End PBXShellScriptBuildPhase section */ @@ -491,7 +491,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A68705C4B0AC00F49ADFF083 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 14895E96298C624464DBFB8C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -506,7 +506,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1470B482ABB6941D617891F9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9B72268C6ED12489C79A9053 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -521,7 +521,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 18843C4BCE62F5B21C5E18DA /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 88BE8072AAD162173C43127D /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -575,7 +575,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -657,7 +657,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -707,7 +707,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/adaptive_app/step_07/pubspec.yaml b/adaptive_app/step_07/pubspec.yaml index 795b053dea..33c36f09a5 100644 --- a/adaptive_app/step_07/pubspec.yaml +++ b/adaptive_app/step_07/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -35,15 +35,15 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 googleapis: ^14.0.0 + http: ^1.5.0 provider: ^6.1.5 - url_launcher: ^6.3.1 - flex_color_scheme: ^8.2.0 - go_router: ^15.1.2 + url_launcher: ^6.3.2 + flex_color_scheme: ^8.2.1-dev.1 + go_router: ^16.1.0 split_view: ^3.2.1 googleapis_auth: ^2.0.0 google_sign_in: ^6.3.0 extension_google_sign_in_as_googleapis_auth: ^2.0.13 - http: ^1.4.0 dev_dependencies: flutter_test: diff --git a/adaptive_app/step_07/yt_cors_proxy/.gemini/settings.json b/adaptive_app/step_07/yt_cors_proxy/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/adaptive_app/step_07/yt_cors_proxy/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/adaptive_app/step_07/yt_cors_proxy/pubspec.yaml b/adaptive_app/step_07/yt_cors_proxy/pubspec.yaml index 24cdd4ca25..a0c6704f27 100644 --- a/adaptive_app/step_07/yt_cors_proxy/pubspec.yaml +++ b/adaptive_app/step_07/yt_cors_proxy/pubspec.yaml @@ -3,11 +3,11 @@ description: A YouTube CORS Proxy Server. version: 1.0.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: - shelf: ^1.4.0 - http: ^1.4.0 + shelf: ^1.4.2 + http: ^1.5.0 shelf_cors_headers: ^0.1.5 dev_dependencies: diff --git a/animated-responsive-layout/codelab_rebuild.yaml b/animated-responsive-layout/codelab_rebuild.yaml index 2bd1de96a5..82704763f6 100644 --- a/animated-responsive-layout/codelab_rebuild.yaml +++ b/animated-responsive-layout/codelab_rebuild.yaml @@ -18,6 +18,21 @@ steps: flutter: pub upgrade --major-versions - name: Remove README rm: animated_responsive_layout/README.md + - name: Add .gemini directory + mkdir: animated_responsive_layout/.gemini + - name: Add .gemini/settings.json + path: animated_responsive_layout/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add .vscode directory mkdir: animated_responsive_layout/.vscode - name: Add .vscode/launch.json @@ -53,19 +68,19 @@ steps: path: animated_responsive_layout dart: format . - name: Build iOS simulator bundle - platforms: [ macos ] + platforms: [macos] path: animated_responsive_layout flutter: build ios --simulator - name: Build macOS app - platforms: [ macos ] + platforms: [macos] path: animated_responsive_layout flutter: build macos - name: Build Linux app - platforms: [ linux ] + platforms: [linux] path: animated_responsive_layout flutter: build linux - name: Build Windows app - platforms: [ windows ] + platforms: [windows] path: animated_responsive_layout flutter: build windows - name: Copy step_03 @@ -127,7 +142,7 @@ steps: --- b/material-3-codelab/step_04/pubspec.yaml +++ a/material-3-codelab/step_04/pubspec.yaml @@ -17,3 +17,13 @@ dev_dependencies: - + flutter: uses-material-design: true + @@ -883,15 +898,15 @@ steps: // Copyright 2022 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - + import 'package:flutter/material.dart'; - + class Destination { const Destination(this.icon, this.label); final IconData icon; final String label; } - + const List destinations = [ Destination(Icons.inbox_rounded, 'Inbox'), Destination(Icons.article_outlined, 'Articles'), @@ -904,9 +919,9 @@ steps: --- b/animated-responsive-layout/step_05/lib/main.dart +++ a/animated-responsive-layout/step_05/lib/main.dart @@ -4,6 +4,7 @@ - + import 'package:flutter/material.dart'; - + +import 'destinations.dart'; import 'models/data.dart' as data; import 'models/models.dart'; @@ -914,7 +929,7 @@ steps: @@ -40,12 +41,22 @@ class _FeedState extends State { _colorScheme.surface, ); - + + int selectedIndex = 0; + @override @@ -1061,20 +1076,20 @@ steps: --- b/animated-responsive-layout/step_06/lib/main.dart +++ a/animated-responsive-layout/step_06/lib/main.dart @@ -4,9 +4,10 @@ - + import 'package:flutter/material.dart'; - + -import 'destinations.dart'; import 'models/data.dart' as data; import 'models/models.dart'; +import 'widgets/disappearing_bottom_navigation_bar.dart'; +import 'widgets/disappearing_navigation_rail.dart'; import 'widgets/email_list_view.dart'; - + void main() { @@ -42,41 +43,65 @@ class _FeedState extends State { ); - + int selectedIndex = 0; + bool wideScreen = false; + @@ -1085,7 +1100,7 @@ steps: + final double width = MediaQuery.of(context).size.width; + wideScreen = width > 600; + } - + @override Widget build(BuildContext context) { return Scaffold( @@ -1453,13 +1468,13 @@ steps: --- b/animated-responsive-layout/step_07/lib/widgets/disappearing_bottom_navigation_bar.dart +++ a/animated-responsive-layout/step_07/lib/widgets/disappearing_bottom_navigation_bar.dart @@ -4,28 +4,36 @@ - + import 'package:flutter/material.dart'; - + +import '../animations.dart'; import '../destinations.dart'; +import '../transitions/bottom_bar_transition.dart'; - + class DisappearingBottomNavigationBar extends StatelessWidget { const DisappearingBottomNavigationBar({ super.key, @@ -1467,11 +1482,11 @@ steps: required this.selectedIndex, this.onDestinationSelected, }); - + + final BarAnimation barAnimation; final int selectedIndex; final ValueChanged? onDestinationSelected; - + @override Widget build(BuildContext context) { - return NavigationBar( @@ -1502,14 +1517,14 @@ steps: --- b/animated-responsive-layout/step_07/lib/widgets/disappearing_navigation_rail.dart +++ a/animated-responsive-layout/step_07/lib/widgets/disappearing_navigation_rail.dart @@ -4,49 +4,56 @@ - + import 'package:flutter/material.dart'; - + +import '../animations.dart'; import '../destinations.dart'; +import '../transitions/nav_rail_transition.dart'; +import 'animated_floating_action_button.dart'; - + class DisappearingNavigationRail extends StatelessWidget { const DisappearingNavigationRail({ super.key, @@ -1519,13 +1534,13 @@ steps: required this.selectedIndex, this.onDestinationSelected, }); - + + final RailAnimation railAnimation; + final RailFabAnimation railFabAnimation; final Color backgroundColor; final int selectedIndex; final ValueChanged? onDestinationSelected; - + @override Widget build(BuildContext context) { - final colorScheme = Theme.of(context).colorScheme; @@ -1588,9 +1603,9 @@ steps: --- b/animated-responsive-layout/step_07/lib/main.dart +++ a/animated-responsive-layout/step_07/lib/main.dart @@ -4,8 +4,10 @@ - + import 'package:flutter/material.dart'; - + +import 'animations.dart'; import 'models/data.dart' as data; import 'models/models.dart'; @@ -1601,7 +1616,7 @@ steps: @@ -35,73 +37,105 @@ class Feed extends StatefulWidget { State createState() => _FeedState(); } - + -class _FeedState extends State { +class _FeedState extends State with SingleTickerProviderStateMixin { late final _colorScheme = Theme.of(context).colorScheme; @@ -1618,15 +1633,15 @@ steps: + late final _railAnimation = RailAnimation(parent: _controller); + late final _railFabAnimation = RailFabAnimation(parent: _controller); + late final _barAnimation = BarAnimation(parent: _controller); - + int selectedIndex = 0; - bool wideScreen = false; + bool controllerInitialized = false; - + @override void didChangeDependencies() { super.didChangeDependencies(); - + final double width = MediaQuery.of(context).size.width; - wideScreen = width > 600; + final AnimationStatus status = _controller.status; @@ -1652,7 +1667,7 @@ steps: + _controller.dispose(); + super.dispose(); } - + @override Widget build(BuildContext context) { - return Scaffold( @@ -1870,15 +1885,15 @@ steps: // Copyright 2022 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - + import 'package:flutter/material.dart'; - + import '../models/data.dart' as data; import 'email_widget.dart'; - + class ReplyListView extends StatelessWidget { const ReplyListView({super.key}); - + @override Widget build(BuildContext context) { return Padding( @@ -1917,7 +1932,7 @@ steps: import 'widgets/disappearing_navigation_rail.dart'; import 'widgets/email_list_view.dart'; +import 'widgets/reply_list_view.dart'; - + void main() { runApp(const MainApp()); @@ -107,14 +109,18 @@ class _FeedState extends State with SingleTickerProviderStateMixin { @@ -1948,19 +1963,19 @@ steps: ), ), - name: Build iOS simulator bundle - platforms: [ macos ] + platforms: [macos] path: animated_responsive_layout flutter: build ios --simulator - name: Build macOS app - platforms: [ macos ] + platforms: [macos] path: animated_responsive_layout flutter: build macos - name: Build Linux app - platforms: [ linux ] + platforms: [linux] path: animated_responsive_layout flutter: build linux - name: Build Windows app - platforms: [ windows ] + platforms: [windows] path: animated_responsive_layout flutter: build windows - name: Copy step_08 diff --git a/animated-responsive-layout/step_03/.gemini/settings.json b/animated-responsive-layout/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animated-responsive-layout/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animated-responsive-layout/step_03/.gitignore b/animated-responsive-layout/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animated-responsive-layout/step_03/.gitignore +++ b/animated-responsive-layout/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animated-responsive-layout/step_03/android/build.gradle.kts b/animated-responsive-layout/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animated-responsive-layout/step_03/android/build.gradle.kts +++ b/animated-responsive-layout/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animated-responsive-layout/step_03/android/settings.gradle.kts b/animated-responsive-layout/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animated-responsive-layout/step_03/android/settings.gradle.kts +++ b/animated-responsive-layout/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animated-responsive-layout/step_03/ios/Flutter/AppFrameworkInfo.plist b/animated-responsive-layout/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animated-responsive-layout/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/animated-responsive-layout/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animated-responsive-layout/step_03/ios/Runner.xcodeproj/project.pbxproj b/animated-responsive-layout/step_03/ios/Runner.xcodeproj/project.pbxproj index 49cd4d98e3..def10fab0f 100644 --- a/animated-responsive-layout/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/animated-responsive-layout/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animated-responsive-layout/step_03/linux/runner/my_application.cc b/animated-responsive-layout/step_03/linux/runner/my_application.cc index aaab2bbdcd..2d908dc116 100644 --- a/animated-responsive-layout/step_03/linux/runner/my_application.cc +++ b/animated-responsive-layout/step_03/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animated-responsive-layout/step_03/macos/Runner.xcodeproj/project.pbxproj b/animated-responsive-layout/step_03/macos/Runner.xcodeproj/project.pbxproj index 30645dbf44..4ab697b8cd 100644 --- a/animated-responsive-layout/step_03/macos/Runner.xcodeproj/project.pbxproj +++ b/animated-responsive-layout/step_03/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animated-responsive-layout/step_03/pubspec.yaml b/animated-responsive-layout/step_03/pubspec.yaml index ca2f6a09fe..7ec7acc284 100644 --- a/animated-responsive-layout/step_03/pubspec.yaml +++ b/animated-responsive-layout/step_03/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/animated-responsive-layout/step_04/.gemini/settings.json b/animated-responsive-layout/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animated-responsive-layout/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animated-responsive-layout/step_04/.gitignore b/animated-responsive-layout/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animated-responsive-layout/step_04/.gitignore +++ b/animated-responsive-layout/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animated-responsive-layout/step_04/android/build.gradle.kts b/animated-responsive-layout/step_04/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animated-responsive-layout/step_04/android/build.gradle.kts +++ b/animated-responsive-layout/step_04/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animated-responsive-layout/step_04/android/settings.gradle.kts b/animated-responsive-layout/step_04/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animated-responsive-layout/step_04/android/settings.gradle.kts +++ b/animated-responsive-layout/step_04/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animated-responsive-layout/step_04/ios/Flutter/AppFrameworkInfo.plist b/animated-responsive-layout/step_04/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animated-responsive-layout/step_04/ios/Flutter/AppFrameworkInfo.plist +++ b/animated-responsive-layout/step_04/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animated-responsive-layout/step_04/ios/Runner.xcodeproj/project.pbxproj b/animated-responsive-layout/step_04/ios/Runner.xcodeproj/project.pbxproj index 49cd4d98e3..def10fab0f 100644 --- a/animated-responsive-layout/step_04/ios/Runner.xcodeproj/project.pbxproj +++ b/animated-responsive-layout/step_04/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animated-responsive-layout/step_04/linux/runner/my_application.cc b/animated-responsive-layout/step_04/linux/runner/my_application.cc index aaab2bbdcd..2d908dc116 100644 --- a/animated-responsive-layout/step_04/linux/runner/my_application.cc +++ b/animated-responsive-layout/step_04/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animated-responsive-layout/step_04/macos/Runner.xcodeproj/project.pbxproj b/animated-responsive-layout/step_04/macos/Runner.xcodeproj/project.pbxproj index 30645dbf44..4ab697b8cd 100644 --- a/animated-responsive-layout/step_04/macos/Runner.xcodeproj/project.pbxproj +++ b/animated-responsive-layout/step_04/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animated-responsive-layout/step_04/pubspec.yaml b/animated-responsive-layout/step_04/pubspec.yaml index 19980023bc..57fb6ff54b 100644 --- a/animated-responsive-layout/step_04/pubspec.yaml +++ b/animated-responsive-layout/step_04/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/animated-responsive-layout/step_05/.gemini/settings.json b/animated-responsive-layout/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animated-responsive-layout/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animated-responsive-layout/step_05/.gitignore b/animated-responsive-layout/step_05/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animated-responsive-layout/step_05/.gitignore +++ b/animated-responsive-layout/step_05/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animated-responsive-layout/step_05/android/build.gradle.kts b/animated-responsive-layout/step_05/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animated-responsive-layout/step_05/android/build.gradle.kts +++ b/animated-responsive-layout/step_05/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animated-responsive-layout/step_05/android/settings.gradle.kts b/animated-responsive-layout/step_05/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animated-responsive-layout/step_05/android/settings.gradle.kts +++ b/animated-responsive-layout/step_05/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animated-responsive-layout/step_05/ios/Flutter/AppFrameworkInfo.plist b/animated-responsive-layout/step_05/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animated-responsive-layout/step_05/ios/Flutter/AppFrameworkInfo.plist +++ b/animated-responsive-layout/step_05/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animated-responsive-layout/step_05/ios/Runner.xcodeproj/project.pbxproj b/animated-responsive-layout/step_05/ios/Runner.xcodeproj/project.pbxproj index 49cd4d98e3..def10fab0f 100644 --- a/animated-responsive-layout/step_05/ios/Runner.xcodeproj/project.pbxproj +++ b/animated-responsive-layout/step_05/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animated-responsive-layout/step_05/linux/runner/my_application.cc b/animated-responsive-layout/step_05/linux/runner/my_application.cc index aaab2bbdcd..2d908dc116 100644 --- a/animated-responsive-layout/step_05/linux/runner/my_application.cc +++ b/animated-responsive-layout/step_05/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animated-responsive-layout/step_05/macos/Runner.xcodeproj/project.pbxproj b/animated-responsive-layout/step_05/macos/Runner.xcodeproj/project.pbxproj index 30645dbf44..4ab697b8cd 100644 --- a/animated-responsive-layout/step_05/macos/Runner.xcodeproj/project.pbxproj +++ b/animated-responsive-layout/step_05/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animated-responsive-layout/step_05/pubspec.yaml b/animated-responsive-layout/step_05/pubspec.yaml index 19980023bc..57fb6ff54b 100644 --- a/animated-responsive-layout/step_05/pubspec.yaml +++ b/animated-responsive-layout/step_05/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/animated-responsive-layout/step_06/.gemini/settings.json b/animated-responsive-layout/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animated-responsive-layout/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animated-responsive-layout/step_06/.gitignore b/animated-responsive-layout/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animated-responsive-layout/step_06/.gitignore +++ b/animated-responsive-layout/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animated-responsive-layout/step_06/android/build.gradle.kts b/animated-responsive-layout/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animated-responsive-layout/step_06/android/build.gradle.kts +++ b/animated-responsive-layout/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animated-responsive-layout/step_06/android/settings.gradle.kts b/animated-responsive-layout/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animated-responsive-layout/step_06/android/settings.gradle.kts +++ b/animated-responsive-layout/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animated-responsive-layout/step_06/ios/Flutter/AppFrameworkInfo.plist b/animated-responsive-layout/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animated-responsive-layout/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/animated-responsive-layout/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animated-responsive-layout/step_06/ios/Runner.xcodeproj/project.pbxproj b/animated-responsive-layout/step_06/ios/Runner.xcodeproj/project.pbxproj index 49cd4d98e3..def10fab0f 100644 --- a/animated-responsive-layout/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/animated-responsive-layout/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animated-responsive-layout/step_06/linux/runner/my_application.cc b/animated-responsive-layout/step_06/linux/runner/my_application.cc index aaab2bbdcd..2d908dc116 100644 --- a/animated-responsive-layout/step_06/linux/runner/my_application.cc +++ b/animated-responsive-layout/step_06/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animated-responsive-layout/step_06/macos/Runner.xcodeproj/project.pbxproj b/animated-responsive-layout/step_06/macos/Runner.xcodeproj/project.pbxproj index 30645dbf44..4ab697b8cd 100644 --- a/animated-responsive-layout/step_06/macos/Runner.xcodeproj/project.pbxproj +++ b/animated-responsive-layout/step_06/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animated-responsive-layout/step_06/pubspec.yaml b/animated-responsive-layout/step_06/pubspec.yaml index 19980023bc..57fb6ff54b 100644 --- a/animated-responsive-layout/step_06/pubspec.yaml +++ b/animated-responsive-layout/step_06/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/animated-responsive-layout/step_07/.gemini/settings.json b/animated-responsive-layout/step_07/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animated-responsive-layout/step_07/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animated-responsive-layout/step_07/.gitignore b/animated-responsive-layout/step_07/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animated-responsive-layout/step_07/.gitignore +++ b/animated-responsive-layout/step_07/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animated-responsive-layout/step_07/android/build.gradle.kts b/animated-responsive-layout/step_07/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animated-responsive-layout/step_07/android/build.gradle.kts +++ b/animated-responsive-layout/step_07/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animated-responsive-layout/step_07/android/settings.gradle.kts b/animated-responsive-layout/step_07/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animated-responsive-layout/step_07/android/settings.gradle.kts +++ b/animated-responsive-layout/step_07/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animated-responsive-layout/step_07/ios/Flutter/AppFrameworkInfo.plist b/animated-responsive-layout/step_07/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animated-responsive-layout/step_07/ios/Flutter/AppFrameworkInfo.plist +++ b/animated-responsive-layout/step_07/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animated-responsive-layout/step_07/ios/Runner.xcodeproj/project.pbxproj b/animated-responsive-layout/step_07/ios/Runner.xcodeproj/project.pbxproj index 49cd4d98e3..def10fab0f 100644 --- a/animated-responsive-layout/step_07/ios/Runner.xcodeproj/project.pbxproj +++ b/animated-responsive-layout/step_07/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animated-responsive-layout/step_07/linux/runner/my_application.cc b/animated-responsive-layout/step_07/linux/runner/my_application.cc index aaab2bbdcd..2d908dc116 100644 --- a/animated-responsive-layout/step_07/linux/runner/my_application.cc +++ b/animated-responsive-layout/step_07/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animated-responsive-layout/step_07/macos/Runner.xcodeproj/project.pbxproj b/animated-responsive-layout/step_07/macos/Runner.xcodeproj/project.pbxproj index 30645dbf44..4ab697b8cd 100644 --- a/animated-responsive-layout/step_07/macos/Runner.xcodeproj/project.pbxproj +++ b/animated-responsive-layout/step_07/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animated-responsive-layout/step_07/pubspec.yaml b/animated-responsive-layout/step_07/pubspec.yaml index 19980023bc..57fb6ff54b 100644 --- a/animated-responsive-layout/step_07/pubspec.yaml +++ b/animated-responsive-layout/step_07/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/animated-responsive-layout/step_08/.gemini/settings.json b/animated-responsive-layout/step_08/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animated-responsive-layout/step_08/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animated-responsive-layout/step_08/.gitignore b/animated-responsive-layout/step_08/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animated-responsive-layout/step_08/.gitignore +++ b/animated-responsive-layout/step_08/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animated-responsive-layout/step_08/android/build.gradle.kts b/animated-responsive-layout/step_08/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animated-responsive-layout/step_08/android/build.gradle.kts +++ b/animated-responsive-layout/step_08/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animated-responsive-layout/step_08/android/settings.gradle.kts b/animated-responsive-layout/step_08/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animated-responsive-layout/step_08/android/settings.gradle.kts +++ b/animated-responsive-layout/step_08/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animated-responsive-layout/step_08/ios/Flutter/AppFrameworkInfo.plist b/animated-responsive-layout/step_08/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animated-responsive-layout/step_08/ios/Flutter/AppFrameworkInfo.plist +++ b/animated-responsive-layout/step_08/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animated-responsive-layout/step_08/ios/Runner.xcodeproj/project.pbxproj b/animated-responsive-layout/step_08/ios/Runner.xcodeproj/project.pbxproj index 49cd4d98e3..def10fab0f 100644 --- a/animated-responsive-layout/step_08/ios/Runner.xcodeproj/project.pbxproj +++ b/animated-responsive-layout/step_08/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animated-responsive-layout/step_08/linux/runner/my_application.cc b/animated-responsive-layout/step_08/linux/runner/my_application.cc index aaab2bbdcd..2d908dc116 100644 --- a/animated-responsive-layout/step_08/linux/runner/my_application.cc +++ b/animated-responsive-layout/step_08/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animated-responsive-layout/step_08/macos/Runner.xcodeproj/project.pbxproj b/animated-responsive-layout/step_08/macos/Runner.xcodeproj/project.pbxproj index 30645dbf44..4ab697b8cd 100644 --- a/animated-responsive-layout/step_08/macos/Runner.xcodeproj/project.pbxproj +++ b/animated-responsive-layout/step_08/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animated-responsive-layout/step_08/pubspec.yaml b/animated-responsive-layout/step_08/pubspec.yaml index 19980023bc..57fb6ff54b 100644 --- a/animated-responsive-layout/step_08/pubspec.yaml +++ b/animated-responsive-layout/step_08/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/animations/codelab_rebuild.yaml b/animations/codelab_rebuild.yaml index 46126e712a..c826da586c 100644 --- a/animations/codelab_rebuild.yaml +++ b/animations/codelab_rebuild.yaml @@ -11,6 +11,21 @@ steps: path: quiz/ios/Runner.xcodeproj/project.pbxproj - name: Remove README rm: quiz/README.md + - name: Add .gemini directory + mkdir: quiz/.gemini + - name: Add .gemini/settings.json + path: quiz/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add deps path: quiz flutter: pub add animations diff --git a/animations/step_01/.gemini/settings.json b/animations/step_01/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_01/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_01/.gitignore b/animations/step_01/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_01/.gitignore +++ b/animations/step_01/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_01/android/build.gradle.kts b/animations/step_01/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_01/android/build.gradle.kts +++ b/animations/step_01/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_01/android/settings.gradle.kts b/animations/step_01/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_01/android/settings.gradle.kts +++ b/animations/step_01/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_01/ios/Flutter/AppFrameworkInfo.plist b/animations/step_01/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_01/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_01/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_01/ios/Runner.xcodeproj/project.pbxproj b/animations/step_01/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_01/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_01/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_01/linux/runner/my_application.cc b/animations/step_01/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_01/linux/runner/my_application.cc +++ b/animations/step_01/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_01/macos/Runner.xcodeproj/project.pbxproj b/animations/step_01/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_01/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_01/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_01/pubspec.yaml b/animations/step_01/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_01/pubspec.yaml +++ b/animations/step_01/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_02_a/.gemini/settings.json b/animations/step_02_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_02_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_02_a/.gitignore b/animations/step_02_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_02_a/.gitignore +++ b/animations/step_02_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_02_a/android/build.gradle.kts b/animations/step_02_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_02_a/android/build.gradle.kts +++ b/animations/step_02_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_02_a/android/settings.gradle.kts b/animations/step_02_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_02_a/android/settings.gradle.kts +++ b/animations/step_02_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_02_a/ios/Flutter/AppFrameworkInfo.plist b/animations/step_02_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_02_a/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_02_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_02_a/ios/Runner.xcodeproj/project.pbxproj b/animations/step_02_a/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_02_a/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_02_a/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_02_a/linux/runner/my_application.cc b/animations/step_02_a/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_02_a/linux/runner/my_application.cc +++ b/animations/step_02_a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_02_a/macos/Runner.xcodeproj/project.pbxproj b/animations/step_02_a/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_02_a/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_02_a/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_02_a/pubspec.yaml b/animations/step_02_a/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_02_a/pubspec.yaml +++ b/animations/step_02_a/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_02_b/.gemini/settings.json b/animations/step_02_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_02_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_02_b/.gitignore b/animations/step_02_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_02_b/.gitignore +++ b/animations/step_02_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_02_b/android/build.gradle.kts b/animations/step_02_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_02_b/android/build.gradle.kts +++ b/animations/step_02_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_02_b/android/settings.gradle.kts b/animations/step_02_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_02_b/android/settings.gradle.kts +++ b/animations/step_02_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_02_b/ios/Flutter/AppFrameworkInfo.plist b/animations/step_02_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_02_b/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_02_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_02_b/ios/Runner.xcodeproj/project.pbxproj b/animations/step_02_b/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_02_b/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_02_b/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_02_b/linux/runner/my_application.cc b/animations/step_02_b/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_02_b/linux/runner/my_application.cc +++ b/animations/step_02_b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_02_b/macos/Runner.xcodeproj/project.pbxproj b/animations/step_02_b/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_02_b/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_02_b/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_02_b/pubspec.yaml b/animations/step_02_b/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_02_b/pubspec.yaml +++ b/animations/step_02_b/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_02_c/.gemini/settings.json b/animations/step_02_c/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_02_c/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_02_c/.gitignore b/animations/step_02_c/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_02_c/.gitignore +++ b/animations/step_02_c/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_02_c/android/build.gradle.kts b/animations/step_02_c/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_02_c/android/build.gradle.kts +++ b/animations/step_02_c/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_02_c/android/settings.gradle.kts b/animations/step_02_c/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_02_c/android/settings.gradle.kts +++ b/animations/step_02_c/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_02_c/ios/Flutter/AppFrameworkInfo.plist b/animations/step_02_c/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_02_c/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_02_c/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_02_c/ios/Runner.xcodeproj/project.pbxproj b/animations/step_02_c/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_02_c/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_02_c/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_02_c/linux/runner/my_application.cc b/animations/step_02_c/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_02_c/linux/runner/my_application.cc +++ b/animations/step_02_c/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_02_c/macos/Runner.xcodeproj/project.pbxproj b/animations/step_02_c/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_02_c/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_02_c/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_02_c/pubspec.yaml b/animations/step_02_c/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_02_c/pubspec.yaml +++ b/animations/step_02_c/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_02_d/.gemini/settings.json b/animations/step_02_d/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_02_d/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_02_d/.gitignore b/animations/step_02_d/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_02_d/.gitignore +++ b/animations/step_02_d/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_02_d/android/build.gradle.kts b/animations/step_02_d/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_02_d/android/build.gradle.kts +++ b/animations/step_02_d/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_02_d/android/settings.gradle.kts b/animations/step_02_d/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_02_d/android/settings.gradle.kts +++ b/animations/step_02_d/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_02_d/ios/Flutter/AppFrameworkInfo.plist b/animations/step_02_d/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_02_d/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_02_d/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_02_d/ios/Runner.xcodeproj/project.pbxproj b/animations/step_02_d/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_02_d/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_02_d/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_02_d/linux/runner/my_application.cc b/animations/step_02_d/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_02_d/linux/runner/my_application.cc +++ b/animations/step_02_d/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_02_d/macos/Runner.xcodeproj/project.pbxproj b/animations/step_02_d/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_02_d/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_02_d/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_02_d/pubspec.yaml b/animations/step_02_d/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_02_d/pubspec.yaml +++ b/animations/step_02_d/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_02_e/.gemini/settings.json b/animations/step_02_e/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_02_e/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_02_e/.gitignore b/animations/step_02_e/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_02_e/.gitignore +++ b/animations/step_02_e/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_02_e/android/build.gradle.kts b/animations/step_02_e/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_02_e/android/build.gradle.kts +++ b/animations/step_02_e/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_02_e/android/settings.gradle.kts b/animations/step_02_e/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_02_e/android/settings.gradle.kts +++ b/animations/step_02_e/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_02_e/ios/Flutter/AppFrameworkInfo.plist b/animations/step_02_e/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_02_e/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_02_e/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_02_e/ios/Runner.xcodeproj/project.pbxproj b/animations/step_02_e/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_02_e/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_02_e/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_02_e/linux/runner/my_application.cc b/animations/step_02_e/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_02_e/linux/runner/my_application.cc +++ b/animations/step_02_e/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_02_e/macos/Runner.xcodeproj/project.pbxproj b/animations/step_02_e/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_02_e/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_02_e/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_02_e/pubspec.yaml b/animations/step_02_e/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_02_e/pubspec.yaml +++ b/animations/step_02_e/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_03_a/.gemini/settings.json b/animations/step_03_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_03_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_03_a/.gitignore b/animations/step_03_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_03_a/.gitignore +++ b/animations/step_03_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_03_a/android/build.gradle.kts b/animations/step_03_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_03_a/android/build.gradle.kts +++ b/animations/step_03_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_03_a/android/settings.gradle.kts b/animations/step_03_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_03_a/android/settings.gradle.kts +++ b/animations/step_03_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_03_a/ios/Flutter/AppFrameworkInfo.plist b/animations/step_03_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_03_a/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_03_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_03_a/ios/Runner.xcodeproj/project.pbxproj b/animations/step_03_a/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_03_a/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_03_a/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_03_a/linux/runner/my_application.cc b/animations/step_03_a/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_03_a/linux/runner/my_application.cc +++ b/animations/step_03_a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_03_a/macos/Runner.xcodeproj/project.pbxproj b/animations/step_03_a/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_03_a/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_03_a/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_03_a/pubspec.yaml b/animations/step_03_a/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_03_a/pubspec.yaml +++ b/animations/step_03_a/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_03_b/.gemini/settings.json b/animations/step_03_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_03_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_03_b/.gitignore b/animations/step_03_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_03_b/.gitignore +++ b/animations/step_03_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_03_b/android/build.gradle.kts b/animations/step_03_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_03_b/android/build.gradle.kts +++ b/animations/step_03_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_03_b/android/settings.gradle.kts b/animations/step_03_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_03_b/android/settings.gradle.kts +++ b/animations/step_03_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_03_b/ios/Flutter/AppFrameworkInfo.plist b/animations/step_03_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_03_b/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_03_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_03_b/ios/Runner.xcodeproj/project.pbxproj b/animations/step_03_b/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_03_b/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_03_b/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_03_b/linux/runner/my_application.cc b/animations/step_03_b/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_03_b/linux/runner/my_application.cc +++ b/animations/step_03_b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_03_b/macos/Runner.xcodeproj/project.pbxproj b/animations/step_03_b/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_03_b/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_03_b/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_03_b/pubspec.yaml b/animations/step_03_b/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_03_b/pubspec.yaml +++ b/animations/step_03_b/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_03_c/.gemini/settings.json b/animations/step_03_c/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_03_c/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_03_c/.gitignore b/animations/step_03_c/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_03_c/.gitignore +++ b/animations/step_03_c/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_03_c/android/build.gradle.kts b/animations/step_03_c/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_03_c/android/build.gradle.kts +++ b/animations/step_03_c/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_03_c/android/settings.gradle.kts b/animations/step_03_c/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_03_c/android/settings.gradle.kts +++ b/animations/step_03_c/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_03_c/ios/Flutter/AppFrameworkInfo.plist b/animations/step_03_c/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_03_c/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_03_c/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_03_c/ios/Runner.xcodeproj/project.pbxproj b/animations/step_03_c/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_03_c/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_03_c/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_03_c/linux/runner/my_application.cc b/animations/step_03_c/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_03_c/linux/runner/my_application.cc +++ b/animations/step_03_c/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_03_c/macos/Runner.xcodeproj/project.pbxproj b/animations/step_03_c/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_03_c/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_03_c/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_03_c/pubspec.yaml b/animations/step_03_c/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_03_c/pubspec.yaml +++ b/animations/step_03_c/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_03_d/.gemini/settings.json b/animations/step_03_d/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_03_d/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_03_d/.gitignore b/animations/step_03_d/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_03_d/.gitignore +++ b/animations/step_03_d/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_03_d/android/build.gradle.kts b/animations/step_03_d/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_03_d/android/build.gradle.kts +++ b/animations/step_03_d/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_03_d/android/settings.gradle.kts b/animations/step_03_d/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_03_d/android/settings.gradle.kts +++ b/animations/step_03_d/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_03_d/ios/Flutter/AppFrameworkInfo.plist b/animations/step_03_d/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_03_d/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_03_d/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_03_d/ios/Runner.xcodeproj/project.pbxproj b/animations/step_03_d/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_03_d/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_03_d/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_03_d/linux/runner/my_application.cc b/animations/step_03_d/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_03_d/linux/runner/my_application.cc +++ b/animations/step_03_d/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_03_d/macos/Runner.xcodeproj/project.pbxproj b/animations/step_03_d/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_03_d/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_03_d/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_03_d/pubspec.yaml b/animations/step_03_d/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_03_d/pubspec.yaml +++ b/animations/step_03_d/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_04_a/.gemini/settings.json b/animations/step_04_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_04_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_04_a/.gitignore b/animations/step_04_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_04_a/.gitignore +++ b/animations/step_04_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_04_a/android/build.gradle.kts b/animations/step_04_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_04_a/android/build.gradle.kts +++ b/animations/step_04_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_04_a/android/settings.gradle.kts b/animations/step_04_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_04_a/android/settings.gradle.kts +++ b/animations/step_04_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_04_a/ios/Flutter/AppFrameworkInfo.plist b/animations/step_04_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_04_a/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_04_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_04_a/ios/Runner.xcodeproj/project.pbxproj b/animations/step_04_a/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_04_a/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_04_a/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_04_a/linux/runner/my_application.cc b/animations/step_04_a/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_04_a/linux/runner/my_application.cc +++ b/animations/step_04_a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_04_a/macos/Runner.xcodeproj/project.pbxproj b/animations/step_04_a/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_04_a/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_04_a/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_04_a/pubspec.yaml b/animations/step_04_a/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_04_a/pubspec.yaml +++ b/animations/step_04_a/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_04_b/.gemini/settings.json b/animations/step_04_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_04_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_04_b/.gitignore b/animations/step_04_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_04_b/.gitignore +++ b/animations/step_04_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_04_b/android/build.gradle.kts b/animations/step_04_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_04_b/android/build.gradle.kts +++ b/animations/step_04_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_04_b/android/settings.gradle.kts b/animations/step_04_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_04_b/android/settings.gradle.kts +++ b/animations/step_04_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_04_b/ios/Flutter/AppFrameworkInfo.plist b/animations/step_04_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_04_b/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_04_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_04_b/ios/Runner.xcodeproj/project.pbxproj b/animations/step_04_b/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_04_b/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_04_b/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_04_b/linux/runner/my_application.cc b/animations/step_04_b/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_04_b/linux/runner/my_application.cc +++ b/animations/step_04_b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_04_b/macos/Runner.xcodeproj/project.pbxproj b/animations/step_04_b/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_04_b/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_04_b/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_04_b/pubspec.yaml b/animations/step_04_b/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_04_b/pubspec.yaml +++ b/animations/step_04_b/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_04_c/.gemini/settings.json b/animations/step_04_c/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_04_c/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_04_c/.gitignore b/animations/step_04_c/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_04_c/.gitignore +++ b/animations/step_04_c/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_04_c/android/build.gradle.kts b/animations/step_04_c/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_04_c/android/build.gradle.kts +++ b/animations/step_04_c/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_04_c/android/settings.gradle.kts b/animations/step_04_c/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_04_c/android/settings.gradle.kts +++ b/animations/step_04_c/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_04_c/ios/Flutter/AppFrameworkInfo.plist b/animations/step_04_c/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_04_c/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_04_c/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_04_c/ios/Runner.xcodeproj/project.pbxproj b/animations/step_04_c/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_04_c/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_04_c/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_04_c/linux/runner/my_application.cc b/animations/step_04_c/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_04_c/linux/runner/my_application.cc +++ b/animations/step_04_c/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_04_c/macos/Runner.xcodeproj/project.pbxproj b/animations/step_04_c/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_04_c/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_04_c/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_04_c/pubspec.yaml b/animations/step_04_c/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_04_c/pubspec.yaml +++ b/animations/step_04_c/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_04_d/.gemini/settings.json b/animations/step_04_d/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_04_d/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_04_d/.gitignore b/animations/step_04_d/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_04_d/.gitignore +++ b/animations/step_04_d/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_04_d/android/build.gradle.kts b/animations/step_04_d/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_04_d/android/build.gradle.kts +++ b/animations/step_04_d/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_04_d/android/settings.gradle.kts b/animations/step_04_d/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_04_d/android/settings.gradle.kts +++ b/animations/step_04_d/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_04_d/ios/Flutter/AppFrameworkInfo.plist b/animations/step_04_d/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_04_d/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_04_d/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_04_d/ios/Runner.xcodeproj/project.pbxproj b/animations/step_04_d/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_04_d/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_04_d/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_04_d/linux/runner/my_application.cc b/animations/step_04_d/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_04_d/linux/runner/my_application.cc +++ b/animations/step_04_d/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_04_d/macos/Runner.xcodeproj/project.pbxproj b/animations/step_04_d/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_04_d/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_04_d/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_04_d/pubspec.yaml b/animations/step_04_d/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_04_d/pubspec.yaml +++ b/animations/step_04_d/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_05_a/.gemini/settings.json b/animations/step_05_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_05_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_05_a/.gitignore b/animations/step_05_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_05_a/.gitignore +++ b/animations/step_05_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_05_a/android/build.gradle.kts b/animations/step_05_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_05_a/android/build.gradle.kts +++ b/animations/step_05_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_05_a/android/settings.gradle.kts b/animations/step_05_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_05_a/android/settings.gradle.kts +++ b/animations/step_05_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_05_a/ios/Flutter/AppFrameworkInfo.plist b/animations/step_05_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_05_a/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_05_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_05_a/ios/Runner.xcodeproj/project.pbxproj b/animations/step_05_a/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_05_a/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_05_a/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_05_a/linux/runner/my_application.cc b/animations/step_05_a/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_05_a/linux/runner/my_application.cc +++ b/animations/step_05_a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_05_a/macos/Runner.xcodeproj/project.pbxproj b/animations/step_05_a/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_05_a/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_05_a/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_05_a/pubspec.yaml b/animations/step_05_a/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_05_a/pubspec.yaml +++ b/animations/step_05_a/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_05_b/.gemini/settings.json b/animations/step_05_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_05_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_05_b/.gitignore b/animations/step_05_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_05_b/.gitignore +++ b/animations/step_05_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_05_b/android/build.gradle.kts b/animations/step_05_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_05_b/android/build.gradle.kts +++ b/animations/step_05_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_05_b/android/settings.gradle.kts b/animations/step_05_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_05_b/android/settings.gradle.kts +++ b/animations/step_05_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_05_b/ios/Flutter/AppFrameworkInfo.plist b/animations/step_05_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_05_b/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_05_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_05_b/ios/Runner.xcodeproj/project.pbxproj b/animations/step_05_b/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_05_b/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_05_b/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_05_b/linux/runner/my_application.cc b/animations/step_05_b/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_05_b/linux/runner/my_application.cc +++ b/animations/step_05_b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_05_b/macos/Runner.xcodeproj/project.pbxproj b/animations/step_05_b/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_05_b/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_05_b/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_05_b/pubspec.yaml b/animations/step_05_b/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_05_b/pubspec.yaml +++ b/animations/step_05_b/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_05_c/.gemini/settings.json b/animations/step_05_c/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_05_c/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_05_c/.gitignore b/animations/step_05_c/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_05_c/.gitignore +++ b/animations/step_05_c/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_05_c/android/build.gradle.kts b/animations/step_05_c/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_05_c/android/build.gradle.kts +++ b/animations/step_05_c/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_05_c/android/settings.gradle.kts b/animations/step_05_c/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_05_c/android/settings.gradle.kts +++ b/animations/step_05_c/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_05_c/ios/Flutter/AppFrameworkInfo.plist b/animations/step_05_c/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_05_c/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_05_c/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_05_c/ios/Runner.xcodeproj/project.pbxproj b/animations/step_05_c/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_05_c/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_05_c/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_05_c/linux/runner/my_application.cc b/animations/step_05_c/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_05_c/linux/runner/my_application.cc +++ b/animations/step_05_c/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_05_c/macos/Runner.xcodeproj/project.pbxproj b/animations/step_05_c/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_05_c/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_05_c/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_05_c/pubspec.yaml b/animations/step_05_c/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_05_c/pubspec.yaml +++ b/animations/step_05_c/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/animations/step_05_d/.gemini/settings.json b/animations/step_05_d/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/animations/step_05_d/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/animations/step_05_d/.gitignore b/animations/step_05_d/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/animations/step_05_d/.gitignore +++ b/animations/step_05_d/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/animations/step_05_d/android/build.gradle.kts b/animations/step_05_d/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/animations/step_05_d/android/build.gradle.kts +++ b/animations/step_05_d/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/animations/step_05_d/android/settings.gradle.kts b/animations/step_05_d/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/animations/step_05_d/android/settings.gradle.kts +++ b/animations/step_05_d/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/animations/step_05_d/ios/Flutter/AppFrameworkInfo.plist b/animations/step_05_d/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/animations/step_05_d/ios/Flutter/AppFrameworkInfo.plist +++ b/animations/step_05_d/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/animations/step_05_d/ios/Runner.xcodeproj/project.pbxproj b/animations/step_05_d/ios/Runner.xcodeproj/project.pbxproj index faef24d87a..c4fa534923 100644 --- a/animations/step_05_d/ios/Runner.xcodeproj/project.pbxproj +++ b/animations/step_05_d/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/animations/step_05_d/linux/runner/my_application.cc b/animations/step_05_d/linux/runner/my_application.cc index 0040d7e46c..93dc770a7b 100644 --- a/animations/step_05_d/linux/runner/my_application.cc +++ b/animations/step_05_d/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/animations/step_05_d/macos/Runner.xcodeproj/project.pbxproj b/animations/step_05_d/macos/Runner.xcodeproj/project.pbxproj index 45c35dfed5..8fad39944f 100644 --- a/animations/step_05_d/macos/Runner.xcodeproj/project.pbxproj +++ b/animations/step_05_d/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/animations/step_05_d/pubspec.yaml b/animations/step_05_d/pubspec.yaml index 310dd17ac6..bbdf9e6087 100644 --- a/animations/step_05_d/pubspec.yaml +++ b/animations/step_05_d/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/audio_soloud/codelab_rebuild.yaml b/audio_soloud/codelab_rebuild.yaml index 0d10787525..bea64a7d67 100644 --- a/audio_soloud/codelab_rebuild.yaml +++ b/audio_soloud/codelab_rebuild.yaml @@ -12,6 +12,21 @@ steps: - name: Add dependencies path: audio_soloud flutter: pub add flutter_soloud logging + - name: Mkdir .gemini + mkdir: audio_soloud/.gemini + - name: Add .gemini/settings.json + path: audio_soloud/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add assets to pubspec.yaml path: audio_soloud/pubspec.yaml patch-u: | @@ -25,35 +40,8 @@ steps: + assets: + - assets/music/ + - assets/sounds/ - - name: Update iOS deployment target - path: audio_soloud/ios/Podfile - patch-u: | - --- b/audio_soloud/ios/Podfile - +++ a/audio_soloud/ios/Podfile - @@ -1,5 +1,5 @@ - -# Uncomment this line to define a global platform for your project - -# platform :ios, '12.0' - +# SoLoud requires iOS 13.0 minimum, Flutter only requires 12.0 - +platform :ios, '13.0' - - # CocoaPods analytics sends network stats synchronously affecting flutter build latency. - ENV['COCOAPODS_DISABLE_STATS'] = 'true' - - - name: Update macOS deployment target - path: audio_soloud/macos/Podfile - patch-u: | - --- b/audio_soloud/macos/Podfile - +++ a/audio_soloud/macos/Podfile - @@ -1,4 +1,4 @@ - -platform :osx, '10.14' - +platform :osx, '10.15' - - # CocoaPods analytics sends network stats synchronously affecting flutter build latency. - ENV['COCOAPODS_DISABLE_STATS'] = 'true' - - name: Create lib/audio directory mkdir: audio_soloud/lib/audio - - name: Add lib/audio/audio_controller.dart path: audio_soloud/lib/audio/audio_controller.dart replace-contents: | @@ -92,7 +80,6 @@ steps: // TODO } } - - name: Replace lib/main.dart path: audio_soloud/lib/main.dart replace-contents: | @@ -215,7 +202,6 @@ steps: ); } } - - name: Remove README rm: audio_soloud/README.md - name: Create test directory @@ -274,22 +260,18 @@ steps: @override Future startMusic() async {} } - - name: Create assets/music directory mkdir: audio_soloud/assets/music - - name: Add assets/music/looped-song.ogg path: audio_soloud/assets/music/looped-song.ogg base64-contents: | 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HbOoiKvXHqjT1bNt0NN377jwv1Yx/pvvRmOkoI+y+g4INzcR0dzMIRMBrF6dVG0n3lVESGvydTuMPHZS9CoE7rLsevVrb4wlU3ubgfrJecRaY/z62Z+79b/eYt3VPv+sZJ3P3z++rbHef20VteeXHftaveep/G7/+Xn7/fO0Lv/TbuWv39V4nC52seJ+btaIpAL8z7K8jf3y5TZN9tubbYk148GpEihXHq6/PiqbTp9TZnjlLSWro6vvpFsv+cS4+Coe5H23euzAxS6ukqFgUizcfBxX5jBaShqK55TI0/7H0Uub4xcx545IpfMROyYAjE6VIc1hmYguX7cukNzmeFdo43yf/lvFiiLHrG1uZXH68seeveUV96kRrccVbZf90cestd49yvutfvvWl4pv7+u91ZSP3h5ZP+7Hw9p7TP/4ufZY/fjT247XT+XB70d/22uv+2mr0krgeXVEv83M5HbI97g4zFsulpb9kHflEby/gs31QL/e3iX0n/uM6JOeHvOhYe8bS/WSLyZbWx0VdtFbmYK8/vv8u/KQfCjPwbGF7/u7r/nrnorufkXY7yQAxIpTlmP6ylc5mmhfv6kS2gVvh3Nck8+3X96f5R69pt+mmf3W8+PraH/Nncdp7/nq9V+7LMXlvaKo16fx/enxyHau3PVY63NybKfsEXt29up7+sk9M0frV4frJe7Hz4qQpQqY8oPI0bk/9I7dVWzURY+nfmMU/+RXG7SICj1TQOz8T1kho9d0NSpsraerfGgTK/oCdjpajDboYzxG9h7SrHBeroe+D6vx94BOUoXRfZg30G1OAgC0khcLhBAvPBc7HpnQystV+c98wJj/aUdGav/UM7/6dbx+Rszq9fxS81VN+39accrxW3Xr379/sE/LpqJysZ/sdRx9eJTXZqNeRpb1p55qMqdXH39OvqnpU+rYczJFtVJmkSpAwvhoad63CPUUzGGplrXs7ZxdjCaKtFidKQZpLrri0EYHq1/0hw8uUdcySJdih59cj9y8PyPOU8NHD/Z9HPrJaJHLYxM+/NaecqLICGAArFKr5bmStldehZi99mDVDtnbw1u8f7ji783/MRuX7xyqWC/9XthjWjxabe9y3L7tp+fD2pvu0hq357f6uky9+cX1WHtN2tSes3194HY5Ofn6W39/O/nV8e8xmBzFnpzslc2XvKgCrGzI4jta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 - - name: Create assets/sounds directory mkdir: audio_soloud/assets/sounds - name: Add assets/sounds/pew1.mp3 path: audio_soloud/assets/sounds/pew1.mp3 base64-contents: | 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 - - name: Add assets/sounds/pew2.mp3 path: audio_soloud/assets/sounds/pew2.mp3 base64-contents: | @@ -298,24 +280,23 @@ steps: path: audio_soloud/assets/sounds/pew3.mp3 base64-contents: | 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 - - name: Run flutter test path: audio_soloud flutter: test - name: Build iOS simulator bundle - platforms: [ macos ] + platforms: [macos] path: audio_soloud flutter: build ios - name: Build macOS app - platforms: [ macos ] + platforms: [macos] path: audio_soloud flutter: build macos - name: Build Linux app - platforms: [ linux ] + platforms: [linux] path: audio_soloud flutter: build linux - name: Build Windows app - platforms: [ windows ] + platforms: [windows] path: audio_soloud flutter: build windows - name: Copy step_02 @@ -358,24 +339,23 @@ steps: } Future playSound(String assetKey) async { - - name: Run flutter test path: audio_soloud flutter: test - name: Build iOS simulator bundle - platforms: [ macos ] + platforms: [macos] path: audio_soloud flutter: build ios - name: Build macOS app - platforms: [ macos ] + platforms: [macos] path: audio_soloud flutter: build macos - name: Build Linux app - platforms: [ linux ] + platforms: [linux] path: audio_soloud flutter: build linux - name: Build Windows app - platforms: [ windows ] + platforms: [windows] path: audio_soloud flutter: build windows - name: Copy step_03 @@ -405,24 +385,23 @@ steps: } Future startMusic() async { - - name: Run flutter test path: audio_soloud flutter: test - name: Build iOS simulator bundle - platforms: [ macos ] + platforms: [macos] path: audio_soloud flutter: build ios - name: Build macOS app - platforms: [ macos ] + platforms: [macos] path: audio_soloud flutter: build macos - name: Build Linux app - platforms: [ linux ] + platforms: [linux] path: audio_soloud flutter: build linux - name: Build Windows app - platforms: [ windows ] + platforms: [windows] path: audio_soloud flutter: build windows - name: Copy step_04a @@ -457,24 +436,23 @@ steps: } Future startMusic() async { - - name: Run flutter test path: audio_soloud flutter: test - name: Build iOS simulator bundle - platforms: [ macos ] + platforms: [macos] path: audio_soloud flutter: build ios - name: Build macOS app - platforms: [ macos ] + platforms: [macos] path: audio_soloud flutter: build macos - name: Build Linux app - platforms: [ linux ] + platforms: [linux] path: audio_soloud flutter: build linux - name: Build Windows app - platforms: [ windows ] + platforms: [windows] path: audio_soloud flutter: build windows - name: Copy step_04b @@ -495,9 +473,9 @@ steps: --- b/audio_soloud/step_05/lib/audio/audio_controller.dart +++ a/audio_soloud/step_05/lib/audio/audio_controller.dart @@ -8,6 +8,8 @@ class AudioController { - + SoLoud? _soloud; - + + SoundHandle? _musicHandle; + Future initialize() async { @@ -505,7 +483,7 @@ steps: await _soloud!.init(); @@ -27,11 +29,40 @@ class AudioController { } - + Future startMusic() async { - _log.warning('Not implemented yet.'); + if (_musicHandle != null) { @@ -533,7 +511,7 @@ steps: + loopingStartAt: const Duration(seconds: 25, milliseconds: 43), + ); } - + void fadeOutMusic() { - _log.warning('Not implemented yet.'); + if (_musicHandle == null) { @@ -544,26 +522,25 @@ steps: + _soloud!.fadeVolume(_musicHandle!, 0, length); + _soloud!.scheduleStop(_musicHandle!, length); } - - void applyFilter() { + void applyFilter() { - name: Run flutter test path: audio_soloud flutter: test - name: Build iOS simulator bundle - platforms: [ macos ] + platforms: [macos] path: audio_soloud flutter: build ios - name: Build macOS app - platforms: [ macos ] + platforms: [macos] path: audio_soloud flutter: build macos - name: Build Linux app - platforms: [ linux ] + platforms: [linux] path: audio_soloud flutter: build linux - name: Build Windows app - platforms: [ windows ] + platforms: [windows] path: audio_soloud flutter: build windows - name: Copy step_05 @@ -585,37 +562,36 @@ steps: +++ a/audio_soloud/step_06/lib/audio/audio_controller.dart @@ -66,10 +66,12 @@ class AudioController { } - + void applyFilter() { - // TODO + _soloud!.filters.freeverbFilter.activate(); + _soloud!.filters.freeverbFilter.wet.value = 0.2; + _soloud!.filters.freeverbFilter.roomSize.value = 0.9; } - + void removeFilter() { - // TODO + _soloud!.filters.freeverbFilter.deactivate(); } } - - name: Run flutter test path: audio_soloud flutter: test - name: Build iOS simulator bundle - platforms: [ macos ] + platforms: [macos] path: audio_soloud flutter: build ios - name: Build macOS app - platforms: [ macos ] + platforms: [macos] path: audio_soloud flutter: build macos - name: Build Linux app - platforms: [ linux ] + platforms: [linux] path: audio_soloud flutter: build linux - name: Build Windows app - platforms: [ windows ] + platforms: [windows] path: audio_soloud flutter: build windows - name: Copy step_06 diff --git a/audio_soloud/step_02/.gemini/settings.json b/audio_soloud/step_02/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/audio_soloud/step_02/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/audio_soloud/step_02/.gitignore b/audio_soloud/step_02/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/audio_soloud/step_02/.gitignore +++ b/audio_soloud/step_02/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/audio_soloud/step_02/android/build.gradle.kts b/audio_soloud/step_02/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/audio_soloud/step_02/android/build.gradle.kts +++ b/audio_soloud/step_02/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/audio_soloud/step_02/android/settings.gradle.kts b/audio_soloud/step_02/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/audio_soloud/step_02/android/settings.gradle.kts +++ b/audio_soloud/step_02/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/audio_soloud/step_02/ios/Flutter/AppFrameworkInfo.plist b/audio_soloud/step_02/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/audio_soloud/step_02/ios/Flutter/AppFrameworkInfo.plist +++ b/audio_soloud/step_02/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/audio_soloud/step_02/ios/Podfile b/audio_soloud/step_02/ios/Podfile index 11e1cb83ed..620e46eba6 100644 --- a/audio_soloud/step_02/ios/Podfile +++ b/audio_soloud/step_02/ios/Podfile @@ -1,5 +1,5 @@ -# SoLoud requires iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/audio_soloud/step_02/ios/Runner.xcodeproj/project.pbxproj b/audio_soloud/step_02/ios/Runner.xcodeproj/project.pbxproj index 0204e7368e..f44b754fea 100644 --- a/audio_soloud/step_02/ios/Runner.xcodeproj/project.pbxproj +++ b/audio_soloud/step_02/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 267FB2F5AE531C67DE6C9531 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 5A27E2528DD87F9F89A8F496 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */; }; + 518458C4898204509FA8803B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */; }; 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 */; }; - ED03A6A99EBF6C00357A9F2E /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,19 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0C21FB93F238A57F603E249C /* 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 = ""; }; 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 = ""; }; - 210904AE07F4D4235B03228F /* 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 = ""; }; - 237AAFE3579FAEF53199E33B /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4D0516E7F21ADEDF47BCDA54 /* 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 = ""; }; - 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 50675E3CB7E0147FB171A5CF /* 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 = ""; }; + 72D3F3F36B51DA22477E1A96 /* 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 = ""; }; 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 = ""; }; - 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,45 +61,32 @@ 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 = ""; }; - 99A9DE7815992298DAA21363 /* 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 = ""; }; - B36E3E3A0F5677F6F8FF83AC /* 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 = ""; }; - F8F189323E5341D8C0202ED2 /* 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 = ""; }; + C43A442D65149FD8CFBA937A /* 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 = ""; }; + C4ECE8405C4D5CEFA39C15B0 /* 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 = ""; }; + ED46057B5D58743E845B425F /* 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 = ""; }; + FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6BC252E4E790859FA21437BA /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ED03A6A99EBF6C00357A9F2E /* Pods_RunnerTests.framework in Frameworks */, + 267FB2F5AE531C67DE6C9531 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + E1BDB37AB6F077DFF1C5E386 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5A27E2528DD87F9F89A8F496 /* Pods_Runner.framework in Frameworks */, + 518458C4898204509FA8803B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 070D076C925F1228A336AB53 /* Pods */ = { - isa = PBXGroup; - children = ( - 4D0516E7F21ADEDF47BCDA54 /* Pods-Runner.debug.xcconfig */, - B36E3E3A0F5677F6F8FF83AC /* Pods-Runner.release.xcconfig */, - 210904AE07F4D4235B03228F /* Pods-Runner.profile.xcconfig */, - 237AAFE3579FAEF53199E33B /* Pods-RunnerTests.debug.xcconfig */, - F8F189323E5341D8C0202ED2 /* Pods-RunnerTests.release.xcconfig */, - 99A9DE7815992298DAA21363 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -109,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 585D3CAD4ADD964CFE65ABE9 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */, - 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 070D076C925F1228A336AB53 /* Pods */, - 585D3CAD4ADD964CFE65ABE9 /* Frameworks */, + AB475B2504583B829E3613C0 /* Pods */, + F3EA88EAA4D510CCDA06E286 /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + AB475B2504583B829E3613C0 /* Pods */ = { + isa = PBXGroup; + children = ( + ED46057B5D58743E845B425F /* Pods-Runner.debug.xcconfig */, + 72D3F3F36B51DA22477E1A96 /* Pods-Runner.release.xcconfig */, + C43A442D65149FD8CFBA937A /* Pods-Runner.profile.xcconfig */, + 0C21FB93F238A57F603E249C /* Pods-RunnerTests.debug.xcconfig */, + C4ECE8405C4D5CEFA39C15B0 /* Pods-RunnerTests.release.xcconfig */, + 50675E3CB7E0147FB171A5CF /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F3EA88EAA4D510CCDA06E286 /* Frameworks */ = { + isa = PBXGroup; + children = ( + FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */, + 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 188AA035B9E7E23CFF1CDBD0 /* [CP] Check Pods Manifest.lock */, + 5A68F557B7AD943DD91E742B /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6BC252E4E790859FA21437BA /* Frameworks */, + E1BDB37AB6F077DFF1C5E386 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 06C8F1EB772FDA35A2401AD3 /* [CP] Check Pods Manifest.lock */, + 845E5C9079DE04A6E8C51B6E /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 6276FE4EC31FD3D2B959CF89 /* [CP] Embed Pods Frameworks */, + 925A10CC0DC5E8782A35357D /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,29 +270,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 06C8F1EB772FDA35A2401AD3 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 188AA035B9E7E23CFF1CDBD0 /* [CP] Check Pods Manifest.lock */ = { + 5A68F557B7AD943DD91E742B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -314,23 +308,29 @@ 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 */ = { + 845E5C9079DE04A6E8C51B6E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 6276FE4EC31FD3D2B959CF89 /* [CP] Embed Pods Frameworks */ = { + 925A10CC0DC5E8782A35357D /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 237AAFE3579FAEF53199E33B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0C21FB93F238A57F603E249C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F8F189323E5341D8C0202ED2 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C4ECE8405C4D5CEFA39C15B0 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99A9DE7815992298DAA21363 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 50675E3CB7E0147FB171A5CF /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/audio_soloud/step_02/linux/runner/my_application.cc b/audio_soloud/step_02/linux/runner/my_application.cc index 5df4c311a3..42666d98ce 100644 --- a/audio_soloud/step_02/linux/runner/my_application.cc +++ b/audio_soloud/step_02/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/audio_soloud/step_02/macos/Runner.xcodeproj/project.pbxproj b/audio_soloud/step_02/macos/Runner.xcodeproj/project.pbxproj index 0adaaeca88..7f39f1b922 100644 --- a/audio_soloud/step_02/macos/Runner.xcodeproj/project.pbxproj +++ b/audio_soloud/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 */; }; - 720F038F0008679F8132DFE4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */; }; - AA11D2E6B992DB49C3228EDD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */; }; + 3EC59F7CF03A7CA1C21E7D38 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */; }; + A4FE3A555107F33437E2A8FE /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,9 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 011736D0AEC2E6B6B7D432A4 /* 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 = ""; }; - 08A480E100E957677274E87A /* 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 = ""; }; - 2663FD7702E376F31E97F16B /* 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 = ""; }; + 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -81,13 +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 = ""; }; - 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5B09DFAC14CBFA8661875581 /* 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 = ""; }; + 5D63B4CCACCEF6E7BED58D19 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 965F3EF90CF9FFDE280CB2DD /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B334E14A0FEBB7DE3B627495 /* 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 = ""; }; - ECE5065AF3D026559973196A /* 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 = ""; }; + 9EA40EFE7E487B55F1EE2C8A /* 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 = ""; }; + C9483CBD28D6DBBF2B4D0656 /* 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 = ""; }; + CA6570B64EF55B7F840DBB56 /* 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 = ""; }; + D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FDA0144BE17E4B9660A5710C /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 720F038F0008679F8132DFE4 /* Pods_RunnerTests.framework in Frameworks */, + 3EC59F7CF03A7CA1C21E7D38 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AA11D2E6B992DB49C3228EDD /* Pods_Runner.framework in Frameworks */, + A4FE3A555107F33437E2A8FE /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6737946715FAF066240B4D73 /* Pods */, + ADDD3BF370EB18BB5F5F3D60 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6737946715FAF066240B4D73 /* Pods */ = { + ADDD3BF370EB18BB5F5F3D60 /* Pods */ = { isa = PBXGroup; children = ( - 5B09DFAC14CBFA8661875581 /* Pods-Runner.debug.xcconfig */, - B334E14A0FEBB7DE3B627495 /* Pods-Runner.release.xcconfig */, - 011736D0AEC2E6B6B7D432A4 /* Pods-Runner.profile.xcconfig */, - 08A480E100E957677274E87A /* Pods-RunnerTests.debug.xcconfig */, - 2663FD7702E376F31E97F16B /* Pods-RunnerTests.release.xcconfig */, - ECE5065AF3D026559973196A /* Pods-RunnerTests.profile.xcconfig */, + FDA0144BE17E4B9660A5710C /* Pods-Runner.debug.xcconfig */, + 5D63B4CCACCEF6E7BED58D19 /* Pods-Runner.release.xcconfig */, + CA6570B64EF55B7F840DBB56 /* Pods-Runner.profile.xcconfig */, + 9EA40EFE7E487B55F1EE2C8A /* Pods-RunnerTests.debug.xcconfig */, + C9483CBD28D6DBBF2B4D0656 /* Pods-RunnerTests.release.xcconfig */, + 965F3EF90CF9FFDE280CB2DD /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */, - 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */, + D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */, + 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - C73CA58CC150FA756EB0FCC6 /* [CP] Check Pods Manifest.lock */, + 0E62F381DD87A07C1696F352 /* [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 = ( - AB91D99FB1F4A314551E432C /* [CP] Check Pods Manifest.lock */, + 1E2C68EC0F96DFC43288EB9C /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CA127AE5D3F0DC600E2A1288 /* [CP] Embed Pods Frameworks */, + B6371C19CA2EC79A15C38B82 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,89 +323,89 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { + 0E62F381DD87A07C1696F352 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; 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-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\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; }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { + 1E2C68EC0F96DFC43288EB9C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - Flutter/ephemeral/tripwire, + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + 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; }; - AB91D99FB1F4A314551E432C /* [CP] Check Pods Manifest.lock */ = { + 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; 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; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; }; - C73CA58CC150FA756EB0FCC6 /* [CP] Check Pods Manifest.lock */ = { + 33CC111E2044C6BF0003C045 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", + Flutter/ephemeral/tripwire, ); - name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - CA127AE5D3F0DC600E2A1288 /* [CP] Embed Pods Frameworks */ = { + B6371C19CA2EC79A15C38B82 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 08A480E100E957677274E87A /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 9EA40EFE7E487B55F1EE2C8A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2663FD7702E376F31E97F16B /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C9483CBD28D6DBBF2B4D0656 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ECE5065AF3D026559973196A /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 965F3EF90CF9FFDE280CB2DD /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/audio_soloud/step_02/pubspec.yaml b/audio_soloud/step_02/pubspec.yaml index 95e9054125..d0061515d1 100644 --- a/audio_soloud/step_02/pubspec.yaml +++ b/audio_soloud/step_02/pubspec.yaml @@ -4,12 +4,12 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flutter_soloud: ^3.1.10 + flutter_soloud: ^3.2.5 logging: ^1.3.0 dev_dependencies: diff --git a/audio_soloud/step_03/.gemini/settings.json b/audio_soloud/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/audio_soloud/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/audio_soloud/step_03/.gitignore b/audio_soloud/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/audio_soloud/step_03/.gitignore +++ b/audio_soloud/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/audio_soloud/step_03/android/build.gradle.kts b/audio_soloud/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/audio_soloud/step_03/android/build.gradle.kts +++ b/audio_soloud/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/audio_soloud/step_03/android/settings.gradle.kts b/audio_soloud/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/audio_soloud/step_03/android/settings.gradle.kts +++ b/audio_soloud/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/audio_soloud/step_03/ios/Flutter/AppFrameworkInfo.plist b/audio_soloud/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/audio_soloud/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/audio_soloud/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/audio_soloud/step_03/ios/Podfile b/audio_soloud/step_03/ios/Podfile index 11e1cb83ed..620e46eba6 100644 --- a/audio_soloud/step_03/ios/Podfile +++ b/audio_soloud/step_03/ios/Podfile @@ -1,5 +1,5 @@ -# SoLoud requires iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/audio_soloud/step_03/ios/Runner.xcodeproj/project.pbxproj b/audio_soloud/step_03/ios/Runner.xcodeproj/project.pbxproj index 0204e7368e..f44b754fea 100644 --- a/audio_soloud/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/audio_soloud/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 267FB2F5AE531C67DE6C9531 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 5A27E2528DD87F9F89A8F496 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */; }; + 518458C4898204509FA8803B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */; }; 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 */; }; - ED03A6A99EBF6C00357A9F2E /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,19 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0C21FB93F238A57F603E249C /* 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 = ""; }; 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 = ""; }; - 210904AE07F4D4235B03228F /* 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 = ""; }; - 237AAFE3579FAEF53199E33B /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4D0516E7F21ADEDF47BCDA54 /* 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 = ""; }; - 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 50675E3CB7E0147FB171A5CF /* 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 = ""; }; + 72D3F3F36B51DA22477E1A96 /* 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 = ""; }; 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 = ""; }; - 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,45 +61,32 @@ 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 = ""; }; - 99A9DE7815992298DAA21363 /* 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 = ""; }; - B36E3E3A0F5677F6F8FF83AC /* 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 = ""; }; - F8F189323E5341D8C0202ED2 /* 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 = ""; }; + C43A442D65149FD8CFBA937A /* 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 = ""; }; + C4ECE8405C4D5CEFA39C15B0 /* 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 = ""; }; + ED46057B5D58743E845B425F /* 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 = ""; }; + FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6BC252E4E790859FA21437BA /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ED03A6A99EBF6C00357A9F2E /* Pods_RunnerTests.framework in Frameworks */, + 267FB2F5AE531C67DE6C9531 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + E1BDB37AB6F077DFF1C5E386 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5A27E2528DD87F9F89A8F496 /* Pods_Runner.framework in Frameworks */, + 518458C4898204509FA8803B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 070D076C925F1228A336AB53 /* Pods */ = { - isa = PBXGroup; - children = ( - 4D0516E7F21ADEDF47BCDA54 /* Pods-Runner.debug.xcconfig */, - B36E3E3A0F5677F6F8FF83AC /* Pods-Runner.release.xcconfig */, - 210904AE07F4D4235B03228F /* Pods-Runner.profile.xcconfig */, - 237AAFE3579FAEF53199E33B /* Pods-RunnerTests.debug.xcconfig */, - F8F189323E5341D8C0202ED2 /* Pods-RunnerTests.release.xcconfig */, - 99A9DE7815992298DAA21363 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -109,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 585D3CAD4ADD964CFE65ABE9 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */, - 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 070D076C925F1228A336AB53 /* Pods */, - 585D3CAD4ADD964CFE65ABE9 /* Frameworks */, + AB475B2504583B829E3613C0 /* Pods */, + F3EA88EAA4D510CCDA06E286 /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + AB475B2504583B829E3613C0 /* Pods */ = { + isa = PBXGroup; + children = ( + ED46057B5D58743E845B425F /* Pods-Runner.debug.xcconfig */, + 72D3F3F36B51DA22477E1A96 /* Pods-Runner.release.xcconfig */, + C43A442D65149FD8CFBA937A /* Pods-Runner.profile.xcconfig */, + 0C21FB93F238A57F603E249C /* Pods-RunnerTests.debug.xcconfig */, + C4ECE8405C4D5CEFA39C15B0 /* Pods-RunnerTests.release.xcconfig */, + 50675E3CB7E0147FB171A5CF /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F3EA88EAA4D510CCDA06E286 /* Frameworks */ = { + isa = PBXGroup; + children = ( + FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */, + 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 188AA035B9E7E23CFF1CDBD0 /* [CP] Check Pods Manifest.lock */, + 5A68F557B7AD943DD91E742B /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6BC252E4E790859FA21437BA /* Frameworks */, + E1BDB37AB6F077DFF1C5E386 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 06C8F1EB772FDA35A2401AD3 /* [CP] Check Pods Manifest.lock */, + 845E5C9079DE04A6E8C51B6E /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 6276FE4EC31FD3D2B959CF89 /* [CP] Embed Pods Frameworks */, + 925A10CC0DC5E8782A35357D /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,29 +270,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 06C8F1EB772FDA35A2401AD3 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 188AA035B9E7E23CFF1CDBD0 /* [CP] Check Pods Manifest.lock */ = { + 5A68F557B7AD943DD91E742B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -314,23 +308,29 @@ 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 */ = { + 845E5C9079DE04A6E8C51B6E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 6276FE4EC31FD3D2B959CF89 /* [CP] Embed Pods Frameworks */ = { + 925A10CC0DC5E8782A35357D /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 237AAFE3579FAEF53199E33B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0C21FB93F238A57F603E249C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F8F189323E5341D8C0202ED2 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C4ECE8405C4D5CEFA39C15B0 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99A9DE7815992298DAA21363 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 50675E3CB7E0147FB171A5CF /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/audio_soloud/step_03/linux/runner/my_application.cc b/audio_soloud/step_03/linux/runner/my_application.cc index 5df4c311a3..42666d98ce 100644 --- a/audio_soloud/step_03/linux/runner/my_application.cc +++ b/audio_soloud/step_03/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/audio_soloud/step_03/macos/Runner.xcodeproj/project.pbxproj b/audio_soloud/step_03/macos/Runner.xcodeproj/project.pbxproj index 0adaaeca88..7f39f1b922 100644 --- a/audio_soloud/step_03/macos/Runner.xcodeproj/project.pbxproj +++ b/audio_soloud/step_03/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 */; }; - 720F038F0008679F8132DFE4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */; }; - AA11D2E6B992DB49C3228EDD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */; }; + 3EC59F7CF03A7CA1C21E7D38 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */; }; + A4FE3A555107F33437E2A8FE /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,9 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 011736D0AEC2E6B6B7D432A4 /* 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 = ""; }; - 08A480E100E957677274E87A /* 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 = ""; }; - 2663FD7702E376F31E97F16B /* 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 = ""; }; + 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -81,13 +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 = ""; }; - 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5B09DFAC14CBFA8661875581 /* 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 = ""; }; + 5D63B4CCACCEF6E7BED58D19 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 965F3EF90CF9FFDE280CB2DD /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B334E14A0FEBB7DE3B627495 /* 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 = ""; }; - ECE5065AF3D026559973196A /* 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 = ""; }; + 9EA40EFE7E487B55F1EE2C8A /* 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 = ""; }; + C9483CBD28D6DBBF2B4D0656 /* 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 = ""; }; + CA6570B64EF55B7F840DBB56 /* 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 = ""; }; + D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FDA0144BE17E4B9660A5710C /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 720F038F0008679F8132DFE4 /* Pods_RunnerTests.framework in Frameworks */, + 3EC59F7CF03A7CA1C21E7D38 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AA11D2E6B992DB49C3228EDD /* Pods_Runner.framework in Frameworks */, + A4FE3A555107F33437E2A8FE /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6737946715FAF066240B4D73 /* Pods */, + ADDD3BF370EB18BB5F5F3D60 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6737946715FAF066240B4D73 /* Pods */ = { + ADDD3BF370EB18BB5F5F3D60 /* Pods */ = { isa = PBXGroup; children = ( - 5B09DFAC14CBFA8661875581 /* Pods-Runner.debug.xcconfig */, - B334E14A0FEBB7DE3B627495 /* Pods-Runner.release.xcconfig */, - 011736D0AEC2E6B6B7D432A4 /* Pods-Runner.profile.xcconfig */, - 08A480E100E957677274E87A /* Pods-RunnerTests.debug.xcconfig */, - 2663FD7702E376F31E97F16B /* Pods-RunnerTests.release.xcconfig */, - ECE5065AF3D026559973196A /* Pods-RunnerTests.profile.xcconfig */, + FDA0144BE17E4B9660A5710C /* Pods-Runner.debug.xcconfig */, + 5D63B4CCACCEF6E7BED58D19 /* Pods-Runner.release.xcconfig */, + CA6570B64EF55B7F840DBB56 /* Pods-Runner.profile.xcconfig */, + 9EA40EFE7E487B55F1EE2C8A /* Pods-RunnerTests.debug.xcconfig */, + C9483CBD28D6DBBF2B4D0656 /* Pods-RunnerTests.release.xcconfig */, + 965F3EF90CF9FFDE280CB2DD /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */, - 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */, + D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */, + 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - C73CA58CC150FA756EB0FCC6 /* [CP] Check Pods Manifest.lock */, + 0E62F381DD87A07C1696F352 /* [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 = ( - AB91D99FB1F4A314551E432C /* [CP] Check Pods Manifest.lock */, + 1E2C68EC0F96DFC43288EB9C /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CA127AE5D3F0DC600E2A1288 /* [CP] Embed Pods Frameworks */, + B6371C19CA2EC79A15C38B82 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,89 +323,89 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { + 0E62F381DD87A07C1696F352 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; 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-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\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; }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { + 1E2C68EC0F96DFC43288EB9C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - Flutter/ephemeral/tripwire, + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + 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; }; - AB91D99FB1F4A314551E432C /* [CP] Check Pods Manifest.lock */ = { + 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; 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; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; }; - C73CA58CC150FA756EB0FCC6 /* [CP] Check Pods Manifest.lock */ = { + 33CC111E2044C6BF0003C045 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", + Flutter/ephemeral/tripwire, ); - name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - CA127AE5D3F0DC600E2A1288 /* [CP] Embed Pods Frameworks */ = { + B6371C19CA2EC79A15C38B82 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 08A480E100E957677274E87A /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 9EA40EFE7E487B55F1EE2C8A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2663FD7702E376F31E97F16B /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C9483CBD28D6DBBF2B4D0656 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ECE5065AF3D026559973196A /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 965F3EF90CF9FFDE280CB2DD /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/audio_soloud/step_03/pubspec.yaml b/audio_soloud/step_03/pubspec.yaml index 95e9054125..d0061515d1 100644 --- a/audio_soloud/step_03/pubspec.yaml +++ b/audio_soloud/step_03/pubspec.yaml @@ -4,12 +4,12 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flutter_soloud: ^3.1.10 + flutter_soloud: ^3.2.5 logging: ^1.3.0 dev_dependencies: diff --git a/audio_soloud/step_04a/.gemini/settings.json b/audio_soloud/step_04a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/audio_soloud/step_04a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/audio_soloud/step_04a/.gitignore b/audio_soloud/step_04a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/audio_soloud/step_04a/.gitignore +++ b/audio_soloud/step_04a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/audio_soloud/step_04a/android/build.gradle.kts b/audio_soloud/step_04a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/audio_soloud/step_04a/android/build.gradle.kts +++ b/audio_soloud/step_04a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/audio_soloud/step_04a/android/settings.gradle.kts b/audio_soloud/step_04a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/audio_soloud/step_04a/android/settings.gradle.kts +++ b/audio_soloud/step_04a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/audio_soloud/step_04a/ios/Flutter/AppFrameworkInfo.plist b/audio_soloud/step_04a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/audio_soloud/step_04a/ios/Flutter/AppFrameworkInfo.plist +++ b/audio_soloud/step_04a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/audio_soloud/step_04a/ios/Podfile b/audio_soloud/step_04a/ios/Podfile index 11e1cb83ed..620e46eba6 100644 --- a/audio_soloud/step_04a/ios/Podfile +++ b/audio_soloud/step_04a/ios/Podfile @@ -1,5 +1,5 @@ -# SoLoud requires iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/audio_soloud/step_04a/ios/Runner.xcodeproj/project.pbxproj b/audio_soloud/step_04a/ios/Runner.xcodeproj/project.pbxproj index 0204e7368e..f44b754fea 100644 --- a/audio_soloud/step_04a/ios/Runner.xcodeproj/project.pbxproj +++ b/audio_soloud/step_04a/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 267FB2F5AE531C67DE6C9531 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 5A27E2528DD87F9F89A8F496 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */; }; + 518458C4898204509FA8803B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */; }; 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 */; }; - ED03A6A99EBF6C00357A9F2E /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,19 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0C21FB93F238A57F603E249C /* 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 = ""; }; 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 = ""; }; - 210904AE07F4D4235B03228F /* 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 = ""; }; - 237AAFE3579FAEF53199E33B /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4D0516E7F21ADEDF47BCDA54 /* 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 = ""; }; - 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 50675E3CB7E0147FB171A5CF /* 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 = ""; }; + 72D3F3F36B51DA22477E1A96 /* 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 = ""; }; 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 = ""; }; - 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,45 +61,32 @@ 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 = ""; }; - 99A9DE7815992298DAA21363 /* 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 = ""; }; - B36E3E3A0F5677F6F8FF83AC /* 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 = ""; }; - F8F189323E5341D8C0202ED2 /* 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 = ""; }; + C43A442D65149FD8CFBA937A /* 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 = ""; }; + C4ECE8405C4D5CEFA39C15B0 /* 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 = ""; }; + ED46057B5D58743E845B425F /* 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 = ""; }; + FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6BC252E4E790859FA21437BA /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ED03A6A99EBF6C00357A9F2E /* Pods_RunnerTests.framework in Frameworks */, + 267FB2F5AE531C67DE6C9531 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + E1BDB37AB6F077DFF1C5E386 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5A27E2528DD87F9F89A8F496 /* Pods_Runner.framework in Frameworks */, + 518458C4898204509FA8803B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 070D076C925F1228A336AB53 /* Pods */ = { - isa = PBXGroup; - children = ( - 4D0516E7F21ADEDF47BCDA54 /* Pods-Runner.debug.xcconfig */, - B36E3E3A0F5677F6F8FF83AC /* Pods-Runner.release.xcconfig */, - 210904AE07F4D4235B03228F /* Pods-Runner.profile.xcconfig */, - 237AAFE3579FAEF53199E33B /* Pods-RunnerTests.debug.xcconfig */, - F8F189323E5341D8C0202ED2 /* Pods-RunnerTests.release.xcconfig */, - 99A9DE7815992298DAA21363 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -109,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 585D3CAD4ADD964CFE65ABE9 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */, - 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 070D076C925F1228A336AB53 /* Pods */, - 585D3CAD4ADD964CFE65ABE9 /* Frameworks */, + AB475B2504583B829E3613C0 /* Pods */, + F3EA88EAA4D510CCDA06E286 /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + AB475B2504583B829E3613C0 /* Pods */ = { + isa = PBXGroup; + children = ( + ED46057B5D58743E845B425F /* Pods-Runner.debug.xcconfig */, + 72D3F3F36B51DA22477E1A96 /* Pods-Runner.release.xcconfig */, + C43A442D65149FD8CFBA937A /* Pods-Runner.profile.xcconfig */, + 0C21FB93F238A57F603E249C /* Pods-RunnerTests.debug.xcconfig */, + C4ECE8405C4D5CEFA39C15B0 /* Pods-RunnerTests.release.xcconfig */, + 50675E3CB7E0147FB171A5CF /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F3EA88EAA4D510CCDA06E286 /* Frameworks */ = { + isa = PBXGroup; + children = ( + FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */, + 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 188AA035B9E7E23CFF1CDBD0 /* [CP] Check Pods Manifest.lock */, + 5A68F557B7AD943DD91E742B /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6BC252E4E790859FA21437BA /* Frameworks */, + E1BDB37AB6F077DFF1C5E386 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 06C8F1EB772FDA35A2401AD3 /* [CP] Check Pods Manifest.lock */, + 845E5C9079DE04A6E8C51B6E /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 6276FE4EC31FD3D2B959CF89 /* [CP] Embed Pods Frameworks */, + 925A10CC0DC5E8782A35357D /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,29 +270,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 06C8F1EB772FDA35A2401AD3 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 188AA035B9E7E23CFF1CDBD0 /* [CP] Check Pods Manifest.lock */ = { + 5A68F557B7AD943DD91E742B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -314,23 +308,29 @@ 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 */ = { + 845E5C9079DE04A6E8C51B6E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 6276FE4EC31FD3D2B959CF89 /* [CP] Embed Pods Frameworks */ = { + 925A10CC0DC5E8782A35357D /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 237AAFE3579FAEF53199E33B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0C21FB93F238A57F603E249C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F8F189323E5341D8C0202ED2 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C4ECE8405C4D5CEFA39C15B0 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99A9DE7815992298DAA21363 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 50675E3CB7E0147FB171A5CF /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/audio_soloud/step_04a/linux/runner/my_application.cc b/audio_soloud/step_04a/linux/runner/my_application.cc index 5df4c311a3..42666d98ce 100644 --- a/audio_soloud/step_04a/linux/runner/my_application.cc +++ b/audio_soloud/step_04a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/audio_soloud/step_04a/macos/Runner.xcodeproj/project.pbxproj b/audio_soloud/step_04a/macos/Runner.xcodeproj/project.pbxproj index 0adaaeca88..7f39f1b922 100644 --- a/audio_soloud/step_04a/macos/Runner.xcodeproj/project.pbxproj +++ b/audio_soloud/step_04a/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 */; }; - 720F038F0008679F8132DFE4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */; }; - AA11D2E6B992DB49C3228EDD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */; }; + 3EC59F7CF03A7CA1C21E7D38 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */; }; + A4FE3A555107F33437E2A8FE /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,9 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 011736D0AEC2E6B6B7D432A4 /* 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 = ""; }; - 08A480E100E957677274E87A /* 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 = ""; }; - 2663FD7702E376F31E97F16B /* 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 = ""; }; + 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -81,13 +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 = ""; }; - 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5B09DFAC14CBFA8661875581 /* 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 = ""; }; + 5D63B4CCACCEF6E7BED58D19 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 965F3EF90CF9FFDE280CB2DD /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B334E14A0FEBB7DE3B627495 /* 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 = ""; }; - ECE5065AF3D026559973196A /* 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 = ""; }; + 9EA40EFE7E487B55F1EE2C8A /* 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 = ""; }; + C9483CBD28D6DBBF2B4D0656 /* 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 = ""; }; + CA6570B64EF55B7F840DBB56 /* 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 = ""; }; + D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FDA0144BE17E4B9660A5710C /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 720F038F0008679F8132DFE4 /* Pods_RunnerTests.framework in Frameworks */, + 3EC59F7CF03A7CA1C21E7D38 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AA11D2E6B992DB49C3228EDD /* Pods_Runner.framework in Frameworks */, + A4FE3A555107F33437E2A8FE /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6737946715FAF066240B4D73 /* Pods */, + ADDD3BF370EB18BB5F5F3D60 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6737946715FAF066240B4D73 /* Pods */ = { + ADDD3BF370EB18BB5F5F3D60 /* Pods */ = { isa = PBXGroup; children = ( - 5B09DFAC14CBFA8661875581 /* Pods-Runner.debug.xcconfig */, - B334E14A0FEBB7DE3B627495 /* Pods-Runner.release.xcconfig */, - 011736D0AEC2E6B6B7D432A4 /* Pods-Runner.profile.xcconfig */, - 08A480E100E957677274E87A /* Pods-RunnerTests.debug.xcconfig */, - 2663FD7702E376F31E97F16B /* Pods-RunnerTests.release.xcconfig */, - ECE5065AF3D026559973196A /* Pods-RunnerTests.profile.xcconfig */, + FDA0144BE17E4B9660A5710C /* Pods-Runner.debug.xcconfig */, + 5D63B4CCACCEF6E7BED58D19 /* Pods-Runner.release.xcconfig */, + CA6570B64EF55B7F840DBB56 /* Pods-Runner.profile.xcconfig */, + 9EA40EFE7E487B55F1EE2C8A /* Pods-RunnerTests.debug.xcconfig */, + C9483CBD28D6DBBF2B4D0656 /* Pods-RunnerTests.release.xcconfig */, + 965F3EF90CF9FFDE280CB2DD /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */, - 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */, + D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */, + 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - C73CA58CC150FA756EB0FCC6 /* [CP] Check Pods Manifest.lock */, + 0E62F381DD87A07C1696F352 /* [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 = ( - AB91D99FB1F4A314551E432C /* [CP] Check Pods Manifest.lock */, + 1E2C68EC0F96DFC43288EB9C /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CA127AE5D3F0DC600E2A1288 /* [CP] Embed Pods Frameworks */, + B6371C19CA2EC79A15C38B82 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,89 +323,89 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { + 0E62F381DD87A07C1696F352 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; 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-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\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; }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { + 1E2C68EC0F96DFC43288EB9C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - Flutter/ephemeral/tripwire, + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + 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; }; - AB91D99FB1F4A314551E432C /* [CP] Check Pods Manifest.lock */ = { + 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; 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; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; }; - C73CA58CC150FA756EB0FCC6 /* [CP] Check Pods Manifest.lock */ = { + 33CC111E2044C6BF0003C045 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", + Flutter/ephemeral/tripwire, ); - name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - CA127AE5D3F0DC600E2A1288 /* [CP] Embed Pods Frameworks */ = { + B6371C19CA2EC79A15C38B82 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 08A480E100E957677274E87A /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 9EA40EFE7E487B55F1EE2C8A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2663FD7702E376F31E97F16B /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C9483CBD28D6DBBF2B4D0656 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ECE5065AF3D026559973196A /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 965F3EF90CF9FFDE280CB2DD /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/audio_soloud/step_04a/pubspec.yaml b/audio_soloud/step_04a/pubspec.yaml index 95e9054125..d0061515d1 100644 --- a/audio_soloud/step_04a/pubspec.yaml +++ b/audio_soloud/step_04a/pubspec.yaml @@ -4,12 +4,12 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flutter_soloud: ^3.1.10 + flutter_soloud: ^3.2.5 logging: ^1.3.0 dev_dependencies: diff --git a/audio_soloud/step_04b/.gemini/settings.json b/audio_soloud/step_04b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/audio_soloud/step_04b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/audio_soloud/step_04b/.gitignore b/audio_soloud/step_04b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/audio_soloud/step_04b/.gitignore +++ b/audio_soloud/step_04b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/audio_soloud/step_04b/android/build.gradle.kts b/audio_soloud/step_04b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/audio_soloud/step_04b/android/build.gradle.kts +++ b/audio_soloud/step_04b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/audio_soloud/step_04b/android/settings.gradle.kts b/audio_soloud/step_04b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/audio_soloud/step_04b/android/settings.gradle.kts +++ b/audio_soloud/step_04b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/audio_soloud/step_04b/ios/Flutter/AppFrameworkInfo.plist b/audio_soloud/step_04b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/audio_soloud/step_04b/ios/Flutter/AppFrameworkInfo.plist +++ b/audio_soloud/step_04b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/audio_soloud/step_04b/ios/Podfile b/audio_soloud/step_04b/ios/Podfile index 11e1cb83ed..620e46eba6 100644 --- a/audio_soloud/step_04b/ios/Podfile +++ b/audio_soloud/step_04b/ios/Podfile @@ -1,5 +1,5 @@ -# SoLoud requires iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/audio_soloud/step_04b/ios/Runner.xcodeproj/project.pbxproj b/audio_soloud/step_04b/ios/Runner.xcodeproj/project.pbxproj index 0204e7368e..f44b754fea 100644 --- a/audio_soloud/step_04b/ios/Runner.xcodeproj/project.pbxproj +++ b/audio_soloud/step_04b/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 267FB2F5AE531C67DE6C9531 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 5A27E2528DD87F9F89A8F496 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */; }; + 518458C4898204509FA8803B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */; }; 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 */; }; - ED03A6A99EBF6C00357A9F2E /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,19 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0C21FB93F238A57F603E249C /* 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 = ""; }; 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 = ""; }; - 210904AE07F4D4235B03228F /* 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 = ""; }; - 237AAFE3579FAEF53199E33B /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4D0516E7F21ADEDF47BCDA54 /* 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 = ""; }; - 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 50675E3CB7E0147FB171A5CF /* 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 = ""; }; + 72D3F3F36B51DA22477E1A96 /* 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 = ""; }; 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 = ""; }; - 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,45 +61,32 @@ 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 = ""; }; - 99A9DE7815992298DAA21363 /* 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 = ""; }; - B36E3E3A0F5677F6F8FF83AC /* 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 = ""; }; - F8F189323E5341D8C0202ED2 /* 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 = ""; }; + C43A442D65149FD8CFBA937A /* 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 = ""; }; + C4ECE8405C4D5CEFA39C15B0 /* 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 = ""; }; + ED46057B5D58743E845B425F /* 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 = ""; }; + FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6BC252E4E790859FA21437BA /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ED03A6A99EBF6C00357A9F2E /* Pods_RunnerTests.framework in Frameworks */, + 267FB2F5AE531C67DE6C9531 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + E1BDB37AB6F077DFF1C5E386 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5A27E2528DD87F9F89A8F496 /* Pods_Runner.framework in Frameworks */, + 518458C4898204509FA8803B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 070D076C925F1228A336AB53 /* Pods */ = { - isa = PBXGroup; - children = ( - 4D0516E7F21ADEDF47BCDA54 /* Pods-Runner.debug.xcconfig */, - B36E3E3A0F5677F6F8FF83AC /* Pods-Runner.release.xcconfig */, - 210904AE07F4D4235B03228F /* Pods-Runner.profile.xcconfig */, - 237AAFE3579FAEF53199E33B /* Pods-RunnerTests.debug.xcconfig */, - F8F189323E5341D8C0202ED2 /* Pods-RunnerTests.release.xcconfig */, - 99A9DE7815992298DAA21363 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -109,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 585D3CAD4ADD964CFE65ABE9 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */, - 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 070D076C925F1228A336AB53 /* Pods */, - 585D3CAD4ADD964CFE65ABE9 /* Frameworks */, + AB475B2504583B829E3613C0 /* Pods */, + F3EA88EAA4D510CCDA06E286 /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + AB475B2504583B829E3613C0 /* Pods */ = { + isa = PBXGroup; + children = ( + ED46057B5D58743E845B425F /* Pods-Runner.debug.xcconfig */, + 72D3F3F36B51DA22477E1A96 /* Pods-Runner.release.xcconfig */, + C43A442D65149FD8CFBA937A /* Pods-Runner.profile.xcconfig */, + 0C21FB93F238A57F603E249C /* Pods-RunnerTests.debug.xcconfig */, + C4ECE8405C4D5CEFA39C15B0 /* Pods-RunnerTests.release.xcconfig */, + 50675E3CB7E0147FB171A5CF /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F3EA88EAA4D510CCDA06E286 /* Frameworks */ = { + isa = PBXGroup; + children = ( + FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */, + 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 188AA035B9E7E23CFF1CDBD0 /* [CP] Check Pods Manifest.lock */, + 5A68F557B7AD943DD91E742B /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6BC252E4E790859FA21437BA /* Frameworks */, + E1BDB37AB6F077DFF1C5E386 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 06C8F1EB772FDA35A2401AD3 /* [CP] Check Pods Manifest.lock */, + 845E5C9079DE04A6E8C51B6E /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 6276FE4EC31FD3D2B959CF89 /* [CP] Embed Pods Frameworks */, + 925A10CC0DC5E8782A35357D /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,29 +270,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 06C8F1EB772FDA35A2401AD3 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 188AA035B9E7E23CFF1CDBD0 /* [CP] Check Pods Manifest.lock */ = { + 5A68F557B7AD943DD91E742B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -314,23 +308,29 @@ 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 */ = { + 845E5C9079DE04A6E8C51B6E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 6276FE4EC31FD3D2B959CF89 /* [CP] Embed Pods Frameworks */ = { + 925A10CC0DC5E8782A35357D /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 237AAFE3579FAEF53199E33B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0C21FB93F238A57F603E249C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F8F189323E5341D8C0202ED2 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C4ECE8405C4D5CEFA39C15B0 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99A9DE7815992298DAA21363 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 50675E3CB7E0147FB171A5CF /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/audio_soloud/step_04b/linux/runner/my_application.cc b/audio_soloud/step_04b/linux/runner/my_application.cc index 5df4c311a3..42666d98ce 100644 --- a/audio_soloud/step_04b/linux/runner/my_application.cc +++ b/audio_soloud/step_04b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/audio_soloud/step_04b/macos/Runner.xcodeproj/project.pbxproj b/audio_soloud/step_04b/macos/Runner.xcodeproj/project.pbxproj index 0adaaeca88..7f39f1b922 100644 --- a/audio_soloud/step_04b/macos/Runner.xcodeproj/project.pbxproj +++ b/audio_soloud/step_04b/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 */; }; - 720F038F0008679F8132DFE4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */; }; - AA11D2E6B992DB49C3228EDD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */; }; + 3EC59F7CF03A7CA1C21E7D38 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */; }; + A4FE3A555107F33437E2A8FE /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,9 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 011736D0AEC2E6B6B7D432A4 /* 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 = ""; }; - 08A480E100E957677274E87A /* 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 = ""; }; - 2663FD7702E376F31E97F16B /* 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 = ""; }; + 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -81,13 +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 = ""; }; - 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5B09DFAC14CBFA8661875581 /* 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 = ""; }; + 5D63B4CCACCEF6E7BED58D19 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 965F3EF90CF9FFDE280CB2DD /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B334E14A0FEBB7DE3B627495 /* 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 = ""; }; - ECE5065AF3D026559973196A /* 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 = ""; }; + 9EA40EFE7E487B55F1EE2C8A /* 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 = ""; }; + C9483CBD28D6DBBF2B4D0656 /* 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 = ""; }; + CA6570B64EF55B7F840DBB56 /* 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 = ""; }; + D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FDA0144BE17E4B9660A5710C /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 720F038F0008679F8132DFE4 /* Pods_RunnerTests.framework in Frameworks */, + 3EC59F7CF03A7CA1C21E7D38 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AA11D2E6B992DB49C3228EDD /* Pods_Runner.framework in Frameworks */, + A4FE3A555107F33437E2A8FE /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6737946715FAF066240B4D73 /* Pods */, + ADDD3BF370EB18BB5F5F3D60 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6737946715FAF066240B4D73 /* Pods */ = { + ADDD3BF370EB18BB5F5F3D60 /* Pods */ = { isa = PBXGroup; children = ( - 5B09DFAC14CBFA8661875581 /* Pods-Runner.debug.xcconfig */, - B334E14A0FEBB7DE3B627495 /* Pods-Runner.release.xcconfig */, - 011736D0AEC2E6B6B7D432A4 /* Pods-Runner.profile.xcconfig */, - 08A480E100E957677274E87A /* Pods-RunnerTests.debug.xcconfig */, - 2663FD7702E376F31E97F16B /* Pods-RunnerTests.release.xcconfig */, - ECE5065AF3D026559973196A /* Pods-RunnerTests.profile.xcconfig */, + FDA0144BE17E4B9660A5710C /* Pods-Runner.debug.xcconfig */, + 5D63B4CCACCEF6E7BED58D19 /* Pods-Runner.release.xcconfig */, + CA6570B64EF55B7F840DBB56 /* Pods-Runner.profile.xcconfig */, + 9EA40EFE7E487B55F1EE2C8A /* Pods-RunnerTests.debug.xcconfig */, + C9483CBD28D6DBBF2B4D0656 /* Pods-RunnerTests.release.xcconfig */, + 965F3EF90CF9FFDE280CB2DD /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */, - 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */, + D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */, + 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - C73CA58CC150FA756EB0FCC6 /* [CP] Check Pods Manifest.lock */, + 0E62F381DD87A07C1696F352 /* [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 = ( - AB91D99FB1F4A314551E432C /* [CP] Check Pods Manifest.lock */, + 1E2C68EC0F96DFC43288EB9C /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CA127AE5D3F0DC600E2A1288 /* [CP] Embed Pods Frameworks */, + B6371C19CA2EC79A15C38B82 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,89 +323,89 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { + 0E62F381DD87A07C1696F352 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; 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-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\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; }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { + 1E2C68EC0F96DFC43288EB9C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - Flutter/ephemeral/tripwire, + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + 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; }; - AB91D99FB1F4A314551E432C /* [CP] Check Pods Manifest.lock */ = { + 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; 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; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; }; - C73CA58CC150FA756EB0FCC6 /* [CP] Check Pods Manifest.lock */ = { + 33CC111E2044C6BF0003C045 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", + Flutter/ephemeral/tripwire, ); - name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - CA127AE5D3F0DC600E2A1288 /* [CP] Embed Pods Frameworks */ = { + B6371C19CA2EC79A15C38B82 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 08A480E100E957677274E87A /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 9EA40EFE7E487B55F1EE2C8A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2663FD7702E376F31E97F16B /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C9483CBD28D6DBBF2B4D0656 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ECE5065AF3D026559973196A /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 965F3EF90CF9FFDE280CB2DD /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/audio_soloud/step_04b/pubspec.yaml b/audio_soloud/step_04b/pubspec.yaml index 95e9054125..d0061515d1 100644 --- a/audio_soloud/step_04b/pubspec.yaml +++ b/audio_soloud/step_04b/pubspec.yaml @@ -4,12 +4,12 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flutter_soloud: ^3.1.10 + flutter_soloud: ^3.2.5 logging: ^1.3.0 dev_dependencies: diff --git a/audio_soloud/step_05/.gemini/settings.json b/audio_soloud/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/audio_soloud/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/audio_soloud/step_05/.gitignore b/audio_soloud/step_05/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/audio_soloud/step_05/.gitignore +++ b/audio_soloud/step_05/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/audio_soloud/step_05/android/build.gradle.kts b/audio_soloud/step_05/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/audio_soloud/step_05/android/build.gradle.kts +++ b/audio_soloud/step_05/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/audio_soloud/step_05/android/settings.gradle.kts b/audio_soloud/step_05/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/audio_soloud/step_05/android/settings.gradle.kts +++ b/audio_soloud/step_05/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/audio_soloud/step_05/ios/Flutter/AppFrameworkInfo.plist b/audio_soloud/step_05/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/audio_soloud/step_05/ios/Flutter/AppFrameworkInfo.plist +++ b/audio_soloud/step_05/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/audio_soloud/step_05/ios/Podfile b/audio_soloud/step_05/ios/Podfile index 11e1cb83ed..620e46eba6 100644 --- a/audio_soloud/step_05/ios/Podfile +++ b/audio_soloud/step_05/ios/Podfile @@ -1,5 +1,5 @@ -# SoLoud requires iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/audio_soloud/step_05/ios/Runner.xcodeproj/project.pbxproj b/audio_soloud/step_05/ios/Runner.xcodeproj/project.pbxproj index 0204e7368e..f44b754fea 100644 --- a/audio_soloud/step_05/ios/Runner.xcodeproj/project.pbxproj +++ b/audio_soloud/step_05/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 267FB2F5AE531C67DE6C9531 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 5A27E2528DD87F9F89A8F496 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */; }; + 518458C4898204509FA8803B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */; }; 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 */; }; - ED03A6A99EBF6C00357A9F2E /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,19 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0C21FB93F238A57F603E249C /* 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 = ""; }; 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 = ""; }; - 210904AE07F4D4235B03228F /* 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 = ""; }; - 237AAFE3579FAEF53199E33B /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4D0516E7F21ADEDF47BCDA54 /* 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 = ""; }; - 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 50675E3CB7E0147FB171A5CF /* 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 = ""; }; + 72D3F3F36B51DA22477E1A96 /* 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 = ""; }; 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 = ""; }; - 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,45 +61,32 @@ 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 = ""; }; - 99A9DE7815992298DAA21363 /* 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 = ""; }; - B36E3E3A0F5677F6F8FF83AC /* 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 = ""; }; - F8F189323E5341D8C0202ED2 /* 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 = ""; }; + C43A442D65149FD8CFBA937A /* 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 = ""; }; + C4ECE8405C4D5CEFA39C15B0 /* 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 = ""; }; + ED46057B5D58743E845B425F /* 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 = ""; }; + FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6BC252E4E790859FA21437BA /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ED03A6A99EBF6C00357A9F2E /* Pods_RunnerTests.framework in Frameworks */, + 267FB2F5AE531C67DE6C9531 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + E1BDB37AB6F077DFF1C5E386 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5A27E2528DD87F9F89A8F496 /* Pods_Runner.framework in Frameworks */, + 518458C4898204509FA8803B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 070D076C925F1228A336AB53 /* Pods */ = { - isa = PBXGroup; - children = ( - 4D0516E7F21ADEDF47BCDA54 /* Pods-Runner.debug.xcconfig */, - B36E3E3A0F5677F6F8FF83AC /* Pods-Runner.release.xcconfig */, - 210904AE07F4D4235B03228F /* Pods-Runner.profile.xcconfig */, - 237AAFE3579FAEF53199E33B /* Pods-RunnerTests.debug.xcconfig */, - F8F189323E5341D8C0202ED2 /* Pods-RunnerTests.release.xcconfig */, - 99A9DE7815992298DAA21363 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -109,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 585D3CAD4ADD964CFE65ABE9 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */, - 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 070D076C925F1228A336AB53 /* Pods */, - 585D3CAD4ADD964CFE65ABE9 /* Frameworks */, + AB475B2504583B829E3613C0 /* Pods */, + F3EA88EAA4D510CCDA06E286 /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + AB475B2504583B829E3613C0 /* Pods */ = { + isa = PBXGroup; + children = ( + ED46057B5D58743E845B425F /* Pods-Runner.debug.xcconfig */, + 72D3F3F36B51DA22477E1A96 /* Pods-Runner.release.xcconfig */, + C43A442D65149FD8CFBA937A /* Pods-Runner.profile.xcconfig */, + 0C21FB93F238A57F603E249C /* Pods-RunnerTests.debug.xcconfig */, + C4ECE8405C4D5CEFA39C15B0 /* Pods-RunnerTests.release.xcconfig */, + 50675E3CB7E0147FB171A5CF /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F3EA88EAA4D510CCDA06E286 /* Frameworks */ = { + isa = PBXGroup; + children = ( + FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */, + 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 188AA035B9E7E23CFF1CDBD0 /* [CP] Check Pods Manifest.lock */, + 5A68F557B7AD943DD91E742B /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6BC252E4E790859FA21437BA /* Frameworks */, + E1BDB37AB6F077DFF1C5E386 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 06C8F1EB772FDA35A2401AD3 /* [CP] Check Pods Manifest.lock */, + 845E5C9079DE04A6E8C51B6E /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 6276FE4EC31FD3D2B959CF89 /* [CP] Embed Pods Frameworks */, + 925A10CC0DC5E8782A35357D /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,29 +270,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 06C8F1EB772FDA35A2401AD3 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 188AA035B9E7E23CFF1CDBD0 /* [CP] Check Pods Manifest.lock */ = { + 5A68F557B7AD943DD91E742B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -314,23 +308,29 @@ 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 */ = { + 845E5C9079DE04A6E8C51B6E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 6276FE4EC31FD3D2B959CF89 /* [CP] Embed Pods Frameworks */ = { + 925A10CC0DC5E8782A35357D /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 237AAFE3579FAEF53199E33B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0C21FB93F238A57F603E249C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F8F189323E5341D8C0202ED2 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C4ECE8405C4D5CEFA39C15B0 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99A9DE7815992298DAA21363 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 50675E3CB7E0147FB171A5CF /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/audio_soloud/step_05/linux/runner/my_application.cc b/audio_soloud/step_05/linux/runner/my_application.cc index 5df4c311a3..42666d98ce 100644 --- a/audio_soloud/step_05/linux/runner/my_application.cc +++ b/audio_soloud/step_05/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/audio_soloud/step_05/macos/Runner.xcodeproj/project.pbxproj b/audio_soloud/step_05/macos/Runner.xcodeproj/project.pbxproj index 0adaaeca88..7f39f1b922 100644 --- a/audio_soloud/step_05/macos/Runner.xcodeproj/project.pbxproj +++ b/audio_soloud/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 */; }; - 720F038F0008679F8132DFE4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */; }; - AA11D2E6B992DB49C3228EDD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */; }; + 3EC59F7CF03A7CA1C21E7D38 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */; }; + A4FE3A555107F33437E2A8FE /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,9 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 011736D0AEC2E6B6B7D432A4 /* 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 = ""; }; - 08A480E100E957677274E87A /* 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 = ""; }; - 2663FD7702E376F31E97F16B /* 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 = ""; }; + 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -81,13 +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 = ""; }; - 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5B09DFAC14CBFA8661875581 /* 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 = ""; }; + 5D63B4CCACCEF6E7BED58D19 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 965F3EF90CF9FFDE280CB2DD /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B334E14A0FEBB7DE3B627495 /* 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 = ""; }; - ECE5065AF3D026559973196A /* 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 = ""; }; + 9EA40EFE7E487B55F1EE2C8A /* 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 = ""; }; + C9483CBD28D6DBBF2B4D0656 /* 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 = ""; }; + CA6570B64EF55B7F840DBB56 /* 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 = ""; }; + D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FDA0144BE17E4B9660A5710C /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 720F038F0008679F8132DFE4 /* Pods_RunnerTests.framework in Frameworks */, + 3EC59F7CF03A7CA1C21E7D38 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AA11D2E6B992DB49C3228EDD /* Pods_Runner.framework in Frameworks */, + A4FE3A555107F33437E2A8FE /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6737946715FAF066240B4D73 /* Pods */, + ADDD3BF370EB18BB5F5F3D60 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6737946715FAF066240B4D73 /* Pods */ = { + ADDD3BF370EB18BB5F5F3D60 /* Pods */ = { isa = PBXGroup; children = ( - 5B09DFAC14CBFA8661875581 /* Pods-Runner.debug.xcconfig */, - B334E14A0FEBB7DE3B627495 /* Pods-Runner.release.xcconfig */, - 011736D0AEC2E6B6B7D432A4 /* Pods-Runner.profile.xcconfig */, - 08A480E100E957677274E87A /* Pods-RunnerTests.debug.xcconfig */, - 2663FD7702E376F31E97F16B /* Pods-RunnerTests.release.xcconfig */, - ECE5065AF3D026559973196A /* Pods-RunnerTests.profile.xcconfig */, + FDA0144BE17E4B9660A5710C /* Pods-Runner.debug.xcconfig */, + 5D63B4CCACCEF6E7BED58D19 /* Pods-Runner.release.xcconfig */, + CA6570B64EF55B7F840DBB56 /* Pods-Runner.profile.xcconfig */, + 9EA40EFE7E487B55F1EE2C8A /* Pods-RunnerTests.debug.xcconfig */, + C9483CBD28D6DBBF2B4D0656 /* Pods-RunnerTests.release.xcconfig */, + 965F3EF90CF9FFDE280CB2DD /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */, - 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */, + D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */, + 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - C73CA58CC150FA756EB0FCC6 /* [CP] Check Pods Manifest.lock */, + 0E62F381DD87A07C1696F352 /* [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 = ( - AB91D99FB1F4A314551E432C /* [CP] Check Pods Manifest.lock */, + 1E2C68EC0F96DFC43288EB9C /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CA127AE5D3F0DC600E2A1288 /* [CP] Embed Pods Frameworks */, + B6371C19CA2EC79A15C38B82 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,89 +323,89 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { + 0E62F381DD87A07C1696F352 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; 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-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\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; }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { + 1E2C68EC0F96DFC43288EB9C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - Flutter/ephemeral/tripwire, + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + 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; }; - AB91D99FB1F4A314551E432C /* [CP] Check Pods Manifest.lock */ = { + 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; 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; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; }; - C73CA58CC150FA756EB0FCC6 /* [CP] Check Pods Manifest.lock */ = { + 33CC111E2044C6BF0003C045 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", + Flutter/ephemeral/tripwire, ); - name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - CA127AE5D3F0DC600E2A1288 /* [CP] Embed Pods Frameworks */ = { + B6371C19CA2EC79A15C38B82 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 08A480E100E957677274E87A /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 9EA40EFE7E487B55F1EE2C8A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2663FD7702E376F31E97F16B /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C9483CBD28D6DBBF2B4D0656 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ECE5065AF3D026559973196A /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 965F3EF90CF9FFDE280CB2DD /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/audio_soloud/step_05/pubspec.yaml b/audio_soloud/step_05/pubspec.yaml index 95e9054125..d0061515d1 100644 --- a/audio_soloud/step_05/pubspec.yaml +++ b/audio_soloud/step_05/pubspec.yaml @@ -4,12 +4,12 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flutter_soloud: ^3.1.10 + flutter_soloud: ^3.2.5 logging: ^1.3.0 dev_dependencies: diff --git a/audio_soloud/step_06/.gemini/settings.json b/audio_soloud/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/audio_soloud/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/audio_soloud/step_06/.gitignore b/audio_soloud/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/audio_soloud/step_06/.gitignore +++ b/audio_soloud/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/audio_soloud/step_06/android/build.gradle.kts b/audio_soloud/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/audio_soloud/step_06/android/build.gradle.kts +++ b/audio_soloud/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/audio_soloud/step_06/android/settings.gradle.kts b/audio_soloud/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/audio_soloud/step_06/android/settings.gradle.kts +++ b/audio_soloud/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/audio_soloud/step_06/ios/Flutter/AppFrameworkInfo.plist b/audio_soloud/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/audio_soloud/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/audio_soloud/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/audio_soloud/step_06/ios/Podfile b/audio_soloud/step_06/ios/Podfile index 11e1cb83ed..620e46eba6 100644 --- a/audio_soloud/step_06/ios/Podfile +++ b/audio_soloud/step_06/ios/Podfile @@ -1,5 +1,5 @@ -# SoLoud requires iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/audio_soloud/step_06/ios/Runner.xcodeproj/project.pbxproj b/audio_soloud/step_06/ios/Runner.xcodeproj/project.pbxproj index 0204e7368e..f44b754fea 100644 --- a/audio_soloud/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/audio_soloud/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 267FB2F5AE531C67DE6C9531 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 5A27E2528DD87F9F89A8F496 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */; }; + 518458C4898204509FA8803B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */; }; 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 */; }; - ED03A6A99EBF6C00357A9F2E /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,19 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0C21FB93F238A57F603E249C /* 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 = ""; }; 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 = ""; }; - 210904AE07F4D4235B03228F /* 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 = ""; }; - 237AAFE3579FAEF53199E33B /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4D0516E7F21ADEDF47BCDA54 /* 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 = ""; }; - 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 50675E3CB7E0147FB171A5CF /* 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 = ""; }; + 72D3F3F36B51DA22477E1A96 /* 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 = ""; }; 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 = ""; }; - 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,45 +61,32 @@ 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 = ""; }; - 99A9DE7815992298DAA21363 /* 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 = ""; }; - B36E3E3A0F5677F6F8FF83AC /* 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 = ""; }; - F8F189323E5341D8C0202ED2 /* 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 = ""; }; + C43A442D65149FD8CFBA937A /* 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 = ""; }; + C4ECE8405C4D5CEFA39C15B0 /* 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 = ""; }; + ED46057B5D58743E845B425F /* 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 = ""; }; + FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6BC252E4E790859FA21437BA /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - ED03A6A99EBF6C00357A9F2E /* Pods_RunnerTests.framework in Frameworks */, + 267FB2F5AE531C67DE6C9531 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + E1BDB37AB6F077DFF1C5E386 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5A27E2528DD87F9F89A8F496 /* Pods_Runner.framework in Frameworks */, + 518458C4898204509FA8803B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 070D076C925F1228A336AB53 /* Pods */ = { - isa = PBXGroup; - children = ( - 4D0516E7F21ADEDF47BCDA54 /* Pods-Runner.debug.xcconfig */, - B36E3E3A0F5677F6F8FF83AC /* Pods-Runner.release.xcconfig */, - 210904AE07F4D4235B03228F /* Pods-Runner.profile.xcconfig */, - 237AAFE3579FAEF53199E33B /* Pods-RunnerTests.debug.xcconfig */, - F8F189323E5341D8C0202ED2 /* Pods-RunnerTests.release.xcconfig */, - 99A9DE7815992298DAA21363 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -109,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 585D3CAD4ADD964CFE65ABE9 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 5FCF5C3FB16EA51D624F3D76 /* Pods_Runner.framework */, - 7C8B3AC6824F68B70399ED54 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 070D076C925F1228A336AB53 /* Pods */, - 585D3CAD4ADD964CFE65ABE9 /* Frameworks */, + AB475B2504583B829E3613C0 /* Pods */, + F3EA88EAA4D510CCDA06E286 /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + AB475B2504583B829E3613C0 /* Pods */ = { + isa = PBXGroup; + children = ( + ED46057B5D58743E845B425F /* Pods-Runner.debug.xcconfig */, + 72D3F3F36B51DA22477E1A96 /* Pods-Runner.release.xcconfig */, + C43A442D65149FD8CFBA937A /* Pods-Runner.profile.xcconfig */, + 0C21FB93F238A57F603E249C /* Pods-RunnerTests.debug.xcconfig */, + C4ECE8405C4D5CEFA39C15B0 /* Pods-RunnerTests.release.xcconfig */, + 50675E3CB7E0147FB171A5CF /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F3EA88EAA4D510CCDA06E286 /* Frameworks */ = { + isa = PBXGroup; + children = ( + FFAF23FF919AA14AACF109DB /* Pods_Runner.framework */, + 8FE28B90C85BFBD96DC65E0A /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 188AA035B9E7E23CFF1CDBD0 /* [CP] Check Pods Manifest.lock */, + 5A68F557B7AD943DD91E742B /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6BC252E4E790859FA21437BA /* Frameworks */, + E1BDB37AB6F077DFF1C5E386 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 06C8F1EB772FDA35A2401AD3 /* [CP] Check Pods Manifest.lock */, + 845E5C9079DE04A6E8C51B6E /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 6276FE4EC31FD3D2B959CF89 /* [CP] Embed Pods Frameworks */, + 925A10CC0DC5E8782A35357D /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,29 +270,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 06C8F1EB772FDA35A2401AD3 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 188AA035B9E7E23CFF1CDBD0 /* [CP] Check Pods Manifest.lock */ = { + 5A68F557B7AD943DD91E742B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -314,23 +308,29 @@ 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 */ = { + 845E5C9079DE04A6E8C51B6E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 6276FE4EC31FD3D2B959CF89 /* [CP] Embed Pods Frameworks */ = { + 925A10CC0DC5E8782A35357D /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 237AAFE3579FAEF53199E33B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0C21FB93F238A57F603E249C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F8F189323E5341D8C0202ED2 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C4ECE8405C4D5CEFA39C15B0 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99A9DE7815992298DAA21363 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 50675E3CB7E0147FB171A5CF /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/audio_soloud/step_06/linux/runner/my_application.cc b/audio_soloud/step_06/linux/runner/my_application.cc index 5df4c311a3..42666d98ce 100644 --- a/audio_soloud/step_06/linux/runner/my_application.cc +++ b/audio_soloud/step_06/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/audio_soloud/step_06/macos/Runner.xcodeproj/project.pbxproj b/audio_soloud/step_06/macos/Runner.xcodeproj/project.pbxproj index 0adaaeca88..7f39f1b922 100644 --- a/audio_soloud/step_06/macos/Runner.xcodeproj/project.pbxproj +++ b/audio_soloud/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 */; }; - 720F038F0008679F8132DFE4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */; }; - AA11D2E6B992DB49C3228EDD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */; }; + 3EC59F7CF03A7CA1C21E7D38 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */; }; + A4FE3A555107F33437E2A8FE /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,9 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 011736D0AEC2E6B6B7D432A4 /* 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 = ""; }; - 08A480E100E957677274E87A /* 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 = ""; }; - 2663FD7702E376F31E97F16B /* 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 = ""; }; + 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -81,13 +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 = ""; }; - 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5B09DFAC14CBFA8661875581 /* 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 = ""; }; + 5D63B4CCACCEF6E7BED58D19 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 965F3EF90CF9FFDE280CB2DD /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B334E14A0FEBB7DE3B627495 /* 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 = ""; }; - ECE5065AF3D026559973196A /* 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 = ""; }; + 9EA40EFE7E487B55F1EE2C8A /* 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 = ""; }; + C9483CBD28D6DBBF2B4D0656 /* 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 = ""; }; + CA6570B64EF55B7F840DBB56 /* 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 = ""; }; + D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FDA0144BE17E4B9660A5710C /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 720F038F0008679F8132DFE4 /* Pods_RunnerTests.framework in Frameworks */, + 3EC59F7CF03A7CA1C21E7D38 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AA11D2E6B992DB49C3228EDD /* Pods_Runner.framework in Frameworks */, + A4FE3A555107F33437E2A8FE /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6737946715FAF066240B4D73 /* Pods */, + ADDD3BF370EB18BB5F5F3D60 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6737946715FAF066240B4D73 /* Pods */ = { + ADDD3BF370EB18BB5F5F3D60 /* Pods */ = { isa = PBXGroup; children = ( - 5B09DFAC14CBFA8661875581 /* Pods-Runner.debug.xcconfig */, - B334E14A0FEBB7DE3B627495 /* Pods-Runner.release.xcconfig */, - 011736D0AEC2E6B6B7D432A4 /* Pods-Runner.profile.xcconfig */, - 08A480E100E957677274E87A /* Pods-RunnerTests.debug.xcconfig */, - 2663FD7702E376F31E97F16B /* Pods-RunnerTests.release.xcconfig */, - ECE5065AF3D026559973196A /* Pods-RunnerTests.profile.xcconfig */, + FDA0144BE17E4B9660A5710C /* Pods-Runner.debug.xcconfig */, + 5D63B4CCACCEF6E7BED58D19 /* Pods-Runner.release.xcconfig */, + CA6570B64EF55B7F840DBB56 /* Pods-Runner.profile.xcconfig */, + 9EA40EFE7E487B55F1EE2C8A /* Pods-RunnerTests.debug.xcconfig */, + C9483CBD28D6DBBF2B4D0656 /* Pods-RunnerTests.release.xcconfig */, + 965F3EF90CF9FFDE280CB2DD /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 8B400FAEA38D0B5C33992B51 /* Pods_Runner.framework */, - 52C01E793300694D21505B61 /* Pods_RunnerTests.framework */, + D8367F293ADA9E6E1FF2913A /* Pods_Runner.framework */, + 12AA7E2CACA6DD4333909AD7 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - C73CA58CC150FA756EB0FCC6 /* [CP] Check Pods Manifest.lock */, + 0E62F381DD87A07C1696F352 /* [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 = ( - AB91D99FB1F4A314551E432C /* [CP] Check Pods Manifest.lock */, + 1E2C68EC0F96DFC43288EB9C /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CA127AE5D3F0DC600E2A1288 /* [CP] Embed Pods Frameworks */, + B6371C19CA2EC79A15C38B82 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,89 +323,89 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { + 0E62F381DD87A07C1696F352 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; 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-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\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; }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { + 1E2C68EC0F96DFC43288EB9C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - Flutter/ephemeral/tripwire, + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + 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; }; - AB91D99FB1F4A314551E432C /* [CP] Check Pods Manifest.lock */ = { + 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; 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; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; }; - C73CA58CC150FA756EB0FCC6 /* [CP] Check Pods Manifest.lock */ = { + 33CC111E2044C6BF0003C045 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", + Flutter/ephemeral/tripwire, ); - name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - CA127AE5D3F0DC600E2A1288 /* [CP] Embed Pods Frameworks */ = { + B6371C19CA2EC79A15C38B82 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 08A480E100E957677274E87A /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 9EA40EFE7E487B55F1EE2C8A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2663FD7702E376F31E97F16B /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C9483CBD28D6DBBF2B4D0656 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ECE5065AF3D026559973196A /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 965F3EF90CF9FFDE280CB2DD /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/audio_soloud/step_06/pubspec.yaml b/audio_soloud/step_06/pubspec.yaml index 95e9054125..d0061515d1 100644 --- a/audio_soloud/step_06/pubspec.yaml +++ b/audio_soloud/step_06/pubspec.yaml @@ -4,12 +4,12 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flutter_soloud: ^3.1.10 + flutter_soloud: ^3.2.5 logging: ^1.3.0 dev_dependencies: diff --git a/boring_to_beautiful/codelab_rebuild.yaml b/boring_to_beautiful/codelab_rebuild.yaml index c16fd18ba3..159fa4af6f 100644 --- a/boring_to_beautiful/codelab_rebuild.yaml +++ b/boring_to_beautiful/codelab_rebuild.yaml @@ -15,6 +15,21 @@ steps: include: ../../analysis_options.yaml - name: Remove README rm: myartist/README.md + - name: Add .gemini directory + mkdir: myartist/.gemini + - name: Add .gemini/settings.json + path: myartist/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add .vscode directory mkdir: myartist/.vscode - name: Add .vscode/launch.json @@ -45,7 +60,7 @@ steps: --- b/boring_to_beautiful/step_01/pubspec.yaml +++ a/boring_to_beautiful/step_01/pubspec.yaml @@ -31,3 +31,9 @@ dev_dependencies: - + flutter: uses-material-design: true + assets: @@ -2329,8 +2344,8 @@ steps: ); } - BottomAppBarTheme bottomAppBarTheme(ColorScheme colors) { - return BottomAppBarTheme(color: colors.surface, elevation: 0); + BottomAppBarThemeData bottomAppBarTheme(ColorScheme colors) { + return BottomAppBarThemeData(color: colors.surface, elevation: 0); } BottomNavigationBarThemeData bottomNavigationBarTheme(ColorScheme colors) { diff --git a/boring_to_beautiful/step_01/.gemini/settings.json b/boring_to_beautiful/step_01/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/boring_to_beautiful/step_01/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/boring_to_beautiful/step_01/.gitignore b/boring_to_beautiful/step_01/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/boring_to_beautiful/step_01/.gitignore +++ b/boring_to_beautiful/step_01/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/boring_to_beautiful/step_01/android/build.gradle.kts b/boring_to_beautiful/step_01/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/boring_to_beautiful/step_01/android/build.gradle.kts +++ b/boring_to_beautiful/step_01/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/boring_to_beautiful/step_01/android/settings.gradle.kts b/boring_to_beautiful/step_01/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/boring_to_beautiful/step_01/android/settings.gradle.kts +++ b/boring_to_beautiful/step_01/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/boring_to_beautiful/step_01/ios/Flutter/AppFrameworkInfo.plist b/boring_to_beautiful/step_01/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/boring_to_beautiful/step_01/ios/Flutter/AppFrameworkInfo.plist +++ b/boring_to_beautiful/step_01/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/boring_to_beautiful/step_01/ios/Podfile b/boring_to_beautiful/step_01/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/boring_to_beautiful/step_01/ios/Podfile +++ b/boring_to_beautiful/step_01/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_01/ios/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_01/ios/Runner.xcodeproj/project.pbxproj index c30322fdf6..b334cd4bef 100644 --- a/boring_to_beautiful/step_01/ios/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_01/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BA15459E839D3553B26934 /* Pods_Runner.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 */; }; - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */; }; + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */; }; + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,18 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 06C27BF5D7B993BB5DCB8D21 /* 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 = ""; }; + 0857899EC33720D408B34BA1 /* 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 = ""; }; + 0990B0E745EF9282BBD0B69C /* 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 = ""; }; 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 = ""; }; 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; }; - 3421F167A26D263533D9C0F8 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4ABA081B421BEA588642248C /* 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 = ""; }; + 681AA7ED59E6C2F2D0060307 /* 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 = ""; }; 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 = ""; }; - 8367A59A9CDAA6556FC2822B /* 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 = ""; }; + 84751C0362521082DEF1D687 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,26 +61,26 @@ 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 = ""; }; - 9BB58392A543FF4660B2490F /* 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 = ""; }; - D0BA15459E839D3553B26934 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F7B65A9BC4B475ABEC573986 /* 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 = ""; }; + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3FEDE49105230B1D557A7D6 /* 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 = ""; }; + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D7820135D2EF28621AF06DDD /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 0867A61CE1734AA853C7DCE7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */, + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F9E0A4607079935C37BF168F /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */, + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,20 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 44BD8D06CB822F8C423FCD72 /* Pods */ = { - isa = PBXGroup; - children = ( - 3421F167A26D263533D9C0F8 /* Pods-Runner.debug.xcconfig */, - 8367A59A9CDAA6556FC2822B /* Pods-Runner.release.xcconfig */, - 06C27BF5D7B993BB5DCB8D21 /* Pods-Runner.profile.xcconfig */, - F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */, - 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */, - 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -127,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 44BD8D06CB822F8C423FCD72 /* Pods */, - D054066A4956E2C378EF4A32 /* Frameworks */, + BD4564A80EF0DF22640031F7 /* Pods */, + F1EC60623F1ECA637AD555BF /* Frameworks */, ); sourceTree = ""; }; @@ -156,11 +142,25 @@ path = Runner; sourceTree = ""; }; - D054066A4956E2C378EF4A32 /* Frameworks */ = { + BD4564A80EF0DF22640031F7 /* Pods */ = { isa = PBXGroup; children = ( - D0BA15459E839D3553B26934 /* Pods_Runner.framework */, - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */, + B3FEDE49105230B1D557A7D6 /* Pods-Runner.debug.xcconfig */, + 0990B0E745EF9282BBD0B69C /* Pods-Runner.release.xcconfig */, + 84751C0362521082DEF1D687 /* Pods-Runner.profile.xcconfig */, + 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */, + D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */, + 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F1EC60623F1ECA637AD555BF /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */, + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */, + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - F9E0A4607079935C37BF168F /* Frameworks */, + 0867A61CE1734AA853C7DCE7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */, + 4C98368FD7BC292EAF1D220F /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */, + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,82 +270,82 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */ = { + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */ = { + 4C98368FD7BC292EAF1D220F /* [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-Runner-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; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/boring_to_beautiful/step_01/lib/src/shared/playback/bloc/playback_bloc.freezed.dart b/boring_to_beautiful/step_01/lib/src/shared/playback/bloc/playback_bloc.freezed.dart index 36ad6c4c1e..606767ad1a 100644 --- a/boring_to_beautiful/step_01/lib/src/shared/playback/bloc/playback_bloc.freezed.dart +++ b/boring_to_beautiful/step_01/lib/src/shared/playback/bloc/playback_bloc.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -42,6 +41,166 @@ $PlaybackEventCopyWith(PlaybackEvent _, $Res Function(PlaybackEvent) __); } +/// Adds pattern-matching-related methods to [PlaybackEvent]. +extension PlaybackEventPatterns on PlaybackEvent { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap({TResult Function( TogglePlayPause value)? togglePlayPause,TResult Function( ChangeSong value)? changeSong,TResult Function( SetVolume value)? setVolume,TResult Function( ToggleMute value)? toggleMute,TResult Function( MoveToInSong value)? moveToInSong,TResult Function( SongProgress value)? songProgress,required TResult orElse(),}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map({required TResult Function( TogglePlayPause value) togglePlayPause,required TResult Function( ChangeSong value) changeSong,required TResult Function( SetVolume value) setVolume,required TResult Function( ToggleMute value) toggleMute,required TResult Function( MoveToInSong value) moveToInSong,required TResult Function( SongProgress value) songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause(_that);case ChangeSong(): +return changeSong(_that);case SetVolume(): +return setVolume(_that);case ToggleMute(): +return toggleMute(_that);case MoveToInSong(): +return moveToInSong(_that);case SongProgress(): +return songProgress(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull({TResult? Function( TogglePlayPause value)? togglePlayPause,TResult? Function( ChangeSong value)? changeSong,TResult? Function( SetVolume value)? setVolume,TResult? Function( ToggleMute value)? toggleMute,TResult? Function( MoveToInSong value)? moveToInSong,TResult? Function( SongProgress value)? songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen({TResult Function()? togglePlayPause,TResult Function( Song song)? changeSong,TResult Function( double value)? setVolume,TResult Function()? toggleMute,TResult Function( double percent)? moveToInSong,TResult Function( Duration duration)? songProgress,required TResult orElse(),}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when({required TResult Function() togglePlayPause,required TResult Function( Song song) changeSong,required TResult Function( double value) setVolume,required TResult Function() toggleMute,required TResult Function( double percent) moveToInSong,required TResult Function( Duration duration) songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause();case ChangeSong(): +return changeSong(_that.song);case SetVolume(): +return setVolume(_that.value);case ToggleMute(): +return toggleMute();case MoveToInSong(): +return moveToInSong(_that.percent);case SongProgress(): +return songProgress(_that.duration);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull({TResult? Function()? togglePlayPause,TResult? Function( Song song)? changeSong,TResult? Function( double value)? setVolume,TResult? Function()? toggleMute,TResult? Function( double percent)? moveToInSong,TResult? Function( Duration duration)? songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return null; + +} +} + +} + /// @nodoc @@ -449,6 +608,136 @@ $SongWithProgressCopyWith<$Res>? get songWithProgress { } +/// Adds pattern-matching-related methods to [PlaybackState]. +extension PlaybackStatePatterns on PlaybackState { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _PlaybackState value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _PlaybackState value) $default,){ +final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _PlaybackState value)? $default,){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress) $default,) {final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return null; + +} +} + +} + /// @nodoc @@ -599,6 +888,136 @@ as Song, } +/// Adds pattern-matching-related methods to [SongWithProgress]. +extension SongWithProgressPatterns on SongWithProgress { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _SongWithProgress value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _SongWithProgress value) $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _SongWithProgress value)? $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( Duration progress, Song song)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( Duration progress, Song song) $default,) {final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that.progress,_that.song);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( Duration progress, Song song)? $default,) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return null; + +} +} + +} + /// @nodoc diff --git a/boring_to_beautiful/step_01/lib/src/shared/providers/theme.dart b/boring_to_beautiful/step_01/lib/src/shared/providers/theme.dart index a8c3c7c92f..83cc16e5f0 100644 --- a/boring_to_beautiful/step_01/lib/src/shared/providers/theme.dart +++ b/boring_to_beautiful/step_01/lib/src/shared/providers/theme.dart @@ -121,8 +121,8 @@ class ThemeProvider extends InheritedWidget { ); } - BottomAppBarTheme bottomAppBarTheme(ColorScheme colors) { - return BottomAppBarTheme(color: colors.surface, elevation: 0); + BottomAppBarThemeData bottomAppBarTheme(ColorScheme colors) { + return BottomAppBarThemeData(color: colors.surface, elevation: 0); } BottomNavigationBarThemeData bottomNavigationBarTheme(ColorScheme colors) { diff --git a/boring_to_beautiful/step_01/linux/runner/my_application.cc b/boring_to_beautiful/step_01/linux/runner/my_application.cc index f93ba9f71c..261e6e34c5 100644 --- a/boring_to_beautiful/step_01/linux/runner/my_application.cc +++ b/boring_to_beautiful/step_01/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/boring_to_beautiful/step_01/macos/Podfile b/boring_to_beautiful/step_01/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/boring_to_beautiful/step_01/macos/Podfile +++ b/boring_to_beautiful/step_01/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_01/macos/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_01/macos/Runner.xcodeproj/project.pbxproj index 79fced16c3..fcc8ce3204 100644 --- a/boring_to_beautiful/step_01/macos/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_01/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */; }; + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */; }; + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2BCC07C46EB4E01CE044DBB6 /* 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 = ""; }; + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 3E5DC3FB470EEF77149E71DD /* 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 = ""; }; + 6C8E34CD8A2F49B5A9421409 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 93864140E5DDD8350C71D815 /* 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 = ""; }; + 8862CD109E738F3921EB9C93 /* 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 = ""; }; + 9187C3567AE707002A52BF86 /* 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 = ""; }; - 9B293DEC88BD59786AD94EBD /* 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 = ""; }; - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EEFA0ABEA58A1E38E7AD7041 /* 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 = ""; }; - FDBDA46A6FE6381EE95E5A7A /* 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 = ""; }; + 99B8FC1B45711FC3FE3A40BE /* 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 = ""; }; + A4D814F1F2A769FE4E9E398D /* 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 = ""; }; + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E13C85F2C001812FC4890700 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */, + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */, + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 23EEF9C906B4711904746B7E /* Pods */ = { + isa = PBXGroup; + children = ( + 9187C3567AE707002A52BF86 /* Pods-Runner.debug.xcconfig */, + E13C85F2C001812FC4890700 /* Pods-Runner.release.xcconfig */, + 8862CD109E738F3921EB9C93 /* Pods-Runner.profile.xcconfig */, + A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */, + 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */, + 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6CDFAAD29A585E1E7DFB128C /* Pods */, + 23EEF9C906B4711904746B7E /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 6CDFAAD29A585E1E7DFB128C /* Pods */ = { - isa = PBXGroup; - children = ( - 3E5DC3FB470EEF77149E71DD /* Pods-Runner.debug.xcconfig */, - 2BCC07C46EB4E01CE044DBB6 /* Pods-Runner.release.xcconfig */, - 9B293DEC88BD59786AD94EBD /* Pods-Runner.profile.xcconfig */, - 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */, - FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */, - EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */, - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */, + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */, + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */, + 5A1AE951B3C5AB29ED29FD49 /* [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 = ( - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */, + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 0F169C1C0F5EE8E3D274E72F /* [CP] Embed Pods Frameworks */, + F9BA01A46B725FF4B61D2CF9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F169C1C0F5EE8E3D274E72F /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */ = { + 5A1AE951B3C5AB29ED29FD49 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +383,7 @@ 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; }; - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */ = { + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -422,6 +405,23 @@ 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; }; + F9BA01A46B725FF4B61D2CF9 /* [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 */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/boring_to_beautiful/step_01/pubspec.yaml b/boring_to_beautiful/step_01/pubspec.yaml index c05ce106e8..a5caa6768a 100644 --- a/boring_to_beautiful/step_01/pubspec.yaml +++ b/boring_to_beautiful/step_01/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,21 +13,21 @@ dependencies: collection: ^1.19.1 cupertino_icons: ^1.0.8 desktop_window: ^0.4.2 - dynamic_color: ^1.7.0 + dynamic_color: ^1.8.1 english_words: ^4.0.0 flutter_bloc: ^9.1.1 - freezed_annotation: ^3.0.0 - go_router: ^15.1.3 + freezed_annotation: ^3.1.0 + go_router: ^16.1.0 material_color_utilities: any universal_platform: ^1.1.0 - url_launcher: ^6.3.1 + url_launcher: ^6.3.2 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^6.0.0 - build_runner: ^2.4.15 - freezed: ^3.0.6 + build_runner: ^2.6.0 + freezed: ^3.2.0 flutter: uses-material-design: true diff --git a/boring_to_beautiful/step_02/.gemini/settings.json b/boring_to_beautiful/step_02/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/boring_to_beautiful/step_02/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/boring_to_beautiful/step_02/.gitignore b/boring_to_beautiful/step_02/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/boring_to_beautiful/step_02/.gitignore +++ b/boring_to_beautiful/step_02/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/boring_to_beautiful/step_02/android/build.gradle.kts b/boring_to_beautiful/step_02/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/boring_to_beautiful/step_02/android/build.gradle.kts +++ b/boring_to_beautiful/step_02/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/boring_to_beautiful/step_02/android/settings.gradle.kts b/boring_to_beautiful/step_02/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/boring_to_beautiful/step_02/android/settings.gradle.kts +++ b/boring_to_beautiful/step_02/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/boring_to_beautiful/step_02/ios/Flutter/AppFrameworkInfo.plist b/boring_to_beautiful/step_02/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/boring_to_beautiful/step_02/ios/Flutter/AppFrameworkInfo.plist +++ b/boring_to_beautiful/step_02/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/boring_to_beautiful/step_02/ios/Podfile b/boring_to_beautiful/step_02/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/boring_to_beautiful/step_02/ios/Podfile +++ b/boring_to_beautiful/step_02/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_02/ios/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_02/ios/Runner.xcodeproj/project.pbxproj index c30322fdf6..b334cd4bef 100644 --- a/boring_to_beautiful/step_02/ios/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_02/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BA15459E839D3553B26934 /* Pods_Runner.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 */; }; - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */; }; + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */; }; + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,18 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 06C27BF5D7B993BB5DCB8D21 /* 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 = ""; }; + 0857899EC33720D408B34BA1 /* 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 = ""; }; + 0990B0E745EF9282BBD0B69C /* 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 = ""; }; 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 = ""; }; 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; }; - 3421F167A26D263533D9C0F8 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4ABA081B421BEA588642248C /* 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 = ""; }; + 681AA7ED59E6C2F2D0060307 /* 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 = ""; }; 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 = ""; }; - 8367A59A9CDAA6556FC2822B /* 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 = ""; }; + 84751C0362521082DEF1D687 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,26 +61,26 @@ 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 = ""; }; - 9BB58392A543FF4660B2490F /* 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 = ""; }; - D0BA15459E839D3553B26934 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F7B65A9BC4B475ABEC573986 /* 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 = ""; }; + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3FEDE49105230B1D557A7D6 /* 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 = ""; }; + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D7820135D2EF28621AF06DDD /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 0867A61CE1734AA853C7DCE7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */, + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F9E0A4607079935C37BF168F /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */, + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,20 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 44BD8D06CB822F8C423FCD72 /* Pods */ = { - isa = PBXGroup; - children = ( - 3421F167A26D263533D9C0F8 /* Pods-Runner.debug.xcconfig */, - 8367A59A9CDAA6556FC2822B /* Pods-Runner.release.xcconfig */, - 06C27BF5D7B993BB5DCB8D21 /* Pods-Runner.profile.xcconfig */, - F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */, - 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */, - 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -127,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 44BD8D06CB822F8C423FCD72 /* Pods */, - D054066A4956E2C378EF4A32 /* Frameworks */, + BD4564A80EF0DF22640031F7 /* Pods */, + F1EC60623F1ECA637AD555BF /* Frameworks */, ); sourceTree = ""; }; @@ -156,11 +142,25 @@ path = Runner; sourceTree = ""; }; - D054066A4956E2C378EF4A32 /* Frameworks */ = { + BD4564A80EF0DF22640031F7 /* Pods */ = { isa = PBXGroup; children = ( - D0BA15459E839D3553B26934 /* Pods_Runner.framework */, - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */, + B3FEDE49105230B1D557A7D6 /* Pods-Runner.debug.xcconfig */, + 0990B0E745EF9282BBD0B69C /* Pods-Runner.release.xcconfig */, + 84751C0362521082DEF1D687 /* Pods-Runner.profile.xcconfig */, + 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */, + D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */, + 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F1EC60623F1ECA637AD555BF /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */, + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */, + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - F9E0A4607079935C37BF168F /* Frameworks */, + 0867A61CE1734AA853C7DCE7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */, + 4C98368FD7BC292EAF1D220F /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */, + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,82 +270,82 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */ = { + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */ = { + 4C98368FD7BC292EAF1D220F /* [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-Runner-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; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/boring_to_beautiful/step_02/lib/src/shared/playback/bloc/playback_bloc.freezed.dart b/boring_to_beautiful/step_02/lib/src/shared/playback/bloc/playback_bloc.freezed.dart index 36ad6c4c1e..606767ad1a 100644 --- a/boring_to_beautiful/step_02/lib/src/shared/playback/bloc/playback_bloc.freezed.dart +++ b/boring_to_beautiful/step_02/lib/src/shared/playback/bloc/playback_bloc.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -42,6 +41,166 @@ $PlaybackEventCopyWith(PlaybackEvent _, $Res Function(PlaybackEvent) __); } +/// Adds pattern-matching-related methods to [PlaybackEvent]. +extension PlaybackEventPatterns on PlaybackEvent { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap({TResult Function( TogglePlayPause value)? togglePlayPause,TResult Function( ChangeSong value)? changeSong,TResult Function( SetVolume value)? setVolume,TResult Function( ToggleMute value)? toggleMute,TResult Function( MoveToInSong value)? moveToInSong,TResult Function( SongProgress value)? songProgress,required TResult orElse(),}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map({required TResult Function( TogglePlayPause value) togglePlayPause,required TResult Function( ChangeSong value) changeSong,required TResult Function( SetVolume value) setVolume,required TResult Function( ToggleMute value) toggleMute,required TResult Function( MoveToInSong value) moveToInSong,required TResult Function( SongProgress value) songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause(_that);case ChangeSong(): +return changeSong(_that);case SetVolume(): +return setVolume(_that);case ToggleMute(): +return toggleMute(_that);case MoveToInSong(): +return moveToInSong(_that);case SongProgress(): +return songProgress(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull({TResult? Function( TogglePlayPause value)? togglePlayPause,TResult? Function( ChangeSong value)? changeSong,TResult? Function( SetVolume value)? setVolume,TResult? Function( ToggleMute value)? toggleMute,TResult? Function( MoveToInSong value)? moveToInSong,TResult? Function( SongProgress value)? songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen({TResult Function()? togglePlayPause,TResult Function( Song song)? changeSong,TResult Function( double value)? setVolume,TResult Function()? toggleMute,TResult Function( double percent)? moveToInSong,TResult Function( Duration duration)? songProgress,required TResult orElse(),}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when({required TResult Function() togglePlayPause,required TResult Function( Song song) changeSong,required TResult Function( double value) setVolume,required TResult Function() toggleMute,required TResult Function( double percent) moveToInSong,required TResult Function( Duration duration) songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause();case ChangeSong(): +return changeSong(_that.song);case SetVolume(): +return setVolume(_that.value);case ToggleMute(): +return toggleMute();case MoveToInSong(): +return moveToInSong(_that.percent);case SongProgress(): +return songProgress(_that.duration);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull({TResult? Function()? togglePlayPause,TResult? Function( Song song)? changeSong,TResult? Function( double value)? setVolume,TResult? Function()? toggleMute,TResult? Function( double percent)? moveToInSong,TResult? Function( Duration duration)? songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return null; + +} +} + +} + /// @nodoc @@ -449,6 +608,136 @@ $SongWithProgressCopyWith<$Res>? get songWithProgress { } +/// Adds pattern-matching-related methods to [PlaybackState]. +extension PlaybackStatePatterns on PlaybackState { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _PlaybackState value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _PlaybackState value) $default,){ +final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _PlaybackState value)? $default,){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress) $default,) {final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return null; + +} +} + +} + /// @nodoc @@ -599,6 +888,136 @@ as Song, } +/// Adds pattern-matching-related methods to [SongWithProgress]. +extension SongWithProgressPatterns on SongWithProgress { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _SongWithProgress value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _SongWithProgress value) $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _SongWithProgress value)? $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( Duration progress, Song song)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( Duration progress, Song song) $default,) {final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that.progress,_that.song);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( Duration progress, Song song)? $default,) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return null; + +} +} + +} + /// @nodoc diff --git a/boring_to_beautiful/step_02/lib/src/shared/providers/theme.dart b/boring_to_beautiful/step_02/lib/src/shared/providers/theme.dart index a8c3c7c92f..83cc16e5f0 100644 --- a/boring_to_beautiful/step_02/lib/src/shared/providers/theme.dart +++ b/boring_to_beautiful/step_02/lib/src/shared/providers/theme.dart @@ -121,8 +121,8 @@ class ThemeProvider extends InheritedWidget { ); } - BottomAppBarTheme bottomAppBarTheme(ColorScheme colors) { - return BottomAppBarTheme(color: colors.surface, elevation: 0); + BottomAppBarThemeData bottomAppBarTheme(ColorScheme colors) { + return BottomAppBarThemeData(color: colors.surface, elevation: 0); } BottomNavigationBarThemeData bottomNavigationBarTheme(ColorScheme colors) { diff --git a/boring_to_beautiful/step_02/linux/runner/my_application.cc b/boring_to_beautiful/step_02/linux/runner/my_application.cc index f93ba9f71c..261e6e34c5 100644 --- a/boring_to_beautiful/step_02/linux/runner/my_application.cc +++ b/boring_to_beautiful/step_02/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/boring_to_beautiful/step_02/macos/Podfile b/boring_to_beautiful/step_02/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/boring_to_beautiful/step_02/macos/Podfile +++ b/boring_to_beautiful/step_02/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_02/macos/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_02/macos/Runner.xcodeproj/project.pbxproj index 79fced16c3..fcc8ce3204 100644 --- a/boring_to_beautiful/step_02/macos/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_02/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */; }; + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */; }; + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2BCC07C46EB4E01CE044DBB6 /* 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 = ""; }; + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 3E5DC3FB470EEF77149E71DD /* 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 = ""; }; + 6C8E34CD8A2F49B5A9421409 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 93864140E5DDD8350C71D815 /* 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 = ""; }; + 8862CD109E738F3921EB9C93 /* 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 = ""; }; + 9187C3567AE707002A52BF86 /* 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 = ""; }; - 9B293DEC88BD59786AD94EBD /* 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 = ""; }; - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EEFA0ABEA58A1E38E7AD7041 /* 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 = ""; }; - FDBDA46A6FE6381EE95E5A7A /* 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 = ""; }; + 99B8FC1B45711FC3FE3A40BE /* 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 = ""; }; + A4D814F1F2A769FE4E9E398D /* 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 = ""; }; + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E13C85F2C001812FC4890700 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */, + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */, + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 23EEF9C906B4711904746B7E /* Pods */ = { + isa = PBXGroup; + children = ( + 9187C3567AE707002A52BF86 /* Pods-Runner.debug.xcconfig */, + E13C85F2C001812FC4890700 /* Pods-Runner.release.xcconfig */, + 8862CD109E738F3921EB9C93 /* Pods-Runner.profile.xcconfig */, + A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */, + 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */, + 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6CDFAAD29A585E1E7DFB128C /* Pods */, + 23EEF9C906B4711904746B7E /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 6CDFAAD29A585E1E7DFB128C /* Pods */ = { - isa = PBXGroup; - children = ( - 3E5DC3FB470EEF77149E71DD /* Pods-Runner.debug.xcconfig */, - 2BCC07C46EB4E01CE044DBB6 /* Pods-Runner.release.xcconfig */, - 9B293DEC88BD59786AD94EBD /* Pods-Runner.profile.xcconfig */, - 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */, - FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */, - EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */, - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */, + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */, + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */, + 5A1AE951B3C5AB29ED29FD49 /* [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 = ( - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */, + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 0F169C1C0F5EE8E3D274E72F /* [CP] Embed Pods Frameworks */, + F9BA01A46B725FF4B61D2CF9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F169C1C0F5EE8E3D274E72F /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */ = { + 5A1AE951B3C5AB29ED29FD49 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +383,7 @@ 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; }; - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */ = { + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -422,6 +405,23 @@ 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; }; + F9BA01A46B725FF4B61D2CF9 /* [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 */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/boring_to_beautiful/step_02/pubspec.yaml b/boring_to_beautiful/step_02/pubspec.yaml index 944deecd72..d0a71b9c7a 100644 --- a/boring_to_beautiful/step_02/pubspec.yaml +++ b/boring_to_beautiful/step_02/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,22 +13,22 @@ dependencies: collection: ^1.19.1 cupertino_icons: ^1.0.8 desktop_window: ^0.4.2 - dynamic_color: ^1.7.0 + dynamic_color: ^1.8.1 english_words: ^4.0.0 flutter_bloc: ^9.1.1 - freezed_annotation: ^3.0.0 - go_router: ^15.1.3 + freezed_annotation: ^3.1.0 + go_router: ^16.1.0 material_color_utilities: any universal_platform: ^1.1.0 - url_launcher: ^6.3.1 + url_launcher: ^6.3.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^6.0.0 - build_runner: ^2.4.15 - freezed: ^3.0.6 + build_runner: ^2.6.0 + freezed: ^3.2.0 flutter: uses-material-design: true diff --git a/boring_to_beautiful/step_03/.gemini/settings.json b/boring_to_beautiful/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/boring_to_beautiful/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/boring_to_beautiful/step_03/.gitignore b/boring_to_beautiful/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/boring_to_beautiful/step_03/.gitignore +++ b/boring_to_beautiful/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/boring_to_beautiful/step_03/android/build.gradle.kts b/boring_to_beautiful/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/boring_to_beautiful/step_03/android/build.gradle.kts +++ b/boring_to_beautiful/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/boring_to_beautiful/step_03/android/settings.gradle.kts b/boring_to_beautiful/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/boring_to_beautiful/step_03/android/settings.gradle.kts +++ b/boring_to_beautiful/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/boring_to_beautiful/step_03/ios/Flutter/AppFrameworkInfo.plist b/boring_to_beautiful/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/boring_to_beautiful/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/boring_to_beautiful/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/boring_to_beautiful/step_03/ios/Podfile b/boring_to_beautiful/step_03/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/boring_to_beautiful/step_03/ios/Podfile +++ b/boring_to_beautiful/step_03/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_03/ios/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_03/ios/Runner.xcodeproj/project.pbxproj index c30322fdf6..b334cd4bef 100644 --- a/boring_to_beautiful/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BA15459E839D3553B26934 /* Pods_Runner.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 */; }; - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */; }; + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */; }; + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,18 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 06C27BF5D7B993BB5DCB8D21 /* 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 = ""; }; + 0857899EC33720D408B34BA1 /* 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 = ""; }; + 0990B0E745EF9282BBD0B69C /* 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 = ""; }; 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 = ""; }; 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; }; - 3421F167A26D263533D9C0F8 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4ABA081B421BEA588642248C /* 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 = ""; }; + 681AA7ED59E6C2F2D0060307 /* 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 = ""; }; 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 = ""; }; - 8367A59A9CDAA6556FC2822B /* 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 = ""; }; + 84751C0362521082DEF1D687 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,26 +61,26 @@ 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 = ""; }; - 9BB58392A543FF4660B2490F /* 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 = ""; }; - D0BA15459E839D3553B26934 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F7B65A9BC4B475ABEC573986 /* 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 = ""; }; + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3FEDE49105230B1D557A7D6 /* 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 = ""; }; + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D7820135D2EF28621AF06DDD /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 0867A61CE1734AA853C7DCE7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */, + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F9E0A4607079935C37BF168F /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */, + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,20 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 44BD8D06CB822F8C423FCD72 /* Pods */ = { - isa = PBXGroup; - children = ( - 3421F167A26D263533D9C0F8 /* Pods-Runner.debug.xcconfig */, - 8367A59A9CDAA6556FC2822B /* Pods-Runner.release.xcconfig */, - 06C27BF5D7B993BB5DCB8D21 /* Pods-Runner.profile.xcconfig */, - F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */, - 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */, - 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -127,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 44BD8D06CB822F8C423FCD72 /* Pods */, - D054066A4956E2C378EF4A32 /* Frameworks */, + BD4564A80EF0DF22640031F7 /* Pods */, + F1EC60623F1ECA637AD555BF /* Frameworks */, ); sourceTree = ""; }; @@ -156,11 +142,25 @@ path = Runner; sourceTree = ""; }; - D054066A4956E2C378EF4A32 /* Frameworks */ = { + BD4564A80EF0DF22640031F7 /* Pods */ = { isa = PBXGroup; children = ( - D0BA15459E839D3553B26934 /* Pods_Runner.framework */, - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */, + B3FEDE49105230B1D557A7D6 /* Pods-Runner.debug.xcconfig */, + 0990B0E745EF9282BBD0B69C /* Pods-Runner.release.xcconfig */, + 84751C0362521082DEF1D687 /* Pods-Runner.profile.xcconfig */, + 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */, + D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */, + 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F1EC60623F1ECA637AD555BF /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */, + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */, + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - F9E0A4607079935C37BF168F /* Frameworks */, + 0867A61CE1734AA853C7DCE7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */, + 4C98368FD7BC292EAF1D220F /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */, + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,82 +270,82 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */ = { + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */ = { + 4C98368FD7BC292EAF1D220F /* [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-Runner-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; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/boring_to_beautiful/step_03/lib/src/shared/playback/bloc/playback_bloc.freezed.dart b/boring_to_beautiful/step_03/lib/src/shared/playback/bloc/playback_bloc.freezed.dart index 36ad6c4c1e..606767ad1a 100644 --- a/boring_to_beautiful/step_03/lib/src/shared/playback/bloc/playback_bloc.freezed.dart +++ b/boring_to_beautiful/step_03/lib/src/shared/playback/bloc/playback_bloc.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -42,6 +41,166 @@ $PlaybackEventCopyWith(PlaybackEvent _, $Res Function(PlaybackEvent) __); } +/// Adds pattern-matching-related methods to [PlaybackEvent]. +extension PlaybackEventPatterns on PlaybackEvent { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap({TResult Function( TogglePlayPause value)? togglePlayPause,TResult Function( ChangeSong value)? changeSong,TResult Function( SetVolume value)? setVolume,TResult Function( ToggleMute value)? toggleMute,TResult Function( MoveToInSong value)? moveToInSong,TResult Function( SongProgress value)? songProgress,required TResult orElse(),}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map({required TResult Function( TogglePlayPause value) togglePlayPause,required TResult Function( ChangeSong value) changeSong,required TResult Function( SetVolume value) setVolume,required TResult Function( ToggleMute value) toggleMute,required TResult Function( MoveToInSong value) moveToInSong,required TResult Function( SongProgress value) songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause(_that);case ChangeSong(): +return changeSong(_that);case SetVolume(): +return setVolume(_that);case ToggleMute(): +return toggleMute(_that);case MoveToInSong(): +return moveToInSong(_that);case SongProgress(): +return songProgress(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull({TResult? Function( TogglePlayPause value)? togglePlayPause,TResult? Function( ChangeSong value)? changeSong,TResult? Function( SetVolume value)? setVolume,TResult? Function( ToggleMute value)? toggleMute,TResult? Function( MoveToInSong value)? moveToInSong,TResult? Function( SongProgress value)? songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen({TResult Function()? togglePlayPause,TResult Function( Song song)? changeSong,TResult Function( double value)? setVolume,TResult Function()? toggleMute,TResult Function( double percent)? moveToInSong,TResult Function( Duration duration)? songProgress,required TResult orElse(),}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when({required TResult Function() togglePlayPause,required TResult Function( Song song) changeSong,required TResult Function( double value) setVolume,required TResult Function() toggleMute,required TResult Function( double percent) moveToInSong,required TResult Function( Duration duration) songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause();case ChangeSong(): +return changeSong(_that.song);case SetVolume(): +return setVolume(_that.value);case ToggleMute(): +return toggleMute();case MoveToInSong(): +return moveToInSong(_that.percent);case SongProgress(): +return songProgress(_that.duration);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull({TResult? Function()? togglePlayPause,TResult? Function( Song song)? changeSong,TResult? Function( double value)? setVolume,TResult? Function()? toggleMute,TResult? Function( double percent)? moveToInSong,TResult? Function( Duration duration)? songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return null; + +} +} + +} + /// @nodoc @@ -449,6 +608,136 @@ $SongWithProgressCopyWith<$Res>? get songWithProgress { } +/// Adds pattern-matching-related methods to [PlaybackState]. +extension PlaybackStatePatterns on PlaybackState { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _PlaybackState value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _PlaybackState value) $default,){ +final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _PlaybackState value)? $default,){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress) $default,) {final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return null; + +} +} + +} + /// @nodoc @@ -599,6 +888,136 @@ as Song, } +/// Adds pattern-matching-related methods to [SongWithProgress]. +extension SongWithProgressPatterns on SongWithProgress { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _SongWithProgress value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _SongWithProgress value) $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _SongWithProgress value)? $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( Duration progress, Song song)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( Duration progress, Song song) $default,) {final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that.progress,_that.song);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( Duration progress, Song song)? $default,) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return null; + +} +} + +} + /// @nodoc diff --git a/boring_to_beautiful/step_03/lib/src/shared/providers/theme.dart b/boring_to_beautiful/step_03/lib/src/shared/providers/theme.dart index a8c3c7c92f..83cc16e5f0 100644 --- a/boring_to_beautiful/step_03/lib/src/shared/providers/theme.dart +++ b/boring_to_beautiful/step_03/lib/src/shared/providers/theme.dart @@ -121,8 +121,8 @@ class ThemeProvider extends InheritedWidget { ); } - BottomAppBarTheme bottomAppBarTheme(ColorScheme colors) { - return BottomAppBarTheme(color: colors.surface, elevation: 0); + BottomAppBarThemeData bottomAppBarTheme(ColorScheme colors) { + return BottomAppBarThemeData(color: colors.surface, elevation: 0); } BottomNavigationBarThemeData bottomNavigationBarTheme(ColorScheme colors) { diff --git a/boring_to_beautiful/step_03/linux/runner/my_application.cc b/boring_to_beautiful/step_03/linux/runner/my_application.cc index f93ba9f71c..261e6e34c5 100644 --- a/boring_to_beautiful/step_03/linux/runner/my_application.cc +++ b/boring_to_beautiful/step_03/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/boring_to_beautiful/step_03/macos/Podfile b/boring_to_beautiful/step_03/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/boring_to_beautiful/step_03/macos/Podfile +++ b/boring_to_beautiful/step_03/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_03/macos/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_03/macos/Runner.xcodeproj/project.pbxproj index 79fced16c3..fcc8ce3204 100644 --- a/boring_to_beautiful/step_03/macos/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_03/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */; }; + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */; }; + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2BCC07C46EB4E01CE044DBB6 /* 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 = ""; }; + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 3E5DC3FB470EEF77149E71DD /* 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 = ""; }; + 6C8E34CD8A2F49B5A9421409 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 93864140E5DDD8350C71D815 /* 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 = ""; }; + 8862CD109E738F3921EB9C93 /* 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 = ""; }; + 9187C3567AE707002A52BF86 /* 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 = ""; }; - 9B293DEC88BD59786AD94EBD /* 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 = ""; }; - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EEFA0ABEA58A1E38E7AD7041 /* 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 = ""; }; - FDBDA46A6FE6381EE95E5A7A /* 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 = ""; }; + 99B8FC1B45711FC3FE3A40BE /* 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 = ""; }; + A4D814F1F2A769FE4E9E398D /* 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 = ""; }; + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E13C85F2C001812FC4890700 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */, + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */, + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 23EEF9C906B4711904746B7E /* Pods */ = { + isa = PBXGroup; + children = ( + 9187C3567AE707002A52BF86 /* Pods-Runner.debug.xcconfig */, + E13C85F2C001812FC4890700 /* Pods-Runner.release.xcconfig */, + 8862CD109E738F3921EB9C93 /* Pods-Runner.profile.xcconfig */, + A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */, + 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */, + 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6CDFAAD29A585E1E7DFB128C /* Pods */, + 23EEF9C906B4711904746B7E /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 6CDFAAD29A585E1E7DFB128C /* Pods */ = { - isa = PBXGroup; - children = ( - 3E5DC3FB470EEF77149E71DD /* Pods-Runner.debug.xcconfig */, - 2BCC07C46EB4E01CE044DBB6 /* Pods-Runner.release.xcconfig */, - 9B293DEC88BD59786AD94EBD /* Pods-Runner.profile.xcconfig */, - 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */, - FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */, - EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */, - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */, + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */, + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */, + 5A1AE951B3C5AB29ED29FD49 /* [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 = ( - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */, + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 0F169C1C0F5EE8E3D274E72F /* [CP] Embed Pods Frameworks */, + F9BA01A46B725FF4B61D2CF9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F169C1C0F5EE8E3D274E72F /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */ = { + 5A1AE951B3C5AB29ED29FD49 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +383,7 @@ 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; }; - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */ = { + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -422,6 +405,23 @@ 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; }; + F9BA01A46B725FF4B61D2CF9 /* [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 */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/boring_to_beautiful/step_03/pubspec.yaml b/boring_to_beautiful/step_03/pubspec.yaml index 944deecd72..d0a71b9c7a 100644 --- a/boring_to_beautiful/step_03/pubspec.yaml +++ b/boring_to_beautiful/step_03/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,22 +13,22 @@ dependencies: collection: ^1.19.1 cupertino_icons: ^1.0.8 desktop_window: ^0.4.2 - dynamic_color: ^1.7.0 + dynamic_color: ^1.8.1 english_words: ^4.0.0 flutter_bloc: ^9.1.1 - freezed_annotation: ^3.0.0 - go_router: ^15.1.3 + freezed_annotation: ^3.1.0 + go_router: ^16.1.0 material_color_utilities: any universal_platform: ^1.1.0 - url_launcher: ^6.3.1 + url_launcher: ^6.3.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^6.0.0 - build_runner: ^2.4.15 - freezed: ^3.0.6 + build_runner: ^2.6.0 + freezed: ^3.2.0 flutter: uses-material-design: true diff --git a/boring_to_beautiful/step_04/.gemini/settings.json b/boring_to_beautiful/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/boring_to_beautiful/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/boring_to_beautiful/step_04/.gitignore b/boring_to_beautiful/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/boring_to_beautiful/step_04/.gitignore +++ b/boring_to_beautiful/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/boring_to_beautiful/step_04/android/build.gradle.kts b/boring_to_beautiful/step_04/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/boring_to_beautiful/step_04/android/build.gradle.kts +++ b/boring_to_beautiful/step_04/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/boring_to_beautiful/step_04/android/settings.gradle.kts b/boring_to_beautiful/step_04/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/boring_to_beautiful/step_04/android/settings.gradle.kts +++ b/boring_to_beautiful/step_04/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/boring_to_beautiful/step_04/ios/Flutter/AppFrameworkInfo.plist b/boring_to_beautiful/step_04/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/boring_to_beautiful/step_04/ios/Flutter/AppFrameworkInfo.plist +++ b/boring_to_beautiful/step_04/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/boring_to_beautiful/step_04/ios/Podfile b/boring_to_beautiful/step_04/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/boring_to_beautiful/step_04/ios/Podfile +++ b/boring_to_beautiful/step_04/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_04/ios/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_04/ios/Runner.xcodeproj/project.pbxproj index c30322fdf6..b334cd4bef 100644 --- a/boring_to_beautiful/step_04/ios/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_04/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BA15459E839D3553B26934 /* Pods_Runner.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 */; }; - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */; }; + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */; }; + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,18 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 06C27BF5D7B993BB5DCB8D21 /* 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 = ""; }; + 0857899EC33720D408B34BA1 /* 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 = ""; }; + 0990B0E745EF9282BBD0B69C /* 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 = ""; }; 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 = ""; }; 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; }; - 3421F167A26D263533D9C0F8 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4ABA081B421BEA588642248C /* 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 = ""; }; + 681AA7ED59E6C2F2D0060307 /* 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 = ""; }; 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 = ""; }; - 8367A59A9CDAA6556FC2822B /* 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 = ""; }; + 84751C0362521082DEF1D687 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,26 +61,26 @@ 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 = ""; }; - 9BB58392A543FF4660B2490F /* 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 = ""; }; - D0BA15459E839D3553B26934 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F7B65A9BC4B475ABEC573986 /* 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 = ""; }; + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3FEDE49105230B1D557A7D6 /* 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 = ""; }; + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D7820135D2EF28621AF06DDD /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 0867A61CE1734AA853C7DCE7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */, + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F9E0A4607079935C37BF168F /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */, + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,20 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 44BD8D06CB822F8C423FCD72 /* Pods */ = { - isa = PBXGroup; - children = ( - 3421F167A26D263533D9C0F8 /* Pods-Runner.debug.xcconfig */, - 8367A59A9CDAA6556FC2822B /* Pods-Runner.release.xcconfig */, - 06C27BF5D7B993BB5DCB8D21 /* Pods-Runner.profile.xcconfig */, - F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */, - 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */, - 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -127,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 44BD8D06CB822F8C423FCD72 /* Pods */, - D054066A4956E2C378EF4A32 /* Frameworks */, + BD4564A80EF0DF22640031F7 /* Pods */, + F1EC60623F1ECA637AD555BF /* Frameworks */, ); sourceTree = ""; }; @@ -156,11 +142,25 @@ path = Runner; sourceTree = ""; }; - D054066A4956E2C378EF4A32 /* Frameworks */ = { + BD4564A80EF0DF22640031F7 /* Pods */ = { isa = PBXGroup; children = ( - D0BA15459E839D3553B26934 /* Pods_Runner.framework */, - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */, + B3FEDE49105230B1D557A7D6 /* Pods-Runner.debug.xcconfig */, + 0990B0E745EF9282BBD0B69C /* Pods-Runner.release.xcconfig */, + 84751C0362521082DEF1D687 /* Pods-Runner.profile.xcconfig */, + 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */, + D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */, + 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F1EC60623F1ECA637AD555BF /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */, + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */, + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - F9E0A4607079935C37BF168F /* Frameworks */, + 0867A61CE1734AA853C7DCE7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */, + 4C98368FD7BC292EAF1D220F /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */, + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,82 +270,82 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */ = { + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */ = { + 4C98368FD7BC292EAF1D220F /* [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-Runner-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; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/boring_to_beautiful/step_04/lib/src/shared/playback/bloc/playback_bloc.freezed.dart b/boring_to_beautiful/step_04/lib/src/shared/playback/bloc/playback_bloc.freezed.dart index 36ad6c4c1e..606767ad1a 100644 --- a/boring_to_beautiful/step_04/lib/src/shared/playback/bloc/playback_bloc.freezed.dart +++ b/boring_to_beautiful/step_04/lib/src/shared/playback/bloc/playback_bloc.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -42,6 +41,166 @@ $PlaybackEventCopyWith(PlaybackEvent _, $Res Function(PlaybackEvent) __); } +/// Adds pattern-matching-related methods to [PlaybackEvent]. +extension PlaybackEventPatterns on PlaybackEvent { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap({TResult Function( TogglePlayPause value)? togglePlayPause,TResult Function( ChangeSong value)? changeSong,TResult Function( SetVolume value)? setVolume,TResult Function( ToggleMute value)? toggleMute,TResult Function( MoveToInSong value)? moveToInSong,TResult Function( SongProgress value)? songProgress,required TResult orElse(),}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map({required TResult Function( TogglePlayPause value) togglePlayPause,required TResult Function( ChangeSong value) changeSong,required TResult Function( SetVolume value) setVolume,required TResult Function( ToggleMute value) toggleMute,required TResult Function( MoveToInSong value) moveToInSong,required TResult Function( SongProgress value) songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause(_that);case ChangeSong(): +return changeSong(_that);case SetVolume(): +return setVolume(_that);case ToggleMute(): +return toggleMute(_that);case MoveToInSong(): +return moveToInSong(_that);case SongProgress(): +return songProgress(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull({TResult? Function( TogglePlayPause value)? togglePlayPause,TResult? Function( ChangeSong value)? changeSong,TResult? Function( SetVolume value)? setVolume,TResult? Function( ToggleMute value)? toggleMute,TResult? Function( MoveToInSong value)? moveToInSong,TResult? Function( SongProgress value)? songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen({TResult Function()? togglePlayPause,TResult Function( Song song)? changeSong,TResult Function( double value)? setVolume,TResult Function()? toggleMute,TResult Function( double percent)? moveToInSong,TResult Function( Duration duration)? songProgress,required TResult orElse(),}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when({required TResult Function() togglePlayPause,required TResult Function( Song song) changeSong,required TResult Function( double value) setVolume,required TResult Function() toggleMute,required TResult Function( double percent) moveToInSong,required TResult Function( Duration duration) songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause();case ChangeSong(): +return changeSong(_that.song);case SetVolume(): +return setVolume(_that.value);case ToggleMute(): +return toggleMute();case MoveToInSong(): +return moveToInSong(_that.percent);case SongProgress(): +return songProgress(_that.duration);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull({TResult? Function()? togglePlayPause,TResult? Function( Song song)? changeSong,TResult? Function( double value)? setVolume,TResult? Function()? toggleMute,TResult? Function( double percent)? moveToInSong,TResult? Function( Duration duration)? songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return null; + +} +} + +} + /// @nodoc @@ -449,6 +608,136 @@ $SongWithProgressCopyWith<$Res>? get songWithProgress { } +/// Adds pattern-matching-related methods to [PlaybackState]. +extension PlaybackStatePatterns on PlaybackState { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _PlaybackState value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _PlaybackState value) $default,){ +final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _PlaybackState value)? $default,){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress) $default,) {final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return null; + +} +} + +} + /// @nodoc @@ -599,6 +888,136 @@ as Song, } +/// Adds pattern-matching-related methods to [SongWithProgress]. +extension SongWithProgressPatterns on SongWithProgress { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _SongWithProgress value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _SongWithProgress value) $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _SongWithProgress value)? $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( Duration progress, Song song)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( Duration progress, Song song) $default,) {final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that.progress,_that.song);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( Duration progress, Song song)? $default,) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return null; + +} +} + +} + /// @nodoc diff --git a/boring_to_beautiful/step_04/lib/src/shared/providers/theme.dart b/boring_to_beautiful/step_04/lib/src/shared/providers/theme.dart index a8c3c7c92f..83cc16e5f0 100644 --- a/boring_to_beautiful/step_04/lib/src/shared/providers/theme.dart +++ b/boring_to_beautiful/step_04/lib/src/shared/providers/theme.dart @@ -121,8 +121,8 @@ class ThemeProvider extends InheritedWidget { ); } - BottomAppBarTheme bottomAppBarTheme(ColorScheme colors) { - return BottomAppBarTheme(color: colors.surface, elevation: 0); + BottomAppBarThemeData bottomAppBarTheme(ColorScheme colors) { + return BottomAppBarThemeData(color: colors.surface, elevation: 0); } BottomNavigationBarThemeData bottomNavigationBarTheme(ColorScheme colors) { diff --git a/boring_to_beautiful/step_04/linux/runner/my_application.cc b/boring_to_beautiful/step_04/linux/runner/my_application.cc index f93ba9f71c..261e6e34c5 100644 --- a/boring_to_beautiful/step_04/linux/runner/my_application.cc +++ b/boring_to_beautiful/step_04/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/boring_to_beautiful/step_04/macos/Podfile b/boring_to_beautiful/step_04/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/boring_to_beautiful/step_04/macos/Podfile +++ b/boring_to_beautiful/step_04/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_04/macos/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_04/macos/Runner.xcodeproj/project.pbxproj index 79fced16c3..fcc8ce3204 100644 --- a/boring_to_beautiful/step_04/macos/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_04/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */; }; + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */; }; + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2BCC07C46EB4E01CE044DBB6 /* 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 = ""; }; + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 3E5DC3FB470EEF77149E71DD /* 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 = ""; }; + 6C8E34CD8A2F49B5A9421409 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 93864140E5DDD8350C71D815 /* 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 = ""; }; + 8862CD109E738F3921EB9C93 /* 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 = ""; }; + 9187C3567AE707002A52BF86 /* 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 = ""; }; - 9B293DEC88BD59786AD94EBD /* 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 = ""; }; - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EEFA0ABEA58A1E38E7AD7041 /* 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 = ""; }; - FDBDA46A6FE6381EE95E5A7A /* 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 = ""; }; + 99B8FC1B45711FC3FE3A40BE /* 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 = ""; }; + A4D814F1F2A769FE4E9E398D /* 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 = ""; }; + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E13C85F2C001812FC4890700 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */, + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */, + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 23EEF9C906B4711904746B7E /* Pods */ = { + isa = PBXGroup; + children = ( + 9187C3567AE707002A52BF86 /* Pods-Runner.debug.xcconfig */, + E13C85F2C001812FC4890700 /* Pods-Runner.release.xcconfig */, + 8862CD109E738F3921EB9C93 /* Pods-Runner.profile.xcconfig */, + A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */, + 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */, + 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6CDFAAD29A585E1E7DFB128C /* Pods */, + 23EEF9C906B4711904746B7E /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 6CDFAAD29A585E1E7DFB128C /* Pods */ = { - isa = PBXGroup; - children = ( - 3E5DC3FB470EEF77149E71DD /* Pods-Runner.debug.xcconfig */, - 2BCC07C46EB4E01CE044DBB6 /* Pods-Runner.release.xcconfig */, - 9B293DEC88BD59786AD94EBD /* Pods-Runner.profile.xcconfig */, - 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */, - FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */, - EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */, - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */, + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */, + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */, + 5A1AE951B3C5AB29ED29FD49 /* [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 = ( - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */, + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 0F169C1C0F5EE8E3D274E72F /* [CP] Embed Pods Frameworks */, + F9BA01A46B725FF4B61D2CF9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F169C1C0F5EE8E3D274E72F /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */ = { + 5A1AE951B3C5AB29ED29FD49 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +383,7 @@ 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; }; - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */ = { + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -422,6 +405,23 @@ 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; }; + F9BA01A46B725FF4B61D2CF9 /* [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 */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/boring_to_beautiful/step_04/pubspec.yaml b/boring_to_beautiful/step_04/pubspec.yaml index 944deecd72..d0a71b9c7a 100644 --- a/boring_to_beautiful/step_04/pubspec.yaml +++ b/boring_to_beautiful/step_04/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,22 +13,22 @@ dependencies: collection: ^1.19.1 cupertino_icons: ^1.0.8 desktop_window: ^0.4.2 - dynamic_color: ^1.7.0 + dynamic_color: ^1.8.1 english_words: ^4.0.0 flutter_bloc: ^9.1.1 - freezed_annotation: ^3.0.0 - go_router: ^15.1.3 + freezed_annotation: ^3.1.0 + go_router: ^16.1.0 material_color_utilities: any universal_platform: ^1.1.0 - url_launcher: ^6.3.1 + url_launcher: ^6.3.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^6.0.0 - build_runner: ^2.4.15 - freezed: ^3.0.6 + build_runner: ^2.6.0 + freezed: ^3.2.0 flutter: uses-material-design: true diff --git a/boring_to_beautiful/step_05_a/.gemini/settings.json b/boring_to_beautiful/step_05_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/boring_to_beautiful/step_05_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/boring_to_beautiful/step_05_a/.gitignore b/boring_to_beautiful/step_05_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/boring_to_beautiful/step_05_a/.gitignore +++ b/boring_to_beautiful/step_05_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/boring_to_beautiful/step_05_a/android/build.gradle.kts b/boring_to_beautiful/step_05_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/boring_to_beautiful/step_05_a/android/build.gradle.kts +++ b/boring_to_beautiful/step_05_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/boring_to_beautiful/step_05_a/android/settings.gradle.kts b/boring_to_beautiful/step_05_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/boring_to_beautiful/step_05_a/android/settings.gradle.kts +++ b/boring_to_beautiful/step_05_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/boring_to_beautiful/step_05_a/ios/Flutter/AppFrameworkInfo.plist b/boring_to_beautiful/step_05_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/boring_to_beautiful/step_05_a/ios/Flutter/AppFrameworkInfo.plist +++ b/boring_to_beautiful/step_05_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/boring_to_beautiful/step_05_a/ios/Podfile b/boring_to_beautiful/step_05_a/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/boring_to_beautiful/step_05_a/ios/Podfile +++ b/boring_to_beautiful/step_05_a/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_05_a/ios/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_05_a/ios/Runner.xcodeproj/project.pbxproj index c30322fdf6..b334cd4bef 100644 --- a/boring_to_beautiful/step_05_a/ios/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_05_a/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BA15459E839D3553B26934 /* Pods_Runner.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 */; }; - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */; }; + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */; }; + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,18 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 06C27BF5D7B993BB5DCB8D21 /* 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 = ""; }; + 0857899EC33720D408B34BA1 /* 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 = ""; }; + 0990B0E745EF9282BBD0B69C /* 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 = ""; }; 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 = ""; }; 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; }; - 3421F167A26D263533D9C0F8 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4ABA081B421BEA588642248C /* 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 = ""; }; + 681AA7ED59E6C2F2D0060307 /* 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 = ""; }; 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 = ""; }; - 8367A59A9CDAA6556FC2822B /* 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 = ""; }; + 84751C0362521082DEF1D687 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,26 +61,26 @@ 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 = ""; }; - 9BB58392A543FF4660B2490F /* 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 = ""; }; - D0BA15459E839D3553B26934 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F7B65A9BC4B475ABEC573986 /* 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 = ""; }; + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3FEDE49105230B1D557A7D6 /* 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 = ""; }; + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D7820135D2EF28621AF06DDD /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 0867A61CE1734AA853C7DCE7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */, + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F9E0A4607079935C37BF168F /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */, + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,20 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 44BD8D06CB822F8C423FCD72 /* Pods */ = { - isa = PBXGroup; - children = ( - 3421F167A26D263533D9C0F8 /* Pods-Runner.debug.xcconfig */, - 8367A59A9CDAA6556FC2822B /* Pods-Runner.release.xcconfig */, - 06C27BF5D7B993BB5DCB8D21 /* Pods-Runner.profile.xcconfig */, - F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */, - 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */, - 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -127,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 44BD8D06CB822F8C423FCD72 /* Pods */, - D054066A4956E2C378EF4A32 /* Frameworks */, + BD4564A80EF0DF22640031F7 /* Pods */, + F1EC60623F1ECA637AD555BF /* Frameworks */, ); sourceTree = ""; }; @@ -156,11 +142,25 @@ path = Runner; sourceTree = ""; }; - D054066A4956E2C378EF4A32 /* Frameworks */ = { + BD4564A80EF0DF22640031F7 /* Pods */ = { isa = PBXGroup; children = ( - D0BA15459E839D3553B26934 /* Pods_Runner.framework */, - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */, + B3FEDE49105230B1D557A7D6 /* Pods-Runner.debug.xcconfig */, + 0990B0E745EF9282BBD0B69C /* Pods-Runner.release.xcconfig */, + 84751C0362521082DEF1D687 /* Pods-Runner.profile.xcconfig */, + 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */, + D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */, + 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F1EC60623F1ECA637AD555BF /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */, + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */, + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - F9E0A4607079935C37BF168F /* Frameworks */, + 0867A61CE1734AA853C7DCE7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */, + 4C98368FD7BC292EAF1D220F /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */, + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,82 +270,82 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */ = { + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */ = { + 4C98368FD7BC292EAF1D220F /* [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-Runner-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; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/boring_to_beautiful/step_05_a/lib/src/shared/playback/bloc/playback_bloc.freezed.dart b/boring_to_beautiful/step_05_a/lib/src/shared/playback/bloc/playback_bloc.freezed.dart index 36ad6c4c1e..606767ad1a 100644 --- a/boring_to_beautiful/step_05_a/lib/src/shared/playback/bloc/playback_bloc.freezed.dart +++ b/boring_to_beautiful/step_05_a/lib/src/shared/playback/bloc/playback_bloc.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -42,6 +41,166 @@ $PlaybackEventCopyWith(PlaybackEvent _, $Res Function(PlaybackEvent) __); } +/// Adds pattern-matching-related methods to [PlaybackEvent]. +extension PlaybackEventPatterns on PlaybackEvent { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap({TResult Function( TogglePlayPause value)? togglePlayPause,TResult Function( ChangeSong value)? changeSong,TResult Function( SetVolume value)? setVolume,TResult Function( ToggleMute value)? toggleMute,TResult Function( MoveToInSong value)? moveToInSong,TResult Function( SongProgress value)? songProgress,required TResult orElse(),}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map({required TResult Function( TogglePlayPause value) togglePlayPause,required TResult Function( ChangeSong value) changeSong,required TResult Function( SetVolume value) setVolume,required TResult Function( ToggleMute value) toggleMute,required TResult Function( MoveToInSong value) moveToInSong,required TResult Function( SongProgress value) songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause(_that);case ChangeSong(): +return changeSong(_that);case SetVolume(): +return setVolume(_that);case ToggleMute(): +return toggleMute(_that);case MoveToInSong(): +return moveToInSong(_that);case SongProgress(): +return songProgress(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull({TResult? Function( TogglePlayPause value)? togglePlayPause,TResult? Function( ChangeSong value)? changeSong,TResult? Function( SetVolume value)? setVolume,TResult? Function( ToggleMute value)? toggleMute,TResult? Function( MoveToInSong value)? moveToInSong,TResult? Function( SongProgress value)? songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen({TResult Function()? togglePlayPause,TResult Function( Song song)? changeSong,TResult Function( double value)? setVolume,TResult Function()? toggleMute,TResult Function( double percent)? moveToInSong,TResult Function( Duration duration)? songProgress,required TResult orElse(),}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when({required TResult Function() togglePlayPause,required TResult Function( Song song) changeSong,required TResult Function( double value) setVolume,required TResult Function() toggleMute,required TResult Function( double percent) moveToInSong,required TResult Function( Duration duration) songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause();case ChangeSong(): +return changeSong(_that.song);case SetVolume(): +return setVolume(_that.value);case ToggleMute(): +return toggleMute();case MoveToInSong(): +return moveToInSong(_that.percent);case SongProgress(): +return songProgress(_that.duration);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull({TResult? Function()? togglePlayPause,TResult? Function( Song song)? changeSong,TResult? Function( double value)? setVolume,TResult? Function()? toggleMute,TResult? Function( double percent)? moveToInSong,TResult? Function( Duration duration)? songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return null; + +} +} + +} + /// @nodoc @@ -449,6 +608,136 @@ $SongWithProgressCopyWith<$Res>? get songWithProgress { } +/// Adds pattern-matching-related methods to [PlaybackState]. +extension PlaybackStatePatterns on PlaybackState { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _PlaybackState value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _PlaybackState value) $default,){ +final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _PlaybackState value)? $default,){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress) $default,) {final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return null; + +} +} + +} + /// @nodoc @@ -599,6 +888,136 @@ as Song, } +/// Adds pattern-matching-related methods to [SongWithProgress]. +extension SongWithProgressPatterns on SongWithProgress { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _SongWithProgress value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _SongWithProgress value) $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _SongWithProgress value)? $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( Duration progress, Song song)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( Duration progress, Song song) $default,) {final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that.progress,_that.song);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( Duration progress, Song song)? $default,) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return null; + +} +} + +} + /// @nodoc diff --git a/boring_to_beautiful/step_05_a/lib/src/shared/providers/theme.dart b/boring_to_beautiful/step_05_a/lib/src/shared/providers/theme.dart index a8c3c7c92f..83cc16e5f0 100644 --- a/boring_to_beautiful/step_05_a/lib/src/shared/providers/theme.dart +++ b/boring_to_beautiful/step_05_a/lib/src/shared/providers/theme.dart @@ -121,8 +121,8 @@ class ThemeProvider extends InheritedWidget { ); } - BottomAppBarTheme bottomAppBarTheme(ColorScheme colors) { - return BottomAppBarTheme(color: colors.surface, elevation: 0); + BottomAppBarThemeData bottomAppBarTheme(ColorScheme colors) { + return BottomAppBarThemeData(color: colors.surface, elevation: 0); } BottomNavigationBarThemeData bottomNavigationBarTheme(ColorScheme colors) { diff --git a/boring_to_beautiful/step_05_a/linux/runner/my_application.cc b/boring_to_beautiful/step_05_a/linux/runner/my_application.cc index f93ba9f71c..261e6e34c5 100644 --- a/boring_to_beautiful/step_05_a/linux/runner/my_application.cc +++ b/boring_to_beautiful/step_05_a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/boring_to_beautiful/step_05_a/macos/Podfile b/boring_to_beautiful/step_05_a/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/boring_to_beautiful/step_05_a/macos/Podfile +++ b/boring_to_beautiful/step_05_a/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_05_a/macos/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_05_a/macos/Runner.xcodeproj/project.pbxproj index 79fced16c3..fcc8ce3204 100644 --- a/boring_to_beautiful/step_05_a/macos/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_05_a/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */; }; + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */; }; + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2BCC07C46EB4E01CE044DBB6 /* 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 = ""; }; + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 3E5DC3FB470EEF77149E71DD /* 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 = ""; }; + 6C8E34CD8A2F49B5A9421409 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 93864140E5DDD8350C71D815 /* 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 = ""; }; + 8862CD109E738F3921EB9C93 /* 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 = ""; }; + 9187C3567AE707002A52BF86 /* 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 = ""; }; - 9B293DEC88BD59786AD94EBD /* 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 = ""; }; - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EEFA0ABEA58A1E38E7AD7041 /* 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 = ""; }; - FDBDA46A6FE6381EE95E5A7A /* 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 = ""; }; + 99B8FC1B45711FC3FE3A40BE /* 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 = ""; }; + A4D814F1F2A769FE4E9E398D /* 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 = ""; }; + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E13C85F2C001812FC4890700 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */, + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */, + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 23EEF9C906B4711904746B7E /* Pods */ = { + isa = PBXGroup; + children = ( + 9187C3567AE707002A52BF86 /* Pods-Runner.debug.xcconfig */, + E13C85F2C001812FC4890700 /* Pods-Runner.release.xcconfig */, + 8862CD109E738F3921EB9C93 /* Pods-Runner.profile.xcconfig */, + A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */, + 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */, + 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6CDFAAD29A585E1E7DFB128C /* Pods */, + 23EEF9C906B4711904746B7E /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 6CDFAAD29A585E1E7DFB128C /* Pods */ = { - isa = PBXGroup; - children = ( - 3E5DC3FB470EEF77149E71DD /* Pods-Runner.debug.xcconfig */, - 2BCC07C46EB4E01CE044DBB6 /* Pods-Runner.release.xcconfig */, - 9B293DEC88BD59786AD94EBD /* Pods-Runner.profile.xcconfig */, - 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */, - FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */, - EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */, - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */, + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */, + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */, + 5A1AE951B3C5AB29ED29FD49 /* [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 = ( - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */, + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 0F169C1C0F5EE8E3D274E72F /* [CP] Embed Pods Frameworks */, + F9BA01A46B725FF4B61D2CF9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F169C1C0F5EE8E3D274E72F /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */ = { + 5A1AE951B3C5AB29ED29FD49 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +383,7 @@ 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; }; - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */ = { + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -422,6 +405,23 @@ 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; }; + F9BA01A46B725FF4B61D2CF9 /* [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 */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/boring_to_beautiful/step_05_a/pubspec.yaml b/boring_to_beautiful/step_05_a/pubspec.yaml index 944deecd72..d0a71b9c7a 100644 --- a/boring_to_beautiful/step_05_a/pubspec.yaml +++ b/boring_to_beautiful/step_05_a/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,22 +13,22 @@ dependencies: collection: ^1.19.1 cupertino_icons: ^1.0.8 desktop_window: ^0.4.2 - dynamic_color: ^1.7.0 + dynamic_color: ^1.8.1 english_words: ^4.0.0 flutter_bloc: ^9.1.1 - freezed_annotation: ^3.0.0 - go_router: ^15.1.3 + freezed_annotation: ^3.1.0 + go_router: ^16.1.0 material_color_utilities: any universal_platform: ^1.1.0 - url_launcher: ^6.3.1 + url_launcher: ^6.3.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^6.0.0 - build_runner: ^2.4.15 - freezed: ^3.0.6 + build_runner: ^2.6.0 + freezed: ^3.2.0 flutter: uses-material-design: true diff --git a/boring_to_beautiful/step_05_b/.gemini/settings.json b/boring_to_beautiful/step_05_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/boring_to_beautiful/step_05_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/boring_to_beautiful/step_05_b/.gitignore b/boring_to_beautiful/step_05_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/boring_to_beautiful/step_05_b/.gitignore +++ b/boring_to_beautiful/step_05_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/boring_to_beautiful/step_05_b/android/build.gradle.kts b/boring_to_beautiful/step_05_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/boring_to_beautiful/step_05_b/android/build.gradle.kts +++ b/boring_to_beautiful/step_05_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/boring_to_beautiful/step_05_b/android/settings.gradle.kts b/boring_to_beautiful/step_05_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/boring_to_beautiful/step_05_b/android/settings.gradle.kts +++ b/boring_to_beautiful/step_05_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/boring_to_beautiful/step_05_b/ios/Flutter/AppFrameworkInfo.plist b/boring_to_beautiful/step_05_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/boring_to_beautiful/step_05_b/ios/Flutter/AppFrameworkInfo.plist +++ b/boring_to_beautiful/step_05_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/boring_to_beautiful/step_05_b/ios/Podfile b/boring_to_beautiful/step_05_b/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/boring_to_beautiful/step_05_b/ios/Podfile +++ b/boring_to_beautiful/step_05_b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_05_b/ios/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_05_b/ios/Runner.xcodeproj/project.pbxproj index c30322fdf6..b334cd4bef 100644 --- a/boring_to_beautiful/step_05_b/ios/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_05_b/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BA15459E839D3553B26934 /* Pods_Runner.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 */; }; - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */; }; + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */; }; + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,18 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 06C27BF5D7B993BB5DCB8D21 /* 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 = ""; }; + 0857899EC33720D408B34BA1 /* 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 = ""; }; + 0990B0E745EF9282BBD0B69C /* 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 = ""; }; 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 = ""; }; 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; }; - 3421F167A26D263533D9C0F8 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4ABA081B421BEA588642248C /* 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 = ""; }; + 681AA7ED59E6C2F2D0060307 /* 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 = ""; }; 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 = ""; }; - 8367A59A9CDAA6556FC2822B /* 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 = ""; }; + 84751C0362521082DEF1D687 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,26 +61,26 @@ 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 = ""; }; - 9BB58392A543FF4660B2490F /* 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 = ""; }; - D0BA15459E839D3553B26934 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F7B65A9BC4B475ABEC573986 /* 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 = ""; }; + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3FEDE49105230B1D557A7D6 /* 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 = ""; }; + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D7820135D2EF28621AF06DDD /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 0867A61CE1734AA853C7DCE7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */, + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F9E0A4607079935C37BF168F /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */, + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,20 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 44BD8D06CB822F8C423FCD72 /* Pods */ = { - isa = PBXGroup; - children = ( - 3421F167A26D263533D9C0F8 /* Pods-Runner.debug.xcconfig */, - 8367A59A9CDAA6556FC2822B /* Pods-Runner.release.xcconfig */, - 06C27BF5D7B993BB5DCB8D21 /* Pods-Runner.profile.xcconfig */, - F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */, - 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */, - 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -127,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 44BD8D06CB822F8C423FCD72 /* Pods */, - D054066A4956E2C378EF4A32 /* Frameworks */, + BD4564A80EF0DF22640031F7 /* Pods */, + F1EC60623F1ECA637AD555BF /* Frameworks */, ); sourceTree = ""; }; @@ -156,11 +142,25 @@ path = Runner; sourceTree = ""; }; - D054066A4956E2C378EF4A32 /* Frameworks */ = { + BD4564A80EF0DF22640031F7 /* Pods */ = { isa = PBXGroup; children = ( - D0BA15459E839D3553B26934 /* Pods_Runner.framework */, - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */, + B3FEDE49105230B1D557A7D6 /* Pods-Runner.debug.xcconfig */, + 0990B0E745EF9282BBD0B69C /* Pods-Runner.release.xcconfig */, + 84751C0362521082DEF1D687 /* Pods-Runner.profile.xcconfig */, + 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */, + D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */, + 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F1EC60623F1ECA637AD555BF /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */, + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */, + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - F9E0A4607079935C37BF168F /* Frameworks */, + 0867A61CE1734AA853C7DCE7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */, + 4C98368FD7BC292EAF1D220F /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */, + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,82 +270,82 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */ = { + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */ = { + 4C98368FD7BC292EAF1D220F /* [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-Runner-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; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/boring_to_beautiful/step_05_b/lib/src/shared/playback/bloc/playback_bloc.freezed.dart b/boring_to_beautiful/step_05_b/lib/src/shared/playback/bloc/playback_bloc.freezed.dart index 36ad6c4c1e..606767ad1a 100644 --- a/boring_to_beautiful/step_05_b/lib/src/shared/playback/bloc/playback_bloc.freezed.dart +++ b/boring_to_beautiful/step_05_b/lib/src/shared/playback/bloc/playback_bloc.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -42,6 +41,166 @@ $PlaybackEventCopyWith(PlaybackEvent _, $Res Function(PlaybackEvent) __); } +/// Adds pattern-matching-related methods to [PlaybackEvent]. +extension PlaybackEventPatterns on PlaybackEvent { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap({TResult Function( TogglePlayPause value)? togglePlayPause,TResult Function( ChangeSong value)? changeSong,TResult Function( SetVolume value)? setVolume,TResult Function( ToggleMute value)? toggleMute,TResult Function( MoveToInSong value)? moveToInSong,TResult Function( SongProgress value)? songProgress,required TResult orElse(),}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map({required TResult Function( TogglePlayPause value) togglePlayPause,required TResult Function( ChangeSong value) changeSong,required TResult Function( SetVolume value) setVolume,required TResult Function( ToggleMute value) toggleMute,required TResult Function( MoveToInSong value) moveToInSong,required TResult Function( SongProgress value) songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause(_that);case ChangeSong(): +return changeSong(_that);case SetVolume(): +return setVolume(_that);case ToggleMute(): +return toggleMute(_that);case MoveToInSong(): +return moveToInSong(_that);case SongProgress(): +return songProgress(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull({TResult? Function( TogglePlayPause value)? togglePlayPause,TResult? Function( ChangeSong value)? changeSong,TResult? Function( SetVolume value)? setVolume,TResult? Function( ToggleMute value)? toggleMute,TResult? Function( MoveToInSong value)? moveToInSong,TResult? Function( SongProgress value)? songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen({TResult Function()? togglePlayPause,TResult Function( Song song)? changeSong,TResult Function( double value)? setVolume,TResult Function()? toggleMute,TResult Function( double percent)? moveToInSong,TResult Function( Duration duration)? songProgress,required TResult orElse(),}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when({required TResult Function() togglePlayPause,required TResult Function( Song song) changeSong,required TResult Function( double value) setVolume,required TResult Function() toggleMute,required TResult Function( double percent) moveToInSong,required TResult Function( Duration duration) songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause();case ChangeSong(): +return changeSong(_that.song);case SetVolume(): +return setVolume(_that.value);case ToggleMute(): +return toggleMute();case MoveToInSong(): +return moveToInSong(_that.percent);case SongProgress(): +return songProgress(_that.duration);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull({TResult? Function()? togglePlayPause,TResult? Function( Song song)? changeSong,TResult? Function( double value)? setVolume,TResult? Function()? toggleMute,TResult? Function( double percent)? moveToInSong,TResult? Function( Duration duration)? songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return null; + +} +} + +} + /// @nodoc @@ -449,6 +608,136 @@ $SongWithProgressCopyWith<$Res>? get songWithProgress { } +/// Adds pattern-matching-related methods to [PlaybackState]. +extension PlaybackStatePatterns on PlaybackState { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _PlaybackState value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _PlaybackState value) $default,){ +final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _PlaybackState value)? $default,){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress) $default,) {final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return null; + +} +} + +} + /// @nodoc @@ -599,6 +888,136 @@ as Song, } +/// Adds pattern-matching-related methods to [SongWithProgress]. +extension SongWithProgressPatterns on SongWithProgress { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _SongWithProgress value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _SongWithProgress value) $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _SongWithProgress value)? $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( Duration progress, Song song)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( Duration progress, Song song) $default,) {final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that.progress,_that.song);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( Duration progress, Song song)? $default,) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return null; + +} +} + +} + /// @nodoc diff --git a/boring_to_beautiful/step_05_b/lib/src/shared/providers/theme.dart b/boring_to_beautiful/step_05_b/lib/src/shared/providers/theme.dart index a8c3c7c92f..83cc16e5f0 100644 --- a/boring_to_beautiful/step_05_b/lib/src/shared/providers/theme.dart +++ b/boring_to_beautiful/step_05_b/lib/src/shared/providers/theme.dart @@ -121,8 +121,8 @@ class ThemeProvider extends InheritedWidget { ); } - BottomAppBarTheme bottomAppBarTheme(ColorScheme colors) { - return BottomAppBarTheme(color: colors.surface, elevation: 0); + BottomAppBarThemeData bottomAppBarTheme(ColorScheme colors) { + return BottomAppBarThemeData(color: colors.surface, elevation: 0); } BottomNavigationBarThemeData bottomNavigationBarTheme(ColorScheme colors) { diff --git a/boring_to_beautiful/step_05_b/linux/runner/my_application.cc b/boring_to_beautiful/step_05_b/linux/runner/my_application.cc index f93ba9f71c..261e6e34c5 100644 --- a/boring_to_beautiful/step_05_b/linux/runner/my_application.cc +++ b/boring_to_beautiful/step_05_b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/boring_to_beautiful/step_05_b/macos/Podfile b/boring_to_beautiful/step_05_b/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/boring_to_beautiful/step_05_b/macos/Podfile +++ b/boring_to_beautiful/step_05_b/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_05_b/macos/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_05_b/macos/Runner.xcodeproj/project.pbxproj index 79fced16c3..fcc8ce3204 100644 --- a/boring_to_beautiful/step_05_b/macos/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_05_b/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */; }; + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */; }; + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2BCC07C46EB4E01CE044DBB6 /* 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 = ""; }; + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 3E5DC3FB470EEF77149E71DD /* 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 = ""; }; + 6C8E34CD8A2F49B5A9421409 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 93864140E5DDD8350C71D815 /* 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 = ""; }; + 8862CD109E738F3921EB9C93 /* 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 = ""; }; + 9187C3567AE707002A52BF86 /* 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 = ""; }; - 9B293DEC88BD59786AD94EBD /* 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 = ""; }; - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EEFA0ABEA58A1E38E7AD7041 /* 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 = ""; }; - FDBDA46A6FE6381EE95E5A7A /* 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 = ""; }; + 99B8FC1B45711FC3FE3A40BE /* 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 = ""; }; + A4D814F1F2A769FE4E9E398D /* 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 = ""; }; + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E13C85F2C001812FC4890700 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */, + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */, + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 23EEF9C906B4711904746B7E /* Pods */ = { + isa = PBXGroup; + children = ( + 9187C3567AE707002A52BF86 /* Pods-Runner.debug.xcconfig */, + E13C85F2C001812FC4890700 /* Pods-Runner.release.xcconfig */, + 8862CD109E738F3921EB9C93 /* Pods-Runner.profile.xcconfig */, + A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */, + 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */, + 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6CDFAAD29A585E1E7DFB128C /* Pods */, + 23EEF9C906B4711904746B7E /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 6CDFAAD29A585E1E7DFB128C /* Pods */ = { - isa = PBXGroup; - children = ( - 3E5DC3FB470EEF77149E71DD /* Pods-Runner.debug.xcconfig */, - 2BCC07C46EB4E01CE044DBB6 /* Pods-Runner.release.xcconfig */, - 9B293DEC88BD59786AD94EBD /* Pods-Runner.profile.xcconfig */, - 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */, - FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */, - EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */, - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */, + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */, + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */, + 5A1AE951B3C5AB29ED29FD49 /* [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 = ( - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */, + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 0F169C1C0F5EE8E3D274E72F /* [CP] Embed Pods Frameworks */, + F9BA01A46B725FF4B61D2CF9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F169C1C0F5EE8E3D274E72F /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */ = { + 5A1AE951B3C5AB29ED29FD49 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +383,7 @@ 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; }; - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */ = { + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -422,6 +405,23 @@ 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; }; + F9BA01A46B725FF4B61D2CF9 /* [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 */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/boring_to_beautiful/step_05_b/pubspec.yaml b/boring_to_beautiful/step_05_b/pubspec.yaml index 944deecd72..d0a71b9c7a 100644 --- a/boring_to_beautiful/step_05_b/pubspec.yaml +++ b/boring_to_beautiful/step_05_b/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,22 +13,22 @@ dependencies: collection: ^1.19.1 cupertino_icons: ^1.0.8 desktop_window: ^0.4.2 - dynamic_color: ^1.7.0 + dynamic_color: ^1.8.1 english_words: ^4.0.0 flutter_bloc: ^9.1.1 - freezed_annotation: ^3.0.0 - go_router: ^15.1.3 + freezed_annotation: ^3.1.0 + go_router: ^16.1.0 material_color_utilities: any universal_platform: ^1.1.0 - url_launcher: ^6.3.1 + url_launcher: ^6.3.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^6.0.0 - build_runner: ^2.4.15 - freezed: ^3.0.6 + build_runner: ^2.6.0 + freezed: ^3.2.0 flutter: uses-material-design: true diff --git a/boring_to_beautiful/step_05_c/.gemini/settings.json b/boring_to_beautiful/step_05_c/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/boring_to_beautiful/step_05_c/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/boring_to_beautiful/step_05_c/.gitignore b/boring_to_beautiful/step_05_c/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/boring_to_beautiful/step_05_c/.gitignore +++ b/boring_to_beautiful/step_05_c/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/boring_to_beautiful/step_05_c/android/build.gradle.kts b/boring_to_beautiful/step_05_c/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/boring_to_beautiful/step_05_c/android/build.gradle.kts +++ b/boring_to_beautiful/step_05_c/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/boring_to_beautiful/step_05_c/android/settings.gradle.kts b/boring_to_beautiful/step_05_c/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/boring_to_beautiful/step_05_c/android/settings.gradle.kts +++ b/boring_to_beautiful/step_05_c/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/boring_to_beautiful/step_05_c/ios/Flutter/AppFrameworkInfo.plist b/boring_to_beautiful/step_05_c/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/boring_to_beautiful/step_05_c/ios/Flutter/AppFrameworkInfo.plist +++ b/boring_to_beautiful/step_05_c/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/boring_to_beautiful/step_05_c/ios/Podfile b/boring_to_beautiful/step_05_c/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/boring_to_beautiful/step_05_c/ios/Podfile +++ b/boring_to_beautiful/step_05_c/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_05_c/ios/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_05_c/ios/Runner.xcodeproj/project.pbxproj index c30322fdf6..b334cd4bef 100644 --- a/boring_to_beautiful/step_05_c/ios/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_05_c/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BA15459E839D3553B26934 /* Pods_Runner.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 */; }; - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */; }; + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */; }; + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,18 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 06C27BF5D7B993BB5DCB8D21 /* 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 = ""; }; + 0857899EC33720D408B34BA1 /* 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 = ""; }; + 0990B0E745EF9282BBD0B69C /* 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 = ""; }; 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 = ""; }; 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; }; - 3421F167A26D263533D9C0F8 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4ABA081B421BEA588642248C /* 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 = ""; }; + 681AA7ED59E6C2F2D0060307 /* 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 = ""; }; 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 = ""; }; - 8367A59A9CDAA6556FC2822B /* 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 = ""; }; + 84751C0362521082DEF1D687 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,26 +61,26 @@ 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 = ""; }; - 9BB58392A543FF4660B2490F /* 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 = ""; }; - D0BA15459E839D3553B26934 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F7B65A9BC4B475ABEC573986 /* 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 = ""; }; + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3FEDE49105230B1D557A7D6 /* 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 = ""; }; + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D7820135D2EF28621AF06DDD /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 0867A61CE1734AA853C7DCE7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */, + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F9E0A4607079935C37BF168F /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */, + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,20 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 44BD8D06CB822F8C423FCD72 /* Pods */ = { - isa = PBXGroup; - children = ( - 3421F167A26D263533D9C0F8 /* Pods-Runner.debug.xcconfig */, - 8367A59A9CDAA6556FC2822B /* Pods-Runner.release.xcconfig */, - 06C27BF5D7B993BB5DCB8D21 /* Pods-Runner.profile.xcconfig */, - F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */, - 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */, - 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -127,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 44BD8D06CB822F8C423FCD72 /* Pods */, - D054066A4956E2C378EF4A32 /* Frameworks */, + BD4564A80EF0DF22640031F7 /* Pods */, + F1EC60623F1ECA637AD555BF /* Frameworks */, ); sourceTree = ""; }; @@ -156,11 +142,25 @@ path = Runner; sourceTree = ""; }; - D054066A4956E2C378EF4A32 /* Frameworks */ = { + BD4564A80EF0DF22640031F7 /* Pods */ = { isa = PBXGroup; children = ( - D0BA15459E839D3553B26934 /* Pods_Runner.framework */, - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */, + B3FEDE49105230B1D557A7D6 /* Pods-Runner.debug.xcconfig */, + 0990B0E745EF9282BBD0B69C /* Pods-Runner.release.xcconfig */, + 84751C0362521082DEF1D687 /* Pods-Runner.profile.xcconfig */, + 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */, + D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */, + 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F1EC60623F1ECA637AD555BF /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */, + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */, + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - F9E0A4607079935C37BF168F /* Frameworks */, + 0867A61CE1734AA853C7DCE7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */, + 4C98368FD7BC292EAF1D220F /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */, + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,82 +270,82 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */ = { + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */ = { + 4C98368FD7BC292EAF1D220F /* [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-Runner-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; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/boring_to_beautiful/step_05_c/lib/src/shared/playback/bloc/playback_bloc.freezed.dart b/boring_to_beautiful/step_05_c/lib/src/shared/playback/bloc/playback_bloc.freezed.dart index 36ad6c4c1e..606767ad1a 100644 --- a/boring_to_beautiful/step_05_c/lib/src/shared/playback/bloc/playback_bloc.freezed.dart +++ b/boring_to_beautiful/step_05_c/lib/src/shared/playback/bloc/playback_bloc.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -42,6 +41,166 @@ $PlaybackEventCopyWith(PlaybackEvent _, $Res Function(PlaybackEvent) __); } +/// Adds pattern-matching-related methods to [PlaybackEvent]. +extension PlaybackEventPatterns on PlaybackEvent { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap({TResult Function( TogglePlayPause value)? togglePlayPause,TResult Function( ChangeSong value)? changeSong,TResult Function( SetVolume value)? setVolume,TResult Function( ToggleMute value)? toggleMute,TResult Function( MoveToInSong value)? moveToInSong,TResult Function( SongProgress value)? songProgress,required TResult orElse(),}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map({required TResult Function( TogglePlayPause value) togglePlayPause,required TResult Function( ChangeSong value) changeSong,required TResult Function( SetVolume value) setVolume,required TResult Function( ToggleMute value) toggleMute,required TResult Function( MoveToInSong value) moveToInSong,required TResult Function( SongProgress value) songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause(_that);case ChangeSong(): +return changeSong(_that);case SetVolume(): +return setVolume(_that);case ToggleMute(): +return toggleMute(_that);case MoveToInSong(): +return moveToInSong(_that);case SongProgress(): +return songProgress(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull({TResult? Function( TogglePlayPause value)? togglePlayPause,TResult? Function( ChangeSong value)? changeSong,TResult? Function( SetVolume value)? setVolume,TResult? Function( ToggleMute value)? toggleMute,TResult? Function( MoveToInSong value)? moveToInSong,TResult? Function( SongProgress value)? songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen({TResult Function()? togglePlayPause,TResult Function( Song song)? changeSong,TResult Function( double value)? setVolume,TResult Function()? toggleMute,TResult Function( double percent)? moveToInSong,TResult Function( Duration duration)? songProgress,required TResult orElse(),}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when({required TResult Function() togglePlayPause,required TResult Function( Song song) changeSong,required TResult Function( double value) setVolume,required TResult Function() toggleMute,required TResult Function( double percent) moveToInSong,required TResult Function( Duration duration) songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause();case ChangeSong(): +return changeSong(_that.song);case SetVolume(): +return setVolume(_that.value);case ToggleMute(): +return toggleMute();case MoveToInSong(): +return moveToInSong(_that.percent);case SongProgress(): +return songProgress(_that.duration);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull({TResult? Function()? togglePlayPause,TResult? Function( Song song)? changeSong,TResult? Function( double value)? setVolume,TResult? Function()? toggleMute,TResult? Function( double percent)? moveToInSong,TResult? Function( Duration duration)? songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return null; + +} +} + +} + /// @nodoc @@ -449,6 +608,136 @@ $SongWithProgressCopyWith<$Res>? get songWithProgress { } +/// Adds pattern-matching-related methods to [PlaybackState]. +extension PlaybackStatePatterns on PlaybackState { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _PlaybackState value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _PlaybackState value) $default,){ +final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _PlaybackState value)? $default,){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress) $default,) {final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return null; + +} +} + +} + /// @nodoc @@ -599,6 +888,136 @@ as Song, } +/// Adds pattern-matching-related methods to [SongWithProgress]. +extension SongWithProgressPatterns on SongWithProgress { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _SongWithProgress value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _SongWithProgress value) $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _SongWithProgress value)? $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( Duration progress, Song song)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( Duration progress, Song song) $default,) {final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that.progress,_that.song);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( Duration progress, Song song)? $default,) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return null; + +} +} + +} + /// @nodoc diff --git a/boring_to_beautiful/step_05_c/lib/src/shared/providers/theme.dart b/boring_to_beautiful/step_05_c/lib/src/shared/providers/theme.dart index a8c3c7c92f..83cc16e5f0 100644 --- a/boring_to_beautiful/step_05_c/lib/src/shared/providers/theme.dart +++ b/boring_to_beautiful/step_05_c/lib/src/shared/providers/theme.dart @@ -121,8 +121,8 @@ class ThemeProvider extends InheritedWidget { ); } - BottomAppBarTheme bottomAppBarTheme(ColorScheme colors) { - return BottomAppBarTheme(color: colors.surface, elevation: 0); + BottomAppBarThemeData bottomAppBarTheme(ColorScheme colors) { + return BottomAppBarThemeData(color: colors.surface, elevation: 0); } BottomNavigationBarThemeData bottomNavigationBarTheme(ColorScheme colors) { diff --git a/boring_to_beautiful/step_05_c/linux/runner/my_application.cc b/boring_to_beautiful/step_05_c/linux/runner/my_application.cc index f93ba9f71c..261e6e34c5 100644 --- a/boring_to_beautiful/step_05_c/linux/runner/my_application.cc +++ b/boring_to_beautiful/step_05_c/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/boring_to_beautiful/step_05_c/macos/Podfile b/boring_to_beautiful/step_05_c/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/boring_to_beautiful/step_05_c/macos/Podfile +++ b/boring_to_beautiful/step_05_c/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_05_c/macos/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_05_c/macos/Runner.xcodeproj/project.pbxproj index 79fced16c3..fcc8ce3204 100644 --- a/boring_to_beautiful/step_05_c/macos/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_05_c/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */; }; + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */; }; + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2BCC07C46EB4E01CE044DBB6 /* 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 = ""; }; + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 3E5DC3FB470EEF77149E71DD /* 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 = ""; }; + 6C8E34CD8A2F49B5A9421409 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 93864140E5DDD8350C71D815 /* 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 = ""; }; + 8862CD109E738F3921EB9C93 /* 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 = ""; }; + 9187C3567AE707002A52BF86 /* 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 = ""; }; - 9B293DEC88BD59786AD94EBD /* 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 = ""; }; - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EEFA0ABEA58A1E38E7AD7041 /* 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 = ""; }; - FDBDA46A6FE6381EE95E5A7A /* 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 = ""; }; + 99B8FC1B45711FC3FE3A40BE /* 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 = ""; }; + A4D814F1F2A769FE4E9E398D /* 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 = ""; }; + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E13C85F2C001812FC4890700 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */, + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */, + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 23EEF9C906B4711904746B7E /* Pods */ = { + isa = PBXGroup; + children = ( + 9187C3567AE707002A52BF86 /* Pods-Runner.debug.xcconfig */, + E13C85F2C001812FC4890700 /* Pods-Runner.release.xcconfig */, + 8862CD109E738F3921EB9C93 /* Pods-Runner.profile.xcconfig */, + A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */, + 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */, + 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6CDFAAD29A585E1E7DFB128C /* Pods */, + 23EEF9C906B4711904746B7E /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 6CDFAAD29A585E1E7DFB128C /* Pods */ = { - isa = PBXGroup; - children = ( - 3E5DC3FB470EEF77149E71DD /* Pods-Runner.debug.xcconfig */, - 2BCC07C46EB4E01CE044DBB6 /* Pods-Runner.release.xcconfig */, - 9B293DEC88BD59786AD94EBD /* Pods-Runner.profile.xcconfig */, - 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */, - FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */, - EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */, - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */, + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */, + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */, + 5A1AE951B3C5AB29ED29FD49 /* [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 = ( - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */, + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 0F169C1C0F5EE8E3D274E72F /* [CP] Embed Pods Frameworks */, + F9BA01A46B725FF4B61D2CF9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F169C1C0F5EE8E3D274E72F /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */ = { + 5A1AE951B3C5AB29ED29FD49 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +383,7 @@ 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; }; - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */ = { + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -422,6 +405,23 @@ 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; }; + F9BA01A46B725FF4B61D2CF9 /* [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 */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/boring_to_beautiful/step_05_c/pubspec.yaml b/boring_to_beautiful/step_05_c/pubspec.yaml index 944deecd72..d0a71b9c7a 100644 --- a/boring_to_beautiful/step_05_c/pubspec.yaml +++ b/boring_to_beautiful/step_05_c/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,22 +13,22 @@ dependencies: collection: ^1.19.1 cupertino_icons: ^1.0.8 desktop_window: ^0.4.2 - dynamic_color: ^1.7.0 + dynamic_color: ^1.8.1 english_words: ^4.0.0 flutter_bloc: ^9.1.1 - freezed_annotation: ^3.0.0 - go_router: ^15.1.3 + freezed_annotation: ^3.1.0 + go_router: ^16.1.0 material_color_utilities: any universal_platform: ^1.1.0 - url_launcher: ^6.3.1 + url_launcher: ^6.3.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^6.0.0 - build_runner: ^2.4.15 - freezed: ^3.0.6 + build_runner: ^2.6.0 + freezed: ^3.2.0 flutter: uses-material-design: true diff --git a/boring_to_beautiful/step_06/.gemini/settings.json b/boring_to_beautiful/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/boring_to_beautiful/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/boring_to_beautiful/step_06/.gitignore b/boring_to_beautiful/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/boring_to_beautiful/step_06/.gitignore +++ b/boring_to_beautiful/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/boring_to_beautiful/step_06/android/build.gradle.kts b/boring_to_beautiful/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/boring_to_beautiful/step_06/android/build.gradle.kts +++ b/boring_to_beautiful/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/boring_to_beautiful/step_06/android/settings.gradle.kts b/boring_to_beautiful/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/boring_to_beautiful/step_06/android/settings.gradle.kts +++ b/boring_to_beautiful/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/boring_to_beautiful/step_06/ios/Flutter/AppFrameworkInfo.plist b/boring_to_beautiful/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/boring_to_beautiful/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/boring_to_beautiful/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/boring_to_beautiful/step_06/ios/Podfile b/boring_to_beautiful/step_06/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/boring_to_beautiful/step_06/ios/Podfile +++ b/boring_to_beautiful/step_06/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_06/ios/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_06/ios/Runner.xcodeproj/project.pbxproj index c30322fdf6..b334cd4bef 100644 --- a/boring_to_beautiful/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BA15459E839D3553B26934 /* Pods_Runner.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 */; }; - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */; }; + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */; }; + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,18 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 06C27BF5D7B993BB5DCB8D21 /* 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 = ""; }; + 0857899EC33720D408B34BA1 /* 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 = ""; }; + 0990B0E745EF9282BBD0B69C /* 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 = ""; }; 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 = ""; }; 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; }; - 3421F167A26D263533D9C0F8 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4ABA081B421BEA588642248C /* 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 = ""; }; + 681AA7ED59E6C2F2D0060307 /* 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 = ""; }; 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 = ""; }; - 8367A59A9CDAA6556FC2822B /* 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 = ""; }; + 84751C0362521082DEF1D687 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,26 +61,26 @@ 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 = ""; }; - 9BB58392A543FF4660B2490F /* 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 = ""; }; - D0BA15459E839D3553B26934 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F7B65A9BC4B475ABEC573986 /* 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 = ""; }; + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3FEDE49105230B1D557A7D6 /* 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 = ""; }; + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D7820135D2EF28621AF06DDD /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 0867A61CE1734AA853C7DCE7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */, + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F9E0A4607079935C37BF168F /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */, + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,20 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 44BD8D06CB822F8C423FCD72 /* Pods */ = { - isa = PBXGroup; - children = ( - 3421F167A26D263533D9C0F8 /* Pods-Runner.debug.xcconfig */, - 8367A59A9CDAA6556FC2822B /* Pods-Runner.release.xcconfig */, - 06C27BF5D7B993BB5DCB8D21 /* Pods-Runner.profile.xcconfig */, - F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */, - 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */, - 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -127,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 44BD8D06CB822F8C423FCD72 /* Pods */, - D054066A4956E2C378EF4A32 /* Frameworks */, + BD4564A80EF0DF22640031F7 /* Pods */, + F1EC60623F1ECA637AD555BF /* Frameworks */, ); sourceTree = ""; }; @@ -156,11 +142,25 @@ path = Runner; sourceTree = ""; }; - D054066A4956E2C378EF4A32 /* Frameworks */ = { + BD4564A80EF0DF22640031F7 /* Pods */ = { isa = PBXGroup; children = ( - D0BA15459E839D3553B26934 /* Pods_Runner.framework */, - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */, + B3FEDE49105230B1D557A7D6 /* Pods-Runner.debug.xcconfig */, + 0990B0E745EF9282BBD0B69C /* Pods-Runner.release.xcconfig */, + 84751C0362521082DEF1D687 /* Pods-Runner.profile.xcconfig */, + 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */, + D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */, + 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F1EC60623F1ECA637AD555BF /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */, + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */, + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - F9E0A4607079935C37BF168F /* Frameworks */, + 0867A61CE1734AA853C7DCE7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */, + 4C98368FD7BC292EAF1D220F /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */, + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,82 +270,82 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */ = { + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */ = { + 4C98368FD7BC292EAF1D220F /* [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-Runner-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; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/boring_to_beautiful/step_06/lib/src/shared/playback/bloc/playback_bloc.freezed.dart b/boring_to_beautiful/step_06/lib/src/shared/playback/bloc/playback_bloc.freezed.dart index 36ad6c4c1e..606767ad1a 100644 --- a/boring_to_beautiful/step_06/lib/src/shared/playback/bloc/playback_bloc.freezed.dart +++ b/boring_to_beautiful/step_06/lib/src/shared/playback/bloc/playback_bloc.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -42,6 +41,166 @@ $PlaybackEventCopyWith(PlaybackEvent _, $Res Function(PlaybackEvent) __); } +/// Adds pattern-matching-related methods to [PlaybackEvent]. +extension PlaybackEventPatterns on PlaybackEvent { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap({TResult Function( TogglePlayPause value)? togglePlayPause,TResult Function( ChangeSong value)? changeSong,TResult Function( SetVolume value)? setVolume,TResult Function( ToggleMute value)? toggleMute,TResult Function( MoveToInSong value)? moveToInSong,TResult Function( SongProgress value)? songProgress,required TResult orElse(),}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map({required TResult Function( TogglePlayPause value) togglePlayPause,required TResult Function( ChangeSong value) changeSong,required TResult Function( SetVolume value) setVolume,required TResult Function( ToggleMute value) toggleMute,required TResult Function( MoveToInSong value) moveToInSong,required TResult Function( SongProgress value) songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause(_that);case ChangeSong(): +return changeSong(_that);case SetVolume(): +return setVolume(_that);case ToggleMute(): +return toggleMute(_that);case MoveToInSong(): +return moveToInSong(_that);case SongProgress(): +return songProgress(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull({TResult? Function( TogglePlayPause value)? togglePlayPause,TResult? Function( ChangeSong value)? changeSong,TResult? Function( SetVolume value)? setVolume,TResult? Function( ToggleMute value)? toggleMute,TResult? Function( MoveToInSong value)? moveToInSong,TResult? Function( SongProgress value)? songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen({TResult Function()? togglePlayPause,TResult Function( Song song)? changeSong,TResult Function( double value)? setVolume,TResult Function()? toggleMute,TResult Function( double percent)? moveToInSong,TResult Function( Duration duration)? songProgress,required TResult orElse(),}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when({required TResult Function() togglePlayPause,required TResult Function( Song song) changeSong,required TResult Function( double value) setVolume,required TResult Function() toggleMute,required TResult Function( double percent) moveToInSong,required TResult Function( Duration duration) songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause();case ChangeSong(): +return changeSong(_that.song);case SetVolume(): +return setVolume(_that.value);case ToggleMute(): +return toggleMute();case MoveToInSong(): +return moveToInSong(_that.percent);case SongProgress(): +return songProgress(_that.duration);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull({TResult? Function()? togglePlayPause,TResult? Function( Song song)? changeSong,TResult? Function( double value)? setVolume,TResult? Function()? toggleMute,TResult? Function( double percent)? moveToInSong,TResult? Function( Duration duration)? songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return null; + +} +} + +} + /// @nodoc @@ -449,6 +608,136 @@ $SongWithProgressCopyWith<$Res>? get songWithProgress { } +/// Adds pattern-matching-related methods to [PlaybackState]. +extension PlaybackStatePatterns on PlaybackState { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _PlaybackState value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _PlaybackState value) $default,){ +final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _PlaybackState value)? $default,){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress) $default,) {final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return null; + +} +} + +} + /// @nodoc @@ -599,6 +888,136 @@ as Song, } +/// Adds pattern-matching-related methods to [SongWithProgress]. +extension SongWithProgressPatterns on SongWithProgress { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _SongWithProgress value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _SongWithProgress value) $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _SongWithProgress value)? $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( Duration progress, Song song)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( Duration progress, Song song) $default,) {final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that.progress,_that.song);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( Duration progress, Song song)? $default,) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return null; + +} +} + +} + /// @nodoc diff --git a/boring_to_beautiful/step_06/lib/src/shared/providers/theme.dart b/boring_to_beautiful/step_06/lib/src/shared/providers/theme.dart index 66480919af..c4d8c58b5e 100644 --- a/boring_to_beautiful/step_06/lib/src/shared/providers/theme.dart +++ b/boring_to_beautiful/step_06/lib/src/shared/providers/theme.dart @@ -121,8 +121,8 @@ class ThemeProvider extends InheritedWidget { ); } - BottomAppBarTheme bottomAppBarTheme(ColorScheme colors) { - return BottomAppBarTheme(color: colors.surface, elevation: 0); + BottomAppBarThemeData bottomAppBarTheme(ColorScheme colors) { + return BottomAppBarThemeData(color: colors.surface, elevation: 0); } BottomNavigationBarThemeData bottomNavigationBarTheme(ColorScheme colors) { diff --git a/boring_to_beautiful/step_06/linux/runner/my_application.cc b/boring_to_beautiful/step_06/linux/runner/my_application.cc index f93ba9f71c..261e6e34c5 100644 --- a/boring_to_beautiful/step_06/linux/runner/my_application.cc +++ b/boring_to_beautiful/step_06/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/boring_to_beautiful/step_06/macos/Podfile b/boring_to_beautiful/step_06/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/boring_to_beautiful/step_06/macos/Podfile +++ b/boring_to_beautiful/step_06/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_06/macos/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_06/macos/Runner.xcodeproj/project.pbxproj index 79fced16c3..fcc8ce3204 100644 --- a/boring_to_beautiful/step_06/macos/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_06/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */; }; + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */; }; + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2BCC07C46EB4E01CE044DBB6 /* 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 = ""; }; + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 3E5DC3FB470EEF77149E71DD /* 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 = ""; }; + 6C8E34CD8A2F49B5A9421409 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 93864140E5DDD8350C71D815 /* 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 = ""; }; + 8862CD109E738F3921EB9C93 /* 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 = ""; }; + 9187C3567AE707002A52BF86 /* 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 = ""; }; - 9B293DEC88BD59786AD94EBD /* 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 = ""; }; - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EEFA0ABEA58A1E38E7AD7041 /* 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 = ""; }; - FDBDA46A6FE6381EE95E5A7A /* 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 = ""; }; + 99B8FC1B45711FC3FE3A40BE /* 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 = ""; }; + A4D814F1F2A769FE4E9E398D /* 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 = ""; }; + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E13C85F2C001812FC4890700 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */, + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */, + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 23EEF9C906B4711904746B7E /* Pods */ = { + isa = PBXGroup; + children = ( + 9187C3567AE707002A52BF86 /* Pods-Runner.debug.xcconfig */, + E13C85F2C001812FC4890700 /* Pods-Runner.release.xcconfig */, + 8862CD109E738F3921EB9C93 /* Pods-Runner.profile.xcconfig */, + A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */, + 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */, + 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6CDFAAD29A585E1E7DFB128C /* Pods */, + 23EEF9C906B4711904746B7E /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 6CDFAAD29A585E1E7DFB128C /* Pods */ = { - isa = PBXGroup; - children = ( - 3E5DC3FB470EEF77149E71DD /* Pods-Runner.debug.xcconfig */, - 2BCC07C46EB4E01CE044DBB6 /* Pods-Runner.release.xcconfig */, - 9B293DEC88BD59786AD94EBD /* Pods-Runner.profile.xcconfig */, - 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */, - FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */, - EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */, - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */, + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */, + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */, + 5A1AE951B3C5AB29ED29FD49 /* [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 = ( - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */, + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 0F169C1C0F5EE8E3D274E72F /* [CP] Embed Pods Frameworks */, + F9BA01A46B725FF4B61D2CF9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F169C1C0F5EE8E3D274E72F /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */ = { + 5A1AE951B3C5AB29ED29FD49 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +383,7 @@ 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; }; - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */ = { + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -422,6 +405,23 @@ 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; }; + F9BA01A46B725FF4B61D2CF9 /* [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 */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/boring_to_beautiful/step_06/pubspec.yaml b/boring_to_beautiful/step_06/pubspec.yaml index 944deecd72..d0a71b9c7a 100644 --- a/boring_to_beautiful/step_06/pubspec.yaml +++ b/boring_to_beautiful/step_06/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,22 +13,22 @@ dependencies: collection: ^1.19.1 cupertino_icons: ^1.0.8 desktop_window: ^0.4.2 - dynamic_color: ^1.7.0 + dynamic_color: ^1.8.1 english_words: ^4.0.0 flutter_bloc: ^9.1.1 - freezed_annotation: ^3.0.0 - go_router: ^15.1.3 + freezed_annotation: ^3.1.0 + go_router: ^16.1.0 material_color_utilities: any universal_platform: ^1.1.0 - url_launcher: ^6.3.1 + url_launcher: ^6.3.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^6.0.0 - build_runner: ^2.4.15 - freezed: ^3.0.6 + build_runner: ^2.6.0 + freezed: ^3.2.0 flutter: uses-material-design: true diff --git a/boring_to_beautiful/step_07/.gemini/settings.json b/boring_to_beautiful/step_07/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/boring_to_beautiful/step_07/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/boring_to_beautiful/step_07/.gitignore b/boring_to_beautiful/step_07/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/boring_to_beautiful/step_07/.gitignore +++ b/boring_to_beautiful/step_07/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/boring_to_beautiful/step_07/android/build.gradle.kts b/boring_to_beautiful/step_07/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/boring_to_beautiful/step_07/android/build.gradle.kts +++ b/boring_to_beautiful/step_07/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/boring_to_beautiful/step_07/android/settings.gradle.kts b/boring_to_beautiful/step_07/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/boring_to_beautiful/step_07/android/settings.gradle.kts +++ b/boring_to_beautiful/step_07/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/boring_to_beautiful/step_07/ios/Flutter/AppFrameworkInfo.plist b/boring_to_beautiful/step_07/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/boring_to_beautiful/step_07/ios/Flutter/AppFrameworkInfo.plist +++ b/boring_to_beautiful/step_07/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/boring_to_beautiful/step_07/ios/Podfile b/boring_to_beautiful/step_07/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/boring_to_beautiful/step_07/ios/Podfile +++ b/boring_to_beautiful/step_07/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_07/ios/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_07/ios/Runner.xcodeproj/project.pbxproj index c30322fdf6..b334cd4bef 100644 --- a/boring_to_beautiful/step_07/ios/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_07/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BA15459E839D3553B26934 /* Pods_Runner.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 */; }; - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */; }; + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */; }; + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,18 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 06C27BF5D7B993BB5DCB8D21 /* 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 = ""; }; + 0857899EC33720D408B34BA1 /* 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 = ""; }; + 0990B0E745EF9282BBD0B69C /* 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 = ""; }; 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 = ""; }; 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; }; - 3421F167A26D263533D9C0F8 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4ABA081B421BEA588642248C /* 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 = ""; }; + 681AA7ED59E6C2F2D0060307 /* 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 = ""; }; 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 = ""; }; - 8367A59A9CDAA6556FC2822B /* 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 = ""; }; + 84751C0362521082DEF1D687 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,26 +61,26 @@ 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 = ""; }; - 9BB58392A543FF4660B2490F /* 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 = ""; }; - D0BA15459E839D3553B26934 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F7B65A9BC4B475ABEC573986 /* 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 = ""; }; + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B3FEDE49105230B1D557A7D6 /* 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 = ""; }; + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D7820135D2EF28621AF06DDD /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 0867A61CE1734AA853C7DCE7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 31AC9F1F861163CE474DC0DF /* Pods_Runner.framework in Frameworks */, + AF6875255D39E88C2E492169 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F9E0A4607079935C37BF168F /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C4EE9B5B592653F634344186 /* Pods_RunnerTests.framework in Frameworks */, + A38160A749AA14E0B9148A72 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,20 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 44BD8D06CB822F8C423FCD72 /* Pods */ = { - isa = PBXGroup; - children = ( - 3421F167A26D263533D9C0F8 /* Pods-Runner.debug.xcconfig */, - 8367A59A9CDAA6556FC2822B /* Pods-Runner.release.xcconfig */, - 06C27BF5D7B993BB5DCB8D21 /* Pods-Runner.profile.xcconfig */, - F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */, - 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */, - 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -127,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 44BD8D06CB822F8C423FCD72 /* Pods */, - D054066A4956E2C378EF4A32 /* Frameworks */, + BD4564A80EF0DF22640031F7 /* Pods */, + F1EC60623F1ECA637AD555BF /* Frameworks */, ); sourceTree = ""; }; @@ -156,11 +142,25 @@ path = Runner; sourceTree = ""; }; - D054066A4956E2C378EF4A32 /* Frameworks */ = { + BD4564A80EF0DF22640031F7 /* Pods */ = { isa = PBXGroup; children = ( - D0BA15459E839D3553B26934 /* Pods_Runner.framework */, - E2086F275166C6948CE70FC0 /* Pods_RunnerTests.framework */, + B3FEDE49105230B1D557A7D6 /* Pods-Runner.debug.xcconfig */, + 0990B0E745EF9282BBD0B69C /* Pods-Runner.release.xcconfig */, + 84751C0362521082DEF1D687 /* Pods-Runner.profile.xcconfig */, + 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */, + D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */, + 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + F1EC60623F1ECA637AD555BF /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9BE9036459FF2BC596142E74 /* Pods_Runner.framework */, + D2EEFDCFC33D2B8F12FE9F81 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */, + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - F9E0A4607079935C37BF168F /* Frameworks */, + 0867A61CE1734AA853C7DCE7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */, + 4C98368FD7BC292EAF1D220F /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */, + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,82 +270,82 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 001D1E85333DF9609D34BC08 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 1975AD24A5DD7DE3F4DE1B61 /* [CP] Check Pods Manifest.lock */ = { + 3EF75158E612F15BECDE27B4 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 26E7569DC25C33E17720D218 /* [CP] Embed Pods Frameworks */ = { + 4C98368FD7BC292EAF1D220F /* [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-Runner-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; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 599F8822295FDA2FF482426C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F7B65A9BC4B475ABEC573986 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 681AA7ED59E6C2F2D0060307 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4ABA081B421BEA588642248C /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D7820135D2EF28621AF06DDD /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9BB58392A543FF4660B2490F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 0857899EC33720D408B34BA1 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/boring_to_beautiful/step_07/lib/src/shared/playback/bloc/playback_bloc.freezed.dart b/boring_to_beautiful/step_07/lib/src/shared/playback/bloc/playback_bloc.freezed.dart index 36ad6c4c1e..606767ad1a 100644 --- a/boring_to_beautiful/step_07/lib/src/shared/playback/bloc/playback_bloc.freezed.dart +++ b/boring_to_beautiful/step_07/lib/src/shared/playback/bloc/playback_bloc.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -42,6 +41,166 @@ $PlaybackEventCopyWith(PlaybackEvent _, $Res Function(PlaybackEvent) __); } +/// Adds pattern-matching-related methods to [PlaybackEvent]. +extension PlaybackEventPatterns on PlaybackEvent { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap({TResult Function( TogglePlayPause value)? togglePlayPause,TResult Function( ChangeSong value)? changeSong,TResult Function( SetVolume value)? setVolume,TResult Function( ToggleMute value)? toggleMute,TResult Function( MoveToInSong value)? moveToInSong,TResult Function( SongProgress value)? songProgress,required TResult orElse(),}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map({required TResult Function( TogglePlayPause value) togglePlayPause,required TResult Function( ChangeSong value) changeSong,required TResult Function( SetVolume value) setVolume,required TResult Function( ToggleMute value) toggleMute,required TResult Function( MoveToInSong value) moveToInSong,required TResult Function( SongProgress value) songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause(_that);case ChangeSong(): +return changeSong(_that);case SetVolume(): +return setVolume(_that);case ToggleMute(): +return toggleMute(_that);case MoveToInSong(): +return moveToInSong(_that);case SongProgress(): +return songProgress(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull({TResult? Function( TogglePlayPause value)? togglePlayPause,TResult? Function( ChangeSong value)? changeSong,TResult? Function( SetVolume value)? setVolume,TResult? Function( ToggleMute value)? toggleMute,TResult? Function( MoveToInSong value)? moveToInSong,TResult? Function( SongProgress value)? songProgress,}){ +final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause(_that);case ChangeSong() when changeSong != null: +return changeSong(_that);case SetVolume() when setVolume != null: +return setVolume(_that);case ToggleMute() when toggleMute != null: +return toggleMute(_that);case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that);case SongProgress() when songProgress != null: +return songProgress(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen({TResult Function()? togglePlayPause,TResult Function( Song song)? changeSong,TResult Function( double value)? setVolume,TResult Function()? toggleMute,TResult Function( double percent)? moveToInSong,TResult Function( Duration duration)? songProgress,required TResult orElse(),}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when({required TResult Function() togglePlayPause,required TResult Function( Song song) changeSong,required TResult Function( double value) setVolume,required TResult Function() toggleMute,required TResult Function( double percent) moveToInSong,required TResult Function( Duration duration) songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause(): +return togglePlayPause();case ChangeSong(): +return changeSong(_that.song);case SetVolume(): +return setVolume(_that.value);case ToggleMute(): +return toggleMute();case MoveToInSong(): +return moveToInSong(_that.percent);case SongProgress(): +return songProgress(_that.duration);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull({TResult? Function()? togglePlayPause,TResult? Function( Song song)? changeSong,TResult? Function( double value)? setVolume,TResult? Function()? toggleMute,TResult? Function( double percent)? moveToInSong,TResult? Function( Duration duration)? songProgress,}) {final _that = this; +switch (_that) { +case TogglePlayPause() when togglePlayPause != null: +return togglePlayPause();case ChangeSong() when changeSong != null: +return changeSong(_that.song);case SetVolume() when setVolume != null: +return setVolume(_that.value);case ToggleMute() when toggleMute != null: +return toggleMute();case MoveToInSong() when moveToInSong != null: +return moveToInSong(_that.percent);case SongProgress() when songProgress != null: +return songProgress(_that.duration);case _: + return null; + +} +} + +} + /// @nodoc @@ -449,6 +608,136 @@ $SongWithProgressCopyWith<$Res>? get songWithProgress { } +/// Adds pattern-matching-related methods to [PlaybackState]. +extension PlaybackStatePatterns on PlaybackState { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _PlaybackState value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _PlaybackState value) $default,){ +final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _PlaybackState value)? $default,){ +final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress) $default,) {final _that = this; +switch (_that) { +case _PlaybackState(): +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( double volume, double? previousVolume, bool isMuted, bool isPlaying, SongWithProgress? songWithProgress)? $default,) {final _that = this; +switch (_that) { +case _PlaybackState() when $default != null: +return $default(_that.volume,_that.previousVolume,_that.isMuted,_that.isPlaying,_that.songWithProgress);case _: + return null; + +} +} + +} + /// @nodoc @@ -599,6 +888,136 @@ as Song, } +/// Adds pattern-matching-related methods to [SongWithProgress]. +extension SongWithProgressPatterns on SongWithProgress { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap(TResult Function( _SongWithProgress value)? $default,{required TResult orElse(),}){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map(TResult Function( _SongWithProgress value) $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull(TResult? Function( _SongWithProgress value)? $default,){ +final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen(TResult Function( Duration progress, Song song)? $default,{required TResult orElse(),}) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when(TResult Function( Duration progress, Song song) $default,) {final _that = this; +switch (_that) { +case _SongWithProgress(): +return $default(_that.progress,_that.song);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull(TResult? Function( Duration progress, Song song)? $default,) {final _that = this; +switch (_that) { +case _SongWithProgress() when $default != null: +return $default(_that.progress,_that.song);case _: + return null; + +} +} + +} + /// @nodoc diff --git a/boring_to_beautiful/step_07/lib/src/shared/providers/theme.dart b/boring_to_beautiful/step_07/lib/src/shared/providers/theme.dart index 66480919af..c4d8c58b5e 100644 --- a/boring_to_beautiful/step_07/lib/src/shared/providers/theme.dart +++ b/boring_to_beautiful/step_07/lib/src/shared/providers/theme.dart @@ -121,8 +121,8 @@ class ThemeProvider extends InheritedWidget { ); } - BottomAppBarTheme bottomAppBarTheme(ColorScheme colors) { - return BottomAppBarTheme(color: colors.surface, elevation: 0); + BottomAppBarThemeData bottomAppBarTheme(ColorScheme colors) { + return BottomAppBarThemeData(color: colors.surface, elevation: 0); } BottomNavigationBarThemeData bottomNavigationBarTheme(ColorScheme colors) { diff --git a/boring_to_beautiful/step_07/linux/runner/my_application.cc b/boring_to_beautiful/step_07/linux/runner/my_application.cc index f93ba9f71c..261e6e34c5 100644 --- a/boring_to_beautiful/step_07/linux/runner/my_application.cc +++ b/boring_to_beautiful/step_07/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/boring_to_beautiful/step_07/macos/Podfile b/boring_to_beautiful/step_07/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/boring_to_beautiful/step_07/macos/Podfile +++ b/boring_to_beautiful/step_07/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/boring_to_beautiful/step_07/macos/Runner.xcodeproj/project.pbxproj b/boring_to_beautiful/step_07/macos/Runner.xcodeproj/project.pbxproj index 79fced16c3..fcc8ce3204 100644 --- a/boring_to_beautiful/step_07/macos/Runner.xcodeproj/project.pbxproj +++ b/boring_to_beautiful/step_07/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */; }; + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */; }; + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 2BCC07C46EB4E01CE044DBB6 /* 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 = ""; }; + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 3E5DC3FB470EEF77149E71DD /* 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 = ""; }; + 6C8E34CD8A2F49B5A9421409 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 93864140E5DDD8350C71D815 /* 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 = ""; }; + 8862CD109E738F3921EB9C93 /* 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 = ""; }; + 9187C3567AE707002A52BF86 /* 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 = ""; }; - 9B293DEC88BD59786AD94EBD /* 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 = ""; }; - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EEFA0ABEA58A1E38E7AD7041 /* 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 = ""; }; - FDBDA46A6FE6381EE95E5A7A /* 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 = ""; }; + 99B8FC1B45711FC3FE3A40BE /* 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 = ""; }; + A4D814F1F2A769FE4E9E398D /* 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 = ""; }; + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E13C85F2C001812FC4890700 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 120C1A7E7D320A31C1211A4A /* Pods_RunnerTests.framework in Frameworks */, + DA298C1C6B6F5DD9B53F44EC /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,13 +103,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E344FE031826102CEDE46647 /* Pods_Runner.framework in Frameworks */, + 43660EB63963F7BB68CBF033 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 23EEF9C906B4711904746B7E /* Pods */ = { + isa = PBXGroup; + children = ( + 9187C3567AE707002A52BF86 /* Pods-Runner.debug.xcconfig */, + E13C85F2C001812FC4890700 /* Pods-Runner.release.xcconfig */, + 8862CD109E738F3921EB9C93 /* Pods-Runner.profile.xcconfig */, + A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */, + 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */, + 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -137,7 +151,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6CDFAAD29A585E1E7DFB128C /* Pods */, + 23EEF9C906B4711904746B7E /* Pods */, ); sourceTree = ""; }; @@ -185,25 +199,11 @@ path = Runner; sourceTree = ""; }; - 6CDFAAD29A585E1E7DFB128C /* Pods */ = { - isa = PBXGroup; - children = ( - 3E5DC3FB470EEF77149E71DD /* Pods-Runner.debug.xcconfig */, - 2BCC07C46EB4E01CE044DBB6 /* Pods-Runner.release.xcconfig */, - 9B293DEC88BD59786AD94EBD /* Pods-Runner.profile.xcconfig */, - 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */, - FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */, - EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - E265E576032EFCCB6AB10F89 /* Pods_Runner.framework */, - AA208D76E7C609C5BAC5DE1C /* Pods_RunnerTests.framework */, + 1F8099CCD28E8FE0E07D5918 /* Pods_Runner.framework */, + AB55AB6059713BAA36A1D541 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */, + 5A1AE951B3C5AB29ED29FD49 /* [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 = ( - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */, + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 0F169C1C0F5EE8E3D274E72F /* [CP] Embed Pods Frameworks */, + F9BA01A46B725FF4B61D2CF9 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0F169C1C0F5EE8E3D274E72F /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 36CFF57A21336FA90DED8C50 /* [CP] Check Pods Manifest.lock */ = { + 5A1AE951B3C5AB29ED29FD49 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +383,7 @@ 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; }; - 41EDDA96C09EE65F003D69E0 /* [CP] Check Pods Manifest.lock */ = { + C5AAA14944BDD6F9A6D6DEE9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -422,6 +405,23 @@ 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; }; + F9BA01A46B725FF4B61D2CF9 /* [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 */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 93864140E5DDD8350C71D815 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = A4D814F1F2A769FE4E9E398D /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FDBDA46A6FE6381EE95E5A7A /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 99B8FC1B45711FC3FE3A40BE /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EEFA0ABEA58A1E38E7AD7041 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 6C8E34CD8A2F49B5A9421409 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/boring_to_beautiful/step_07/pubspec.yaml b/boring_to_beautiful/step_07/pubspec.yaml index 944deecd72..d0a71b9c7a 100644 --- a/boring_to_beautiful/step_07/pubspec.yaml +++ b/boring_to_beautiful/step_07/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,22 +13,22 @@ dependencies: collection: ^1.19.1 cupertino_icons: ^1.0.8 desktop_window: ^0.4.2 - dynamic_color: ^1.7.0 + dynamic_color: ^1.8.1 english_words: ^4.0.0 flutter_bloc: ^9.1.1 - freezed_annotation: ^3.0.0 - go_router: ^15.1.3 + freezed_annotation: ^3.1.0 + go_router: ^16.1.0 material_color_utilities: any universal_platform: ^1.1.0 - url_launcher: ^6.3.1 + url_launcher: ^6.3.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^6.0.0 - build_runner: ^2.4.15 - freezed: ^3.0.6 + build_runner: ^2.6.0 + freezed: ^3.2.0 flutter: uses-material-design: true diff --git a/brick_breaker/codelab_rebuild.yaml b/brick_breaker/codelab_rebuild.yaml index 89bc41d233..7367700fee 100644 --- a/brick_breaker/codelab_rebuild.yaml +++ b/brick_breaker/codelab_rebuild.yaml @@ -32,6 +32,21 @@ steps: flutter: pub upgrade --major-versions - name: Remove README rm: brick_breaker/README.md + - name: Add .gemini directory + mkdir: brick_breaker/.gemini + - name: Add .gemini/settings.json + path: brick_breaker/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add .vscode directory mkdir: brick_breaker/.vscode - name: Add .vscode/launch.json diff --git a/brick_breaker/step_03/.gemini/settings.json b/brick_breaker/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/brick_breaker/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/brick_breaker/step_03/.gitignore b/brick_breaker/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/brick_breaker/step_03/.gitignore +++ b/brick_breaker/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/brick_breaker/step_03/android/build.gradle.kts b/brick_breaker/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/brick_breaker/step_03/android/build.gradle.kts +++ b/brick_breaker/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/brick_breaker/step_03/android/settings.gradle.kts b/brick_breaker/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/brick_breaker/step_03/android/settings.gradle.kts +++ b/brick_breaker/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/brick_breaker/step_03/ios/Flutter/AppFrameworkInfo.plist b/brick_breaker/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/brick_breaker/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/brick_breaker/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/brick_breaker/step_03/ios/Podfile b/brick_breaker/step_03/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/brick_breaker/step_03/ios/Podfile +++ b/brick_breaker/step_03/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_03/ios/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_03/ios/Runner.xcodeproj/project.pbxproj index 033825022f..69d753638c 100644 --- a/brick_breaker/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -8,10 +8,10 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */; }; + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */; }; 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 */; }; @@ -42,19 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 141FE4C40182FF36EE29CD23 /* 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 = ""; }; + 0BF927519341BA140E8D4FC1 /* 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 = ""; }; 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 = ""; }; + 1518F803974EB3ED39B835D3 /* 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 = ""; }; + 255A95C79B860CD5F4536BA6 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4F15B19D12D73C3B9F4A6B32 /* 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 = ""; }; - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6F61D49181CF8904BFCCED86 /* 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 = ""; }; - 7A440CADBEF805609F4454D1 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -63,16 +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 = ""; }; - B5A49D7B20ADAEF3B6ABFC8F /* 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 = ""; }; - DCB06CE959C9841A47732106 /* 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 = ""; }; + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CCD3A217F05F5C56806A73AC /* 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 = ""; }; + D928C98A8230291966F7BC16 /* 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 = ""; }; + F9A8122BE8AA9DC2D5E56BA9 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6B50924548E877C1C2CA3129 /* Frameworks */ = { + 82BA311FCD95792DFA08B6C3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */, + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */, + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,27 +95,27 @@ path = RunnerTests; sourceTree = ""; }; - 7C1EC5112CFC3D99A39CA23A /* Pods */ = { + 59F85D4EB504118C5BAA6A6B /* Frameworks */ = { isa = PBXGroup; children = ( - 4F15B19D12D73C3B9F4A6B32 /* Pods-Runner.debug.xcconfig */, - 7A440CADBEF805609F4454D1 /* Pods-Runner.release.xcconfig */, - DCB06CE959C9841A47732106 /* Pods-Runner.profile.xcconfig */, - B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */, - 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */, - 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */, + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */, + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - 8B3639529E9D08CC37DFB8DD /* Frameworks */ = { + 759A3A2C6978D64F2011670C /* Pods */ = { isa = PBXGroup; children = ( - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */, - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */, + F9A8122BE8AA9DC2D5E56BA9 /* Pods-Runner.debug.xcconfig */, + 1518F803974EB3ED39B835D3 /* Pods-Runner.release.xcconfig */, + CCD3A217F05F5C56806A73AC /* Pods-Runner.profile.xcconfig */, + 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */, + D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */, + 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 7C1EC5112CFC3D99A39CA23A /* Pods */, - 8B3639529E9D08CC37DFB8DD /* Frameworks */, + 759A3A2C6978D64F2011670C /* Pods */, + 59F85D4EB504118C5BAA6A6B /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */, + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6B50924548E877C1C2CA3129 /* Frameworks */, + 82BA311FCD95792DFA08B6C3 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */, + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */, + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,23 +270,24 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "Thin Binary"; - outputPaths = ( + 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 = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; }; - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */ = { + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,22 +309,21 @@ 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; }; - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + name = "Thin Binary"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -340,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */ = { + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/brick_breaker/step_03/linux/runner/my_application.cc b/brick_breaker/step_03/linux/runner/my_application.cc index f80944a7ba..bf7a65c9a9 100644 --- a/brick_breaker/step_03/linux/runner/my_application.cc +++ b/brick_breaker/step_03/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/brick_breaker/step_03/macos/Podfile b/brick_breaker/step_03/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/brick_breaker/step_03/macos/Podfile +++ b/brick_breaker/step_03/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_03/macos/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_03/macos/Runner.xcodeproj/project.pbxproj index 8125c52921..e461468bc1 100644 --- a/brick_breaker/step_03/macos/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/step_03/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 */; }; - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */; }; - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */; }; + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */; }; + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 03CA769D4C09C20727014EF4 /* 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 = ""; }; - 2E5A5AF0CEECEED6666C82FC /* 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 = ""; }; + 1233E11C4F78D78EDAAAA998 /* 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 = ""; }; + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +80,14 @@ 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 = ""; }; - 3EA6FDB56494E74525FF321B /* 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 = ""; }; + 443BE22F5C36388ABBCFBA3B /* 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 = ""; }; + 50A39124F38EF042B8C57C63 /* 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 = ""; }; + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 81A0A68A1228CB31578B9F7F /* 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 = ""; }; + 7C74B16BF30C9E69BD7EDDA8 /* 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 = ""; }; + 7E64A65EB5BCFFC2C332C27F /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDD079F6DE7514166DBB62C7 /* 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 = ""; }; - ED83396FD67C65F6DEEEC4D9 /* 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 = ""; }; - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A7F35B106658EB60AA1667BB /* 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 = ( - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */, + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,27 +103,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */, + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 2021AEA24B34B2CF7A8252D3 /* Pods */ = { - isa = PBXGroup; - children = ( - 03CA769D4C09C20727014EF4 /* Pods-Runner.debug.xcconfig */, - ED83396FD67C65F6DEEEC4D9 /* Pods-Runner.release.xcconfig */, - DDD079F6DE7514166DBB62C7 /* Pods-Runner.profile.xcconfig */, - 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */, - 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */, - 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -151,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 2021AEA24B34B2CF7A8252D3 /* Pods */, + 68879ACEB493EF5132FBEF0C /* Pods */, ); sourceTree = ""; }; @@ -199,11 +185,25 @@ path = Runner; sourceTree = ""; }; + 68879ACEB493EF5132FBEF0C /* Pods */ = { + isa = PBXGroup; + children = ( + 7C74B16BF30C9E69BD7EDDA8 /* Pods-Runner.debug.xcconfig */, + 443BE22F5C36388ABBCFBA3B /* Pods-Runner.release.xcconfig */, + 1233E11C4F78D78EDAAAA998 /* Pods-Runner.profile.xcconfig */, + 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */, + 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */, + A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */, - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */, + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */, + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */, + 92973125A2FBEDC3724C4571 /* [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 = ( - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */, + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 134A37CC8C11D38F57DAF0A2 /* [CP] Embed Pods Frameworks */, + 8592AE85CD1B4FBC251B35C0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 134A37CC8C11D38F57DAF0A2 /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,24 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */ = { + 8592AE85CD1B4FBC251B35C0 /* [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; + }; + 92973125A2FBEDC3724C4571 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */ = { + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/brick_breaker/step_03/pubspec.yaml b/brick_breaker/step_03/pubspec.yaml index ba7a067d52..e9d8d71927 100644 --- a/brick_breaker/step_03/pubspec.yaml +++ b/brick_breaker/step_03/pubspec.yaml @@ -4,19 +4,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flame: ^1.28.1 + flame: ^1.30.1 flutter_animate: ^4.5.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/brick_breaker/step_04/.gemini/settings.json b/brick_breaker/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/brick_breaker/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/brick_breaker/step_04/.gitignore b/brick_breaker/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/brick_breaker/step_04/.gitignore +++ b/brick_breaker/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/brick_breaker/step_04/android/build.gradle.kts b/brick_breaker/step_04/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/brick_breaker/step_04/android/build.gradle.kts +++ b/brick_breaker/step_04/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/brick_breaker/step_04/android/settings.gradle.kts b/brick_breaker/step_04/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/brick_breaker/step_04/android/settings.gradle.kts +++ b/brick_breaker/step_04/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/brick_breaker/step_04/ios/Flutter/AppFrameworkInfo.plist b/brick_breaker/step_04/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/brick_breaker/step_04/ios/Flutter/AppFrameworkInfo.plist +++ b/brick_breaker/step_04/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/brick_breaker/step_04/ios/Podfile b/brick_breaker/step_04/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/brick_breaker/step_04/ios/Podfile +++ b/brick_breaker/step_04/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_04/ios/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_04/ios/Runner.xcodeproj/project.pbxproj index 033825022f..69d753638c 100644 --- a/brick_breaker/step_04/ios/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/step_04/ios/Runner.xcodeproj/project.pbxproj @@ -8,10 +8,10 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */; }; + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */; }; 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 */; }; @@ -42,19 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 141FE4C40182FF36EE29CD23 /* 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 = ""; }; + 0BF927519341BA140E8D4FC1 /* 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 = ""; }; 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 = ""; }; + 1518F803974EB3ED39B835D3 /* 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 = ""; }; + 255A95C79B860CD5F4536BA6 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4F15B19D12D73C3B9F4A6B32 /* 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 = ""; }; - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6F61D49181CF8904BFCCED86 /* 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 = ""; }; - 7A440CADBEF805609F4454D1 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -63,16 +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 = ""; }; - B5A49D7B20ADAEF3B6ABFC8F /* 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 = ""; }; - DCB06CE959C9841A47732106 /* 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 = ""; }; + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CCD3A217F05F5C56806A73AC /* 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 = ""; }; + D928C98A8230291966F7BC16 /* 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 = ""; }; + F9A8122BE8AA9DC2D5E56BA9 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6B50924548E877C1C2CA3129 /* Frameworks */ = { + 82BA311FCD95792DFA08B6C3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */, + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */, + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,27 +95,27 @@ path = RunnerTests; sourceTree = ""; }; - 7C1EC5112CFC3D99A39CA23A /* Pods */ = { + 59F85D4EB504118C5BAA6A6B /* Frameworks */ = { isa = PBXGroup; children = ( - 4F15B19D12D73C3B9F4A6B32 /* Pods-Runner.debug.xcconfig */, - 7A440CADBEF805609F4454D1 /* Pods-Runner.release.xcconfig */, - DCB06CE959C9841A47732106 /* Pods-Runner.profile.xcconfig */, - B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */, - 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */, - 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */, + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */, + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - 8B3639529E9D08CC37DFB8DD /* Frameworks */ = { + 759A3A2C6978D64F2011670C /* Pods */ = { isa = PBXGroup; children = ( - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */, - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */, + F9A8122BE8AA9DC2D5E56BA9 /* Pods-Runner.debug.xcconfig */, + 1518F803974EB3ED39B835D3 /* Pods-Runner.release.xcconfig */, + CCD3A217F05F5C56806A73AC /* Pods-Runner.profile.xcconfig */, + 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */, + D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */, + 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 7C1EC5112CFC3D99A39CA23A /* Pods */, - 8B3639529E9D08CC37DFB8DD /* Frameworks */, + 759A3A2C6978D64F2011670C /* Pods */, + 59F85D4EB504118C5BAA6A6B /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */, + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6B50924548E877C1C2CA3129 /* Frameworks */, + 82BA311FCD95792DFA08B6C3 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */, + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */, + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,23 +270,24 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "Thin Binary"; - outputPaths = ( + 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 = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; }; - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */ = { + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,22 +309,21 @@ 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; }; - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + name = "Thin Binary"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -340,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */ = { + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/brick_breaker/step_04/linux/runner/my_application.cc b/brick_breaker/step_04/linux/runner/my_application.cc index f80944a7ba..bf7a65c9a9 100644 --- a/brick_breaker/step_04/linux/runner/my_application.cc +++ b/brick_breaker/step_04/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/brick_breaker/step_04/macos/Podfile b/brick_breaker/step_04/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/brick_breaker/step_04/macos/Podfile +++ b/brick_breaker/step_04/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_04/macos/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_04/macos/Runner.xcodeproj/project.pbxproj index 8125c52921..e461468bc1 100644 --- a/brick_breaker/step_04/macos/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/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 */; }; - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */; }; - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */; }; + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */; }; + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 03CA769D4C09C20727014EF4 /* 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 = ""; }; - 2E5A5AF0CEECEED6666C82FC /* 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 = ""; }; + 1233E11C4F78D78EDAAAA998 /* 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 = ""; }; + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +80,14 @@ 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 = ""; }; - 3EA6FDB56494E74525FF321B /* 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 = ""; }; + 443BE22F5C36388ABBCFBA3B /* 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 = ""; }; + 50A39124F38EF042B8C57C63 /* 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 = ""; }; + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 81A0A68A1228CB31578B9F7F /* 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 = ""; }; + 7C74B16BF30C9E69BD7EDDA8 /* 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 = ""; }; + 7E64A65EB5BCFFC2C332C27F /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDD079F6DE7514166DBB62C7 /* 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 = ""; }; - ED83396FD67C65F6DEEEC4D9 /* 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 = ""; }; - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A7F35B106658EB60AA1667BB /* 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 = ( - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */, + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,27 +103,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */, + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 2021AEA24B34B2CF7A8252D3 /* Pods */ = { - isa = PBXGroup; - children = ( - 03CA769D4C09C20727014EF4 /* Pods-Runner.debug.xcconfig */, - ED83396FD67C65F6DEEEC4D9 /* Pods-Runner.release.xcconfig */, - DDD079F6DE7514166DBB62C7 /* Pods-Runner.profile.xcconfig */, - 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */, - 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */, - 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -151,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 2021AEA24B34B2CF7A8252D3 /* Pods */, + 68879ACEB493EF5132FBEF0C /* Pods */, ); sourceTree = ""; }; @@ -199,11 +185,25 @@ path = Runner; sourceTree = ""; }; + 68879ACEB493EF5132FBEF0C /* Pods */ = { + isa = PBXGroup; + children = ( + 7C74B16BF30C9E69BD7EDDA8 /* Pods-Runner.debug.xcconfig */, + 443BE22F5C36388ABBCFBA3B /* Pods-Runner.release.xcconfig */, + 1233E11C4F78D78EDAAAA998 /* Pods-Runner.profile.xcconfig */, + 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */, + 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */, + A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */, - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */, + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */, + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */, + 92973125A2FBEDC3724C4571 /* [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 = ( - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */, + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 134A37CC8C11D38F57DAF0A2 /* [CP] Embed Pods Frameworks */, + 8592AE85CD1B4FBC251B35C0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 134A37CC8C11D38F57DAF0A2 /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,24 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */ = { + 8592AE85CD1B4FBC251B35C0 /* [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; + }; + 92973125A2FBEDC3724C4571 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */ = { + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/brick_breaker/step_04/pubspec.yaml b/brick_breaker/step_04/pubspec.yaml index ba7a067d52..e9d8d71927 100644 --- a/brick_breaker/step_04/pubspec.yaml +++ b/brick_breaker/step_04/pubspec.yaml @@ -4,19 +4,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flame: ^1.28.1 + flame: ^1.30.1 flutter_animate: ^4.5.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/brick_breaker/step_05/.gemini/settings.json b/brick_breaker/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/brick_breaker/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/brick_breaker/step_05/.gitignore b/brick_breaker/step_05/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/brick_breaker/step_05/.gitignore +++ b/brick_breaker/step_05/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/brick_breaker/step_05/android/build.gradle.kts b/brick_breaker/step_05/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/brick_breaker/step_05/android/build.gradle.kts +++ b/brick_breaker/step_05/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/brick_breaker/step_05/android/settings.gradle.kts b/brick_breaker/step_05/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/brick_breaker/step_05/android/settings.gradle.kts +++ b/brick_breaker/step_05/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/brick_breaker/step_05/ios/Flutter/AppFrameworkInfo.plist b/brick_breaker/step_05/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/brick_breaker/step_05/ios/Flutter/AppFrameworkInfo.plist +++ b/brick_breaker/step_05/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/brick_breaker/step_05/ios/Podfile b/brick_breaker/step_05/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/brick_breaker/step_05/ios/Podfile +++ b/brick_breaker/step_05/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_05/ios/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_05/ios/Runner.xcodeproj/project.pbxproj index 033825022f..69d753638c 100644 --- a/brick_breaker/step_05/ios/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/step_05/ios/Runner.xcodeproj/project.pbxproj @@ -8,10 +8,10 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */; }; + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */; }; 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 */; }; @@ -42,19 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 141FE4C40182FF36EE29CD23 /* 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 = ""; }; + 0BF927519341BA140E8D4FC1 /* 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 = ""; }; 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 = ""; }; + 1518F803974EB3ED39B835D3 /* 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 = ""; }; + 255A95C79B860CD5F4536BA6 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4F15B19D12D73C3B9F4A6B32 /* 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 = ""; }; - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6F61D49181CF8904BFCCED86 /* 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 = ""; }; - 7A440CADBEF805609F4454D1 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -63,16 +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 = ""; }; - B5A49D7B20ADAEF3B6ABFC8F /* 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 = ""; }; - DCB06CE959C9841A47732106 /* 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 = ""; }; + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CCD3A217F05F5C56806A73AC /* 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 = ""; }; + D928C98A8230291966F7BC16 /* 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 = ""; }; + F9A8122BE8AA9DC2D5E56BA9 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6B50924548E877C1C2CA3129 /* Frameworks */ = { + 82BA311FCD95792DFA08B6C3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */, + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */, + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,27 +95,27 @@ path = RunnerTests; sourceTree = ""; }; - 7C1EC5112CFC3D99A39CA23A /* Pods */ = { + 59F85D4EB504118C5BAA6A6B /* Frameworks */ = { isa = PBXGroup; children = ( - 4F15B19D12D73C3B9F4A6B32 /* Pods-Runner.debug.xcconfig */, - 7A440CADBEF805609F4454D1 /* Pods-Runner.release.xcconfig */, - DCB06CE959C9841A47732106 /* Pods-Runner.profile.xcconfig */, - B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */, - 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */, - 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */, + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */, + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - 8B3639529E9D08CC37DFB8DD /* Frameworks */ = { + 759A3A2C6978D64F2011670C /* Pods */ = { isa = PBXGroup; children = ( - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */, - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */, + F9A8122BE8AA9DC2D5E56BA9 /* Pods-Runner.debug.xcconfig */, + 1518F803974EB3ED39B835D3 /* Pods-Runner.release.xcconfig */, + CCD3A217F05F5C56806A73AC /* Pods-Runner.profile.xcconfig */, + 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */, + D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */, + 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 7C1EC5112CFC3D99A39CA23A /* Pods */, - 8B3639529E9D08CC37DFB8DD /* Frameworks */, + 759A3A2C6978D64F2011670C /* Pods */, + 59F85D4EB504118C5BAA6A6B /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */, + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6B50924548E877C1C2CA3129 /* Frameworks */, + 82BA311FCD95792DFA08B6C3 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */, + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */, + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,23 +270,24 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "Thin Binary"; - outputPaths = ( + 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 = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; }; - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */ = { + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,22 +309,21 @@ 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; }; - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + name = "Thin Binary"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -340,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */ = { + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/brick_breaker/step_05/linux/runner/my_application.cc b/brick_breaker/step_05/linux/runner/my_application.cc index f80944a7ba..bf7a65c9a9 100644 --- a/brick_breaker/step_05/linux/runner/my_application.cc +++ b/brick_breaker/step_05/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/brick_breaker/step_05/macos/Podfile b/brick_breaker/step_05/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/brick_breaker/step_05/macos/Podfile +++ b/brick_breaker/step_05/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_05/macos/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_05/macos/Runner.xcodeproj/project.pbxproj index 8125c52921..e461468bc1 100644 --- a/brick_breaker/step_05/macos/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/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 */; }; - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */; }; - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */; }; + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */; }; + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 03CA769D4C09C20727014EF4 /* 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 = ""; }; - 2E5A5AF0CEECEED6666C82FC /* 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 = ""; }; + 1233E11C4F78D78EDAAAA998 /* 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 = ""; }; + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +80,14 @@ 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 = ""; }; - 3EA6FDB56494E74525FF321B /* 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 = ""; }; + 443BE22F5C36388ABBCFBA3B /* 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 = ""; }; + 50A39124F38EF042B8C57C63 /* 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 = ""; }; + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 81A0A68A1228CB31578B9F7F /* 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 = ""; }; + 7C74B16BF30C9E69BD7EDDA8 /* 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 = ""; }; + 7E64A65EB5BCFFC2C332C27F /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDD079F6DE7514166DBB62C7 /* 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 = ""; }; - ED83396FD67C65F6DEEEC4D9 /* 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 = ""; }; - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A7F35B106658EB60AA1667BB /* 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 = ( - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */, + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,27 +103,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */, + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 2021AEA24B34B2CF7A8252D3 /* Pods */ = { - isa = PBXGroup; - children = ( - 03CA769D4C09C20727014EF4 /* Pods-Runner.debug.xcconfig */, - ED83396FD67C65F6DEEEC4D9 /* Pods-Runner.release.xcconfig */, - DDD079F6DE7514166DBB62C7 /* Pods-Runner.profile.xcconfig */, - 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */, - 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */, - 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -151,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 2021AEA24B34B2CF7A8252D3 /* Pods */, + 68879ACEB493EF5132FBEF0C /* Pods */, ); sourceTree = ""; }; @@ -199,11 +185,25 @@ path = Runner; sourceTree = ""; }; + 68879ACEB493EF5132FBEF0C /* Pods */ = { + isa = PBXGroup; + children = ( + 7C74B16BF30C9E69BD7EDDA8 /* Pods-Runner.debug.xcconfig */, + 443BE22F5C36388ABBCFBA3B /* Pods-Runner.release.xcconfig */, + 1233E11C4F78D78EDAAAA998 /* Pods-Runner.profile.xcconfig */, + 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */, + 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */, + A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */, - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */, + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */, + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */, + 92973125A2FBEDC3724C4571 /* [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 = ( - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */, + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 134A37CC8C11D38F57DAF0A2 /* [CP] Embed Pods Frameworks */, + 8592AE85CD1B4FBC251B35C0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 134A37CC8C11D38F57DAF0A2 /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,24 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */ = { + 8592AE85CD1B4FBC251B35C0 /* [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; + }; + 92973125A2FBEDC3724C4571 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */ = { + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/brick_breaker/step_05/pubspec.yaml b/brick_breaker/step_05/pubspec.yaml index ba7a067d52..e9d8d71927 100644 --- a/brick_breaker/step_05/pubspec.yaml +++ b/brick_breaker/step_05/pubspec.yaml @@ -4,19 +4,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flame: ^1.28.1 + flame: ^1.30.1 flutter_animate: ^4.5.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/brick_breaker/step_06/.gemini/settings.json b/brick_breaker/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/brick_breaker/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/brick_breaker/step_06/.gitignore b/brick_breaker/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/brick_breaker/step_06/.gitignore +++ b/brick_breaker/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/brick_breaker/step_06/android/build.gradle.kts b/brick_breaker/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/brick_breaker/step_06/android/build.gradle.kts +++ b/brick_breaker/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/brick_breaker/step_06/android/settings.gradle.kts b/brick_breaker/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/brick_breaker/step_06/android/settings.gradle.kts +++ b/brick_breaker/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/brick_breaker/step_06/ios/Flutter/AppFrameworkInfo.plist b/brick_breaker/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/brick_breaker/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/brick_breaker/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/brick_breaker/step_06/ios/Podfile b/brick_breaker/step_06/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/brick_breaker/step_06/ios/Podfile +++ b/brick_breaker/step_06/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_06/ios/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_06/ios/Runner.xcodeproj/project.pbxproj index 033825022f..69d753638c 100644 --- a/brick_breaker/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -8,10 +8,10 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */; }; + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */; }; 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 */; }; @@ -42,19 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 141FE4C40182FF36EE29CD23 /* 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 = ""; }; + 0BF927519341BA140E8D4FC1 /* 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 = ""; }; 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 = ""; }; + 1518F803974EB3ED39B835D3 /* 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 = ""; }; + 255A95C79B860CD5F4536BA6 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4F15B19D12D73C3B9F4A6B32 /* 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 = ""; }; - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6F61D49181CF8904BFCCED86 /* 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 = ""; }; - 7A440CADBEF805609F4454D1 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -63,16 +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 = ""; }; - B5A49D7B20ADAEF3B6ABFC8F /* 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 = ""; }; - DCB06CE959C9841A47732106 /* 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 = ""; }; + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CCD3A217F05F5C56806A73AC /* 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 = ""; }; + D928C98A8230291966F7BC16 /* 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 = ""; }; + F9A8122BE8AA9DC2D5E56BA9 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6B50924548E877C1C2CA3129 /* Frameworks */ = { + 82BA311FCD95792DFA08B6C3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */, + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */, + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,27 +95,27 @@ path = RunnerTests; sourceTree = ""; }; - 7C1EC5112CFC3D99A39CA23A /* Pods */ = { + 59F85D4EB504118C5BAA6A6B /* Frameworks */ = { isa = PBXGroup; children = ( - 4F15B19D12D73C3B9F4A6B32 /* Pods-Runner.debug.xcconfig */, - 7A440CADBEF805609F4454D1 /* Pods-Runner.release.xcconfig */, - DCB06CE959C9841A47732106 /* Pods-Runner.profile.xcconfig */, - B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */, - 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */, - 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */, + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */, + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - 8B3639529E9D08CC37DFB8DD /* Frameworks */ = { + 759A3A2C6978D64F2011670C /* Pods */ = { isa = PBXGroup; children = ( - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */, - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */, + F9A8122BE8AA9DC2D5E56BA9 /* Pods-Runner.debug.xcconfig */, + 1518F803974EB3ED39B835D3 /* Pods-Runner.release.xcconfig */, + CCD3A217F05F5C56806A73AC /* Pods-Runner.profile.xcconfig */, + 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */, + D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */, + 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 7C1EC5112CFC3D99A39CA23A /* Pods */, - 8B3639529E9D08CC37DFB8DD /* Frameworks */, + 759A3A2C6978D64F2011670C /* Pods */, + 59F85D4EB504118C5BAA6A6B /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */, + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6B50924548E877C1C2CA3129 /* Frameworks */, + 82BA311FCD95792DFA08B6C3 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */, + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */, + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,23 +270,24 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "Thin Binary"; - outputPaths = ( + 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 = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; }; - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */ = { + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,22 +309,21 @@ 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; }; - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + name = "Thin Binary"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -340,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */ = { + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/brick_breaker/step_06/linux/runner/my_application.cc b/brick_breaker/step_06/linux/runner/my_application.cc index f80944a7ba..bf7a65c9a9 100644 --- a/brick_breaker/step_06/linux/runner/my_application.cc +++ b/brick_breaker/step_06/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/brick_breaker/step_06/macos/Podfile b/brick_breaker/step_06/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/brick_breaker/step_06/macos/Podfile +++ b/brick_breaker/step_06/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_06/macos/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_06/macos/Runner.xcodeproj/project.pbxproj index 8125c52921..e461468bc1 100644 --- a/brick_breaker/step_06/macos/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/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 */; }; - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */; }; - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */; }; + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */; }; + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 03CA769D4C09C20727014EF4 /* 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 = ""; }; - 2E5A5AF0CEECEED6666C82FC /* 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 = ""; }; + 1233E11C4F78D78EDAAAA998 /* 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 = ""; }; + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +80,14 @@ 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 = ""; }; - 3EA6FDB56494E74525FF321B /* 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 = ""; }; + 443BE22F5C36388ABBCFBA3B /* 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 = ""; }; + 50A39124F38EF042B8C57C63 /* 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 = ""; }; + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 81A0A68A1228CB31578B9F7F /* 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 = ""; }; + 7C74B16BF30C9E69BD7EDDA8 /* 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 = ""; }; + 7E64A65EB5BCFFC2C332C27F /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDD079F6DE7514166DBB62C7 /* 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 = ""; }; - ED83396FD67C65F6DEEEC4D9 /* 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 = ""; }; - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A7F35B106658EB60AA1667BB /* 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 = ( - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */, + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,27 +103,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */, + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 2021AEA24B34B2CF7A8252D3 /* Pods */ = { - isa = PBXGroup; - children = ( - 03CA769D4C09C20727014EF4 /* Pods-Runner.debug.xcconfig */, - ED83396FD67C65F6DEEEC4D9 /* Pods-Runner.release.xcconfig */, - DDD079F6DE7514166DBB62C7 /* Pods-Runner.profile.xcconfig */, - 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */, - 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */, - 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -151,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 2021AEA24B34B2CF7A8252D3 /* Pods */, + 68879ACEB493EF5132FBEF0C /* Pods */, ); sourceTree = ""; }; @@ -199,11 +185,25 @@ path = Runner; sourceTree = ""; }; + 68879ACEB493EF5132FBEF0C /* Pods */ = { + isa = PBXGroup; + children = ( + 7C74B16BF30C9E69BD7EDDA8 /* Pods-Runner.debug.xcconfig */, + 443BE22F5C36388ABBCFBA3B /* Pods-Runner.release.xcconfig */, + 1233E11C4F78D78EDAAAA998 /* Pods-Runner.profile.xcconfig */, + 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */, + 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */, + A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */, - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */, + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */, + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */, + 92973125A2FBEDC3724C4571 /* [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 = ( - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */, + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 134A37CC8C11D38F57DAF0A2 /* [CP] Embed Pods Frameworks */, + 8592AE85CD1B4FBC251B35C0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 134A37CC8C11D38F57DAF0A2 /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,24 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */ = { + 8592AE85CD1B4FBC251B35C0 /* [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; + }; + 92973125A2FBEDC3724C4571 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */ = { + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/brick_breaker/step_06/pubspec.yaml b/brick_breaker/step_06/pubspec.yaml index ba7a067d52..e9d8d71927 100644 --- a/brick_breaker/step_06/pubspec.yaml +++ b/brick_breaker/step_06/pubspec.yaml @@ -4,19 +4,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flame: ^1.28.1 + flame: ^1.30.1 flutter_animate: ^4.5.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/brick_breaker/step_07/.gemini/settings.json b/brick_breaker/step_07/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/brick_breaker/step_07/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/brick_breaker/step_07/.gitignore b/brick_breaker/step_07/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/brick_breaker/step_07/.gitignore +++ b/brick_breaker/step_07/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/brick_breaker/step_07/android/build.gradle.kts b/brick_breaker/step_07/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/brick_breaker/step_07/android/build.gradle.kts +++ b/brick_breaker/step_07/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/brick_breaker/step_07/android/settings.gradle.kts b/brick_breaker/step_07/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/brick_breaker/step_07/android/settings.gradle.kts +++ b/brick_breaker/step_07/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/brick_breaker/step_07/ios/Flutter/AppFrameworkInfo.plist b/brick_breaker/step_07/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/brick_breaker/step_07/ios/Flutter/AppFrameworkInfo.plist +++ b/brick_breaker/step_07/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/brick_breaker/step_07/ios/Podfile b/brick_breaker/step_07/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/brick_breaker/step_07/ios/Podfile +++ b/brick_breaker/step_07/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_07/ios/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_07/ios/Runner.xcodeproj/project.pbxproj index 033825022f..69d753638c 100644 --- a/brick_breaker/step_07/ios/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/step_07/ios/Runner.xcodeproj/project.pbxproj @@ -8,10 +8,10 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */; }; + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */; }; 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 */; }; @@ -42,19 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 141FE4C40182FF36EE29CD23 /* 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 = ""; }; + 0BF927519341BA140E8D4FC1 /* 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 = ""; }; 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 = ""; }; + 1518F803974EB3ED39B835D3 /* 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 = ""; }; + 255A95C79B860CD5F4536BA6 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4F15B19D12D73C3B9F4A6B32 /* 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 = ""; }; - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6F61D49181CF8904BFCCED86 /* 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 = ""; }; - 7A440CADBEF805609F4454D1 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -63,16 +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 = ""; }; - B5A49D7B20ADAEF3B6ABFC8F /* 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 = ""; }; - DCB06CE959C9841A47732106 /* 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 = ""; }; + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CCD3A217F05F5C56806A73AC /* 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 = ""; }; + D928C98A8230291966F7BC16 /* 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 = ""; }; + F9A8122BE8AA9DC2D5E56BA9 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6B50924548E877C1C2CA3129 /* Frameworks */ = { + 82BA311FCD95792DFA08B6C3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */, + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */, + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,27 +95,27 @@ path = RunnerTests; sourceTree = ""; }; - 7C1EC5112CFC3D99A39CA23A /* Pods */ = { + 59F85D4EB504118C5BAA6A6B /* Frameworks */ = { isa = PBXGroup; children = ( - 4F15B19D12D73C3B9F4A6B32 /* Pods-Runner.debug.xcconfig */, - 7A440CADBEF805609F4454D1 /* Pods-Runner.release.xcconfig */, - DCB06CE959C9841A47732106 /* Pods-Runner.profile.xcconfig */, - B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */, - 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */, - 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */, + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */, + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - 8B3639529E9D08CC37DFB8DD /* Frameworks */ = { + 759A3A2C6978D64F2011670C /* Pods */ = { isa = PBXGroup; children = ( - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */, - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */, + F9A8122BE8AA9DC2D5E56BA9 /* Pods-Runner.debug.xcconfig */, + 1518F803974EB3ED39B835D3 /* Pods-Runner.release.xcconfig */, + CCD3A217F05F5C56806A73AC /* Pods-Runner.profile.xcconfig */, + 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */, + D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */, + 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 7C1EC5112CFC3D99A39CA23A /* Pods */, - 8B3639529E9D08CC37DFB8DD /* Frameworks */, + 759A3A2C6978D64F2011670C /* Pods */, + 59F85D4EB504118C5BAA6A6B /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */, + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6B50924548E877C1C2CA3129 /* Frameworks */, + 82BA311FCD95792DFA08B6C3 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */, + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */, + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,23 +270,24 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "Thin Binary"; - outputPaths = ( + 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 = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; }; - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */ = { + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,22 +309,21 @@ 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; }; - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + name = "Thin Binary"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -340,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */ = { + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/brick_breaker/step_07/linux/runner/my_application.cc b/brick_breaker/step_07/linux/runner/my_application.cc index f80944a7ba..bf7a65c9a9 100644 --- a/brick_breaker/step_07/linux/runner/my_application.cc +++ b/brick_breaker/step_07/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/brick_breaker/step_07/macos/Podfile b/brick_breaker/step_07/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/brick_breaker/step_07/macos/Podfile +++ b/brick_breaker/step_07/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_07/macos/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_07/macos/Runner.xcodeproj/project.pbxproj index 8125c52921..e461468bc1 100644 --- a/brick_breaker/step_07/macos/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/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 */; }; - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */; }; - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */; }; + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */; }; + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 03CA769D4C09C20727014EF4 /* 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 = ""; }; - 2E5A5AF0CEECEED6666C82FC /* 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 = ""; }; + 1233E11C4F78D78EDAAAA998 /* 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 = ""; }; + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +80,14 @@ 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 = ""; }; - 3EA6FDB56494E74525FF321B /* 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 = ""; }; + 443BE22F5C36388ABBCFBA3B /* 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 = ""; }; + 50A39124F38EF042B8C57C63 /* 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 = ""; }; + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 81A0A68A1228CB31578B9F7F /* 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 = ""; }; + 7C74B16BF30C9E69BD7EDDA8 /* 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 = ""; }; + 7E64A65EB5BCFFC2C332C27F /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDD079F6DE7514166DBB62C7 /* 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 = ""; }; - ED83396FD67C65F6DEEEC4D9 /* 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 = ""; }; - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A7F35B106658EB60AA1667BB /* 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 = ( - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */, + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,27 +103,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */, + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 2021AEA24B34B2CF7A8252D3 /* Pods */ = { - isa = PBXGroup; - children = ( - 03CA769D4C09C20727014EF4 /* Pods-Runner.debug.xcconfig */, - ED83396FD67C65F6DEEEC4D9 /* Pods-Runner.release.xcconfig */, - DDD079F6DE7514166DBB62C7 /* Pods-Runner.profile.xcconfig */, - 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */, - 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */, - 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -151,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 2021AEA24B34B2CF7A8252D3 /* Pods */, + 68879ACEB493EF5132FBEF0C /* Pods */, ); sourceTree = ""; }; @@ -199,11 +185,25 @@ path = Runner; sourceTree = ""; }; + 68879ACEB493EF5132FBEF0C /* Pods */ = { + isa = PBXGroup; + children = ( + 7C74B16BF30C9E69BD7EDDA8 /* Pods-Runner.debug.xcconfig */, + 443BE22F5C36388ABBCFBA3B /* Pods-Runner.release.xcconfig */, + 1233E11C4F78D78EDAAAA998 /* Pods-Runner.profile.xcconfig */, + 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */, + 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */, + A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */, - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */, + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */, + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */, + 92973125A2FBEDC3724C4571 /* [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 = ( - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */, + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 134A37CC8C11D38F57DAF0A2 /* [CP] Embed Pods Frameworks */, + 8592AE85CD1B4FBC251B35C0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 134A37CC8C11D38F57DAF0A2 /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,24 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */ = { + 8592AE85CD1B4FBC251B35C0 /* [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; + }; + 92973125A2FBEDC3724C4571 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */ = { + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/brick_breaker/step_07/pubspec.yaml b/brick_breaker/step_07/pubspec.yaml index ba7a067d52..e9d8d71927 100644 --- a/brick_breaker/step_07/pubspec.yaml +++ b/brick_breaker/step_07/pubspec.yaml @@ -4,19 +4,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flame: ^1.28.1 + flame: ^1.30.1 flutter_animate: ^4.5.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/brick_breaker/step_08/.gemini/settings.json b/brick_breaker/step_08/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/brick_breaker/step_08/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/brick_breaker/step_08/.gitignore b/brick_breaker/step_08/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/brick_breaker/step_08/.gitignore +++ b/brick_breaker/step_08/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/brick_breaker/step_08/android/build.gradle.kts b/brick_breaker/step_08/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/brick_breaker/step_08/android/build.gradle.kts +++ b/brick_breaker/step_08/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/brick_breaker/step_08/android/settings.gradle.kts b/brick_breaker/step_08/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/brick_breaker/step_08/android/settings.gradle.kts +++ b/brick_breaker/step_08/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/brick_breaker/step_08/ios/Flutter/AppFrameworkInfo.plist b/brick_breaker/step_08/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/brick_breaker/step_08/ios/Flutter/AppFrameworkInfo.plist +++ b/brick_breaker/step_08/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/brick_breaker/step_08/ios/Podfile b/brick_breaker/step_08/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/brick_breaker/step_08/ios/Podfile +++ b/brick_breaker/step_08/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_08/ios/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_08/ios/Runner.xcodeproj/project.pbxproj index 033825022f..69d753638c 100644 --- a/brick_breaker/step_08/ios/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/step_08/ios/Runner.xcodeproj/project.pbxproj @@ -8,10 +8,10 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */; }; + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */; }; 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 */; }; @@ -42,19 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 141FE4C40182FF36EE29CD23 /* 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 = ""; }; + 0BF927519341BA140E8D4FC1 /* 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 = ""; }; 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 = ""; }; + 1518F803974EB3ED39B835D3 /* 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 = ""; }; + 255A95C79B860CD5F4536BA6 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4F15B19D12D73C3B9F4A6B32 /* 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 = ""; }; - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6F61D49181CF8904BFCCED86 /* 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 = ""; }; - 7A440CADBEF805609F4454D1 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -63,16 +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 = ""; }; - B5A49D7B20ADAEF3B6ABFC8F /* 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 = ""; }; - DCB06CE959C9841A47732106 /* 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 = ""; }; + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CCD3A217F05F5C56806A73AC /* 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 = ""; }; + D928C98A8230291966F7BC16 /* 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 = ""; }; + F9A8122BE8AA9DC2D5E56BA9 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6B50924548E877C1C2CA3129 /* Frameworks */ = { + 82BA311FCD95792DFA08B6C3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */, + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */, + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,27 +95,27 @@ path = RunnerTests; sourceTree = ""; }; - 7C1EC5112CFC3D99A39CA23A /* Pods */ = { + 59F85D4EB504118C5BAA6A6B /* Frameworks */ = { isa = PBXGroup; children = ( - 4F15B19D12D73C3B9F4A6B32 /* Pods-Runner.debug.xcconfig */, - 7A440CADBEF805609F4454D1 /* Pods-Runner.release.xcconfig */, - DCB06CE959C9841A47732106 /* Pods-Runner.profile.xcconfig */, - B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */, - 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */, - 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */, + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */, + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - 8B3639529E9D08CC37DFB8DD /* Frameworks */ = { + 759A3A2C6978D64F2011670C /* Pods */ = { isa = PBXGroup; children = ( - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */, - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */, + F9A8122BE8AA9DC2D5E56BA9 /* Pods-Runner.debug.xcconfig */, + 1518F803974EB3ED39B835D3 /* Pods-Runner.release.xcconfig */, + CCD3A217F05F5C56806A73AC /* Pods-Runner.profile.xcconfig */, + 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */, + D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */, + 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 7C1EC5112CFC3D99A39CA23A /* Pods */, - 8B3639529E9D08CC37DFB8DD /* Frameworks */, + 759A3A2C6978D64F2011670C /* Pods */, + 59F85D4EB504118C5BAA6A6B /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */, + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6B50924548E877C1C2CA3129 /* Frameworks */, + 82BA311FCD95792DFA08B6C3 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */, + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */, + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,23 +270,24 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "Thin Binary"; - outputPaths = ( + 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 = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; }; - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */ = { + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,22 +309,21 @@ 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; }; - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + name = "Thin Binary"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -340,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */ = { + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/brick_breaker/step_08/linux/runner/my_application.cc b/brick_breaker/step_08/linux/runner/my_application.cc index f80944a7ba..bf7a65c9a9 100644 --- a/brick_breaker/step_08/linux/runner/my_application.cc +++ b/brick_breaker/step_08/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/brick_breaker/step_08/macos/Podfile b/brick_breaker/step_08/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/brick_breaker/step_08/macos/Podfile +++ b/brick_breaker/step_08/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_08/macos/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_08/macos/Runner.xcodeproj/project.pbxproj index 8125c52921..e461468bc1 100644 --- a/brick_breaker/step_08/macos/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/step_08/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 */; }; - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */; }; - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */; }; + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */; }; + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 03CA769D4C09C20727014EF4 /* 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 = ""; }; - 2E5A5AF0CEECEED6666C82FC /* 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 = ""; }; + 1233E11C4F78D78EDAAAA998 /* 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 = ""; }; + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +80,14 @@ 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 = ""; }; - 3EA6FDB56494E74525FF321B /* 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 = ""; }; + 443BE22F5C36388ABBCFBA3B /* 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 = ""; }; + 50A39124F38EF042B8C57C63 /* 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 = ""; }; + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 81A0A68A1228CB31578B9F7F /* 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 = ""; }; + 7C74B16BF30C9E69BD7EDDA8 /* 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 = ""; }; + 7E64A65EB5BCFFC2C332C27F /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDD079F6DE7514166DBB62C7 /* 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 = ""; }; - ED83396FD67C65F6DEEEC4D9 /* 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 = ""; }; - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A7F35B106658EB60AA1667BB /* 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 = ( - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */, + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,27 +103,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */, + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 2021AEA24B34B2CF7A8252D3 /* Pods */ = { - isa = PBXGroup; - children = ( - 03CA769D4C09C20727014EF4 /* Pods-Runner.debug.xcconfig */, - ED83396FD67C65F6DEEEC4D9 /* Pods-Runner.release.xcconfig */, - DDD079F6DE7514166DBB62C7 /* Pods-Runner.profile.xcconfig */, - 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */, - 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */, - 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -151,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 2021AEA24B34B2CF7A8252D3 /* Pods */, + 68879ACEB493EF5132FBEF0C /* Pods */, ); sourceTree = ""; }; @@ -199,11 +185,25 @@ path = Runner; sourceTree = ""; }; + 68879ACEB493EF5132FBEF0C /* Pods */ = { + isa = PBXGroup; + children = ( + 7C74B16BF30C9E69BD7EDDA8 /* Pods-Runner.debug.xcconfig */, + 443BE22F5C36388ABBCFBA3B /* Pods-Runner.release.xcconfig */, + 1233E11C4F78D78EDAAAA998 /* Pods-Runner.profile.xcconfig */, + 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */, + 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */, + A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */, - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */, + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */, + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */, + 92973125A2FBEDC3724C4571 /* [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 = ( - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */, + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 134A37CC8C11D38F57DAF0A2 /* [CP] Embed Pods Frameworks */, + 8592AE85CD1B4FBC251B35C0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 134A37CC8C11D38F57DAF0A2 /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,24 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */ = { + 8592AE85CD1B4FBC251B35C0 /* [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; + }; + 92973125A2FBEDC3724C4571 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */ = { + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/brick_breaker/step_08/pubspec.yaml b/brick_breaker/step_08/pubspec.yaml index ba7a067d52..e9d8d71927 100644 --- a/brick_breaker/step_08/pubspec.yaml +++ b/brick_breaker/step_08/pubspec.yaml @@ -4,19 +4,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flame: ^1.28.1 + flame: ^1.30.1 flutter_animate: ^4.5.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/brick_breaker/step_09/.gemini/settings.json b/brick_breaker/step_09/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/brick_breaker/step_09/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/brick_breaker/step_09/.gitignore b/brick_breaker/step_09/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/brick_breaker/step_09/.gitignore +++ b/brick_breaker/step_09/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/brick_breaker/step_09/android/build.gradle.kts b/brick_breaker/step_09/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/brick_breaker/step_09/android/build.gradle.kts +++ b/brick_breaker/step_09/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/brick_breaker/step_09/android/settings.gradle.kts b/brick_breaker/step_09/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/brick_breaker/step_09/android/settings.gradle.kts +++ b/brick_breaker/step_09/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/brick_breaker/step_09/ios/Flutter/AppFrameworkInfo.plist b/brick_breaker/step_09/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/brick_breaker/step_09/ios/Flutter/AppFrameworkInfo.plist +++ b/brick_breaker/step_09/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/brick_breaker/step_09/ios/Podfile b/brick_breaker/step_09/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/brick_breaker/step_09/ios/Podfile +++ b/brick_breaker/step_09/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_09/ios/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_09/ios/Runner.xcodeproj/project.pbxproj index 033825022f..69d753638c 100644 --- a/brick_breaker/step_09/ios/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/step_09/ios/Runner.xcodeproj/project.pbxproj @@ -8,10 +8,10 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */; }; + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */; }; 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 */; }; @@ -42,19 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 141FE4C40182FF36EE29CD23 /* 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 = ""; }; + 0BF927519341BA140E8D4FC1 /* 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 = ""; }; 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 = ""; }; + 1518F803974EB3ED39B835D3 /* 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 = ""; }; + 255A95C79B860CD5F4536BA6 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4F15B19D12D73C3B9F4A6B32 /* 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 = ""; }; - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6F61D49181CF8904BFCCED86 /* 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 = ""; }; - 7A440CADBEF805609F4454D1 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -63,16 +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 = ""; }; - B5A49D7B20ADAEF3B6ABFC8F /* 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 = ""; }; - DCB06CE959C9841A47732106 /* 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 = ""; }; + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CCD3A217F05F5C56806A73AC /* 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 = ""; }; + D928C98A8230291966F7BC16 /* 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 = ""; }; + F9A8122BE8AA9DC2D5E56BA9 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6B50924548E877C1C2CA3129 /* Frameworks */ = { + 82BA311FCD95792DFA08B6C3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */, + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */, + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,27 +95,27 @@ path = RunnerTests; sourceTree = ""; }; - 7C1EC5112CFC3D99A39CA23A /* Pods */ = { + 59F85D4EB504118C5BAA6A6B /* Frameworks */ = { isa = PBXGroup; children = ( - 4F15B19D12D73C3B9F4A6B32 /* Pods-Runner.debug.xcconfig */, - 7A440CADBEF805609F4454D1 /* Pods-Runner.release.xcconfig */, - DCB06CE959C9841A47732106 /* Pods-Runner.profile.xcconfig */, - B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */, - 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */, - 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */, + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */, + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - 8B3639529E9D08CC37DFB8DD /* Frameworks */ = { + 759A3A2C6978D64F2011670C /* Pods */ = { isa = PBXGroup; children = ( - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */, - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */, + F9A8122BE8AA9DC2D5E56BA9 /* Pods-Runner.debug.xcconfig */, + 1518F803974EB3ED39B835D3 /* Pods-Runner.release.xcconfig */, + CCD3A217F05F5C56806A73AC /* Pods-Runner.profile.xcconfig */, + 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */, + D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */, + 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 7C1EC5112CFC3D99A39CA23A /* Pods */, - 8B3639529E9D08CC37DFB8DD /* Frameworks */, + 759A3A2C6978D64F2011670C /* Pods */, + 59F85D4EB504118C5BAA6A6B /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */, + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6B50924548E877C1C2CA3129 /* Frameworks */, + 82BA311FCD95792DFA08B6C3 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */, + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */, + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,23 +270,24 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "Thin Binary"; - outputPaths = ( + 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 = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; }; - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */ = { + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,22 +309,21 @@ 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; }; - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + name = "Thin Binary"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -340,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */ = { + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/brick_breaker/step_09/linux/runner/my_application.cc b/brick_breaker/step_09/linux/runner/my_application.cc index f80944a7ba..bf7a65c9a9 100644 --- a/brick_breaker/step_09/linux/runner/my_application.cc +++ b/brick_breaker/step_09/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/brick_breaker/step_09/macos/Podfile b/brick_breaker/step_09/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/brick_breaker/step_09/macos/Podfile +++ b/brick_breaker/step_09/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_09/macos/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_09/macos/Runner.xcodeproj/project.pbxproj index 8125c52921..e461468bc1 100644 --- a/brick_breaker/step_09/macos/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/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 */; }; - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */; }; - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */; }; + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */; }; + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 03CA769D4C09C20727014EF4 /* 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 = ""; }; - 2E5A5AF0CEECEED6666C82FC /* 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 = ""; }; + 1233E11C4F78D78EDAAAA998 /* 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 = ""; }; + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +80,14 @@ 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 = ""; }; - 3EA6FDB56494E74525FF321B /* 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 = ""; }; + 443BE22F5C36388ABBCFBA3B /* 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 = ""; }; + 50A39124F38EF042B8C57C63 /* 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 = ""; }; + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 81A0A68A1228CB31578B9F7F /* 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 = ""; }; + 7C74B16BF30C9E69BD7EDDA8 /* 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 = ""; }; + 7E64A65EB5BCFFC2C332C27F /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDD079F6DE7514166DBB62C7 /* 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 = ""; }; - ED83396FD67C65F6DEEEC4D9 /* 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 = ""; }; - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A7F35B106658EB60AA1667BB /* 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 = ( - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */, + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,27 +103,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */, + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 2021AEA24B34B2CF7A8252D3 /* Pods */ = { - isa = PBXGroup; - children = ( - 03CA769D4C09C20727014EF4 /* Pods-Runner.debug.xcconfig */, - ED83396FD67C65F6DEEEC4D9 /* Pods-Runner.release.xcconfig */, - DDD079F6DE7514166DBB62C7 /* Pods-Runner.profile.xcconfig */, - 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */, - 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */, - 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -151,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 2021AEA24B34B2CF7A8252D3 /* Pods */, + 68879ACEB493EF5132FBEF0C /* Pods */, ); sourceTree = ""; }; @@ -199,11 +185,25 @@ path = Runner; sourceTree = ""; }; + 68879ACEB493EF5132FBEF0C /* Pods */ = { + isa = PBXGroup; + children = ( + 7C74B16BF30C9E69BD7EDDA8 /* Pods-Runner.debug.xcconfig */, + 443BE22F5C36388ABBCFBA3B /* Pods-Runner.release.xcconfig */, + 1233E11C4F78D78EDAAAA998 /* Pods-Runner.profile.xcconfig */, + 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */, + 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */, + A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */, - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */, + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */, + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */, + 92973125A2FBEDC3724C4571 /* [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 = ( - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */, + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 134A37CC8C11D38F57DAF0A2 /* [CP] Embed Pods Frameworks */, + 8592AE85CD1B4FBC251B35C0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 134A37CC8C11D38F57DAF0A2 /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,24 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */ = { + 8592AE85CD1B4FBC251B35C0 /* [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; + }; + 92973125A2FBEDC3724C4571 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */ = { + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/brick_breaker/step_09/pubspec.yaml b/brick_breaker/step_09/pubspec.yaml index ba7a067d52..e9d8d71927 100644 --- a/brick_breaker/step_09/pubspec.yaml +++ b/brick_breaker/step_09/pubspec.yaml @@ -4,19 +4,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flame: ^1.28.1 + flame: ^1.30.1 flutter_animate: ^4.5.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/brick_breaker/step_10/.gemini/settings.json b/brick_breaker/step_10/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/brick_breaker/step_10/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/brick_breaker/step_10/.gitignore b/brick_breaker/step_10/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/brick_breaker/step_10/.gitignore +++ b/brick_breaker/step_10/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/brick_breaker/step_10/android/build.gradle.kts b/brick_breaker/step_10/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/brick_breaker/step_10/android/build.gradle.kts +++ b/brick_breaker/step_10/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/brick_breaker/step_10/android/settings.gradle.kts b/brick_breaker/step_10/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/brick_breaker/step_10/android/settings.gradle.kts +++ b/brick_breaker/step_10/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/brick_breaker/step_10/ios/Flutter/AppFrameworkInfo.plist b/brick_breaker/step_10/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/brick_breaker/step_10/ios/Flutter/AppFrameworkInfo.plist +++ b/brick_breaker/step_10/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/brick_breaker/step_10/ios/Podfile b/brick_breaker/step_10/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/brick_breaker/step_10/ios/Podfile +++ b/brick_breaker/step_10/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_10/ios/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_10/ios/Runner.xcodeproj/project.pbxproj index 033825022f..69d753638c 100644 --- a/brick_breaker/step_10/ios/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/step_10/ios/Runner.xcodeproj/project.pbxproj @@ -8,10 +8,10 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */; }; + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */; }; 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 */; }; @@ -42,19 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 141FE4C40182FF36EE29CD23 /* 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 = ""; }; + 0BF927519341BA140E8D4FC1 /* 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 = ""; }; 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 = ""; }; + 1518F803974EB3ED39B835D3 /* 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 = ""; }; + 255A95C79B860CD5F4536BA6 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4F15B19D12D73C3B9F4A6B32 /* 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 = ""; }; - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6F61D49181CF8904BFCCED86 /* 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 = ""; }; - 7A440CADBEF805609F4454D1 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -63,16 +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 = ""; }; - B5A49D7B20ADAEF3B6ABFC8F /* 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 = ""; }; - DCB06CE959C9841A47732106 /* 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 = ""; }; + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CCD3A217F05F5C56806A73AC /* 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 = ""; }; + D928C98A8230291966F7BC16 /* 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 = ""; }; + F9A8122BE8AA9DC2D5E56BA9 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 6B50924548E877C1C2CA3129 /* Frameworks */ = { + 82BA311FCD95792DFA08B6C3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1B55EE84EEBFCA7050345D18 /* Pods_RunnerTests.framework in Frameworks */, + 1F1FD9D6D47E97CD08CE5842 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 628665DF6FBF1E2F471C1179 /* Pods_Runner.framework in Frameworks */, + 35D149343AB5D91FB85B5AE0 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,27 +95,27 @@ path = RunnerTests; sourceTree = ""; }; - 7C1EC5112CFC3D99A39CA23A /* Pods */ = { + 59F85D4EB504118C5BAA6A6B /* Frameworks */ = { isa = PBXGroup; children = ( - 4F15B19D12D73C3B9F4A6B32 /* Pods-Runner.debug.xcconfig */, - 7A440CADBEF805609F4454D1 /* Pods-Runner.release.xcconfig */, - DCB06CE959C9841A47732106 /* Pods-Runner.profile.xcconfig */, - B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */, - 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */, - 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */, + C5D790F70B4450EEF53BD0DD /* Pods_Runner.framework */, + AA1E3FD178FCD0852D2A7D3F /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - 8B3639529E9D08CC37DFB8DD /* Frameworks */ = { + 759A3A2C6978D64F2011670C /* Pods */ = { isa = PBXGroup; children = ( - 6D60EB47D8E733FF268F2FF7 /* Pods_Runner.framework */, - 55882F9594050E3AAF4FD101 /* Pods_RunnerTests.framework */, + F9A8122BE8AA9DC2D5E56BA9 /* Pods-Runner.debug.xcconfig */, + 1518F803974EB3ED39B835D3 /* Pods-Runner.release.xcconfig */, + CCD3A217F05F5C56806A73AC /* Pods-Runner.profile.xcconfig */, + 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */, + D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */, + 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 7C1EC5112CFC3D99A39CA23A /* Pods */, - 8B3639529E9D08CC37DFB8DD /* Frameworks */, + 759A3A2C6978D64F2011670C /* Pods */, + 59F85D4EB504118C5BAA6A6B /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */, + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 6B50924548E877C1C2CA3129 /* Frameworks */, + 82BA311FCD95792DFA08B6C3 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */, + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */, + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,23 +270,24 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 1C7C472FA66C003094C12616 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "Thin Binary"; - outputPaths = ( + 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 = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; }; - 829B61DF7D76D6F54CBFF999 /* [CP] Check Pods Manifest.lock */ = { + 32F9BFAD822250D3D59FFAB3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,22 +309,21 @@ 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; }; - 921867EFCE079158D39C0CF4 /* [CP] Embed Pods Frameworks */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + name = "Thin Binary"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -340,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - A9EB12331BAE32501CAAA33C /* [CP] Check Pods Manifest.lock */ = { + DB8EB669D0B22A3D2C18C261 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B5A49D7B20ADAEF3B6ABFC8F /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0BF927519341BA140E8D4FC1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6F61D49181CF8904BFCCED86 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D928C98A8230291966F7BC16 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 141FE4C40182FF36EE29CD23 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 255A95C79B860CD5F4536BA6 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/brick_breaker/step_10/linux/runner/my_application.cc b/brick_breaker/step_10/linux/runner/my_application.cc index f80944a7ba..bf7a65c9a9 100644 --- a/brick_breaker/step_10/linux/runner/my_application.cc +++ b/brick_breaker/step_10/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/brick_breaker/step_10/macos/Podfile b/brick_breaker/step_10/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/brick_breaker/step_10/macos/Podfile +++ b/brick_breaker/step_10/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/brick_breaker/step_10/macos/Runner.xcodeproj/project.pbxproj b/brick_breaker/step_10/macos/Runner.xcodeproj/project.pbxproj index 8125c52921..e461468bc1 100644 --- a/brick_breaker/step_10/macos/Runner.xcodeproj/project.pbxproj +++ b/brick_breaker/step_10/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 */; }; - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */; }; - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */; }; + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */; }; + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 03CA769D4C09C20727014EF4 /* 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 = ""; }; - 2E5A5AF0CEECEED6666C82FC /* 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 = ""; }; + 1233E11C4F78D78EDAAAA998 /* 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 = ""; }; + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +80,14 @@ 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 = ""; }; - 3EA6FDB56494E74525FF321B /* 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 = ""; }; + 443BE22F5C36388ABBCFBA3B /* 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 = ""; }; + 50A39124F38EF042B8C57C63 /* 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 = ""; }; + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 81A0A68A1228CB31578B9F7F /* 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 = ""; }; + 7C74B16BF30C9E69BD7EDDA8 /* 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 = ""; }; + 7E64A65EB5BCFFC2C332C27F /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DDD079F6DE7514166DBB62C7 /* 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 = ""; }; - ED83396FD67C65F6DEEEC4D9 /* 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 = ""; }; - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A7F35B106658EB60AA1667BB /* 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 = ( - EF0A9012B39E18B19954DCAB /* Pods_RunnerTests.framework in Frameworks */, + D1BA4276B3FA4F7444C58EEF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,27 +103,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4F7B024077E4182737E713AB /* Pods_Runner.framework in Frameworks */, + A6CE5652BDFC66532A5252B9 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 2021AEA24B34B2CF7A8252D3 /* Pods */ = { - isa = PBXGroup; - children = ( - 03CA769D4C09C20727014EF4 /* Pods-Runner.debug.xcconfig */, - ED83396FD67C65F6DEEEC4D9 /* Pods-Runner.release.xcconfig */, - DDD079F6DE7514166DBB62C7 /* Pods-Runner.profile.xcconfig */, - 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */, - 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */, - 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C80D6294CF71000263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -151,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 2021AEA24B34B2CF7A8252D3 /* Pods */, + 68879ACEB493EF5132FBEF0C /* Pods */, ); sourceTree = ""; }; @@ -199,11 +185,25 @@ path = Runner; sourceTree = ""; }; + 68879ACEB493EF5132FBEF0C /* Pods */ = { + isa = PBXGroup; + children = ( + 7C74B16BF30C9E69BD7EDDA8 /* Pods-Runner.debug.xcconfig */, + 443BE22F5C36388ABBCFBA3B /* Pods-Runner.release.xcconfig */, + 1233E11C4F78D78EDAAAA998 /* Pods-Runner.profile.xcconfig */, + 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */, + 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */, + A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D4E76342BCB255A64436CBA1 /* Pods_Runner.framework */, - F7AE36B9C97F4BC82D64408B /* Pods_RunnerTests.framework */, + 274D944B3F8778E6D1004E07 /* Pods_Runner.framework */, + 603A6C511EBE718CB762BF9A /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */, + 92973125A2FBEDC3724C4571 /* [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 = ( - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */, + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 134A37CC8C11D38F57DAF0A2 /* [CP] Embed Pods Frameworks */, + 8592AE85CD1B4FBC251B35C0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,23 +323,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 134A37CC8C11D38F57DAF0A2 /* [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; - }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -378,7 +361,24 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4CAA2C4CC1E4A2AD747E1A2F /* [CP] Check Pods Manifest.lock */ = { + 8592AE85CD1B4FBC251B35C0 /* [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; + }; + 92973125A2FBEDC3724C4571 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - D919CA33E05AFAD81EB1F644 /* [CP] Check Pods Manifest.lock */ = { + D6AF9A60E0DE8257CE8F8415 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3EA6FDB56494E74525FF321B /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 50A39124F38EF042B8C57C63 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2E5A5AF0CEECEED6666C82FC /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 7E64A65EB5BCFFC2C332C27F /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 81A0A68A1228CB31578B9F7F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A7F35B106658EB60AA1667BB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/brick_breaker/step_10/pubspec.yaml b/brick_breaker/step_10/pubspec.yaml index ba7a067d52..e9d8d71927 100644 --- a/brick_breaker/step_10/pubspec.yaml +++ b/brick_breaker/step_10/pubspec.yaml @@ -4,19 +4,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - flame: ^1.28.1 + flame: ^1.30.1 flutter_animate: ^4.5.2 google_fonts: ^6.3.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/colorist/codelab_rebuild.yaml b/colorist/codelab_rebuild.yaml index c7e1b1dc60..c236170336 100644 --- a/colorist/codelab_rebuild.yaml +++ b/colorist/codelab_rebuild.yaml @@ -29,6 +29,21 @@ steps: dart: fix --apply - name: Remove README rm: colorist/README.md + - name: Add .gemini directory + mkdir: colorist/.gemini + - name: Add .gemini/settings.json + path: colorist/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add .vscode directory mkdir: colorist/.vscode - name: Add .vscode/launch.json @@ -318,44 +333,6 @@ steps: + - - name: Patch android/app/build.gradle.kts - path: colorist/android/app/build.gradle.kts - patch-u: | - --- b/colorist/step_02/android/app/build.gradle.kts - +++ a/colorist/step_02/android/app/build.gradle.kts - @@ -8,7 +8,7 @@ plugins { - android { - namespace = "com.example.colorist" - compileSdk = flutter.compileSdkVersion - - ndkVersion = flutter.ndkVersion - + ndkVersion = "27.0.12077973" - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - @@ -24,7 +24,7 @@ android { - applicationId = "com.example.colorist" - // You can update the following values to match your application needs. - // For more information, see: https://flutter.dev/to/review-gradle-config. - - minSdk = flutter.minSdkVersion - + minSdk = 23 - targetSdk = flutter.targetSdkVersion - versionCode = flutter.versionCode - versionName = flutter.versionName - - name: Patch macos/Podfile - path: colorist/macos/Podfile - patch-u: | - --- b/colorist/step_02/macos/Podfile - +++ a/colorist/step_02/macos/Podfile - @@ -1,4 +1,5 @@ - -platform :osx, '10.14' - +# Firebase requires at least macOS 10.15 - +platform :osx, '10.15' - - # CocoaPods analytics sends network stats synchronously affecting flutter build latency. - ENV['COCOAPODS_DISABLE_STATS'] = 'true' - - name: Patch macos/Runner.xcodeproj/project.pbxproj - xcode-project-path: colorist/macos/Runner.xcodeproj - macosx-deployment-target: "10.15" - name: Patch ios/Podfile path: colorist/ios/Podfile patch-u: | @@ -363,15 +340,15 @@ steps: +++ b/colorist/step_02/ios/Podfile @@ -1,5 +1,5 @@ -# Uncomment this line to define a global platform for your project - -# platform :ios, '12.0' - +# Firebase requires at least iOS 13.0 - +platform :ios, '13.0' - + -# platform :ios, '13.0' + +# Firebase requires at least iOS 15.0 + +platform :ios, '15.0' + # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' - name: Patch ios/Runner.xcodeproj/project.pbxproj xcode-project-path: colorist/ios/Runner.xcodeproj - iphoneos-deployment-target: "13.0" + iphoneos-deployment-target: "15.0" - name: Upgrade deps path: colorist flutter: pub upgrade --major-versions diff --git a/colorist/step_01/.gemini/settings.json b/colorist/step_01/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/colorist/step_01/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/colorist/step_01/.gitignore b/colorist/step_01/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/colorist/step_01/.gitignore +++ b/colorist/step_01/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/colorist/step_01/android/build.gradle.kts b/colorist/step_01/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/colorist/step_01/android/build.gradle.kts +++ b/colorist/step_01/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/colorist/step_01/android/settings.gradle.kts b/colorist/step_01/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/colorist/step_01/android/settings.gradle.kts +++ b/colorist/step_01/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/colorist/step_01/ios/Flutter/AppFrameworkInfo.plist b/colorist/step_01/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/colorist/step_01/ios/Flutter/AppFrameworkInfo.plist +++ b/colorist/step_01/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/colorist/step_01/ios/Runner.xcodeproj/project.pbxproj b/colorist/step_01/ios/Runner.xcodeproj/project.pbxproj index 91e71fbb8d..b2eff2bdc0 100644 --- a/colorist/step_01/ios/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_01/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/colorist/step_01/macos/Runner.xcodeproj/project.pbxproj b/colorist/step_01/macos/Runner.xcodeproj/project.pbxproj index dad5dcd2dd..8b1ee64ae6 100644 --- a/colorist/step_01/macos/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_01/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/colorist/step_01/pubspec.yaml b/colorist/step_01/pubspec.yaml index c8aa4eeb69..b1497a9efa 100644 --- a/colorist/step_01/pubspec.yaml +++ b/colorist/step_01/pubspec.yaml @@ -4,12 +4,12 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - colorist_ui: ^0.2.4 + colorist_ui: ^0.2.5 flutter_riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 @@ -21,7 +21,7 @@ dev_dependencies: riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 json_serializable: ^6.9.5 - custom_lint: ^0.7.5 + custom_lint: ^0.7.6 flutter: uses-material-design: true diff --git a/colorist/step_02/.gemini/settings.json b/colorist/step_02/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/colorist/step_02/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/colorist/step_02/.gitignore b/colorist/step_02/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/colorist/step_02/.gitignore +++ b/colorist/step_02/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/colorist/step_02/android/app/build.gradle.kts b/colorist/step_02/android/app/build.gradle.kts index 1270a172ba..575b9de8dc 100644 --- a/colorist/step_02/android/app/build.gradle.kts +++ b/colorist/step_02/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.colorist" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.colorist" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/colorist/step_02/android/build.gradle.kts b/colorist/step_02/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/colorist/step_02/android/build.gradle.kts +++ b/colorist/step_02/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/colorist/step_02/android/settings.gradle.kts b/colorist/step_02/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/colorist/step_02/android/settings.gradle.kts +++ b/colorist/step_02/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/colorist/step_02/ios/Flutter/AppFrameworkInfo.plist b/colorist/step_02/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/colorist/step_02/ios/Flutter/AppFrameworkInfo.plist +++ b/colorist/step_02/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/colorist/step_02/ios/Podfile b/colorist/step_02/ios/Podfile index 9c02792318..bf5e880b99 100644 --- a/colorist/step_02/ios/Podfile +++ b/colorist/step_02/ios/Podfile @@ -1,5 +1,5 @@ -# Firebase requires at least iOS 13.0 -platform :ios, '13.0' +# Firebase requires at least iOS 15.0 +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/colorist/step_02/ios/Runner.xcodeproj/project.pbxproj b/colorist/step_02/ios/Runner.xcodeproj/project.pbxproj index 90d67fdbb0..90f5596b2b 100644 --- a/colorist/step_02/ios/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_02/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 264F2ECFF34EF46F319F45E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7565379A5F9A7A666B6B2425 /* 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 */; }; + 88C01DB8BD076FDD77CAA78C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */; }; 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 */; }; - A67FCE7B70B961BD04AF2DDB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 10EBED86431F405F33425C5D /* Pods_Runner.framework */; }; - FF4AE851CE17CB51F34163EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,17 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 08A7551F7E9BFB56654E76DE /* 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 = ""; }; - 10EBED86431F405F33425C5D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 1530DD726CE4908A66089928 /* 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 = ""; }; - 24BD78ABAFCCF8EB816CB62E /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 48F138619629BE326D93C070 /* 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 = ""; }; - 4F3B9CB42871F70F645E3615 /* 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 = ""; }; + 3DC1C736C9330C4641F0E9E7 /* 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 = ""; }; + 51382D7D6048D4C925DFF480 /* 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 = ""; }; + 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7565379A5F9A7A666B6B2425 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -64,36 +61,44 @@ 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 = ""; }; - B084180C65CE1BD0071A4CBE /* 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 = ""; }; + B01FCE518161C09C15CA2A76 /* 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 = ""; }; + CEE59FDC4692CF13B3A531A9 /* 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 = ""; }; + E195793174425599BF9FD8A5 /* 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 = ""; }; + F7F8EA4F92EE4A949ACFD794 /* 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 */ - 5A8CF7734BFB3555CEDE90E5 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FF4AE851CE17CB51F34163EC /* Pods_RunnerTests.framework in Frameworks */, + 88C01DB8BD076FDD77CAA78C /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + DF1E44B816CCC38BF7580232 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A67FCE7B70B961BD04AF2DDB /* Pods_Runner.framework in Frameworks */, + 264F2ECFF34EF46F319F45E0 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 21EC442767C73DD656FE2D59 /* Frameworks */ = { + 0DD397DDABE0052F1DE19F5A /* Pods */ = { isa = PBXGroup; children = ( - 10EBED86431F405F33425C5D /* Pods_Runner.framework */, - 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */, + E195793174425599BF9FD8A5 /* Pods-Runner.debug.xcconfig */, + CEE59FDC4692CF13B3A531A9 /* Pods-Runner.release.xcconfig */, + B01FCE518161C09C15CA2A76 /* Pods-Runner.profile.xcconfig */, + F7F8EA4F92EE4A949ACFD794 /* Pods-RunnerTests.debug.xcconfig */, + 3DC1C736C9330C4641F0E9E7 /* Pods-RunnerTests.release.xcconfig */, + 51382D7D6048D4C925DFF480 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 331C8082294A63A400263BE5 /* RunnerTests */ = { @@ -104,18 +109,13 @@ path = RunnerTests; sourceTree = ""; }; - 4A93E448D65E367BE3521A79 /* Pods */ = { + 63D2F3770F1CD08D5029406D /* Frameworks */ = { isa = PBXGroup; children = ( - B084180C65CE1BD0071A4CBE /* Pods-Runner.debug.xcconfig */, - 1530DD726CE4908A66089928 /* Pods-Runner.release.xcconfig */, - 08A7551F7E9BFB56654E76DE /* Pods-Runner.profile.xcconfig */, - 48F138619629BE326D93C070 /* Pods-RunnerTests.debug.xcconfig */, - 4F3B9CB42871F70F645E3615 /* Pods-RunnerTests.release.xcconfig */, - 24BD78ABAFCCF8EB816CB62E /* Pods-RunnerTests.profile.xcconfig */, + 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */, + 7565379A5F9A7A666B6B2425 /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 4A93E448D65E367BE3521A79 /* Pods */, - 21EC442767C73DD656FE2D59 /* Frameworks */, + 0DD397DDABE0052F1DE19F5A /* Pods */, + 63D2F3770F1CD08D5029406D /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - FAD8F02212710E729231FA4F /* [CP] Check Pods Manifest.lock */, + 8988EB036E02293A325AD4F3 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 5A8CF7734BFB3555CEDE90E5 /* Frameworks */, + DF1E44B816CCC38BF7580232 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 111F08ADA67E2D428D196844 /* [CP] Check Pods Manifest.lock */, + 9D9634CD004451CE09A4C7EC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - C4B2B59A21A6E993BCD6D9CA /* [CP] Embed Pods Frameworks */, + E44691D46E128A424E4EA835 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,43 +270,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 111F08ADA67E2D428D196844 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 8988EB036E02293A325AD4F3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -323,43 +323,43 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - C4B2B59A21A6E993BCD6D9CA /* [CP] Embed Pods Frameworks */ = { + 9D9634CD004451CE09A4C7EC /* [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-Runner-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; }; - FAD8F02212710E729231FA4F /* [CP] Check Pods Manifest.lock */ = { + E44691D46E128A424E4EA835 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,7 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -488,13 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 48F138619629BE326D93C070 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = F7F8EA4F92EE4A949ACFD794 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -507,13 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4F3B9CB42871F70F645E3615 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 3DC1C736C9330C4641F0E9E7 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -524,13 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 24BD78ABAFCCF8EB816CB62E /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 51382D7D6048D4C925DFF480 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -588,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -659,7 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -682,7 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/colorist/step_02/macos/Podfile b/colorist/step_02/macos/Podfile index ffbca9c521..ff5ddb3b8b 100644 --- a/colorist/step_02/macos/Podfile +++ b/colorist/step_02/macos/Podfile @@ -1,4 +1,3 @@ -# Firebase requires at least macOS 10.15 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/colorist/step_02/macos/Runner.xcodeproj/project.pbxproj b/colorist/step_02/macos/Runner.xcodeproj/project.pbxproj index 15b3235458..40b4a8400c 100644 --- a/colorist/step_02/macos/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_02/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ + 00CE8B0408FDDF1C1509E877 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB8005ACB477793346F9B928 /* Pods_Runner.framework */; }; + 206CB92BCBA751923E72E4E2 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - 5427AD077EE5D98165790DD3 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8FCD026063329856A8A1E8E /* Pods_Runner.framework */; }; - C7E70D731FB916EA403186E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,6 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 2569F749A6ABF530740B35A2 /* 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 = ""; }; + 32ECBAC8BD69D0512022A5D9 /* 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 = ""; }; 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 = ""; }; @@ -78,16 +80,14 @@ 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 = ""; }; - 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 623D1CBC02F271F3ECA61214 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 94A7CAE397EC9AC58E922332 /* 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 = ""; }; + 88B6597E4A24477C17D406F3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 9F89832EC14695E7A9C94337 /* 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 = ""; }; - A6F694D8E9A821932AC1E098 /* 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 = ""; }; - CABDF0521D90E67593200042 /* 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 = ""; }; - D2274B0F8F28DCA2356E3A0F /* 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 = ""; }; - D8FCD026063329856A8A1E8E /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E6CA21389EA2146B55A88E0E /* 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 = ""; }; + C0E97F7BBD8C66E786E665F2 /* 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 = ""; }; + C70CFFE525EE4A833AE81C0B /* 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 = ""; }; + CB8005ACB477793346F9B928 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C7E70D731FB916EA403186E0 /* Pods_RunnerTests.framework in Frameworks */, + 206CB92BCBA751923E72E4E2 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5427AD077EE5D98165790DD3 /* Pods_Runner.framework in Frameworks */, + 00CE8B0408FDDF1C1509E877 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 7DB2FE4510664D70DF2BE906 /* Pods */, + BEDDB94EC779878F47F51D3D /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 7DB2FE4510664D70DF2BE906 /* Pods */ = { + BEDDB94EC779878F47F51D3D /* Pods */ = { isa = PBXGroup; children = ( - D2274B0F8F28DCA2356E3A0F /* Pods-Runner.debug.xcconfig */, - A6F694D8E9A821932AC1E098 /* Pods-Runner.release.xcconfig */, - E6CA21389EA2146B55A88E0E /* Pods-Runner.profile.xcconfig */, - 94A7CAE397EC9AC58E922332 /* Pods-RunnerTests.debug.xcconfig */, - 9F89832EC14695E7A9C94337 /* Pods-RunnerTests.release.xcconfig */, - CABDF0521D90E67593200042 /* Pods-RunnerTests.profile.xcconfig */, + 623D1CBC02F271F3ECA61214 /* Pods-Runner.debug.xcconfig */, + 88B6597E4A24477C17D406F3 /* Pods-Runner.release.xcconfig */, + C0E97F7BBD8C66E786E665F2 /* Pods-Runner.profile.xcconfig */, + 2569F749A6ABF530740B35A2 /* Pods-RunnerTests.debug.xcconfig */, + 32ECBAC8BD69D0512022A5D9 /* Pods-RunnerTests.release.xcconfig */, + C70CFFE525EE4A833AE81C0B /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D8FCD026063329856A8A1E8E /* Pods_Runner.framework */, - 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */, + CB8005ACB477793346F9B928 /* Pods_Runner.framework */, + 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - E7E3156013096806478D3FE9 /* [CP] Check Pods Manifest.lock */, + D4017C7223476CF33AE69CF3 /* [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 = ( - 5761D379E2B4E3251F326B54 /* [CP] Check Pods Manifest.lock */, + ACFDE673FCF0C42F93DBDA2F /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 42CCD0E58FF12D4698CA55C0 /* [CP] Embed Pods Frameworks */, + 1C052952F6B3FC1E67DE8F54 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 1C052952F6B3FC1E67DE8F54 /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 42CCD0E58FF12D4698CA55C0 /* [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; - }; - 5761D379E2B4E3251F326B54 /* [CP] Check Pods Manifest.lock */ = { + ACFDE673FCF0C42F93DBDA2F /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - E7E3156013096806478D3FE9 /* [CP] Check Pods Manifest.lock */ = { + D4017C7223476CF33AE69CF3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,12 +473,11 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 94A7CAE397EC9AC58E922332 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2569F749A6ABF530740B35A2 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -489,12 +488,11 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9F89832EC14695E7A9C94337 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 32ECBAC8BD69D0512022A5D9 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +503,11 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CABDF0521D90E67593200042 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C70CFFE525EE4A833AE81C0B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -560,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -582,7 +579,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -592,7 +588,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile; @@ -644,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -716,7 +711,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -737,7 +731,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -747,7 +740,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -756,7 +748,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/colorist/step_02/pubspec.yaml b/colorist/step_02/pubspec.yaml index 8741b3d92e..8b3e8fc90f 100644 --- a/colorist/step_02/pubspec.yaml +++ b/colorist/step_02/pubspec.yaml @@ -4,16 +4,16 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - colorist_ui: ^0.2.4 + colorist_ui: ^0.2.5 flutter_riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - firebase_core: ^3.14.0 - firebase_ai: ^2.1.0 + firebase_core: ^4.0.0 + firebase_ai: ^3.1.0 dev_dependencies: flutter_test: @@ -23,7 +23,7 @@ dev_dependencies: riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 json_serializable: ^6.9.5 - custom_lint: ^0.7.5 + custom_lint: ^0.7.6 flutter: uses-material-design: true diff --git a/colorist/step_03/.gemini/settings.json b/colorist/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/colorist/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/colorist/step_03/.gitignore b/colorist/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/colorist/step_03/.gitignore +++ b/colorist/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/colorist/step_03/android/app/build.gradle.kts b/colorist/step_03/android/app/build.gradle.kts index 1270a172ba..575b9de8dc 100644 --- a/colorist/step_03/android/app/build.gradle.kts +++ b/colorist/step_03/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.colorist" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.colorist" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/colorist/step_03/android/build.gradle.kts b/colorist/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/colorist/step_03/android/build.gradle.kts +++ b/colorist/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/colorist/step_03/android/settings.gradle.kts b/colorist/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/colorist/step_03/android/settings.gradle.kts +++ b/colorist/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/colorist/step_03/ios/Flutter/AppFrameworkInfo.plist b/colorist/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/colorist/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/colorist/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/colorist/step_03/ios/Podfile b/colorist/step_03/ios/Podfile index 9c02792318..bf5e880b99 100644 --- a/colorist/step_03/ios/Podfile +++ b/colorist/step_03/ios/Podfile @@ -1,5 +1,5 @@ -# Firebase requires at least iOS 13.0 -platform :ios, '13.0' +# Firebase requires at least iOS 15.0 +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/colorist/step_03/ios/Runner.xcodeproj/project.pbxproj b/colorist/step_03/ios/Runner.xcodeproj/project.pbxproj index 90d67fdbb0..90f5596b2b 100644 --- a/colorist/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 264F2ECFF34EF46F319F45E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7565379A5F9A7A666B6B2425 /* 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 */; }; + 88C01DB8BD076FDD77CAA78C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */; }; 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 */; }; - A67FCE7B70B961BD04AF2DDB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 10EBED86431F405F33425C5D /* Pods_Runner.framework */; }; - FF4AE851CE17CB51F34163EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,17 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 08A7551F7E9BFB56654E76DE /* 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 = ""; }; - 10EBED86431F405F33425C5D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 1530DD726CE4908A66089928 /* 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 = ""; }; - 24BD78ABAFCCF8EB816CB62E /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 48F138619629BE326D93C070 /* 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 = ""; }; - 4F3B9CB42871F70F645E3615 /* 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 = ""; }; + 3DC1C736C9330C4641F0E9E7 /* 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 = ""; }; + 51382D7D6048D4C925DFF480 /* 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 = ""; }; + 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7565379A5F9A7A666B6B2425 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -64,36 +61,44 @@ 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 = ""; }; - B084180C65CE1BD0071A4CBE /* 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 = ""; }; + B01FCE518161C09C15CA2A76 /* 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 = ""; }; + CEE59FDC4692CF13B3A531A9 /* 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 = ""; }; + E195793174425599BF9FD8A5 /* 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 = ""; }; + F7F8EA4F92EE4A949ACFD794 /* 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 */ - 5A8CF7734BFB3555CEDE90E5 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FF4AE851CE17CB51F34163EC /* Pods_RunnerTests.framework in Frameworks */, + 88C01DB8BD076FDD77CAA78C /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + DF1E44B816CCC38BF7580232 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A67FCE7B70B961BD04AF2DDB /* Pods_Runner.framework in Frameworks */, + 264F2ECFF34EF46F319F45E0 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 21EC442767C73DD656FE2D59 /* Frameworks */ = { + 0DD397DDABE0052F1DE19F5A /* Pods */ = { isa = PBXGroup; children = ( - 10EBED86431F405F33425C5D /* Pods_Runner.framework */, - 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */, + E195793174425599BF9FD8A5 /* Pods-Runner.debug.xcconfig */, + CEE59FDC4692CF13B3A531A9 /* Pods-Runner.release.xcconfig */, + B01FCE518161C09C15CA2A76 /* Pods-Runner.profile.xcconfig */, + F7F8EA4F92EE4A949ACFD794 /* Pods-RunnerTests.debug.xcconfig */, + 3DC1C736C9330C4641F0E9E7 /* Pods-RunnerTests.release.xcconfig */, + 51382D7D6048D4C925DFF480 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 331C8082294A63A400263BE5 /* RunnerTests */ = { @@ -104,18 +109,13 @@ path = RunnerTests; sourceTree = ""; }; - 4A93E448D65E367BE3521A79 /* Pods */ = { + 63D2F3770F1CD08D5029406D /* Frameworks */ = { isa = PBXGroup; children = ( - B084180C65CE1BD0071A4CBE /* Pods-Runner.debug.xcconfig */, - 1530DD726CE4908A66089928 /* Pods-Runner.release.xcconfig */, - 08A7551F7E9BFB56654E76DE /* Pods-Runner.profile.xcconfig */, - 48F138619629BE326D93C070 /* Pods-RunnerTests.debug.xcconfig */, - 4F3B9CB42871F70F645E3615 /* Pods-RunnerTests.release.xcconfig */, - 24BD78ABAFCCF8EB816CB62E /* Pods-RunnerTests.profile.xcconfig */, + 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */, + 7565379A5F9A7A666B6B2425 /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 4A93E448D65E367BE3521A79 /* Pods */, - 21EC442767C73DD656FE2D59 /* Frameworks */, + 0DD397DDABE0052F1DE19F5A /* Pods */, + 63D2F3770F1CD08D5029406D /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - FAD8F02212710E729231FA4F /* [CP] Check Pods Manifest.lock */, + 8988EB036E02293A325AD4F3 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 5A8CF7734BFB3555CEDE90E5 /* Frameworks */, + DF1E44B816CCC38BF7580232 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 111F08ADA67E2D428D196844 /* [CP] Check Pods Manifest.lock */, + 9D9634CD004451CE09A4C7EC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - C4B2B59A21A6E993BCD6D9CA /* [CP] Embed Pods Frameworks */, + E44691D46E128A424E4EA835 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,43 +270,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 111F08ADA67E2D428D196844 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 8988EB036E02293A325AD4F3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -323,43 +323,43 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - C4B2B59A21A6E993BCD6D9CA /* [CP] Embed Pods Frameworks */ = { + 9D9634CD004451CE09A4C7EC /* [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-Runner-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; }; - FAD8F02212710E729231FA4F /* [CP] Check Pods Manifest.lock */ = { + E44691D46E128A424E4EA835 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,7 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -488,13 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 48F138619629BE326D93C070 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = F7F8EA4F92EE4A949ACFD794 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -507,13 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4F3B9CB42871F70F645E3615 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 3DC1C736C9330C4641F0E9E7 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -524,13 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 24BD78ABAFCCF8EB816CB62E /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 51382D7D6048D4C925DFF480 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -588,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -659,7 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -682,7 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/colorist/step_03/macos/Podfile b/colorist/step_03/macos/Podfile index ffbca9c521..ff5ddb3b8b 100644 --- a/colorist/step_03/macos/Podfile +++ b/colorist/step_03/macos/Podfile @@ -1,4 +1,3 @@ -# Firebase requires at least macOS 10.15 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/colorist/step_03/macos/Runner.xcodeproj/project.pbxproj b/colorist/step_03/macos/Runner.xcodeproj/project.pbxproj index 15b3235458..40b4a8400c 100644 --- a/colorist/step_03/macos/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_03/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ + 00CE8B0408FDDF1C1509E877 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB8005ACB477793346F9B928 /* Pods_Runner.framework */; }; + 206CB92BCBA751923E72E4E2 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - 5427AD077EE5D98165790DD3 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8FCD026063329856A8A1E8E /* Pods_Runner.framework */; }; - C7E70D731FB916EA403186E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,6 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 2569F749A6ABF530740B35A2 /* 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 = ""; }; + 32ECBAC8BD69D0512022A5D9 /* 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 = ""; }; 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 = ""; }; @@ -78,16 +80,14 @@ 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 = ""; }; - 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 623D1CBC02F271F3ECA61214 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 94A7CAE397EC9AC58E922332 /* 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 = ""; }; + 88B6597E4A24477C17D406F3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 9F89832EC14695E7A9C94337 /* 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 = ""; }; - A6F694D8E9A821932AC1E098 /* 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 = ""; }; - CABDF0521D90E67593200042 /* 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 = ""; }; - D2274B0F8F28DCA2356E3A0F /* 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 = ""; }; - D8FCD026063329856A8A1E8E /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E6CA21389EA2146B55A88E0E /* 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 = ""; }; + C0E97F7BBD8C66E786E665F2 /* 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 = ""; }; + C70CFFE525EE4A833AE81C0B /* 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 = ""; }; + CB8005ACB477793346F9B928 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C7E70D731FB916EA403186E0 /* Pods_RunnerTests.framework in Frameworks */, + 206CB92BCBA751923E72E4E2 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5427AD077EE5D98165790DD3 /* Pods_Runner.framework in Frameworks */, + 00CE8B0408FDDF1C1509E877 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 7DB2FE4510664D70DF2BE906 /* Pods */, + BEDDB94EC779878F47F51D3D /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 7DB2FE4510664D70DF2BE906 /* Pods */ = { + BEDDB94EC779878F47F51D3D /* Pods */ = { isa = PBXGroup; children = ( - D2274B0F8F28DCA2356E3A0F /* Pods-Runner.debug.xcconfig */, - A6F694D8E9A821932AC1E098 /* Pods-Runner.release.xcconfig */, - E6CA21389EA2146B55A88E0E /* Pods-Runner.profile.xcconfig */, - 94A7CAE397EC9AC58E922332 /* Pods-RunnerTests.debug.xcconfig */, - 9F89832EC14695E7A9C94337 /* Pods-RunnerTests.release.xcconfig */, - CABDF0521D90E67593200042 /* Pods-RunnerTests.profile.xcconfig */, + 623D1CBC02F271F3ECA61214 /* Pods-Runner.debug.xcconfig */, + 88B6597E4A24477C17D406F3 /* Pods-Runner.release.xcconfig */, + C0E97F7BBD8C66E786E665F2 /* Pods-Runner.profile.xcconfig */, + 2569F749A6ABF530740B35A2 /* Pods-RunnerTests.debug.xcconfig */, + 32ECBAC8BD69D0512022A5D9 /* Pods-RunnerTests.release.xcconfig */, + C70CFFE525EE4A833AE81C0B /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D8FCD026063329856A8A1E8E /* Pods_Runner.framework */, - 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */, + CB8005ACB477793346F9B928 /* Pods_Runner.framework */, + 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - E7E3156013096806478D3FE9 /* [CP] Check Pods Manifest.lock */, + D4017C7223476CF33AE69CF3 /* [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 = ( - 5761D379E2B4E3251F326B54 /* [CP] Check Pods Manifest.lock */, + ACFDE673FCF0C42F93DBDA2F /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 42CCD0E58FF12D4698CA55C0 /* [CP] Embed Pods Frameworks */, + 1C052952F6B3FC1E67DE8F54 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 1C052952F6B3FC1E67DE8F54 /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 42CCD0E58FF12D4698CA55C0 /* [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; - }; - 5761D379E2B4E3251F326B54 /* [CP] Check Pods Manifest.lock */ = { + ACFDE673FCF0C42F93DBDA2F /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - E7E3156013096806478D3FE9 /* [CP] Check Pods Manifest.lock */ = { + D4017C7223476CF33AE69CF3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,12 +473,11 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 94A7CAE397EC9AC58E922332 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2569F749A6ABF530740B35A2 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -489,12 +488,11 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9F89832EC14695E7A9C94337 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 32ECBAC8BD69D0512022A5D9 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +503,11 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CABDF0521D90E67593200042 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C70CFFE525EE4A833AE81C0B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -560,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -582,7 +579,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -592,7 +588,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile; @@ -644,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -716,7 +711,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -737,7 +731,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -747,7 +740,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -756,7 +748,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/colorist/step_03/pubspec.yaml b/colorist/step_03/pubspec.yaml index 39e2184367..e86280f4b6 100644 --- a/colorist/step_03/pubspec.yaml +++ b/colorist/step_03/pubspec.yaml @@ -4,16 +4,16 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - colorist_ui: ^0.2.4 + colorist_ui: ^0.2.5 flutter_riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - firebase_core: ^3.14.0 - firebase_ai: ^2.1.0 + firebase_core: ^4.0.0 + firebase_ai: ^3.1.0 dev_dependencies: flutter_test: @@ -23,7 +23,7 @@ dev_dependencies: riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 json_serializable: ^6.9.5 - custom_lint: ^0.7.5 + custom_lint: ^0.7.6 flutter: uses-material-design: true diff --git a/colorist/step_04/.gemini/settings.json b/colorist/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/colorist/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/colorist/step_04/.gitignore b/colorist/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/colorist/step_04/.gitignore +++ b/colorist/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/colorist/step_04/android/app/build.gradle.kts b/colorist/step_04/android/app/build.gradle.kts index 1270a172ba..575b9de8dc 100644 --- a/colorist/step_04/android/app/build.gradle.kts +++ b/colorist/step_04/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.colorist" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.colorist" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/colorist/step_04/android/build.gradle.kts b/colorist/step_04/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/colorist/step_04/android/build.gradle.kts +++ b/colorist/step_04/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/colorist/step_04/android/settings.gradle.kts b/colorist/step_04/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/colorist/step_04/android/settings.gradle.kts +++ b/colorist/step_04/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/colorist/step_04/ios/Flutter/AppFrameworkInfo.plist b/colorist/step_04/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/colorist/step_04/ios/Flutter/AppFrameworkInfo.plist +++ b/colorist/step_04/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/colorist/step_04/ios/Podfile b/colorist/step_04/ios/Podfile index 9c02792318..bf5e880b99 100644 --- a/colorist/step_04/ios/Podfile +++ b/colorist/step_04/ios/Podfile @@ -1,5 +1,5 @@ -# Firebase requires at least iOS 13.0 -platform :ios, '13.0' +# Firebase requires at least iOS 15.0 +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/colorist/step_04/ios/Runner.xcodeproj/project.pbxproj b/colorist/step_04/ios/Runner.xcodeproj/project.pbxproj index 90d67fdbb0..90f5596b2b 100644 --- a/colorist/step_04/ios/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_04/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 264F2ECFF34EF46F319F45E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7565379A5F9A7A666B6B2425 /* 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 */; }; + 88C01DB8BD076FDD77CAA78C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */; }; 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 */; }; - A67FCE7B70B961BD04AF2DDB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 10EBED86431F405F33425C5D /* Pods_Runner.framework */; }; - FF4AE851CE17CB51F34163EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,17 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 08A7551F7E9BFB56654E76DE /* 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 = ""; }; - 10EBED86431F405F33425C5D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 1530DD726CE4908A66089928 /* 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 = ""; }; - 24BD78ABAFCCF8EB816CB62E /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 48F138619629BE326D93C070 /* 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 = ""; }; - 4F3B9CB42871F70F645E3615 /* 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 = ""; }; + 3DC1C736C9330C4641F0E9E7 /* 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 = ""; }; + 51382D7D6048D4C925DFF480 /* 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 = ""; }; + 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7565379A5F9A7A666B6B2425 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -64,36 +61,44 @@ 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 = ""; }; - B084180C65CE1BD0071A4CBE /* 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 = ""; }; + B01FCE518161C09C15CA2A76 /* 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 = ""; }; + CEE59FDC4692CF13B3A531A9 /* 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 = ""; }; + E195793174425599BF9FD8A5 /* 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 = ""; }; + F7F8EA4F92EE4A949ACFD794 /* 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 */ - 5A8CF7734BFB3555CEDE90E5 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FF4AE851CE17CB51F34163EC /* Pods_RunnerTests.framework in Frameworks */, + 88C01DB8BD076FDD77CAA78C /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + DF1E44B816CCC38BF7580232 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A67FCE7B70B961BD04AF2DDB /* Pods_Runner.framework in Frameworks */, + 264F2ECFF34EF46F319F45E0 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 21EC442767C73DD656FE2D59 /* Frameworks */ = { + 0DD397DDABE0052F1DE19F5A /* Pods */ = { isa = PBXGroup; children = ( - 10EBED86431F405F33425C5D /* Pods_Runner.framework */, - 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */, + E195793174425599BF9FD8A5 /* Pods-Runner.debug.xcconfig */, + CEE59FDC4692CF13B3A531A9 /* Pods-Runner.release.xcconfig */, + B01FCE518161C09C15CA2A76 /* Pods-Runner.profile.xcconfig */, + F7F8EA4F92EE4A949ACFD794 /* Pods-RunnerTests.debug.xcconfig */, + 3DC1C736C9330C4641F0E9E7 /* Pods-RunnerTests.release.xcconfig */, + 51382D7D6048D4C925DFF480 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 331C8082294A63A400263BE5 /* RunnerTests */ = { @@ -104,18 +109,13 @@ path = RunnerTests; sourceTree = ""; }; - 4A93E448D65E367BE3521A79 /* Pods */ = { + 63D2F3770F1CD08D5029406D /* Frameworks */ = { isa = PBXGroup; children = ( - B084180C65CE1BD0071A4CBE /* Pods-Runner.debug.xcconfig */, - 1530DD726CE4908A66089928 /* Pods-Runner.release.xcconfig */, - 08A7551F7E9BFB56654E76DE /* Pods-Runner.profile.xcconfig */, - 48F138619629BE326D93C070 /* Pods-RunnerTests.debug.xcconfig */, - 4F3B9CB42871F70F645E3615 /* Pods-RunnerTests.release.xcconfig */, - 24BD78ABAFCCF8EB816CB62E /* Pods-RunnerTests.profile.xcconfig */, + 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */, + 7565379A5F9A7A666B6B2425 /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 4A93E448D65E367BE3521A79 /* Pods */, - 21EC442767C73DD656FE2D59 /* Frameworks */, + 0DD397DDABE0052F1DE19F5A /* Pods */, + 63D2F3770F1CD08D5029406D /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - FAD8F02212710E729231FA4F /* [CP] Check Pods Manifest.lock */, + 8988EB036E02293A325AD4F3 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 5A8CF7734BFB3555CEDE90E5 /* Frameworks */, + DF1E44B816CCC38BF7580232 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 111F08ADA67E2D428D196844 /* [CP] Check Pods Manifest.lock */, + 9D9634CD004451CE09A4C7EC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - C4B2B59A21A6E993BCD6D9CA /* [CP] Embed Pods Frameworks */, + E44691D46E128A424E4EA835 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,43 +270,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 111F08ADA67E2D428D196844 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 8988EB036E02293A325AD4F3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -323,43 +323,43 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - C4B2B59A21A6E993BCD6D9CA /* [CP] Embed Pods Frameworks */ = { + 9D9634CD004451CE09A4C7EC /* [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-Runner-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; }; - FAD8F02212710E729231FA4F /* [CP] Check Pods Manifest.lock */ = { + E44691D46E128A424E4EA835 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,7 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -488,13 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 48F138619629BE326D93C070 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = F7F8EA4F92EE4A949ACFD794 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -507,13 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4F3B9CB42871F70F645E3615 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 3DC1C736C9330C4641F0E9E7 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -524,13 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 24BD78ABAFCCF8EB816CB62E /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 51382D7D6048D4C925DFF480 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -588,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -659,7 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -682,7 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/colorist/step_04/macos/Podfile b/colorist/step_04/macos/Podfile index ffbca9c521..ff5ddb3b8b 100644 --- a/colorist/step_04/macos/Podfile +++ b/colorist/step_04/macos/Podfile @@ -1,4 +1,3 @@ -# Firebase requires at least macOS 10.15 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/colorist/step_04/macos/Runner.xcodeproj/project.pbxproj b/colorist/step_04/macos/Runner.xcodeproj/project.pbxproj index 15b3235458..40b4a8400c 100644 --- a/colorist/step_04/macos/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_04/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ + 00CE8B0408FDDF1C1509E877 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB8005ACB477793346F9B928 /* Pods_Runner.framework */; }; + 206CB92BCBA751923E72E4E2 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - 5427AD077EE5D98165790DD3 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8FCD026063329856A8A1E8E /* Pods_Runner.framework */; }; - C7E70D731FB916EA403186E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,6 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 2569F749A6ABF530740B35A2 /* 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 = ""; }; + 32ECBAC8BD69D0512022A5D9 /* 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 = ""; }; 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 = ""; }; @@ -78,16 +80,14 @@ 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 = ""; }; - 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 623D1CBC02F271F3ECA61214 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 94A7CAE397EC9AC58E922332 /* 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 = ""; }; + 88B6597E4A24477C17D406F3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 9F89832EC14695E7A9C94337 /* 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 = ""; }; - A6F694D8E9A821932AC1E098 /* 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 = ""; }; - CABDF0521D90E67593200042 /* 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 = ""; }; - D2274B0F8F28DCA2356E3A0F /* 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 = ""; }; - D8FCD026063329856A8A1E8E /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E6CA21389EA2146B55A88E0E /* 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 = ""; }; + C0E97F7BBD8C66E786E665F2 /* 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 = ""; }; + C70CFFE525EE4A833AE81C0B /* 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 = ""; }; + CB8005ACB477793346F9B928 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C7E70D731FB916EA403186E0 /* Pods_RunnerTests.framework in Frameworks */, + 206CB92BCBA751923E72E4E2 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5427AD077EE5D98165790DD3 /* Pods_Runner.framework in Frameworks */, + 00CE8B0408FDDF1C1509E877 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 7DB2FE4510664D70DF2BE906 /* Pods */, + BEDDB94EC779878F47F51D3D /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 7DB2FE4510664D70DF2BE906 /* Pods */ = { + BEDDB94EC779878F47F51D3D /* Pods */ = { isa = PBXGroup; children = ( - D2274B0F8F28DCA2356E3A0F /* Pods-Runner.debug.xcconfig */, - A6F694D8E9A821932AC1E098 /* Pods-Runner.release.xcconfig */, - E6CA21389EA2146B55A88E0E /* Pods-Runner.profile.xcconfig */, - 94A7CAE397EC9AC58E922332 /* Pods-RunnerTests.debug.xcconfig */, - 9F89832EC14695E7A9C94337 /* Pods-RunnerTests.release.xcconfig */, - CABDF0521D90E67593200042 /* Pods-RunnerTests.profile.xcconfig */, + 623D1CBC02F271F3ECA61214 /* Pods-Runner.debug.xcconfig */, + 88B6597E4A24477C17D406F3 /* Pods-Runner.release.xcconfig */, + C0E97F7BBD8C66E786E665F2 /* Pods-Runner.profile.xcconfig */, + 2569F749A6ABF530740B35A2 /* Pods-RunnerTests.debug.xcconfig */, + 32ECBAC8BD69D0512022A5D9 /* Pods-RunnerTests.release.xcconfig */, + C70CFFE525EE4A833AE81C0B /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D8FCD026063329856A8A1E8E /* Pods_Runner.framework */, - 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */, + CB8005ACB477793346F9B928 /* Pods_Runner.framework */, + 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - E7E3156013096806478D3FE9 /* [CP] Check Pods Manifest.lock */, + D4017C7223476CF33AE69CF3 /* [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 = ( - 5761D379E2B4E3251F326B54 /* [CP] Check Pods Manifest.lock */, + ACFDE673FCF0C42F93DBDA2F /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 42CCD0E58FF12D4698CA55C0 /* [CP] Embed Pods Frameworks */, + 1C052952F6B3FC1E67DE8F54 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 1C052952F6B3FC1E67DE8F54 /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 42CCD0E58FF12D4698CA55C0 /* [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; - }; - 5761D379E2B4E3251F326B54 /* [CP] Check Pods Manifest.lock */ = { + ACFDE673FCF0C42F93DBDA2F /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - E7E3156013096806478D3FE9 /* [CP] Check Pods Manifest.lock */ = { + D4017C7223476CF33AE69CF3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,12 +473,11 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 94A7CAE397EC9AC58E922332 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2569F749A6ABF530740B35A2 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -489,12 +488,11 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9F89832EC14695E7A9C94337 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 32ECBAC8BD69D0512022A5D9 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +503,11 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CABDF0521D90E67593200042 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C70CFFE525EE4A833AE81C0B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -560,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -582,7 +579,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -592,7 +588,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile; @@ -644,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -716,7 +711,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -737,7 +731,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -747,7 +740,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -756,7 +748,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/colorist/step_04/pubspec.yaml b/colorist/step_04/pubspec.yaml index 39e2184367..e86280f4b6 100644 --- a/colorist/step_04/pubspec.yaml +++ b/colorist/step_04/pubspec.yaml @@ -4,16 +4,16 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - colorist_ui: ^0.2.4 + colorist_ui: ^0.2.5 flutter_riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - firebase_core: ^3.14.0 - firebase_ai: ^2.1.0 + firebase_core: ^4.0.0 + firebase_ai: ^3.1.0 dev_dependencies: flutter_test: @@ -23,7 +23,7 @@ dev_dependencies: riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 json_serializable: ^6.9.5 - custom_lint: ^0.7.5 + custom_lint: ^0.7.6 flutter: uses-material-design: true diff --git a/colorist/step_05/.gemini/settings.json b/colorist/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/colorist/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/colorist/step_05/.gitignore b/colorist/step_05/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/colorist/step_05/.gitignore +++ b/colorist/step_05/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/colorist/step_05/android/app/build.gradle.kts b/colorist/step_05/android/app/build.gradle.kts index 1270a172ba..575b9de8dc 100644 --- a/colorist/step_05/android/app/build.gradle.kts +++ b/colorist/step_05/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.colorist" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.colorist" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/colorist/step_05/android/build.gradle.kts b/colorist/step_05/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/colorist/step_05/android/build.gradle.kts +++ b/colorist/step_05/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/colorist/step_05/android/settings.gradle.kts b/colorist/step_05/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/colorist/step_05/android/settings.gradle.kts +++ b/colorist/step_05/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/colorist/step_05/ios/Flutter/AppFrameworkInfo.plist b/colorist/step_05/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/colorist/step_05/ios/Flutter/AppFrameworkInfo.plist +++ b/colorist/step_05/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/colorist/step_05/ios/Podfile b/colorist/step_05/ios/Podfile index 9c02792318..bf5e880b99 100644 --- a/colorist/step_05/ios/Podfile +++ b/colorist/step_05/ios/Podfile @@ -1,5 +1,5 @@ -# Firebase requires at least iOS 13.0 -platform :ios, '13.0' +# Firebase requires at least iOS 15.0 +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/colorist/step_05/ios/Runner.xcodeproj/project.pbxproj b/colorist/step_05/ios/Runner.xcodeproj/project.pbxproj index 90d67fdbb0..90f5596b2b 100644 --- a/colorist/step_05/ios/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_05/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 264F2ECFF34EF46F319F45E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7565379A5F9A7A666B6B2425 /* 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 */; }; + 88C01DB8BD076FDD77CAA78C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */; }; 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 */; }; - A67FCE7B70B961BD04AF2DDB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 10EBED86431F405F33425C5D /* Pods_Runner.framework */; }; - FF4AE851CE17CB51F34163EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,17 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 08A7551F7E9BFB56654E76DE /* 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 = ""; }; - 10EBED86431F405F33425C5D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 1530DD726CE4908A66089928 /* 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 = ""; }; - 24BD78ABAFCCF8EB816CB62E /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 48F138619629BE326D93C070 /* 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 = ""; }; - 4F3B9CB42871F70F645E3615 /* 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 = ""; }; + 3DC1C736C9330C4641F0E9E7 /* 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 = ""; }; + 51382D7D6048D4C925DFF480 /* 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 = ""; }; + 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7565379A5F9A7A666B6B2425 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -64,36 +61,44 @@ 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 = ""; }; - B084180C65CE1BD0071A4CBE /* 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 = ""; }; + B01FCE518161C09C15CA2A76 /* 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 = ""; }; + CEE59FDC4692CF13B3A531A9 /* 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 = ""; }; + E195793174425599BF9FD8A5 /* 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 = ""; }; + F7F8EA4F92EE4A949ACFD794 /* 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 */ - 5A8CF7734BFB3555CEDE90E5 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FF4AE851CE17CB51F34163EC /* Pods_RunnerTests.framework in Frameworks */, + 88C01DB8BD076FDD77CAA78C /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + DF1E44B816CCC38BF7580232 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A67FCE7B70B961BD04AF2DDB /* Pods_Runner.framework in Frameworks */, + 264F2ECFF34EF46F319F45E0 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 21EC442767C73DD656FE2D59 /* Frameworks */ = { + 0DD397DDABE0052F1DE19F5A /* Pods */ = { isa = PBXGroup; children = ( - 10EBED86431F405F33425C5D /* Pods_Runner.framework */, - 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */, + E195793174425599BF9FD8A5 /* Pods-Runner.debug.xcconfig */, + CEE59FDC4692CF13B3A531A9 /* Pods-Runner.release.xcconfig */, + B01FCE518161C09C15CA2A76 /* Pods-Runner.profile.xcconfig */, + F7F8EA4F92EE4A949ACFD794 /* Pods-RunnerTests.debug.xcconfig */, + 3DC1C736C9330C4641F0E9E7 /* Pods-RunnerTests.release.xcconfig */, + 51382D7D6048D4C925DFF480 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 331C8082294A63A400263BE5 /* RunnerTests */ = { @@ -104,18 +109,13 @@ path = RunnerTests; sourceTree = ""; }; - 4A93E448D65E367BE3521A79 /* Pods */ = { + 63D2F3770F1CD08D5029406D /* Frameworks */ = { isa = PBXGroup; children = ( - B084180C65CE1BD0071A4CBE /* Pods-Runner.debug.xcconfig */, - 1530DD726CE4908A66089928 /* Pods-Runner.release.xcconfig */, - 08A7551F7E9BFB56654E76DE /* Pods-Runner.profile.xcconfig */, - 48F138619629BE326D93C070 /* Pods-RunnerTests.debug.xcconfig */, - 4F3B9CB42871F70F645E3615 /* Pods-RunnerTests.release.xcconfig */, - 24BD78ABAFCCF8EB816CB62E /* Pods-RunnerTests.profile.xcconfig */, + 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */, + 7565379A5F9A7A666B6B2425 /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 4A93E448D65E367BE3521A79 /* Pods */, - 21EC442767C73DD656FE2D59 /* Frameworks */, + 0DD397DDABE0052F1DE19F5A /* Pods */, + 63D2F3770F1CD08D5029406D /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - FAD8F02212710E729231FA4F /* [CP] Check Pods Manifest.lock */, + 8988EB036E02293A325AD4F3 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 5A8CF7734BFB3555CEDE90E5 /* Frameworks */, + DF1E44B816CCC38BF7580232 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 111F08ADA67E2D428D196844 /* [CP] Check Pods Manifest.lock */, + 9D9634CD004451CE09A4C7EC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - C4B2B59A21A6E993BCD6D9CA /* [CP] Embed Pods Frameworks */, + E44691D46E128A424E4EA835 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,43 +270,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 111F08ADA67E2D428D196844 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 8988EB036E02293A325AD4F3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -323,43 +323,43 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - C4B2B59A21A6E993BCD6D9CA /* [CP] Embed Pods Frameworks */ = { + 9D9634CD004451CE09A4C7EC /* [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-Runner-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; }; - FAD8F02212710E729231FA4F /* [CP] Check Pods Manifest.lock */ = { + E44691D46E128A424E4EA835 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,7 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -488,13 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 48F138619629BE326D93C070 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = F7F8EA4F92EE4A949ACFD794 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -507,13 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4F3B9CB42871F70F645E3615 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 3DC1C736C9330C4641F0E9E7 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -524,13 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 24BD78ABAFCCF8EB816CB62E /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 51382D7D6048D4C925DFF480 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -588,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -659,7 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -682,7 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/colorist/step_05/macos/Podfile b/colorist/step_05/macos/Podfile index ffbca9c521..ff5ddb3b8b 100644 --- a/colorist/step_05/macos/Podfile +++ b/colorist/step_05/macos/Podfile @@ -1,4 +1,3 @@ -# Firebase requires at least macOS 10.15 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/colorist/step_05/macos/Runner.xcodeproj/project.pbxproj b/colorist/step_05/macos/Runner.xcodeproj/project.pbxproj index 15b3235458..40b4a8400c 100644 --- a/colorist/step_05/macos/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_05/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ + 00CE8B0408FDDF1C1509E877 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB8005ACB477793346F9B928 /* Pods_Runner.framework */; }; + 206CB92BCBA751923E72E4E2 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - 5427AD077EE5D98165790DD3 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8FCD026063329856A8A1E8E /* Pods_Runner.framework */; }; - C7E70D731FB916EA403186E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,6 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 2569F749A6ABF530740B35A2 /* 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 = ""; }; + 32ECBAC8BD69D0512022A5D9 /* 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 = ""; }; 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 = ""; }; @@ -78,16 +80,14 @@ 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 = ""; }; - 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 623D1CBC02F271F3ECA61214 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 94A7CAE397EC9AC58E922332 /* 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 = ""; }; + 88B6597E4A24477C17D406F3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 9F89832EC14695E7A9C94337 /* 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 = ""; }; - A6F694D8E9A821932AC1E098 /* 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 = ""; }; - CABDF0521D90E67593200042 /* 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 = ""; }; - D2274B0F8F28DCA2356E3A0F /* 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 = ""; }; - D8FCD026063329856A8A1E8E /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E6CA21389EA2146B55A88E0E /* 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 = ""; }; + C0E97F7BBD8C66E786E665F2 /* 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 = ""; }; + C70CFFE525EE4A833AE81C0B /* 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 = ""; }; + CB8005ACB477793346F9B928 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C7E70D731FB916EA403186E0 /* Pods_RunnerTests.framework in Frameworks */, + 206CB92BCBA751923E72E4E2 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5427AD077EE5D98165790DD3 /* Pods_Runner.framework in Frameworks */, + 00CE8B0408FDDF1C1509E877 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 7DB2FE4510664D70DF2BE906 /* Pods */, + BEDDB94EC779878F47F51D3D /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 7DB2FE4510664D70DF2BE906 /* Pods */ = { + BEDDB94EC779878F47F51D3D /* Pods */ = { isa = PBXGroup; children = ( - D2274B0F8F28DCA2356E3A0F /* Pods-Runner.debug.xcconfig */, - A6F694D8E9A821932AC1E098 /* Pods-Runner.release.xcconfig */, - E6CA21389EA2146B55A88E0E /* Pods-Runner.profile.xcconfig */, - 94A7CAE397EC9AC58E922332 /* Pods-RunnerTests.debug.xcconfig */, - 9F89832EC14695E7A9C94337 /* Pods-RunnerTests.release.xcconfig */, - CABDF0521D90E67593200042 /* Pods-RunnerTests.profile.xcconfig */, + 623D1CBC02F271F3ECA61214 /* Pods-Runner.debug.xcconfig */, + 88B6597E4A24477C17D406F3 /* Pods-Runner.release.xcconfig */, + C0E97F7BBD8C66E786E665F2 /* Pods-Runner.profile.xcconfig */, + 2569F749A6ABF530740B35A2 /* Pods-RunnerTests.debug.xcconfig */, + 32ECBAC8BD69D0512022A5D9 /* Pods-RunnerTests.release.xcconfig */, + C70CFFE525EE4A833AE81C0B /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D8FCD026063329856A8A1E8E /* Pods_Runner.framework */, - 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */, + CB8005ACB477793346F9B928 /* Pods_Runner.framework */, + 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - E7E3156013096806478D3FE9 /* [CP] Check Pods Manifest.lock */, + D4017C7223476CF33AE69CF3 /* [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 = ( - 5761D379E2B4E3251F326B54 /* [CP] Check Pods Manifest.lock */, + ACFDE673FCF0C42F93DBDA2F /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 42CCD0E58FF12D4698CA55C0 /* [CP] Embed Pods Frameworks */, + 1C052952F6B3FC1E67DE8F54 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 1C052952F6B3FC1E67DE8F54 /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 42CCD0E58FF12D4698CA55C0 /* [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; - }; - 5761D379E2B4E3251F326B54 /* [CP] Check Pods Manifest.lock */ = { + ACFDE673FCF0C42F93DBDA2F /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - E7E3156013096806478D3FE9 /* [CP] Check Pods Manifest.lock */ = { + D4017C7223476CF33AE69CF3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,12 +473,11 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 94A7CAE397EC9AC58E922332 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2569F749A6ABF530740B35A2 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -489,12 +488,11 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9F89832EC14695E7A9C94337 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 32ECBAC8BD69D0512022A5D9 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +503,11 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CABDF0521D90E67593200042 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C70CFFE525EE4A833AE81C0B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -560,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -582,7 +579,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -592,7 +588,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile; @@ -644,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -716,7 +711,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -737,7 +731,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -747,7 +740,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -756,7 +748,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/colorist/step_05/pubspec.yaml b/colorist/step_05/pubspec.yaml index 39e2184367..e86280f4b6 100644 --- a/colorist/step_05/pubspec.yaml +++ b/colorist/step_05/pubspec.yaml @@ -4,16 +4,16 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - colorist_ui: ^0.2.4 + colorist_ui: ^0.2.5 flutter_riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - firebase_core: ^3.14.0 - firebase_ai: ^2.1.0 + firebase_core: ^4.0.0 + firebase_ai: ^3.1.0 dev_dependencies: flutter_test: @@ -23,7 +23,7 @@ dev_dependencies: riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 json_serializable: ^6.9.5 - custom_lint: ^0.7.5 + custom_lint: ^0.7.6 flutter: uses-material-design: true diff --git a/colorist/step_06/.gemini/settings.json b/colorist/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/colorist/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/colorist/step_06/.gitignore b/colorist/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/colorist/step_06/.gitignore +++ b/colorist/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/colorist/step_06/android/app/build.gradle.kts b/colorist/step_06/android/app/build.gradle.kts index 1270a172ba..575b9de8dc 100644 --- a/colorist/step_06/android/app/build.gradle.kts +++ b/colorist/step_06/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.colorist" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.colorist" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/colorist/step_06/android/build.gradle.kts b/colorist/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/colorist/step_06/android/build.gradle.kts +++ b/colorist/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/colorist/step_06/android/settings.gradle.kts b/colorist/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/colorist/step_06/android/settings.gradle.kts +++ b/colorist/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/colorist/step_06/ios/Flutter/AppFrameworkInfo.plist b/colorist/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/colorist/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/colorist/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/colorist/step_06/ios/Podfile b/colorist/step_06/ios/Podfile index 9c02792318..bf5e880b99 100644 --- a/colorist/step_06/ios/Podfile +++ b/colorist/step_06/ios/Podfile @@ -1,5 +1,5 @@ -# Firebase requires at least iOS 13.0 -platform :ios, '13.0' +# Firebase requires at least iOS 15.0 +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/colorist/step_06/ios/Runner.xcodeproj/project.pbxproj b/colorist/step_06/ios/Runner.xcodeproj/project.pbxproj index 90d67fdbb0..90f5596b2b 100644 --- a/colorist/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 264F2ECFF34EF46F319F45E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7565379A5F9A7A666B6B2425 /* 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 */; }; + 88C01DB8BD076FDD77CAA78C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */; }; 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 */; }; - A67FCE7B70B961BD04AF2DDB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 10EBED86431F405F33425C5D /* Pods_Runner.framework */; }; - FF4AE851CE17CB51F34163EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,17 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 08A7551F7E9BFB56654E76DE /* 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 = ""; }; - 10EBED86431F405F33425C5D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 1530DD726CE4908A66089928 /* 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 = ""; }; - 24BD78ABAFCCF8EB816CB62E /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 48F138619629BE326D93C070 /* 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 = ""; }; - 4F3B9CB42871F70F645E3615 /* 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 = ""; }; + 3DC1C736C9330C4641F0E9E7 /* 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 = ""; }; + 51382D7D6048D4C925DFF480 /* 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 = ""; }; + 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7565379A5F9A7A666B6B2425 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -64,36 +61,44 @@ 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 = ""; }; - B084180C65CE1BD0071A4CBE /* 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 = ""; }; + B01FCE518161C09C15CA2A76 /* 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 = ""; }; + CEE59FDC4692CF13B3A531A9 /* 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 = ""; }; + E195793174425599BF9FD8A5 /* 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 = ""; }; + F7F8EA4F92EE4A949ACFD794 /* 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 */ - 5A8CF7734BFB3555CEDE90E5 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FF4AE851CE17CB51F34163EC /* Pods_RunnerTests.framework in Frameworks */, + 88C01DB8BD076FDD77CAA78C /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + DF1E44B816CCC38BF7580232 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A67FCE7B70B961BD04AF2DDB /* Pods_Runner.framework in Frameworks */, + 264F2ECFF34EF46F319F45E0 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 21EC442767C73DD656FE2D59 /* Frameworks */ = { + 0DD397DDABE0052F1DE19F5A /* Pods */ = { isa = PBXGroup; children = ( - 10EBED86431F405F33425C5D /* Pods_Runner.framework */, - 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */, + E195793174425599BF9FD8A5 /* Pods-Runner.debug.xcconfig */, + CEE59FDC4692CF13B3A531A9 /* Pods-Runner.release.xcconfig */, + B01FCE518161C09C15CA2A76 /* Pods-Runner.profile.xcconfig */, + F7F8EA4F92EE4A949ACFD794 /* Pods-RunnerTests.debug.xcconfig */, + 3DC1C736C9330C4641F0E9E7 /* Pods-RunnerTests.release.xcconfig */, + 51382D7D6048D4C925DFF480 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 331C8082294A63A400263BE5 /* RunnerTests */ = { @@ -104,18 +109,13 @@ path = RunnerTests; sourceTree = ""; }; - 4A93E448D65E367BE3521A79 /* Pods */ = { + 63D2F3770F1CD08D5029406D /* Frameworks */ = { isa = PBXGroup; children = ( - B084180C65CE1BD0071A4CBE /* Pods-Runner.debug.xcconfig */, - 1530DD726CE4908A66089928 /* Pods-Runner.release.xcconfig */, - 08A7551F7E9BFB56654E76DE /* Pods-Runner.profile.xcconfig */, - 48F138619629BE326D93C070 /* Pods-RunnerTests.debug.xcconfig */, - 4F3B9CB42871F70F645E3615 /* Pods-RunnerTests.release.xcconfig */, - 24BD78ABAFCCF8EB816CB62E /* Pods-RunnerTests.profile.xcconfig */, + 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */, + 7565379A5F9A7A666B6B2425 /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 4A93E448D65E367BE3521A79 /* Pods */, - 21EC442767C73DD656FE2D59 /* Frameworks */, + 0DD397DDABE0052F1DE19F5A /* Pods */, + 63D2F3770F1CD08D5029406D /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - FAD8F02212710E729231FA4F /* [CP] Check Pods Manifest.lock */, + 8988EB036E02293A325AD4F3 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 5A8CF7734BFB3555CEDE90E5 /* Frameworks */, + DF1E44B816CCC38BF7580232 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 111F08ADA67E2D428D196844 /* [CP] Check Pods Manifest.lock */, + 9D9634CD004451CE09A4C7EC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - C4B2B59A21A6E993BCD6D9CA /* [CP] Embed Pods Frameworks */, + E44691D46E128A424E4EA835 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,43 +270,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 111F08ADA67E2D428D196844 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 8988EB036E02293A325AD4F3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -323,43 +323,43 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - C4B2B59A21A6E993BCD6D9CA /* [CP] Embed Pods Frameworks */ = { + 9D9634CD004451CE09A4C7EC /* [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-Runner-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; }; - FAD8F02212710E729231FA4F /* [CP] Check Pods Manifest.lock */ = { + E44691D46E128A424E4EA835 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,7 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -488,13 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 48F138619629BE326D93C070 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = F7F8EA4F92EE4A949ACFD794 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -507,13 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4F3B9CB42871F70F645E3615 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 3DC1C736C9330C4641F0E9E7 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -524,13 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 24BD78ABAFCCF8EB816CB62E /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 51382D7D6048D4C925DFF480 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -588,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -659,7 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -682,7 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/colorist/step_06/macos/Podfile b/colorist/step_06/macos/Podfile index ffbca9c521..ff5ddb3b8b 100644 --- a/colorist/step_06/macos/Podfile +++ b/colorist/step_06/macos/Podfile @@ -1,4 +1,3 @@ -# Firebase requires at least macOS 10.15 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/colorist/step_06/macos/Runner.xcodeproj/project.pbxproj b/colorist/step_06/macos/Runner.xcodeproj/project.pbxproj index 15b3235458..40b4a8400c 100644 --- a/colorist/step_06/macos/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_06/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ + 00CE8B0408FDDF1C1509E877 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB8005ACB477793346F9B928 /* Pods_Runner.framework */; }; + 206CB92BCBA751923E72E4E2 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - 5427AD077EE5D98165790DD3 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8FCD026063329856A8A1E8E /* Pods_Runner.framework */; }; - C7E70D731FB916EA403186E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,6 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 2569F749A6ABF530740B35A2 /* 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 = ""; }; + 32ECBAC8BD69D0512022A5D9 /* 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 = ""; }; 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 = ""; }; @@ -78,16 +80,14 @@ 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 = ""; }; - 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 623D1CBC02F271F3ECA61214 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 94A7CAE397EC9AC58E922332 /* 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 = ""; }; + 88B6597E4A24477C17D406F3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 9F89832EC14695E7A9C94337 /* 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 = ""; }; - A6F694D8E9A821932AC1E098 /* 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 = ""; }; - CABDF0521D90E67593200042 /* 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 = ""; }; - D2274B0F8F28DCA2356E3A0F /* 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 = ""; }; - D8FCD026063329856A8A1E8E /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E6CA21389EA2146B55A88E0E /* 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 = ""; }; + C0E97F7BBD8C66E786E665F2 /* 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 = ""; }; + C70CFFE525EE4A833AE81C0B /* 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 = ""; }; + CB8005ACB477793346F9B928 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C7E70D731FB916EA403186E0 /* Pods_RunnerTests.framework in Frameworks */, + 206CB92BCBA751923E72E4E2 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5427AD077EE5D98165790DD3 /* Pods_Runner.framework in Frameworks */, + 00CE8B0408FDDF1C1509E877 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 7DB2FE4510664D70DF2BE906 /* Pods */, + BEDDB94EC779878F47F51D3D /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 7DB2FE4510664D70DF2BE906 /* Pods */ = { + BEDDB94EC779878F47F51D3D /* Pods */ = { isa = PBXGroup; children = ( - D2274B0F8F28DCA2356E3A0F /* Pods-Runner.debug.xcconfig */, - A6F694D8E9A821932AC1E098 /* Pods-Runner.release.xcconfig */, - E6CA21389EA2146B55A88E0E /* Pods-Runner.profile.xcconfig */, - 94A7CAE397EC9AC58E922332 /* Pods-RunnerTests.debug.xcconfig */, - 9F89832EC14695E7A9C94337 /* Pods-RunnerTests.release.xcconfig */, - CABDF0521D90E67593200042 /* Pods-RunnerTests.profile.xcconfig */, + 623D1CBC02F271F3ECA61214 /* Pods-Runner.debug.xcconfig */, + 88B6597E4A24477C17D406F3 /* Pods-Runner.release.xcconfig */, + C0E97F7BBD8C66E786E665F2 /* Pods-Runner.profile.xcconfig */, + 2569F749A6ABF530740B35A2 /* Pods-RunnerTests.debug.xcconfig */, + 32ECBAC8BD69D0512022A5D9 /* Pods-RunnerTests.release.xcconfig */, + C70CFFE525EE4A833AE81C0B /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D8FCD026063329856A8A1E8E /* Pods_Runner.framework */, - 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */, + CB8005ACB477793346F9B928 /* Pods_Runner.framework */, + 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - E7E3156013096806478D3FE9 /* [CP] Check Pods Manifest.lock */, + D4017C7223476CF33AE69CF3 /* [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 = ( - 5761D379E2B4E3251F326B54 /* [CP] Check Pods Manifest.lock */, + ACFDE673FCF0C42F93DBDA2F /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 42CCD0E58FF12D4698CA55C0 /* [CP] Embed Pods Frameworks */, + 1C052952F6B3FC1E67DE8F54 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 1C052952F6B3FC1E67DE8F54 /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 42CCD0E58FF12D4698CA55C0 /* [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; - }; - 5761D379E2B4E3251F326B54 /* [CP] Check Pods Manifest.lock */ = { + ACFDE673FCF0C42F93DBDA2F /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - E7E3156013096806478D3FE9 /* [CP] Check Pods Manifest.lock */ = { + D4017C7223476CF33AE69CF3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,12 +473,11 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 94A7CAE397EC9AC58E922332 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2569F749A6ABF530740B35A2 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -489,12 +488,11 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9F89832EC14695E7A9C94337 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 32ECBAC8BD69D0512022A5D9 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +503,11 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CABDF0521D90E67593200042 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C70CFFE525EE4A833AE81C0B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -560,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -582,7 +579,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -592,7 +588,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile; @@ -644,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -716,7 +711,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -737,7 +731,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -747,7 +740,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -756,7 +748,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/colorist/step_06/pubspec.yaml b/colorist/step_06/pubspec.yaml index 39e2184367..e86280f4b6 100644 --- a/colorist/step_06/pubspec.yaml +++ b/colorist/step_06/pubspec.yaml @@ -4,16 +4,16 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - colorist_ui: ^0.2.4 + colorist_ui: ^0.2.5 flutter_riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - firebase_core: ^3.14.0 - firebase_ai: ^2.1.0 + firebase_core: ^4.0.0 + firebase_ai: ^3.1.0 dev_dependencies: flutter_test: @@ -23,7 +23,7 @@ dev_dependencies: riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 json_serializable: ^6.9.5 - custom_lint: ^0.7.5 + custom_lint: ^0.7.6 flutter: uses-material-design: true diff --git a/colorist/step_07/.gemini/settings.json b/colorist/step_07/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/colorist/step_07/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/colorist/step_07/.gitignore b/colorist/step_07/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/colorist/step_07/.gitignore +++ b/colorist/step_07/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/colorist/step_07/android/app/build.gradle.kts b/colorist/step_07/android/app/build.gradle.kts index 1270a172ba..575b9de8dc 100644 --- a/colorist/step_07/android/app/build.gradle.kts +++ b/colorist/step_07/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.colorist" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.colorist" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/colorist/step_07/android/build.gradle.kts b/colorist/step_07/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/colorist/step_07/android/build.gradle.kts +++ b/colorist/step_07/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/colorist/step_07/android/settings.gradle.kts b/colorist/step_07/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/colorist/step_07/android/settings.gradle.kts +++ b/colorist/step_07/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/colorist/step_07/ios/Flutter/AppFrameworkInfo.plist b/colorist/step_07/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/colorist/step_07/ios/Flutter/AppFrameworkInfo.plist +++ b/colorist/step_07/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/colorist/step_07/ios/Podfile b/colorist/step_07/ios/Podfile index 9c02792318..bf5e880b99 100644 --- a/colorist/step_07/ios/Podfile +++ b/colorist/step_07/ios/Podfile @@ -1,5 +1,5 @@ -# Firebase requires at least iOS 13.0 -platform :ios, '13.0' +# Firebase requires at least iOS 15.0 +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/colorist/step_07/ios/Runner.xcodeproj/project.pbxproj b/colorist/step_07/ios/Runner.xcodeproj/project.pbxproj index 90d67fdbb0..90f5596b2b 100644 --- a/colorist/step_07/ios/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_07/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 264F2ECFF34EF46F319F45E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7565379A5F9A7A666B6B2425 /* 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 */; }; + 88C01DB8BD076FDD77CAA78C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */; }; 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 */; }; - A67FCE7B70B961BD04AF2DDB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 10EBED86431F405F33425C5D /* Pods_Runner.framework */; }; - FF4AE851CE17CB51F34163EC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,17 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 08A7551F7E9BFB56654E76DE /* 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 = ""; }; - 10EBED86431F405F33425C5D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 1530DD726CE4908A66089928 /* 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 = ""; }; - 24BD78ABAFCCF8EB816CB62E /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 48F138619629BE326D93C070 /* 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 = ""; }; - 4F3B9CB42871F70F645E3615 /* 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 = ""; }; + 3DC1C736C9330C4641F0E9E7 /* 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 = ""; }; + 51382D7D6048D4C925DFF480 /* 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 = ""; }; + 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7565379A5F9A7A666B6B2425 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -64,36 +61,44 @@ 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 = ""; }; - B084180C65CE1BD0071A4CBE /* 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 = ""; }; + B01FCE518161C09C15CA2A76 /* 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 = ""; }; + CEE59FDC4692CF13B3A531A9 /* 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 = ""; }; + E195793174425599BF9FD8A5 /* 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 = ""; }; + F7F8EA4F92EE4A949ACFD794 /* 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 */ - 5A8CF7734BFB3555CEDE90E5 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FF4AE851CE17CB51F34163EC /* Pods_RunnerTests.framework in Frameworks */, + 88C01DB8BD076FDD77CAA78C /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + DF1E44B816CCC38BF7580232 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A67FCE7B70B961BD04AF2DDB /* Pods_Runner.framework in Frameworks */, + 264F2ECFF34EF46F319F45E0 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 21EC442767C73DD656FE2D59 /* Frameworks */ = { + 0DD397DDABE0052F1DE19F5A /* Pods */ = { isa = PBXGroup; children = ( - 10EBED86431F405F33425C5D /* Pods_Runner.framework */, - 07C60F6862D312ACD4A5E2F8 /* Pods_RunnerTests.framework */, + E195793174425599BF9FD8A5 /* Pods-Runner.debug.xcconfig */, + CEE59FDC4692CF13B3A531A9 /* Pods-Runner.release.xcconfig */, + B01FCE518161C09C15CA2A76 /* Pods-Runner.profile.xcconfig */, + F7F8EA4F92EE4A949ACFD794 /* Pods-RunnerTests.debug.xcconfig */, + 3DC1C736C9330C4641F0E9E7 /* Pods-RunnerTests.release.xcconfig */, + 51382D7D6048D4C925DFF480 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; 331C8082294A63A400263BE5 /* RunnerTests */ = { @@ -104,18 +109,13 @@ path = RunnerTests; sourceTree = ""; }; - 4A93E448D65E367BE3521A79 /* Pods */ = { + 63D2F3770F1CD08D5029406D /* Frameworks */ = { isa = PBXGroup; children = ( - B084180C65CE1BD0071A4CBE /* Pods-Runner.debug.xcconfig */, - 1530DD726CE4908A66089928 /* Pods-Runner.release.xcconfig */, - 08A7551F7E9BFB56654E76DE /* Pods-Runner.profile.xcconfig */, - 48F138619629BE326D93C070 /* Pods-RunnerTests.debug.xcconfig */, - 4F3B9CB42871F70F645E3615 /* Pods-RunnerTests.release.xcconfig */, - 24BD78ABAFCCF8EB816CB62E /* Pods-RunnerTests.profile.xcconfig */, + 551A8BDC5926A4625011CD46 /* Pods_Runner.framework */, + 7565379A5F9A7A666B6B2425 /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 4A93E448D65E367BE3521A79 /* Pods */, - 21EC442767C73DD656FE2D59 /* Frameworks */, + 0DD397DDABE0052F1DE19F5A /* Pods */, + 63D2F3770F1CD08D5029406D /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - FAD8F02212710E729231FA4F /* [CP] Check Pods Manifest.lock */, + 8988EB036E02293A325AD4F3 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 5A8CF7734BFB3555CEDE90E5 /* Frameworks */, + DF1E44B816CCC38BF7580232 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 111F08ADA67E2D428D196844 /* [CP] Check Pods Manifest.lock */, + 9D9634CD004451CE09A4C7EC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - C4B2B59A21A6E993BCD6D9CA /* [CP] Embed Pods Frameworks */, + E44691D46E128A424E4EA835 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,43 +270,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 111F08ADA67E2D428D196844 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 8988EB036E02293A325AD4F3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -323,43 +323,43 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - C4B2B59A21A6E993BCD6D9CA /* [CP] Embed Pods Frameworks */ = { + 9D9634CD004451CE09A4C7EC /* [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-Runner-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; }; - FAD8F02212710E729231FA4F /* [CP] Check Pods Manifest.lock */ = { + E44691D46E128A424E4EA835 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,7 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -488,13 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 48F138619629BE326D93C070 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = F7F8EA4F92EE4A949ACFD794 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -507,13 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4F3B9CB42871F70F645E3615 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 3DC1C736C9330C4641F0E9E7 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -524,13 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 24BD78ABAFCCF8EB816CB62E /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 51382D7D6048D4C925DFF480 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -588,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -659,7 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -682,7 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/colorist/step_07/macos/Podfile b/colorist/step_07/macos/Podfile index ffbca9c521..ff5ddb3b8b 100644 --- a/colorist/step_07/macos/Podfile +++ b/colorist/step_07/macos/Podfile @@ -1,4 +1,3 @@ -# Firebase requires at least macOS 10.15 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/colorist/step_07/macos/Runner.xcodeproj/project.pbxproj b/colorist/step_07/macos/Runner.xcodeproj/project.pbxproj index 15b3235458..40b4a8400c 100644 --- a/colorist/step_07/macos/Runner.xcodeproj/project.pbxproj +++ b/colorist/step_07/macos/Runner.xcodeproj/project.pbxproj @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ + 00CE8B0408FDDF1C1509E877 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB8005ACB477793346F9B928 /* Pods_Runner.framework */; }; + 206CB92BCBA751923E72E4E2 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - 5427AD077EE5D98165790DD3 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8FCD026063329856A8A1E8E /* Pods_Runner.framework */; }; - C7E70D731FB916EA403186E0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,6 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 2569F749A6ABF530740B35A2 /* 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 = ""; }; + 32ECBAC8BD69D0512022A5D9 /* 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 = ""; }; 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 = ""; }; @@ -78,16 +80,14 @@ 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 = ""; }; - 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 623D1CBC02F271F3ECA61214 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 94A7CAE397EC9AC58E922332 /* 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 = ""; }; + 88B6597E4A24477C17D406F3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 9F89832EC14695E7A9C94337 /* 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 = ""; }; - A6F694D8E9A821932AC1E098 /* 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 = ""; }; - CABDF0521D90E67593200042 /* 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 = ""; }; - D2274B0F8F28DCA2356E3A0F /* 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 = ""; }; - D8FCD026063329856A8A1E8E /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E6CA21389EA2146B55A88E0E /* 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 = ""; }; + C0E97F7BBD8C66E786E665F2 /* 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 = ""; }; + C70CFFE525EE4A833AE81C0B /* 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 = ""; }; + CB8005ACB477793346F9B928 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C7E70D731FB916EA403186E0 /* Pods_RunnerTests.framework in Frameworks */, + 206CB92BCBA751923E72E4E2 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5427AD077EE5D98165790DD3 /* Pods_Runner.framework in Frameworks */, + 00CE8B0408FDDF1C1509E877 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 7DB2FE4510664D70DF2BE906 /* Pods */, + BEDDB94EC779878F47F51D3D /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 7DB2FE4510664D70DF2BE906 /* Pods */ = { + BEDDB94EC779878F47F51D3D /* Pods */ = { isa = PBXGroup; children = ( - D2274B0F8F28DCA2356E3A0F /* Pods-Runner.debug.xcconfig */, - A6F694D8E9A821932AC1E098 /* Pods-Runner.release.xcconfig */, - E6CA21389EA2146B55A88E0E /* Pods-Runner.profile.xcconfig */, - 94A7CAE397EC9AC58E922332 /* Pods-RunnerTests.debug.xcconfig */, - 9F89832EC14695E7A9C94337 /* Pods-RunnerTests.release.xcconfig */, - CABDF0521D90E67593200042 /* Pods-RunnerTests.profile.xcconfig */, + 623D1CBC02F271F3ECA61214 /* Pods-Runner.debug.xcconfig */, + 88B6597E4A24477C17D406F3 /* Pods-Runner.release.xcconfig */, + C0E97F7BBD8C66E786E665F2 /* Pods-Runner.profile.xcconfig */, + 2569F749A6ABF530740B35A2 /* Pods-RunnerTests.debug.xcconfig */, + 32ECBAC8BD69D0512022A5D9 /* Pods-RunnerTests.release.xcconfig */, + C70CFFE525EE4A833AE81C0B /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - D8FCD026063329856A8A1E8E /* Pods_Runner.framework */, - 3D8770DBA0E9E47137FEEAFC /* Pods_RunnerTests.framework */, + CB8005ACB477793346F9B928 /* Pods_Runner.framework */, + 518B3975E6E93BEED3EB4A62 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - E7E3156013096806478D3FE9 /* [CP] Check Pods Manifest.lock */, + D4017C7223476CF33AE69CF3 /* [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 = ( - 5761D379E2B4E3251F326B54 /* [CP] Check Pods Manifest.lock */, + ACFDE673FCF0C42F93DBDA2F /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 42CCD0E58FF12D4698CA55C0 /* [CP] Embed Pods Frameworks */, + 1C052952F6B3FC1E67DE8F54 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 1C052952F6B3FC1E67DE8F54 /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 42CCD0E58FF12D4698CA55C0 /* [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; - }; - 5761D379E2B4E3251F326B54 /* [CP] Check Pods Manifest.lock */ = { + ACFDE673FCF0C42F93DBDA2F /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - E7E3156013096806478D3FE9 /* [CP] Check Pods Manifest.lock */ = { + D4017C7223476CF33AE69CF3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,12 +473,11 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 94A7CAE397EC9AC58E922332 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2569F749A6ABF530740B35A2 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -489,12 +488,11 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9F89832EC14695E7A9C94337 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 32ECBAC8BD69D0512022A5D9 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +503,11 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CABDF0521D90E67593200042 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C70CFFE525EE4A833AE81C0B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.colorist.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -560,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -582,7 +579,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -592,7 +588,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile; @@ -644,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -716,7 +711,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -737,7 +731,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -747,7 +740,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -756,7 +748,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/colorist/step_07/pubspec.yaml b/colorist/step_07/pubspec.yaml index 39e2184367..e86280f4b6 100644 --- a/colorist/step_07/pubspec.yaml +++ b/colorist/step_07/pubspec.yaml @@ -4,16 +4,16 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - colorist_ui: ^0.2.4 + colorist_ui: ^0.2.5 flutter_riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - firebase_core: ^3.14.0 - firebase_ai: ^2.1.0 + firebase_core: ^4.0.0 + firebase_ai: ^3.1.0 dev_dependencies: flutter_test: @@ -23,7 +23,7 @@ dev_dependencies: riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 json_serializable: ^6.9.5 - custom_lint: ^0.7.5 + custom_lint: ^0.7.6 flutter: uses-material-design: true diff --git a/dart-patterns-and-records/codelab_rebuild.yaml b/dart-patterns-and-records/codelab_rebuild.yaml index 2830cc3727..5ad61d87a1 100644 --- a/dart-patterns-and-records/codelab_rebuild.yaml +++ b/dart-patterns-and-records/codelab_rebuild.yaml @@ -26,6 +26,21 @@ steps: - prefer_final_in_for_each - name: Remove README rm: patterns_codelab/README.md + - name: Add .gemini directory + mkdir: patterns_codelab/.gemini + - name: Add .gemini/settings.json + path: patterns_codelab/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add .vscode directory mkdir: patterns_codelab/.vscode - name: Add .vscode/launch.json diff --git a/dart-patterns-and-records/step_03/.gemini/settings.json b/dart-patterns-and-records/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/dart-patterns-and-records/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/dart-patterns-and-records/step_03/.gitignore b/dart-patterns-and-records/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/dart-patterns-and-records/step_03/.gitignore +++ b/dart-patterns-and-records/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/dart-patterns-and-records/step_03/android/build.gradle.kts b/dart-patterns-and-records/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/dart-patterns-and-records/step_03/android/build.gradle.kts +++ b/dart-patterns-and-records/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/dart-patterns-and-records/step_03/android/settings.gradle.kts b/dart-patterns-and-records/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/dart-patterns-and-records/step_03/android/settings.gradle.kts +++ b/dart-patterns-and-records/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/dart-patterns-and-records/step_03/ios/Flutter/AppFrameworkInfo.plist b/dart-patterns-and-records/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/dart-patterns-and-records/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/dart-patterns-and-records/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/dart-patterns-and-records/step_03/ios/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_03/ios/Runner.xcodeproj/project.pbxproj index 9852373902..182d8b0c36 100644 --- a/dart-patterns-and-records/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/dart-patterns-and-records/step_03/linux/runner/my_application.cc b/dart-patterns-and-records/step_03/linux/runner/my_application.cc index 7065b83916..6f603e293c 100644 --- a/dart-patterns-and-records/step_03/linux/runner/my_application.cc +++ b/dart-patterns-and-records/step_03/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/dart-patterns-and-records/step_03/macos/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_03/macos/Runner.xcodeproj/project.pbxproj index 1e6200fe37..8fa673d234 100644 --- a/dart-patterns-and-records/step_03/macos/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_03/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/dart-patterns-and-records/step_03/pubspec.yaml b/dart-patterns-and-records/step_03/pubspec.yaml index e64d021205..2802e8e692 100644 --- a/dart-patterns-and-records/step_03/pubspec.yaml +++ b/dart-patterns-and-records/step_03/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/dart-patterns-and-records/step_04/.gemini/settings.json b/dart-patterns-and-records/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/dart-patterns-and-records/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/dart-patterns-and-records/step_04/.gitignore b/dart-patterns-and-records/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/dart-patterns-and-records/step_04/.gitignore +++ b/dart-patterns-and-records/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/dart-patterns-and-records/step_04/android/build.gradle.kts b/dart-patterns-and-records/step_04/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/dart-patterns-and-records/step_04/android/build.gradle.kts +++ b/dart-patterns-and-records/step_04/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/dart-patterns-and-records/step_04/android/settings.gradle.kts b/dart-patterns-and-records/step_04/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/dart-patterns-and-records/step_04/android/settings.gradle.kts +++ b/dart-patterns-and-records/step_04/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/dart-patterns-and-records/step_04/ios/Flutter/AppFrameworkInfo.plist b/dart-patterns-and-records/step_04/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/dart-patterns-and-records/step_04/ios/Flutter/AppFrameworkInfo.plist +++ b/dart-patterns-and-records/step_04/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/dart-patterns-and-records/step_04/ios/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_04/ios/Runner.xcodeproj/project.pbxproj index 9852373902..182d8b0c36 100644 --- a/dart-patterns-and-records/step_04/ios/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_04/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/dart-patterns-and-records/step_04/linux/runner/my_application.cc b/dart-patterns-and-records/step_04/linux/runner/my_application.cc index 7065b83916..6f603e293c 100644 --- a/dart-patterns-and-records/step_04/linux/runner/my_application.cc +++ b/dart-patterns-and-records/step_04/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/dart-patterns-and-records/step_04/macos/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_04/macos/Runner.xcodeproj/project.pbxproj index 1e6200fe37..8fa673d234 100644 --- a/dart-patterns-and-records/step_04/macos/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_04/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/dart-patterns-and-records/step_04/pubspec.yaml b/dart-patterns-and-records/step_04/pubspec.yaml index e64d021205..2802e8e692 100644 --- a/dart-patterns-and-records/step_04/pubspec.yaml +++ b/dart-patterns-and-records/step_04/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/dart-patterns-and-records/step_05/.gemini/settings.json b/dart-patterns-and-records/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/dart-patterns-and-records/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/dart-patterns-and-records/step_05/.gitignore b/dart-patterns-and-records/step_05/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/dart-patterns-and-records/step_05/.gitignore +++ b/dart-patterns-and-records/step_05/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/dart-patterns-and-records/step_05/android/build.gradle.kts b/dart-patterns-and-records/step_05/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/dart-patterns-and-records/step_05/android/build.gradle.kts +++ b/dart-patterns-and-records/step_05/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/dart-patterns-and-records/step_05/android/settings.gradle.kts b/dart-patterns-and-records/step_05/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/dart-patterns-and-records/step_05/android/settings.gradle.kts +++ b/dart-patterns-and-records/step_05/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/dart-patterns-and-records/step_05/ios/Flutter/AppFrameworkInfo.plist b/dart-patterns-and-records/step_05/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/dart-patterns-and-records/step_05/ios/Flutter/AppFrameworkInfo.plist +++ b/dart-patterns-and-records/step_05/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/dart-patterns-and-records/step_05/ios/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_05/ios/Runner.xcodeproj/project.pbxproj index 9852373902..182d8b0c36 100644 --- a/dart-patterns-and-records/step_05/ios/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_05/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/dart-patterns-and-records/step_05/linux/runner/my_application.cc b/dart-patterns-and-records/step_05/linux/runner/my_application.cc index 7065b83916..6f603e293c 100644 --- a/dart-patterns-and-records/step_05/linux/runner/my_application.cc +++ b/dart-patterns-and-records/step_05/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/dart-patterns-and-records/step_05/macos/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_05/macos/Runner.xcodeproj/project.pbxproj index 1e6200fe37..8fa673d234 100644 --- a/dart-patterns-and-records/step_05/macos/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_05/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/dart-patterns-and-records/step_05/pubspec.yaml b/dart-patterns-and-records/step_05/pubspec.yaml index e64d021205..2802e8e692 100644 --- a/dart-patterns-and-records/step_05/pubspec.yaml +++ b/dart-patterns-and-records/step_05/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/dart-patterns-and-records/step_06_a/.gemini/settings.json b/dart-patterns-and-records/step_06_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/dart-patterns-and-records/step_06_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/dart-patterns-and-records/step_06_a/.gitignore b/dart-patterns-and-records/step_06_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/dart-patterns-and-records/step_06_a/.gitignore +++ b/dart-patterns-and-records/step_06_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/dart-patterns-and-records/step_06_a/android/build.gradle.kts b/dart-patterns-and-records/step_06_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/dart-patterns-and-records/step_06_a/android/build.gradle.kts +++ b/dart-patterns-and-records/step_06_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/dart-patterns-and-records/step_06_a/android/settings.gradle.kts b/dart-patterns-and-records/step_06_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/dart-patterns-and-records/step_06_a/android/settings.gradle.kts +++ b/dart-patterns-and-records/step_06_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/dart-patterns-and-records/step_06_a/ios/Flutter/AppFrameworkInfo.plist b/dart-patterns-and-records/step_06_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/dart-patterns-and-records/step_06_a/ios/Flutter/AppFrameworkInfo.plist +++ b/dart-patterns-and-records/step_06_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/dart-patterns-and-records/step_06_a/ios/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_06_a/ios/Runner.xcodeproj/project.pbxproj index 9852373902..182d8b0c36 100644 --- a/dart-patterns-and-records/step_06_a/ios/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_06_a/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/dart-patterns-and-records/step_06_a/linux/runner/my_application.cc b/dart-patterns-and-records/step_06_a/linux/runner/my_application.cc index 7065b83916..6f603e293c 100644 --- a/dart-patterns-and-records/step_06_a/linux/runner/my_application.cc +++ b/dart-patterns-and-records/step_06_a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/dart-patterns-and-records/step_06_a/macos/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_06_a/macos/Runner.xcodeproj/project.pbxproj index 1e6200fe37..8fa673d234 100644 --- a/dart-patterns-and-records/step_06_a/macos/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_06_a/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/dart-patterns-and-records/step_06_a/pubspec.yaml b/dart-patterns-and-records/step_06_a/pubspec.yaml index e64d021205..2802e8e692 100644 --- a/dart-patterns-and-records/step_06_a/pubspec.yaml +++ b/dart-patterns-and-records/step_06_a/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/dart-patterns-and-records/step_06_b/.gemini/settings.json b/dart-patterns-and-records/step_06_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/dart-patterns-and-records/step_06_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/dart-patterns-and-records/step_06_b/.gitignore b/dart-patterns-and-records/step_06_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/dart-patterns-and-records/step_06_b/.gitignore +++ b/dart-patterns-and-records/step_06_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/dart-patterns-and-records/step_06_b/android/build.gradle.kts b/dart-patterns-and-records/step_06_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/dart-patterns-and-records/step_06_b/android/build.gradle.kts +++ b/dart-patterns-and-records/step_06_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/dart-patterns-and-records/step_06_b/android/settings.gradle.kts b/dart-patterns-and-records/step_06_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/dart-patterns-and-records/step_06_b/android/settings.gradle.kts +++ b/dart-patterns-and-records/step_06_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/dart-patterns-and-records/step_06_b/ios/Flutter/AppFrameworkInfo.plist b/dart-patterns-and-records/step_06_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/dart-patterns-and-records/step_06_b/ios/Flutter/AppFrameworkInfo.plist +++ b/dart-patterns-and-records/step_06_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/dart-patterns-and-records/step_06_b/ios/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_06_b/ios/Runner.xcodeproj/project.pbxproj index 9852373902..182d8b0c36 100644 --- a/dart-patterns-and-records/step_06_b/ios/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_06_b/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/dart-patterns-and-records/step_06_b/linux/runner/my_application.cc b/dart-patterns-and-records/step_06_b/linux/runner/my_application.cc index 7065b83916..6f603e293c 100644 --- a/dart-patterns-and-records/step_06_b/linux/runner/my_application.cc +++ b/dart-patterns-and-records/step_06_b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/dart-patterns-and-records/step_06_b/macos/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_06_b/macos/Runner.xcodeproj/project.pbxproj index 1e6200fe37..8fa673d234 100644 --- a/dart-patterns-and-records/step_06_b/macos/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_06_b/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/dart-patterns-and-records/step_06_b/pubspec.yaml b/dart-patterns-and-records/step_06_b/pubspec.yaml index e64d021205..2802e8e692 100644 --- a/dart-patterns-and-records/step_06_b/pubspec.yaml +++ b/dart-patterns-and-records/step_06_b/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/dart-patterns-and-records/step_07_a/.gemini/settings.json b/dart-patterns-and-records/step_07_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/dart-patterns-and-records/step_07_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/dart-patterns-and-records/step_07_a/.gitignore b/dart-patterns-and-records/step_07_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/dart-patterns-and-records/step_07_a/.gitignore +++ b/dart-patterns-and-records/step_07_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/dart-patterns-and-records/step_07_a/android/build.gradle.kts b/dart-patterns-and-records/step_07_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/dart-patterns-and-records/step_07_a/android/build.gradle.kts +++ b/dart-patterns-and-records/step_07_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/dart-patterns-and-records/step_07_a/android/settings.gradle.kts b/dart-patterns-and-records/step_07_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/dart-patterns-and-records/step_07_a/android/settings.gradle.kts +++ b/dart-patterns-and-records/step_07_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/dart-patterns-and-records/step_07_a/ios/Flutter/AppFrameworkInfo.plist b/dart-patterns-and-records/step_07_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/dart-patterns-and-records/step_07_a/ios/Flutter/AppFrameworkInfo.plist +++ b/dart-patterns-and-records/step_07_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/dart-patterns-and-records/step_07_a/ios/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_07_a/ios/Runner.xcodeproj/project.pbxproj index 9852373902..182d8b0c36 100644 --- a/dart-patterns-and-records/step_07_a/ios/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_07_a/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/dart-patterns-and-records/step_07_a/linux/runner/my_application.cc b/dart-patterns-and-records/step_07_a/linux/runner/my_application.cc index 7065b83916..6f603e293c 100644 --- a/dart-patterns-and-records/step_07_a/linux/runner/my_application.cc +++ b/dart-patterns-and-records/step_07_a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/dart-patterns-and-records/step_07_a/macos/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_07_a/macos/Runner.xcodeproj/project.pbxproj index 1e6200fe37..8fa673d234 100644 --- a/dart-patterns-and-records/step_07_a/macos/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_07_a/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/dart-patterns-and-records/step_07_a/pubspec.yaml b/dart-patterns-and-records/step_07_a/pubspec.yaml index e64d021205..2802e8e692 100644 --- a/dart-patterns-and-records/step_07_a/pubspec.yaml +++ b/dart-patterns-and-records/step_07_a/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/dart-patterns-and-records/step_07_b/.gemini/settings.json b/dart-patterns-and-records/step_07_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/dart-patterns-and-records/step_07_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/dart-patterns-and-records/step_07_b/.gitignore b/dart-patterns-and-records/step_07_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/dart-patterns-and-records/step_07_b/.gitignore +++ b/dart-patterns-and-records/step_07_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/dart-patterns-and-records/step_07_b/android/build.gradle.kts b/dart-patterns-and-records/step_07_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/dart-patterns-and-records/step_07_b/android/build.gradle.kts +++ b/dart-patterns-and-records/step_07_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/dart-patterns-and-records/step_07_b/android/settings.gradle.kts b/dart-patterns-and-records/step_07_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/dart-patterns-and-records/step_07_b/android/settings.gradle.kts +++ b/dart-patterns-and-records/step_07_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/dart-patterns-and-records/step_07_b/ios/Flutter/AppFrameworkInfo.plist b/dart-patterns-and-records/step_07_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/dart-patterns-and-records/step_07_b/ios/Flutter/AppFrameworkInfo.plist +++ b/dart-patterns-and-records/step_07_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/dart-patterns-and-records/step_07_b/ios/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_07_b/ios/Runner.xcodeproj/project.pbxproj index 9852373902..182d8b0c36 100644 --- a/dart-patterns-and-records/step_07_b/ios/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_07_b/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/dart-patterns-and-records/step_07_b/linux/runner/my_application.cc b/dart-patterns-and-records/step_07_b/linux/runner/my_application.cc index 7065b83916..6f603e293c 100644 --- a/dart-patterns-and-records/step_07_b/linux/runner/my_application.cc +++ b/dart-patterns-and-records/step_07_b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/dart-patterns-and-records/step_07_b/macos/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_07_b/macos/Runner.xcodeproj/project.pbxproj index 1e6200fe37..8fa673d234 100644 --- a/dart-patterns-and-records/step_07_b/macos/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_07_b/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/dart-patterns-and-records/step_07_b/pubspec.yaml b/dart-patterns-and-records/step_07_b/pubspec.yaml index e64d021205..2802e8e692 100644 --- a/dart-patterns-and-records/step_07_b/pubspec.yaml +++ b/dart-patterns-and-records/step_07_b/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/dart-patterns-and-records/step_08/.gemini/settings.json b/dart-patterns-and-records/step_08/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/dart-patterns-and-records/step_08/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/dart-patterns-and-records/step_08/.gitignore b/dart-patterns-and-records/step_08/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/dart-patterns-and-records/step_08/.gitignore +++ b/dart-patterns-and-records/step_08/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/dart-patterns-and-records/step_08/android/build.gradle.kts b/dart-patterns-and-records/step_08/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/dart-patterns-and-records/step_08/android/build.gradle.kts +++ b/dart-patterns-and-records/step_08/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/dart-patterns-and-records/step_08/android/settings.gradle.kts b/dart-patterns-and-records/step_08/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/dart-patterns-and-records/step_08/android/settings.gradle.kts +++ b/dart-patterns-and-records/step_08/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/dart-patterns-and-records/step_08/ios/Flutter/AppFrameworkInfo.plist b/dart-patterns-and-records/step_08/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/dart-patterns-and-records/step_08/ios/Flutter/AppFrameworkInfo.plist +++ b/dart-patterns-and-records/step_08/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/dart-patterns-and-records/step_08/ios/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_08/ios/Runner.xcodeproj/project.pbxproj index 9852373902..182d8b0c36 100644 --- a/dart-patterns-and-records/step_08/ios/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_08/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/dart-patterns-and-records/step_08/linux/runner/my_application.cc b/dart-patterns-and-records/step_08/linux/runner/my_application.cc index 7065b83916..6f603e293c 100644 --- a/dart-patterns-and-records/step_08/linux/runner/my_application.cc +++ b/dart-patterns-and-records/step_08/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/dart-patterns-and-records/step_08/macos/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_08/macos/Runner.xcodeproj/project.pbxproj index 1e6200fe37..8fa673d234 100644 --- a/dart-patterns-and-records/step_08/macos/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_08/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/dart-patterns-and-records/step_08/pubspec.yaml b/dart-patterns-and-records/step_08/pubspec.yaml index e64d021205..2802e8e692 100644 --- a/dart-patterns-and-records/step_08/pubspec.yaml +++ b/dart-patterns-and-records/step_08/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/dart-patterns-and-records/step_09/.gemini/settings.json b/dart-patterns-and-records/step_09/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/dart-patterns-and-records/step_09/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/dart-patterns-and-records/step_09/.gitignore b/dart-patterns-and-records/step_09/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/dart-patterns-and-records/step_09/.gitignore +++ b/dart-patterns-and-records/step_09/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/dart-patterns-and-records/step_09/android/build.gradle.kts b/dart-patterns-and-records/step_09/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/dart-patterns-and-records/step_09/android/build.gradle.kts +++ b/dart-patterns-and-records/step_09/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/dart-patterns-and-records/step_09/android/settings.gradle.kts b/dart-patterns-and-records/step_09/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/dart-patterns-and-records/step_09/android/settings.gradle.kts +++ b/dart-patterns-and-records/step_09/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/dart-patterns-and-records/step_09/ios/Flutter/AppFrameworkInfo.plist b/dart-patterns-and-records/step_09/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/dart-patterns-and-records/step_09/ios/Flutter/AppFrameworkInfo.plist +++ b/dart-patterns-and-records/step_09/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/dart-patterns-and-records/step_09/ios/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_09/ios/Runner.xcodeproj/project.pbxproj index 9852373902..182d8b0c36 100644 --- a/dart-patterns-and-records/step_09/ios/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_09/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/dart-patterns-and-records/step_09/linux/runner/my_application.cc b/dart-patterns-and-records/step_09/linux/runner/my_application.cc index 7065b83916..6f603e293c 100644 --- a/dart-patterns-and-records/step_09/linux/runner/my_application.cc +++ b/dart-patterns-and-records/step_09/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/dart-patterns-and-records/step_09/macos/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_09/macos/Runner.xcodeproj/project.pbxproj index 1e6200fe37..8fa673d234 100644 --- a/dart-patterns-and-records/step_09/macos/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_09/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/dart-patterns-and-records/step_09/pubspec.yaml b/dart-patterns-and-records/step_09/pubspec.yaml index e64d021205..2802e8e692 100644 --- a/dart-patterns-and-records/step_09/pubspec.yaml +++ b/dart-patterns-and-records/step_09/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/dart-patterns-and-records/step_10/.gemini/settings.json b/dart-patterns-and-records/step_10/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/dart-patterns-and-records/step_10/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/dart-patterns-and-records/step_10/.gitignore b/dart-patterns-and-records/step_10/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/dart-patterns-and-records/step_10/.gitignore +++ b/dart-patterns-and-records/step_10/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/dart-patterns-and-records/step_10/android/build.gradle.kts b/dart-patterns-and-records/step_10/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/dart-patterns-and-records/step_10/android/build.gradle.kts +++ b/dart-patterns-and-records/step_10/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/dart-patterns-and-records/step_10/android/settings.gradle.kts b/dart-patterns-and-records/step_10/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/dart-patterns-and-records/step_10/android/settings.gradle.kts +++ b/dart-patterns-and-records/step_10/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/dart-patterns-and-records/step_10/ios/Flutter/AppFrameworkInfo.plist b/dart-patterns-and-records/step_10/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/dart-patterns-and-records/step_10/ios/Flutter/AppFrameworkInfo.plist +++ b/dart-patterns-and-records/step_10/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/dart-patterns-and-records/step_10/ios/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_10/ios/Runner.xcodeproj/project.pbxproj index 9852373902..182d8b0c36 100644 --- a/dart-patterns-and-records/step_10/ios/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_10/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/dart-patterns-and-records/step_10/linux/runner/my_application.cc b/dart-patterns-and-records/step_10/linux/runner/my_application.cc index 7065b83916..6f603e293c 100644 --- a/dart-patterns-and-records/step_10/linux/runner/my_application.cc +++ b/dart-patterns-and-records/step_10/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/dart-patterns-and-records/step_10/macos/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_10/macos/Runner.xcodeproj/project.pbxproj index 1e6200fe37..8fa673d234 100644 --- a/dart-patterns-and-records/step_10/macos/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_10/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/dart-patterns-and-records/step_10/pubspec.yaml b/dart-patterns-and-records/step_10/pubspec.yaml index e64d021205..2802e8e692 100644 --- a/dart-patterns-and-records/step_10/pubspec.yaml +++ b/dart-patterns-and-records/step_10/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/dart-patterns-and-records/step_11_a/.gemini/settings.json b/dart-patterns-and-records/step_11_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/dart-patterns-and-records/step_11_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/dart-patterns-and-records/step_11_a/.gitignore b/dart-patterns-and-records/step_11_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/dart-patterns-and-records/step_11_a/.gitignore +++ b/dart-patterns-and-records/step_11_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/dart-patterns-and-records/step_11_a/android/build.gradle.kts b/dart-patterns-and-records/step_11_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/dart-patterns-and-records/step_11_a/android/build.gradle.kts +++ b/dart-patterns-and-records/step_11_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/dart-patterns-and-records/step_11_a/android/settings.gradle.kts b/dart-patterns-and-records/step_11_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/dart-patterns-and-records/step_11_a/android/settings.gradle.kts +++ b/dart-patterns-and-records/step_11_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/dart-patterns-and-records/step_11_a/ios/Flutter/AppFrameworkInfo.plist b/dart-patterns-and-records/step_11_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/dart-patterns-and-records/step_11_a/ios/Flutter/AppFrameworkInfo.plist +++ b/dart-patterns-and-records/step_11_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/dart-patterns-and-records/step_11_a/ios/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_11_a/ios/Runner.xcodeproj/project.pbxproj index 9852373902..182d8b0c36 100644 --- a/dart-patterns-and-records/step_11_a/ios/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_11_a/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/dart-patterns-and-records/step_11_a/linux/runner/my_application.cc b/dart-patterns-and-records/step_11_a/linux/runner/my_application.cc index 7065b83916..6f603e293c 100644 --- a/dart-patterns-and-records/step_11_a/linux/runner/my_application.cc +++ b/dart-patterns-and-records/step_11_a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/dart-patterns-and-records/step_11_a/macos/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_11_a/macos/Runner.xcodeproj/project.pbxproj index 1e6200fe37..8fa673d234 100644 --- a/dart-patterns-and-records/step_11_a/macos/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_11_a/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/dart-patterns-and-records/step_11_a/pubspec.yaml b/dart-patterns-and-records/step_11_a/pubspec.yaml index e64d021205..2802e8e692 100644 --- a/dart-patterns-and-records/step_11_a/pubspec.yaml +++ b/dart-patterns-and-records/step_11_a/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/dart-patterns-and-records/step_11_b/.gemini/settings.json b/dart-patterns-and-records/step_11_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/dart-patterns-and-records/step_11_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/dart-patterns-and-records/step_11_b/.gitignore b/dart-patterns-and-records/step_11_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/dart-patterns-and-records/step_11_b/.gitignore +++ b/dart-patterns-and-records/step_11_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/dart-patterns-and-records/step_11_b/android/build.gradle.kts b/dart-patterns-and-records/step_11_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/dart-patterns-and-records/step_11_b/android/build.gradle.kts +++ b/dart-patterns-and-records/step_11_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/dart-patterns-and-records/step_11_b/android/settings.gradle.kts b/dart-patterns-and-records/step_11_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/dart-patterns-and-records/step_11_b/android/settings.gradle.kts +++ b/dart-patterns-and-records/step_11_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/dart-patterns-and-records/step_11_b/ios/Flutter/AppFrameworkInfo.plist b/dart-patterns-and-records/step_11_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/dart-patterns-and-records/step_11_b/ios/Flutter/AppFrameworkInfo.plist +++ b/dart-patterns-and-records/step_11_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/dart-patterns-and-records/step_11_b/ios/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_11_b/ios/Runner.xcodeproj/project.pbxproj index 9852373902..182d8b0c36 100644 --- a/dart-patterns-and-records/step_11_b/ios/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_11_b/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/dart-patterns-and-records/step_11_b/linux/runner/my_application.cc b/dart-patterns-and-records/step_11_b/linux/runner/my_application.cc index 7065b83916..6f603e293c 100644 --- a/dart-patterns-and-records/step_11_b/linux/runner/my_application.cc +++ b/dart-patterns-and-records/step_11_b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/dart-patterns-and-records/step_11_b/macos/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_11_b/macos/Runner.xcodeproj/project.pbxproj index 1e6200fe37..8fa673d234 100644 --- a/dart-patterns-and-records/step_11_b/macos/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_11_b/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/dart-patterns-and-records/step_11_b/pubspec.yaml b/dart-patterns-and-records/step_11_b/pubspec.yaml index e64d021205..2802e8e692 100644 --- a/dart-patterns-and-records/step_11_b/pubspec.yaml +++ b/dart-patterns-and-records/step_11_b/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/dart-patterns-and-records/step_12/.gemini/settings.json b/dart-patterns-and-records/step_12/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/dart-patterns-and-records/step_12/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/dart-patterns-and-records/step_12/.gitignore b/dart-patterns-and-records/step_12/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/dart-patterns-and-records/step_12/.gitignore +++ b/dart-patterns-and-records/step_12/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/dart-patterns-and-records/step_12/android/build.gradle.kts b/dart-patterns-and-records/step_12/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/dart-patterns-and-records/step_12/android/build.gradle.kts +++ b/dart-patterns-and-records/step_12/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/dart-patterns-and-records/step_12/android/settings.gradle.kts b/dart-patterns-and-records/step_12/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/dart-patterns-and-records/step_12/android/settings.gradle.kts +++ b/dart-patterns-and-records/step_12/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/dart-patterns-and-records/step_12/ios/Flutter/AppFrameworkInfo.plist b/dart-patterns-and-records/step_12/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/dart-patterns-and-records/step_12/ios/Flutter/AppFrameworkInfo.plist +++ b/dart-patterns-and-records/step_12/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/dart-patterns-and-records/step_12/ios/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_12/ios/Runner.xcodeproj/project.pbxproj index 9852373902..182d8b0c36 100644 --- a/dart-patterns-and-records/step_12/ios/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_12/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/dart-patterns-and-records/step_12/linux/runner/my_application.cc b/dart-patterns-and-records/step_12/linux/runner/my_application.cc index 7065b83916..6f603e293c 100644 --- a/dart-patterns-and-records/step_12/linux/runner/my_application.cc +++ b/dart-patterns-and-records/step_12/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/dart-patterns-and-records/step_12/macos/Runner.xcodeproj/project.pbxproj b/dart-patterns-and-records/step_12/macos/Runner.xcodeproj/project.pbxproj index 1e6200fe37..8fa673d234 100644 --- a/dart-patterns-and-records/step_12/macos/Runner.xcodeproj/project.pbxproj +++ b/dart-patterns-and-records/step_12/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/dart-patterns-and-records/step_12/pubspec.yaml b/dart-patterns-and-records/step_12/pubspec.yaml index e64d021205..2802e8e692 100644 --- a/dart-patterns-and-records/step_12/pubspec.yaml +++ b/dart-patterns-and-records/step_12/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/deeplink_cookbook/.gemini/settings.json b/deeplink_cookbook/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/deeplink_cookbook/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/deeplink_cookbook/android/build.gradle.kts b/deeplink_cookbook/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/deeplink_cookbook/android/build.gradle.kts +++ b/deeplink_cookbook/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/deeplink_cookbook/android/settings.gradle.kts b/deeplink_cookbook/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/deeplink_cookbook/android/settings.gradle.kts +++ b/deeplink_cookbook/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/deeplink_cookbook/ios/Flutter/AppFrameworkInfo.plist b/deeplink_cookbook/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/deeplink_cookbook/ios/Flutter/AppFrameworkInfo.plist +++ b/deeplink_cookbook/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/deeplink_cookbook/ios/Runner.xcodeproj/project.pbxproj b/deeplink_cookbook/ios/Runner.xcodeproj/project.pbxproj index 8aa7e3d7eb..96704dce63 100644 --- a/deeplink_cookbook/ios/Runner.xcodeproj/project.pbxproj +++ b/deeplink_cookbook/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/deeplink_cookbook/linux/runner/my_application.cc b/deeplink_cookbook/linux/runner/my_application.cc index a80900313b..11eadada19 100644 --- a/deeplink_cookbook/linux/runner/my_application.cc +++ b/deeplink_cookbook/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/deeplink_cookbook/macos/Runner.xcodeproj/project.pbxproj b/deeplink_cookbook/macos/Runner.xcodeproj/project.pbxproj index 5c8b128d01..3fd1e19da7 100644 --- a/deeplink_cookbook/macos/Runner.xcodeproj/project.pbxproj +++ b/deeplink_cookbook/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/deeplink_cookbook/pubspec.yaml b/deeplink_cookbook/pubspec.yaml index df6f979a82..a4137fb9fd 100644 --- a/deeplink_cookbook/pubspec.yaml +++ b/deeplink_cookbook/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions diff --git a/ffigen_codelab/codelab_rebuild.yaml b/ffigen_codelab/codelab_rebuild.yaml index f62abdee8f..6451ea68e7 100644 --- a/ffigen_codelab/codelab_rebuild.yaml +++ b/ffigen_codelab/codelab_rebuild.yaml @@ -15,6 +15,36 @@ steps: rm: ffigen_app/LICENSE - name: Remove README rm: ffigen_app/README.md + - name: Add .gemini directory + mkdir: ffigen_app/.gemini + - name: Add .gemini/settings.json + path: ffigen_app/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } + - name: Add .gemini directory + mkdir: ffigen_app/example/.gemini + - name: Add .gemini/settings.json + path: ffigen_app/example/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add .vscode directory mkdir: ffigen_app/.vscode - name: Add .vscode/launch.json @@ -317,7 +347,7 @@ steps: patch-u: | --- b/ffigen_codelab/step_05/src/CMakeLists.txt +++ a/ffigen_codelab/step_05/src/CMakeLists.txt - @@ -6,12 +6,19 @@ cmake_minimum_required(VERSION 3.10) + @@ -6,14 +6,21 @@ cmake_minimum_required(VERSION 3.10) project(ffigen_app_library VERSION 0.0.1 LANGUAGES C) add_library(ffigen_app SHARED @@ -339,6 +369,8 @@ steps: +endif (WIN32) + target_compile_definitions(ffigen_app PUBLIC DART_SHARED_LIB) + + if (ANDROID) - name: Get deps in ffigen_app/example path: ffigen_app/example dart: pub get --directory . diff --git a/ffigen_codelab/step_03/.gemini/settings.json b/ffigen_codelab/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/ffigen_codelab/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/ffigen_codelab/step_03/.gitignore b/ffigen_codelab/step_03/.gitignore index e7d347d9d3..b9d7f25b91 100644 --- a/ffigen_codelab/step_03/.gitignore +++ b/ffigen_codelab/step_03/.gitignore @@ -28,6 +28,6 @@ migrate_working_dir/ /pubspec.lock **/doc/api/ .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies -build/ +/build/ +/coverage/ diff --git a/ffigen_codelab/step_03/android/build.gradle b/ffigen_codelab/step_03/android/build.gradle index 7e0d8fe973..041607c141 100644 --- a/ffigen_codelab/step_03/android/build.gradle +++ b/ffigen_codelab/step_03/android/build.gradle @@ -11,7 +11,7 @@ buildscript { dependencies { // The Android Gradle Plugin knows how to build native code with the NDK. - classpath("com.android.tools.build:gradle:8.7.3") + classpath("com.android.tools.build:gradle:8.9.1") } } @@ -29,7 +29,7 @@ android { // Bumping the plugin compileSdk version requires all clients of this plugin // to bump the version in their app. - compileSdk = 35 + compileSdk = 36 // Use the NDK version // declared in /android/app/build.gradle file of the Flutter project. @@ -58,6 +58,6 @@ android { } defaultConfig { - minSdk = 21 + minSdk = 24 } } diff --git a/ffigen_codelab/step_03/example/.gemini/settings.json b/ffigen_codelab/step_03/example/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/ffigen_codelab/step_03/example/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/ffigen_codelab/step_03/example/.gitignore b/ffigen_codelab/step_03/example/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/ffigen_codelab/step_03/example/.gitignore +++ b/ffigen_codelab/step_03/example/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/ffigen_codelab/step_03/example/android/build.gradle.kts b/ffigen_codelab/step_03/example/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/ffigen_codelab/step_03/example/android/build.gradle.kts +++ b/ffigen_codelab/step_03/example/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/ffigen_codelab/step_03/example/android/settings.gradle.kts b/ffigen_codelab/step_03/example/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/ffigen_codelab/step_03/example/android/settings.gradle.kts +++ b/ffigen_codelab/step_03/example/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/ffigen_codelab/step_03/example/ios/Flutter/AppFrameworkInfo.plist b/ffigen_codelab/step_03/example/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/ffigen_codelab/step_03/example/ios/Flutter/AppFrameworkInfo.plist +++ b/ffigen_codelab/step_03/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/ffigen_codelab/step_03/example/ios/Podfile b/ffigen_codelab/step_03/example/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/ffigen_codelab/step_03/example/ios/Podfile +++ b/ffigen_codelab/step_03/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ffigen_codelab/step_03/example/ios/Runner.xcodeproj/project.pbxproj b/ffigen_codelab/step_03/example/ios/Runner.xcodeproj/project.pbxproj index 600745f4a3..701d459e44 100644 --- a/ffigen_codelab/step_03/example/ios/Runner.xcodeproj/project.pbxproj +++ b/ffigen_codelab/step_03/example/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 1061C1C3CF975F8B0313985B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B39F871A60C2999911FB836D /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 6C92F29D2FAA133765E68AC3 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8EE6EDBA86F4A0E78FC818D7 /* Pods_RunnerTests.framework */; }; 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 */; }; - F4639C17954BBCE5227720CA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D5479C5DAA6A9B2EB6F5FAA /* Pods_Runner.framework */; }; + F1796C86A0DAC635B6290D02 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB02A85A19BD8AB746FA3C6 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,19 +42,20 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 110DF77BD9ECB32CEABC10E7 /* 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 = ""; }; - 13150FC4E088D0930E891195 /* 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 = ""; }; + 0AB02A85A19BD8AB746FA3C6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 106704E7A38764C2F5CF9919 /* 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 = ""; }; 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 = ""; }; + 2F0904A7126B261D646E11F4 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 44F5C23B6AE4F8F99AF7875C /* 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 = ""; }; + 5E4F7497A8A68429AA3D5252 /* 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 = ""; }; 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 = ""; }; - 76FF5FAB9BC324A8C478907E /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 8D5479C5DAA6A9B2EB6F5FAA /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8EE6EDBA86F4A0E78FC818D7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7C31CAE0364A1DDA5D0C95D7 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,17 +63,16 @@ 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 = ""; }; - D5CDBE26BD300202DA7F1E46 /* 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 = ""; }; - D6C330F15C54EEA0913846EA /* 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 = ""; }; - F025CC3C0705FD0410BE7C68 /* 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 = ""; }; + B39F871A60C2999911FB836D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C3D41E29B74DDD202CDE256C /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 792974FBCDC382BB47017FE0 /* Frameworks */ = { + 0D1AF455A7A884EEDABC0B74 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6C92F29D2FAA133765E68AC3 /* Pods_RunnerTests.framework in Frameworks */, + 1061C1C3CF975F8B0313985B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,36 +80,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F4639C17954BBCE5227720CA /* Pods_Runner.framework in Frameworks */, + F1796C86A0DAC635B6290D02 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0EF9B23895BAF7CB74C8DA7D /* Frameworks */ = { - isa = PBXGroup; - children = ( - 8D5479C5DAA6A9B2EB6F5FAA /* Pods_Runner.framework */, - 8EE6EDBA86F4A0E78FC818D7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 0F87BA3B2C0A0E95487959D8 /* Pods */ = { - isa = PBXGroup; - children = ( - 13150FC4E088D0930E891195 /* Pods-Runner.debug.xcconfig */, - D6C330F15C54EEA0913846EA /* Pods-Runner.release.xcconfig */, - F025CC3C0705FD0410BE7C68 /* Pods-Runner.profile.xcconfig */, - 110DF77BD9ECB32CEABC10E7 /* Pods-RunnerTests.debug.xcconfig */, - D5CDBE26BD300202DA7F1E46 /* Pods-RunnerTests.release.xcconfig */, - 76FF5FAB9BC324A8C478907E /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 0F87BA3B2C0A0E95487959D8 /* Pods */, - 0EF9B23895BAF7CB74C8DA7D /* Frameworks */, + F83073074C6AAF89559982C4 /* Pods */, + C3071D963B6A10BC32734D70 /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + C3071D963B6A10BC32734D70 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0AB02A85A19BD8AB746FA3C6 /* Pods_Runner.framework */, + B39F871A60C2999911FB836D /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + F83073074C6AAF89559982C4 /* Pods */ = { + isa = PBXGroup; + children = ( + 44F5C23B6AE4F8F99AF7875C /* Pods-Runner.debug.xcconfig */, + 5E4F7497A8A68429AA3D5252 /* Pods-Runner.release.xcconfig */, + C3D41E29B74DDD202CDE256C /* Pods-Runner.profile.xcconfig */, + 7C31CAE0364A1DDA5D0C95D7 /* Pods-RunnerTests.debug.xcconfig */, + 2F0904A7126B261D646E11F4 /* Pods-RunnerTests.release.xcconfig */, + 106704E7A38764C2F5CF9919 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 6B0CAB9371C26029900C4B23 /* [CP] Check Pods Manifest.lock */, + 90C858AD7013AF35117C5BA4 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 792974FBCDC382BB47017FE0 /* Frameworks */, + 0D1AF455A7A884EEDABC0B74 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 506521F2406883151AB2C709 /* [CP] Check Pods Manifest.lock */, + FA234FEAC048ABF5A4ED9DFE /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 84F98CA4C3F714587C4D73B6 /* [CP] Embed Pods Frameworks */, + BFFC45A221A2EE5B446BF42B /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,7 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 506521F2406883151AB2C709 /* [CP] Check Pods Manifest.lock */ = { + 90C858AD7013AF35117C5BA4 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -301,36 +301,29 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - 6B0CAB9371C26029900C4B23 /* [CP] Check Pods Manifest.lock */ = { + 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( ); + name = "Run Script"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - 84F98CA4C3F714587C4D73B6 /* [CP] Embed Pods Frameworks */ = { + BFFC45A221A2EE5B446BF42B /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -347,20 +340,27 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 9740EEB61CF901F6004384FC /* Run Script */ = { + FA234FEAC048ABF5A4ED9DFE /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Run Script"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + 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; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 110DF77BD9ECB32CEABC10E7 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 7C31CAE0364A1DDA5D0C95D7 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D5CDBE26BD300202DA7F1E46 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2F0904A7126B261D646E11F4 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 76FF5FAB9BC324A8C478907E /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 106704E7A38764C2F5CF9919 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/ffigen_codelab/step_03/example/linux/runner/my_application.cc b/ffigen_codelab/step_03/example/linux/runner/my_application.cc index 6233c3a531..9f5a70f563 100644 --- a/ffigen_codelab/step_03/example/linux/runner/my_application.cc +++ b/ffigen_codelab/step_03/example/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/ffigen_codelab/step_03/example/macos/Podfile b/ffigen_codelab/step_03/example/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/ffigen_codelab/step_03/example/macos/Podfile +++ b/ffigen_codelab/step_03/example/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ffigen_codelab/step_03/example/macos/Runner.xcodeproj/project.pbxproj b/ffigen_codelab/step_03/example/macos/Runner.xcodeproj/project.pbxproj index df82b786ae..16157465a4 100644 --- a/ffigen_codelab/step_03/example/macos/Runner.xcodeproj/project.pbxproj +++ b/ffigen_codelab/step_03/example/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 */; }; - 3A45715FADC2CBED049E8EAB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A200F7A08E5E9080EAC6A820 /* Pods_Runner.framework */; }; - BD12500112AE57AF6A93A256 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05B47ACBB91CB73783DB737D /* Pods_RunnerTests.framework */; }; + CF34BDC9EE75BD71E7A44E7B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55CC1DCF928EA48A70C65603 /* Pods_RunnerTests.framework */; }; + E14E78C549643B909081B68F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A80AEBA93ED9D0D04FC564 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 05B47ACBB91CB73783DB737D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 00AEF116211ECEDBCAA81829 /* 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 = ""; }; + 0CAB5771EF690A1573A15A45 /* 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 = ""; }; 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 +80,14 @@ 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 = ""; }; - 3AE18D82F37280713B196B39 /* 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 = ""; }; - 628A0B5B24C60790C23F0931 /* 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 = ""; }; - 6633226FA7F8A6076DE19748 /* 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 = ""; }; + 3ECEAA4E464EA89599DD4FBA /* 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 = ""; }; + 4F107C5797D9F84822E23890 /* 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 = ""; }; + 55CC1DCF928EA48A70C65603 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 8E977BE8DD1001E2FC7EFC78 /* 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 = ""; }; - 9896755208E905FA378D4626 /* 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 = ""; }; - A200F7A08E5E9080EAC6A820 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F00AB30B2705C5E35DE7D30E /* 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 = ""; }; - F4C41AAD766769D63CFE3C90 /* 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 = ""; }; + C8A80AEBA93ED9D0D04FC564 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CDCAF1D3C55B10085557AB35 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BD12500112AE57AF6A93A256 /* Pods_RunnerTests.framework in Frameworks */, + CF34BDC9EE75BD71E7A44E7B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3A45715FADC2CBED049E8EAB /* Pods_Runner.framework in Frameworks */, + E14E78C549643B909081B68F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 8506074FDB4F5D2BD2C4FF28 /* Pods */, + 6AB10AA6ADF68E295573E896 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 8506074FDB4F5D2BD2C4FF28 /* Pods */ = { + 6AB10AA6ADF68E295573E896 /* Pods */ = { isa = PBXGroup; children = ( - 3AE18D82F37280713B196B39 /* Pods-Runner.debug.xcconfig */, - 9896755208E905FA378D4626 /* Pods-Runner.release.xcconfig */, - 628A0B5B24C60790C23F0931 /* Pods-Runner.profile.xcconfig */, - F4C41AAD766769D63CFE3C90 /* Pods-RunnerTests.debug.xcconfig */, - F00AB30B2705C5E35DE7D30E /* Pods-RunnerTests.release.xcconfig */, - 6633226FA7F8A6076DE19748 /* Pods-RunnerTests.profile.xcconfig */, + 8E977BE8DD1001E2FC7EFC78 /* Pods-Runner.debug.xcconfig */, + 3ECEAA4E464EA89599DD4FBA /* Pods-Runner.release.xcconfig */, + 4F107C5797D9F84822E23890 /* Pods-Runner.profile.xcconfig */, + 0CAB5771EF690A1573A15A45 /* Pods-RunnerTests.debug.xcconfig */, + CDCAF1D3C55B10085557AB35 /* Pods-RunnerTests.release.xcconfig */, + 00AEF116211ECEDBCAA81829 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - A200F7A08E5E9080EAC6A820 /* Pods_Runner.framework */, - 05B47ACBB91CB73783DB737D /* Pods_RunnerTests.framework */, + C8A80AEBA93ED9D0D04FC564 /* Pods_Runner.framework */, + 55CC1DCF928EA48A70C65603 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5A8AD9E79DA62B1FA3F47D7E /* [CP] Check Pods Manifest.lock */, + FF2EF262F0A49D2B916E47F3 /* [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 = ( - C4BE51617943B724B05C8371 /* [CP] Check Pods Manifest.lock */, + B0F4D836178C059A737EB208 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 3CB4256D3750DD481DDEE45B /* [CP] Embed Pods Frameworks */, + 30067A468F36871AB85CA23D /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 30067A468F36871AB85CA23D /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 3CB4256D3750DD481DDEE45B /* [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; - }; - 5A8AD9E79DA62B1FA3F47D7E /* [CP] Check Pods Manifest.lock */ = { + B0F4D836178C059A737EB208 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -393,14 +393,14 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - C4BE51617943B724B05C8371 /* [CP] Check Pods Manifest.lock */ = { + FF2EF262F0A49D2B916E47F3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -415,7 +415,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F4C41AAD766769D63CFE3C90 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0CAB5771EF690A1573A15A45 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F00AB30B2705C5E35DE7D30E /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = CDCAF1D3C55B10085557AB35 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6633226FA7F8A6076DE19748 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 00AEF116211ECEDBCAA81829 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/ffigen_codelab/step_03/example/pubspec.yaml b/ffigen_codelab/step_03/example/pubspec.yaml index f96b4f56bf..98469740b0 100644 --- a/ffigen_codelab/step_03/example/pubspec.yaml +++ b/ffigen_codelab/step_03/example/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions diff --git a/ffigen_codelab/step_03/ios/ffigen_app.podspec b/ffigen_codelab/step_03/ios/ffigen_app.podspec index a84b65211e..a5e62ced15 100644 --- a/ffigen_codelab/step_03/ios/ffigen_app.podspec +++ b/ffigen_codelab/step_03/ios/ffigen_app.podspec @@ -20,7 +20,7 @@ A new Flutter FFI plugin project. s.source = { :path => '.' } s.source_files = 'Classes/**/*' s.dependency 'Flutter' - s.platform = :ios, '12.0' + s.platform = :ios, '13.0' # Flutter.framework does not contain a i386 slice. s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } diff --git a/ffigen_codelab/step_03/pubspec.yaml b/ffigen_codelab/step_03/pubspec.yaml index df8ace9f5a..26abdd7bed 100644 --- a/ffigen_codelab/step_03/pubspec.yaml +++ b/ffigen_codelab/step_03/pubspec.yaml @@ -4,7 +4,7 @@ version: 0.0.1 homepage: environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 flutter: '>=3.3.0' dependencies: @@ -14,7 +14,7 @@ dependencies: dev_dependencies: ffi: ^2.1.3 - ffigen: ^19.0.0 + ffigen: ^19.1.0 flutter_test: sdk: flutter flutter_lints: ^6.0.0 diff --git a/ffigen_codelab/step_05/.gemini/settings.json b/ffigen_codelab/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/ffigen_codelab/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/ffigen_codelab/step_05/.gitignore b/ffigen_codelab/step_05/.gitignore index e7d347d9d3..b9d7f25b91 100644 --- a/ffigen_codelab/step_05/.gitignore +++ b/ffigen_codelab/step_05/.gitignore @@ -28,6 +28,6 @@ migrate_working_dir/ /pubspec.lock **/doc/api/ .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies -build/ +/build/ +/coverage/ diff --git a/ffigen_codelab/step_05/android/build.gradle b/ffigen_codelab/step_05/android/build.gradle index 7e0d8fe973..041607c141 100644 --- a/ffigen_codelab/step_05/android/build.gradle +++ b/ffigen_codelab/step_05/android/build.gradle @@ -11,7 +11,7 @@ buildscript { dependencies { // The Android Gradle Plugin knows how to build native code with the NDK. - classpath("com.android.tools.build:gradle:8.7.3") + classpath("com.android.tools.build:gradle:8.9.1") } } @@ -29,7 +29,7 @@ android { // Bumping the plugin compileSdk version requires all clients of this plugin // to bump the version in their app. - compileSdk = 35 + compileSdk = 36 // Use the NDK version // declared in /android/app/build.gradle file of the Flutter project. @@ -58,6 +58,6 @@ android { } defaultConfig { - minSdk = 21 + minSdk = 24 } } diff --git a/ffigen_codelab/step_05/example/.gemini/settings.json b/ffigen_codelab/step_05/example/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/ffigen_codelab/step_05/example/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/ffigen_codelab/step_05/example/.gitignore b/ffigen_codelab/step_05/example/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/ffigen_codelab/step_05/example/.gitignore +++ b/ffigen_codelab/step_05/example/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/ffigen_codelab/step_05/example/android/build.gradle.kts b/ffigen_codelab/step_05/example/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/ffigen_codelab/step_05/example/android/build.gradle.kts +++ b/ffigen_codelab/step_05/example/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/ffigen_codelab/step_05/example/android/settings.gradle.kts b/ffigen_codelab/step_05/example/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/ffigen_codelab/step_05/example/android/settings.gradle.kts +++ b/ffigen_codelab/step_05/example/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/ffigen_codelab/step_05/example/ios/Flutter/AppFrameworkInfo.plist b/ffigen_codelab/step_05/example/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/ffigen_codelab/step_05/example/ios/Flutter/AppFrameworkInfo.plist +++ b/ffigen_codelab/step_05/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/ffigen_codelab/step_05/example/ios/Podfile b/ffigen_codelab/step_05/example/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/ffigen_codelab/step_05/example/ios/Podfile +++ b/ffigen_codelab/step_05/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ffigen_codelab/step_05/example/ios/Runner.xcodeproj/project.pbxproj b/ffigen_codelab/step_05/example/ios/Runner.xcodeproj/project.pbxproj index 600745f4a3..701d459e44 100644 --- a/ffigen_codelab/step_05/example/ios/Runner.xcodeproj/project.pbxproj +++ b/ffigen_codelab/step_05/example/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 1061C1C3CF975F8B0313985B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B39F871A60C2999911FB836D /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 6C92F29D2FAA133765E68AC3 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8EE6EDBA86F4A0E78FC818D7 /* Pods_RunnerTests.framework */; }; 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 */; }; - F4639C17954BBCE5227720CA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D5479C5DAA6A9B2EB6F5FAA /* Pods_Runner.framework */; }; + F1796C86A0DAC635B6290D02 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB02A85A19BD8AB746FA3C6 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,19 +42,20 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 110DF77BD9ECB32CEABC10E7 /* 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 = ""; }; - 13150FC4E088D0930E891195 /* 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 = ""; }; + 0AB02A85A19BD8AB746FA3C6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 106704E7A38764C2F5CF9919 /* 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 = ""; }; 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 = ""; }; + 2F0904A7126B261D646E11F4 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 44F5C23B6AE4F8F99AF7875C /* 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 = ""; }; + 5E4F7497A8A68429AA3D5252 /* 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 = ""; }; 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 = ""; }; - 76FF5FAB9BC324A8C478907E /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 8D5479C5DAA6A9B2EB6F5FAA /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8EE6EDBA86F4A0E78FC818D7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7C31CAE0364A1DDA5D0C95D7 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,17 +63,16 @@ 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 = ""; }; - D5CDBE26BD300202DA7F1E46 /* 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 = ""; }; - D6C330F15C54EEA0913846EA /* 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 = ""; }; - F025CC3C0705FD0410BE7C68 /* 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 = ""; }; + B39F871A60C2999911FB836D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C3D41E29B74DDD202CDE256C /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 792974FBCDC382BB47017FE0 /* Frameworks */ = { + 0D1AF455A7A884EEDABC0B74 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6C92F29D2FAA133765E68AC3 /* Pods_RunnerTests.framework in Frameworks */, + 1061C1C3CF975F8B0313985B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,36 +80,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F4639C17954BBCE5227720CA /* Pods_Runner.framework in Frameworks */, + F1796C86A0DAC635B6290D02 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0EF9B23895BAF7CB74C8DA7D /* Frameworks */ = { - isa = PBXGroup; - children = ( - 8D5479C5DAA6A9B2EB6F5FAA /* Pods_Runner.framework */, - 8EE6EDBA86F4A0E78FC818D7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 0F87BA3B2C0A0E95487959D8 /* Pods */ = { - isa = PBXGroup; - children = ( - 13150FC4E088D0930E891195 /* Pods-Runner.debug.xcconfig */, - D6C330F15C54EEA0913846EA /* Pods-Runner.release.xcconfig */, - F025CC3C0705FD0410BE7C68 /* Pods-Runner.profile.xcconfig */, - 110DF77BD9ECB32CEABC10E7 /* Pods-RunnerTests.debug.xcconfig */, - D5CDBE26BD300202DA7F1E46 /* Pods-RunnerTests.release.xcconfig */, - 76FF5FAB9BC324A8C478907E /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 0F87BA3B2C0A0E95487959D8 /* Pods */, - 0EF9B23895BAF7CB74C8DA7D /* Frameworks */, + F83073074C6AAF89559982C4 /* Pods */, + C3071D963B6A10BC32734D70 /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + C3071D963B6A10BC32734D70 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0AB02A85A19BD8AB746FA3C6 /* Pods_Runner.framework */, + B39F871A60C2999911FB836D /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + F83073074C6AAF89559982C4 /* Pods */ = { + isa = PBXGroup; + children = ( + 44F5C23B6AE4F8F99AF7875C /* Pods-Runner.debug.xcconfig */, + 5E4F7497A8A68429AA3D5252 /* Pods-Runner.release.xcconfig */, + C3D41E29B74DDD202CDE256C /* Pods-Runner.profile.xcconfig */, + 7C31CAE0364A1DDA5D0C95D7 /* Pods-RunnerTests.debug.xcconfig */, + 2F0904A7126B261D646E11F4 /* Pods-RunnerTests.release.xcconfig */, + 106704E7A38764C2F5CF9919 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 6B0CAB9371C26029900C4B23 /* [CP] Check Pods Manifest.lock */, + 90C858AD7013AF35117C5BA4 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 792974FBCDC382BB47017FE0 /* Frameworks */, + 0D1AF455A7A884EEDABC0B74 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 506521F2406883151AB2C709 /* [CP] Check Pods Manifest.lock */, + FA234FEAC048ABF5A4ED9DFE /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 84F98CA4C3F714587C4D73B6 /* [CP] Embed Pods Frameworks */, + BFFC45A221A2EE5B446BF42B /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,7 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 506521F2406883151AB2C709 /* [CP] Check Pods Manifest.lock */ = { + 90C858AD7013AF35117C5BA4 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -301,36 +301,29 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - 6B0CAB9371C26029900C4B23 /* [CP] Check Pods Manifest.lock */ = { + 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( ); + name = "Run Script"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - 84F98CA4C3F714587C4D73B6 /* [CP] Embed Pods Frameworks */ = { + BFFC45A221A2EE5B446BF42B /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -347,20 +340,27 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 9740EEB61CF901F6004384FC /* Run Script */ = { + FA234FEAC048ABF5A4ED9DFE /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Run Script"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + 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; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 110DF77BD9ECB32CEABC10E7 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 7C31CAE0364A1DDA5D0C95D7 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D5CDBE26BD300202DA7F1E46 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2F0904A7126B261D646E11F4 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 76FF5FAB9BC324A8C478907E /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 106704E7A38764C2F5CF9919 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/ffigen_codelab/step_05/example/linux/runner/my_application.cc b/ffigen_codelab/step_05/example/linux/runner/my_application.cc index 6233c3a531..9f5a70f563 100644 --- a/ffigen_codelab/step_05/example/linux/runner/my_application.cc +++ b/ffigen_codelab/step_05/example/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/ffigen_codelab/step_05/example/macos/Podfile b/ffigen_codelab/step_05/example/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/ffigen_codelab/step_05/example/macos/Podfile +++ b/ffigen_codelab/step_05/example/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ffigen_codelab/step_05/example/macos/Runner.xcodeproj/project.pbxproj b/ffigen_codelab/step_05/example/macos/Runner.xcodeproj/project.pbxproj index df82b786ae..16157465a4 100644 --- a/ffigen_codelab/step_05/example/macos/Runner.xcodeproj/project.pbxproj +++ b/ffigen_codelab/step_05/example/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 */; }; - 3A45715FADC2CBED049E8EAB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A200F7A08E5E9080EAC6A820 /* Pods_Runner.framework */; }; - BD12500112AE57AF6A93A256 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05B47ACBB91CB73783DB737D /* Pods_RunnerTests.framework */; }; + CF34BDC9EE75BD71E7A44E7B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55CC1DCF928EA48A70C65603 /* Pods_RunnerTests.framework */; }; + E14E78C549643B909081B68F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A80AEBA93ED9D0D04FC564 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 05B47ACBB91CB73783DB737D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 00AEF116211ECEDBCAA81829 /* 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 = ""; }; + 0CAB5771EF690A1573A15A45 /* 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 = ""; }; 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 +80,14 @@ 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 = ""; }; - 3AE18D82F37280713B196B39 /* 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 = ""; }; - 628A0B5B24C60790C23F0931 /* 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 = ""; }; - 6633226FA7F8A6076DE19748 /* 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 = ""; }; + 3ECEAA4E464EA89599DD4FBA /* 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 = ""; }; + 4F107C5797D9F84822E23890 /* 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 = ""; }; + 55CC1DCF928EA48A70C65603 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 8E977BE8DD1001E2FC7EFC78 /* 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 = ""; }; - 9896755208E905FA378D4626 /* 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 = ""; }; - A200F7A08E5E9080EAC6A820 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F00AB30B2705C5E35DE7D30E /* 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 = ""; }; - F4C41AAD766769D63CFE3C90 /* 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 = ""; }; + C8A80AEBA93ED9D0D04FC564 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CDCAF1D3C55B10085557AB35 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BD12500112AE57AF6A93A256 /* Pods_RunnerTests.framework in Frameworks */, + CF34BDC9EE75BD71E7A44E7B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3A45715FADC2CBED049E8EAB /* Pods_Runner.framework in Frameworks */, + E14E78C549643B909081B68F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 8506074FDB4F5D2BD2C4FF28 /* Pods */, + 6AB10AA6ADF68E295573E896 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 8506074FDB4F5D2BD2C4FF28 /* Pods */ = { + 6AB10AA6ADF68E295573E896 /* Pods */ = { isa = PBXGroup; children = ( - 3AE18D82F37280713B196B39 /* Pods-Runner.debug.xcconfig */, - 9896755208E905FA378D4626 /* Pods-Runner.release.xcconfig */, - 628A0B5B24C60790C23F0931 /* Pods-Runner.profile.xcconfig */, - F4C41AAD766769D63CFE3C90 /* Pods-RunnerTests.debug.xcconfig */, - F00AB30B2705C5E35DE7D30E /* Pods-RunnerTests.release.xcconfig */, - 6633226FA7F8A6076DE19748 /* Pods-RunnerTests.profile.xcconfig */, + 8E977BE8DD1001E2FC7EFC78 /* Pods-Runner.debug.xcconfig */, + 3ECEAA4E464EA89599DD4FBA /* Pods-Runner.release.xcconfig */, + 4F107C5797D9F84822E23890 /* Pods-Runner.profile.xcconfig */, + 0CAB5771EF690A1573A15A45 /* Pods-RunnerTests.debug.xcconfig */, + CDCAF1D3C55B10085557AB35 /* Pods-RunnerTests.release.xcconfig */, + 00AEF116211ECEDBCAA81829 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - A200F7A08E5E9080EAC6A820 /* Pods_Runner.framework */, - 05B47ACBB91CB73783DB737D /* Pods_RunnerTests.framework */, + C8A80AEBA93ED9D0D04FC564 /* Pods_Runner.framework */, + 55CC1DCF928EA48A70C65603 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5A8AD9E79DA62B1FA3F47D7E /* [CP] Check Pods Manifest.lock */, + FF2EF262F0A49D2B916E47F3 /* [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 = ( - C4BE51617943B724B05C8371 /* [CP] Check Pods Manifest.lock */, + B0F4D836178C059A737EB208 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 3CB4256D3750DD481DDEE45B /* [CP] Embed Pods Frameworks */, + 30067A468F36871AB85CA23D /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 30067A468F36871AB85CA23D /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 3CB4256D3750DD481DDEE45B /* [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; - }; - 5A8AD9E79DA62B1FA3F47D7E /* [CP] Check Pods Manifest.lock */ = { + B0F4D836178C059A737EB208 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -393,14 +393,14 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - C4BE51617943B724B05C8371 /* [CP] Check Pods Manifest.lock */ = { + FF2EF262F0A49D2B916E47F3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -415,7 +415,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F4C41AAD766769D63CFE3C90 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0CAB5771EF690A1573A15A45 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F00AB30B2705C5E35DE7D30E /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = CDCAF1D3C55B10085557AB35 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6633226FA7F8A6076DE19748 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 00AEF116211ECEDBCAA81829 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/ffigen_codelab/step_05/example/pubspec.yaml b/ffigen_codelab/step_05/example/pubspec.yaml index f96b4f56bf..98469740b0 100644 --- a/ffigen_codelab/step_05/example/pubspec.yaml +++ b/ffigen_codelab/step_05/example/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions diff --git a/ffigen_codelab/step_05/ios/ffigen_app.podspec b/ffigen_codelab/step_05/ios/ffigen_app.podspec index a84b65211e..a5e62ced15 100644 --- a/ffigen_codelab/step_05/ios/ffigen_app.podspec +++ b/ffigen_codelab/step_05/ios/ffigen_app.podspec @@ -20,7 +20,7 @@ A new Flutter FFI plugin project. s.source = { :path => '.' } s.source_files = 'Classes/**/*' s.dependency 'Flutter' - s.platform = :ios, '12.0' + s.platform = :ios, '13.0' # Flutter.framework does not contain a i386 slice. s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } diff --git a/ffigen_codelab/step_05/pubspec.yaml b/ffigen_codelab/step_05/pubspec.yaml index 07095f8735..f08abe34a2 100644 --- a/ffigen_codelab/step_05/pubspec.yaml +++ b/ffigen_codelab/step_05/pubspec.yaml @@ -4,7 +4,7 @@ version: 0.0.1 homepage: environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 flutter: '>=3.3.0' dependencies: @@ -14,7 +14,7 @@ dependencies: plugin_platform_interface: ^2.0.2 dev_dependencies: - ffigen: ^19.0.0 + ffigen: ^19.1.0 flutter_test: sdk: flutter flutter_lints: ^6.0.0 diff --git a/ffigen_codelab/step_06/.gemini/settings.json b/ffigen_codelab/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/ffigen_codelab/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/ffigen_codelab/step_06/.gitignore b/ffigen_codelab/step_06/.gitignore index e7d347d9d3..b9d7f25b91 100644 --- a/ffigen_codelab/step_06/.gitignore +++ b/ffigen_codelab/step_06/.gitignore @@ -28,6 +28,6 @@ migrate_working_dir/ /pubspec.lock **/doc/api/ .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies -build/ +/build/ +/coverage/ diff --git a/ffigen_codelab/step_06/android/build.gradle b/ffigen_codelab/step_06/android/build.gradle index 7e0d8fe973..041607c141 100644 --- a/ffigen_codelab/step_06/android/build.gradle +++ b/ffigen_codelab/step_06/android/build.gradle @@ -11,7 +11,7 @@ buildscript { dependencies { // The Android Gradle Plugin knows how to build native code with the NDK. - classpath("com.android.tools.build:gradle:8.7.3") + classpath("com.android.tools.build:gradle:8.9.1") } } @@ -29,7 +29,7 @@ android { // Bumping the plugin compileSdk version requires all clients of this plugin // to bump the version in their app. - compileSdk = 35 + compileSdk = 36 // Use the NDK version // declared in /android/app/build.gradle file of the Flutter project. @@ -58,6 +58,6 @@ android { } defaultConfig { - minSdk = 21 + minSdk = 24 } } diff --git a/ffigen_codelab/step_06/example/.gemini/settings.json b/ffigen_codelab/step_06/example/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/ffigen_codelab/step_06/example/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/ffigen_codelab/step_06/example/.gitignore b/ffigen_codelab/step_06/example/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/ffigen_codelab/step_06/example/.gitignore +++ b/ffigen_codelab/step_06/example/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/ffigen_codelab/step_06/example/android/build.gradle.kts b/ffigen_codelab/step_06/example/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/ffigen_codelab/step_06/example/android/build.gradle.kts +++ b/ffigen_codelab/step_06/example/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/ffigen_codelab/step_06/example/android/settings.gradle.kts b/ffigen_codelab/step_06/example/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/ffigen_codelab/step_06/example/android/settings.gradle.kts +++ b/ffigen_codelab/step_06/example/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/ffigen_codelab/step_06/example/ios/Flutter/AppFrameworkInfo.plist b/ffigen_codelab/step_06/example/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/ffigen_codelab/step_06/example/ios/Flutter/AppFrameworkInfo.plist +++ b/ffigen_codelab/step_06/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/ffigen_codelab/step_06/example/ios/Podfile b/ffigen_codelab/step_06/example/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/ffigen_codelab/step_06/example/ios/Podfile +++ b/ffigen_codelab/step_06/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ffigen_codelab/step_06/example/ios/Runner.xcodeproj/project.pbxproj b/ffigen_codelab/step_06/example/ios/Runner.xcodeproj/project.pbxproj index 600745f4a3..701d459e44 100644 --- a/ffigen_codelab/step_06/example/ios/Runner.xcodeproj/project.pbxproj +++ b/ffigen_codelab/step_06/example/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 1061C1C3CF975F8B0313985B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B39F871A60C2999911FB836D /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 6C92F29D2FAA133765E68AC3 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8EE6EDBA86F4A0E78FC818D7 /* Pods_RunnerTests.framework */; }; 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 */; }; - F4639C17954BBCE5227720CA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D5479C5DAA6A9B2EB6F5FAA /* Pods_Runner.framework */; }; + F1796C86A0DAC635B6290D02 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB02A85A19BD8AB746FA3C6 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,19 +42,20 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 110DF77BD9ECB32CEABC10E7 /* 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 = ""; }; - 13150FC4E088D0930E891195 /* 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 = ""; }; + 0AB02A85A19BD8AB746FA3C6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 106704E7A38764C2F5CF9919 /* 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 = ""; }; 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 = ""; }; + 2F0904A7126B261D646E11F4 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 44F5C23B6AE4F8F99AF7875C /* 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 = ""; }; + 5E4F7497A8A68429AA3D5252 /* 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 = ""; }; 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 = ""; }; - 76FF5FAB9BC324A8C478907E /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 8D5479C5DAA6A9B2EB6F5FAA /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8EE6EDBA86F4A0E78FC818D7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7C31CAE0364A1DDA5D0C95D7 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,17 +63,16 @@ 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 = ""; }; - D5CDBE26BD300202DA7F1E46 /* 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 = ""; }; - D6C330F15C54EEA0913846EA /* 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 = ""; }; - F025CC3C0705FD0410BE7C68 /* 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 = ""; }; + B39F871A60C2999911FB836D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C3D41E29B74DDD202CDE256C /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 792974FBCDC382BB47017FE0 /* Frameworks */ = { + 0D1AF455A7A884EEDABC0B74 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6C92F29D2FAA133765E68AC3 /* Pods_RunnerTests.framework in Frameworks */, + 1061C1C3CF975F8B0313985B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,36 +80,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F4639C17954BBCE5227720CA /* Pods_Runner.framework in Frameworks */, + F1796C86A0DAC635B6290D02 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0EF9B23895BAF7CB74C8DA7D /* Frameworks */ = { - isa = PBXGroup; - children = ( - 8D5479C5DAA6A9B2EB6F5FAA /* Pods_Runner.framework */, - 8EE6EDBA86F4A0E78FC818D7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 0F87BA3B2C0A0E95487959D8 /* Pods */ = { - isa = PBXGroup; - children = ( - 13150FC4E088D0930E891195 /* Pods-Runner.debug.xcconfig */, - D6C330F15C54EEA0913846EA /* Pods-Runner.release.xcconfig */, - F025CC3C0705FD0410BE7C68 /* Pods-Runner.profile.xcconfig */, - 110DF77BD9ECB32CEABC10E7 /* Pods-RunnerTests.debug.xcconfig */, - D5CDBE26BD300202DA7F1E46 /* Pods-RunnerTests.release.xcconfig */, - 76FF5FAB9BC324A8C478907E /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 0F87BA3B2C0A0E95487959D8 /* Pods */, - 0EF9B23895BAF7CB74C8DA7D /* Frameworks */, + F83073074C6AAF89559982C4 /* Pods */, + C3071D963B6A10BC32734D70 /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + C3071D963B6A10BC32734D70 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0AB02A85A19BD8AB746FA3C6 /* Pods_Runner.framework */, + B39F871A60C2999911FB836D /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + F83073074C6AAF89559982C4 /* Pods */ = { + isa = PBXGroup; + children = ( + 44F5C23B6AE4F8F99AF7875C /* Pods-Runner.debug.xcconfig */, + 5E4F7497A8A68429AA3D5252 /* Pods-Runner.release.xcconfig */, + C3D41E29B74DDD202CDE256C /* Pods-Runner.profile.xcconfig */, + 7C31CAE0364A1DDA5D0C95D7 /* Pods-RunnerTests.debug.xcconfig */, + 2F0904A7126B261D646E11F4 /* Pods-RunnerTests.release.xcconfig */, + 106704E7A38764C2F5CF9919 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 6B0CAB9371C26029900C4B23 /* [CP] Check Pods Manifest.lock */, + 90C858AD7013AF35117C5BA4 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 792974FBCDC382BB47017FE0 /* Frameworks */, + 0D1AF455A7A884EEDABC0B74 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 506521F2406883151AB2C709 /* [CP] Check Pods Manifest.lock */, + FA234FEAC048ABF5A4ED9DFE /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 84F98CA4C3F714587C4D73B6 /* [CP] Embed Pods Frameworks */, + BFFC45A221A2EE5B446BF42B /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,7 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 506521F2406883151AB2C709 /* [CP] Check Pods Manifest.lock */ = { + 90C858AD7013AF35117C5BA4 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -301,36 +301,29 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - 6B0CAB9371C26029900C4B23 /* [CP] Check Pods Manifest.lock */ = { + 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( ); + name = "Run Script"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - 84F98CA4C3F714587C4D73B6 /* [CP] Embed Pods Frameworks */ = { + BFFC45A221A2EE5B446BF42B /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -347,20 +340,27 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 9740EEB61CF901F6004384FC /* Run Script */ = { + FA234FEAC048ABF5A4ED9DFE /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Run Script"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + 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; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 110DF77BD9ECB32CEABC10E7 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 7C31CAE0364A1DDA5D0C95D7 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D5CDBE26BD300202DA7F1E46 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2F0904A7126B261D646E11F4 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 76FF5FAB9BC324A8C478907E /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 106704E7A38764C2F5CF9919 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/ffigen_codelab/step_06/example/linux/runner/my_application.cc b/ffigen_codelab/step_06/example/linux/runner/my_application.cc index 6233c3a531..9f5a70f563 100644 --- a/ffigen_codelab/step_06/example/linux/runner/my_application.cc +++ b/ffigen_codelab/step_06/example/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/ffigen_codelab/step_06/example/macos/Podfile b/ffigen_codelab/step_06/example/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/ffigen_codelab/step_06/example/macos/Podfile +++ b/ffigen_codelab/step_06/example/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ffigen_codelab/step_06/example/macos/Runner.xcodeproj/project.pbxproj b/ffigen_codelab/step_06/example/macos/Runner.xcodeproj/project.pbxproj index df82b786ae..16157465a4 100644 --- a/ffigen_codelab/step_06/example/macos/Runner.xcodeproj/project.pbxproj +++ b/ffigen_codelab/step_06/example/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 */; }; - 3A45715FADC2CBED049E8EAB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A200F7A08E5E9080EAC6A820 /* Pods_Runner.framework */; }; - BD12500112AE57AF6A93A256 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05B47ACBB91CB73783DB737D /* Pods_RunnerTests.framework */; }; + CF34BDC9EE75BD71E7A44E7B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55CC1DCF928EA48A70C65603 /* Pods_RunnerTests.framework */; }; + E14E78C549643B909081B68F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A80AEBA93ED9D0D04FC564 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 05B47ACBB91CB73783DB737D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 00AEF116211ECEDBCAA81829 /* 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 = ""; }; + 0CAB5771EF690A1573A15A45 /* 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 = ""; }; 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 +80,14 @@ 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 = ""; }; - 3AE18D82F37280713B196B39 /* 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 = ""; }; - 628A0B5B24C60790C23F0931 /* 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 = ""; }; - 6633226FA7F8A6076DE19748 /* 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 = ""; }; + 3ECEAA4E464EA89599DD4FBA /* 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 = ""; }; + 4F107C5797D9F84822E23890 /* 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 = ""; }; + 55CC1DCF928EA48A70C65603 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 8E977BE8DD1001E2FC7EFC78 /* 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 = ""; }; - 9896755208E905FA378D4626 /* 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 = ""; }; - A200F7A08E5E9080EAC6A820 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F00AB30B2705C5E35DE7D30E /* 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 = ""; }; - F4C41AAD766769D63CFE3C90 /* 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 = ""; }; + C8A80AEBA93ED9D0D04FC564 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CDCAF1D3C55B10085557AB35 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BD12500112AE57AF6A93A256 /* Pods_RunnerTests.framework in Frameworks */, + CF34BDC9EE75BD71E7A44E7B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3A45715FADC2CBED049E8EAB /* Pods_Runner.framework in Frameworks */, + E14E78C549643B909081B68F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 8506074FDB4F5D2BD2C4FF28 /* Pods */, + 6AB10AA6ADF68E295573E896 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 8506074FDB4F5D2BD2C4FF28 /* Pods */ = { + 6AB10AA6ADF68E295573E896 /* Pods */ = { isa = PBXGroup; children = ( - 3AE18D82F37280713B196B39 /* Pods-Runner.debug.xcconfig */, - 9896755208E905FA378D4626 /* Pods-Runner.release.xcconfig */, - 628A0B5B24C60790C23F0931 /* Pods-Runner.profile.xcconfig */, - F4C41AAD766769D63CFE3C90 /* Pods-RunnerTests.debug.xcconfig */, - F00AB30B2705C5E35DE7D30E /* Pods-RunnerTests.release.xcconfig */, - 6633226FA7F8A6076DE19748 /* Pods-RunnerTests.profile.xcconfig */, + 8E977BE8DD1001E2FC7EFC78 /* Pods-Runner.debug.xcconfig */, + 3ECEAA4E464EA89599DD4FBA /* Pods-Runner.release.xcconfig */, + 4F107C5797D9F84822E23890 /* Pods-Runner.profile.xcconfig */, + 0CAB5771EF690A1573A15A45 /* Pods-RunnerTests.debug.xcconfig */, + CDCAF1D3C55B10085557AB35 /* Pods-RunnerTests.release.xcconfig */, + 00AEF116211ECEDBCAA81829 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - A200F7A08E5E9080EAC6A820 /* Pods_Runner.framework */, - 05B47ACBB91CB73783DB737D /* Pods_RunnerTests.framework */, + C8A80AEBA93ED9D0D04FC564 /* Pods_Runner.framework */, + 55CC1DCF928EA48A70C65603 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5A8AD9E79DA62B1FA3F47D7E /* [CP] Check Pods Manifest.lock */, + FF2EF262F0A49D2B916E47F3 /* [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 = ( - C4BE51617943B724B05C8371 /* [CP] Check Pods Manifest.lock */, + B0F4D836178C059A737EB208 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 3CB4256D3750DD481DDEE45B /* [CP] Embed Pods Frameworks */, + 30067A468F36871AB85CA23D /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 30067A468F36871AB85CA23D /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 3CB4256D3750DD481DDEE45B /* [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; - }; - 5A8AD9E79DA62B1FA3F47D7E /* [CP] Check Pods Manifest.lock */ = { + B0F4D836178C059A737EB208 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -393,14 +393,14 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - C4BE51617943B724B05C8371 /* [CP] Check Pods Manifest.lock */ = { + FF2EF262F0A49D2B916E47F3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -415,7 +415,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F4C41AAD766769D63CFE3C90 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0CAB5771EF690A1573A15A45 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F00AB30B2705C5E35DE7D30E /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = CDCAF1D3C55B10085557AB35 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6633226FA7F8A6076DE19748 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 00AEF116211ECEDBCAA81829 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/ffigen_codelab/step_06/example/pubspec.yaml b/ffigen_codelab/step_06/example/pubspec.yaml index f96b4f56bf..98469740b0 100644 --- a/ffigen_codelab/step_06/example/pubspec.yaml +++ b/ffigen_codelab/step_06/example/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions diff --git a/ffigen_codelab/step_06/ios/ffigen_app.podspec b/ffigen_codelab/step_06/ios/ffigen_app.podspec index a84b65211e..a5e62ced15 100644 --- a/ffigen_codelab/step_06/ios/ffigen_app.podspec +++ b/ffigen_codelab/step_06/ios/ffigen_app.podspec @@ -20,7 +20,7 @@ A new Flutter FFI plugin project. s.source = { :path => '.' } s.source_files = 'Classes/**/*' s.dependency 'Flutter' - s.platform = :ios, '12.0' + s.platform = :ios, '13.0' # Flutter.framework does not contain a i386 slice. s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } diff --git a/ffigen_codelab/step_06/pubspec.yaml b/ffigen_codelab/step_06/pubspec.yaml index 07095f8735..f08abe34a2 100644 --- a/ffigen_codelab/step_06/pubspec.yaml +++ b/ffigen_codelab/step_06/pubspec.yaml @@ -4,7 +4,7 @@ version: 0.0.1 homepage: environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 flutter: '>=3.3.0' dependencies: @@ -14,7 +14,7 @@ dependencies: plugin_platform_interface: ^2.0.2 dev_dependencies: - ffigen: ^19.0.0 + ffigen: ^19.1.0 flutter_test: sdk: flutter flutter_lints: ^6.0.0 diff --git a/ffigen_codelab/step_07/.gemini/settings.json b/ffigen_codelab/step_07/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/ffigen_codelab/step_07/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/ffigen_codelab/step_07/.gitignore b/ffigen_codelab/step_07/.gitignore index e7d347d9d3..b9d7f25b91 100644 --- a/ffigen_codelab/step_07/.gitignore +++ b/ffigen_codelab/step_07/.gitignore @@ -28,6 +28,6 @@ migrate_working_dir/ /pubspec.lock **/doc/api/ .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies -build/ +/build/ +/coverage/ diff --git a/ffigen_codelab/step_07/android/build.gradle b/ffigen_codelab/step_07/android/build.gradle index 7e0d8fe973..041607c141 100644 --- a/ffigen_codelab/step_07/android/build.gradle +++ b/ffigen_codelab/step_07/android/build.gradle @@ -11,7 +11,7 @@ buildscript { dependencies { // The Android Gradle Plugin knows how to build native code with the NDK. - classpath("com.android.tools.build:gradle:8.7.3") + classpath("com.android.tools.build:gradle:8.9.1") } } @@ -29,7 +29,7 @@ android { // Bumping the plugin compileSdk version requires all clients of this plugin // to bump the version in their app. - compileSdk = 35 + compileSdk = 36 // Use the NDK version // declared in /android/app/build.gradle file of the Flutter project. @@ -58,6 +58,6 @@ android { } defaultConfig { - minSdk = 21 + minSdk = 24 } } diff --git a/ffigen_codelab/step_07/example/.gemini/settings.json b/ffigen_codelab/step_07/example/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/ffigen_codelab/step_07/example/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/ffigen_codelab/step_07/example/.gitignore b/ffigen_codelab/step_07/example/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/ffigen_codelab/step_07/example/.gitignore +++ b/ffigen_codelab/step_07/example/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/ffigen_codelab/step_07/example/android/build.gradle.kts b/ffigen_codelab/step_07/example/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/ffigen_codelab/step_07/example/android/build.gradle.kts +++ b/ffigen_codelab/step_07/example/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/ffigen_codelab/step_07/example/android/settings.gradle.kts b/ffigen_codelab/step_07/example/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/ffigen_codelab/step_07/example/android/settings.gradle.kts +++ b/ffigen_codelab/step_07/example/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/ffigen_codelab/step_07/example/ios/Flutter/AppFrameworkInfo.plist b/ffigen_codelab/step_07/example/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/ffigen_codelab/step_07/example/ios/Flutter/AppFrameworkInfo.plist +++ b/ffigen_codelab/step_07/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/ffigen_codelab/step_07/example/ios/Podfile b/ffigen_codelab/step_07/example/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/ffigen_codelab/step_07/example/ios/Podfile +++ b/ffigen_codelab/step_07/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ffigen_codelab/step_07/example/ios/Runner.xcodeproj/project.pbxproj b/ffigen_codelab/step_07/example/ios/Runner.xcodeproj/project.pbxproj index 600745f4a3..701d459e44 100644 --- a/ffigen_codelab/step_07/example/ios/Runner.xcodeproj/project.pbxproj +++ b/ffigen_codelab/step_07/example/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 1061C1C3CF975F8B0313985B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B39F871A60C2999911FB836D /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 6C92F29D2FAA133765E68AC3 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8EE6EDBA86F4A0E78FC818D7 /* Pods_RunnerTests.framework */; }; 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 */; }; - F4639C17954BBCE5227720CA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D5479C5DAA6A9B2EB6F5FAA /* Pods_Runner.framework */; }; + F1796C86A0DAC635B6290D02 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB02A85A19BD8AB746FA3C6 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,19 +42,20 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 110DF77BD9ECB32CEABC10E7 /* 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 = ""; }; - 13150FC4E088D0930E891195 /* 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 = ""; }; + 0AB02A85A19BD8AB746FA3C6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 106704E7A38764C2F5CF9919 /* 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 = ""; }; 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 = ""; }; + 2F0904A7126B261D646E11F4 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 44F5C23B6AE4F8F99AF7875C /* 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 = ""; }; + 5E4F7497A8A68429AA3D5252 /* 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 = ""; }; 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 = ""; }; - 76FF5FAB9BC324A8C478907E /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 8D5479C5DAA6A9B2EB6F5FAA /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8EE6EDBA86F4A0E78FC818D7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7C31CAE0364A1DDA5D0C95D7 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,17 +63,16 @@ 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 = ""; }; - D5CDBE26BD300202DA7F1E46 /* 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 = ""; }; - D6C330F15C54EEA0913846EA /* 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 = ""; }; - F025CC3C0705FD0410BE7C68 /* 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 = ""; }; + B39F871A60C2999911FB836D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C3D41E29B74DDD202CDE256C /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 792974FBCDC382BB47017FE0 /* Frameworks */ = { + 0D1AF455A7A884EEDABC0B74 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6C92F29D2FAA133765E68AC3 /* Pods_RunnerTests.framework in Frameworks */, + 1061C1C3CF975F8B0313985B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,36 +80,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F4639C17954BBCE5227720CA /* Pods_Runner.framework in Frameworks */, + F1796C86A0DAC635B6290D02 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0EF9B23895BAF7CB74C8DA7D /* Frameworks */ = { - isa = PBXGroup; - children = ( - 8D5479C5DAA6A9B2EB6F5FAA /* Pods_Runner.framework */, - 8EE6EDBA86F4A0E78FC818D7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 0F87BA3B2C0A0E95487959D8 /* Pods */ = { - isa = PBXGroup; - children = ( - 13150FC4E088D0930E891195 /* Pods-Runner.debug.xcconfig */, - D6C330F15C54EEA0913846EA /* Pods-Runner.release.xcconfig */, - F025CC3C0705FD0410BE7C68 /* Pods-Runner.profile.xcconfig */, - 110DF77BD9ECB32CEABC10E7 /* Pods-RunnerTests.debug.xcconfig */, - D5CDBE26BD300202DA7F1E46 /* Pods-RunnerTests.release.xcconfig */, - 76FF5FAB9BC324A8C478907E /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 0F87BA3B2C0A0E95487959D8 /* Pods */, - 0EF9B23895BAF7CB74C8DA7D /* Frameworks */, + F83073074C6AAF89559982C4 /* Pods */, + C3071D963B6A10BC32734D70 /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + C3071D963B6A10BC32734D70 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0AB02A85A19BD8AB746FA3C6 /* Pods_Runner.framework */, + B39F871A60C2999911FB836D /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + F83073074C6AAF89559982C4 /* Pods */ = { + isa = PBXGroup; + children = ( + 44F5C23B6AE4F8F99AF7875C /* Pods-Runner.debug.xcconfig */, + 5E4F7497A8A68429AA3D5252 /* Pods-Runner.release.xcconfig */, + C3D41E29B74DDD202CDE256C /* Pods-Runner.profile.xcconfig */, + 7C31CAE0364A1DDA5D0C95D7 /* Pods-RunnerTests.debug.xcconfig */, + 2F0904A7126B261D646E11F4 /* Pods-RunnerTests.release.xcconfig */, + 106704E7A38764C2F5CF9919 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 6B0CAB9371C26029900C4B23 /* [CP] Check Pods Manifest.lock */, + 90C858AD7013AF35117C5BA4 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 792974FBCDC382BB47017FE0 /* Frameworks */, + 0D1AF455A7A884EEDABC0B74 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 506521F2406883151AB2C709 /* [CP] Check Pods Manifest.lock */, + FA234FEAC048ABF5A4ED9DFE /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 84F98CA4C3F714587C4D73B6 /* [CP] Embed Pods Frameworks */, + BFFC45A221A2EE5B446BF42B /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,7 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 506521F2406883151AB2C709 /* [CP] Check Pods Manifest.lock */ = { + 90C858AD7013AF35117C5BA4 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -301,36 +301,29 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - 6B0CAB9371C26029900C4B23 /* [CP] Check Pods Manifest.lock */ = { + 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( ); + name = "Run Script"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - 84F98CA4C3F714587C4D73B6 /* [CP] Embed Pods Frameworks */ = { + BFFC45A221A2EE5B446BF42B /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -347,20 +340,27 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 9740EEB61CF901F6004384FC /* Run Script */ = { + FA234FEAC048ABF5A4ED9DFE /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Run Script"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + 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; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 110DF77BD9ECB32CEABC10E7 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 7C31CAE0364A1DDA5D0C95D7 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D5CDBE26BD300202DA7F1E46 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2F0904A7126B261D646E11F4 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 76FF5FAB9BC324A8C478907E /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 106704E7A38764C2F5CF9919 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/ffigen_codelab/step_07/example/lib/duktape_message.freezed.dart b/ffigen_codelab/step_07/example/lib/duktape_message.freezed.dart index 2e024d94c5..1f4626d719 100644 --- a/ffigen_codelab/step_07/example/lib/duktape_message.freezed.dart +++ b/ffigen_codelab/step_07/example/lib/duktape_message.freezed.dart @@ -1,6 +1,5 @@ -// dart format width=80 -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -42,6 +41,148 @@ $DuktapeMessageCopyWith(DuktapeMessage _, $Res Function(DuktapeMessage) __); } +/// Adds pattern-matching-related methods to [DuktapeMessage]. +extension DuktapeMessagePatterns on DuktapeMessage { +/// A variant of `map` that fallback to returning `orElse`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeMap({TResult Function( DuktapeMessageCode value)? evaluate,TResult Function( DuktapeMessageResponse value)? response,TResult Function( DuktapeMessageError value)? error,required TResult orElse(),}){ +final _that = this; +switch (_that) { +case DuktapeMessageCode() when evaluate != null: +return evaluate(_that);case DuktapeMessageResponse() when response != null: +return response(_that);case DuktapeMessageError() when error != null: +return error(_that);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// Callbacks receives the raw object, upcasted. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case final Subclass2 value: +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult map({required TResult Function( DuktapeMessageCode value) evaluate,required TResult Function( DuktapeMessageResponse value) response,required TResult Function( DuktapeMessageError value) error,}){ +final _that = this; +switch (_that) { +case DuktapeMessageCode(): +return evaluate(_that);case DuktapeMessageResponse(): +return response(_that);case DuktapeMessageError(): +return error(_that);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `map` that fallback to returning `null`. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case final Subclass value: +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? mapOrNull({TResult? Function( DuktapeMessageCode value)? evaluate,TResult? Function( DuktapeMessageResponse value)? response,TResult? Function( DuktapeMessageError value)? error,}){ +final _that = this; +switch (_that) { +case DuktapeMessageCode() when evaluate != null: +return evaluate(_that);case DuktapeMessageResponse() when response != null: +return response(_that);case DuktapeMessageError() when error != null: +return error(_that);case _: + return null; + +} +} +/// A variant of `when` that fallback to an `orElse` callback. +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return orElse(); +/// } +/// ``` + +@optionalTypeArgs TResult maybeWhen({TResult Function( String code)? evaluate,TResult Function( String result)? response,TResult Function( String log)? error,required TResult orElse(),}) {final _that = this; +switch (_that) { +case DuktapeMessageCode() when evaluate != null: +return evaluate(_that.code);case DuktapeMessageResponse() when response != null: +return response(_that.result);case DuktapeMessageError() when error != null: +return error(_that.log);case _: + return orElse(); + +} +} +/// A `switch`-like method, using callbacks. +/// +/// As opposed to `map`, this offers destructuring. +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case Subclass2(:final field2): +/// return ...; +/// } +/// ``` + +@optionalTypeArgs TResult when({required TResult Function( String code) evaluate,required TResult Function( String result) response,required TResult Function( String log) error,}) {final _that = this; +switch (_that) { +case DuktapeMessageCode(): +return evaluate(_that.code);case DuktapeMessageResponse(): +return response(_that.result);case DuktapeMessageError(): +return error(_that.log);case _: + throw StateError('Unexpected subclass'); + +} +} +/// A variant of `when` that fallback to returning `null` +/// +/// It is equivalent to doing: +/// ```dart +/// switch (sealedClass) { +/// case Subclass(:final field): +/// return ...; +/// case _: +/// return null; +/// } +/// ``` + +@optionalTypeArgs TResult? whenOrNull({TResult? Function( String code)? evaluate,TResult? Function( String result)? response,TResult? Function( String log)? error,}) {final _that = this; +switch (_that) { +case DuktapeMessageCode() when evaluate != null: +return evaluate(_that.code);case DuktapeMessageResponse() when response != null: +return response(_that.result);case DuktapeMessageError() when error != null: +return error(_that.log);case _: + return null; + +} +} + +} + /// @nodoc diff --git a/ffigen_codelab/step_07/example/linux/runner/my_application.cc b/ffigen_codelab/step_07/example/linux/runner/my_application.cc index 6233c3a531..9f5a70f563 100644 --- a/ffigen_codelab/step_07/example/linux/runner/my_application.cc +++ b/ffigen_codelab/step_07/example/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/ffigen_codelab/step_07/example/macos/Podfile b/ffigen_codelab/step_07/example/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/ffigen_codelab/step_07/example/macos/Podfile +++ b/ffigen_codelab/step_07/example/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ffigen_codelab/step_07/example/macos/Runner.xcodeproj/project.pbxproj b/ffigen_codelab/step_07/example/macos/Runner.xcodeproj/project.pbxproj index df82b786ae..16157465a4 100644 --- a/ffigen_codelab/step_07/example/macos/Runner.xcodeproj/project.pbxproj +++ b/ffigen_codelab/step_07/example/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 */; }; - 3A45715FADC2CBED049E8EAB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A200F7A08E5E9080EAC6A820 /* Pods_Runner.framework */; }; - BD12500112AE57AF6A93A256 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05B47ACBB91CB73783DB737D /* Pods_RunnerTests.framework */; }; + CF34BDC9EE75BD71E7A44E7B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55CC1DCF928EA48A70C65603 /* Pods_RunnerTests.framework */; }; + E14E78C549643B909081B68F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A80AEBA93ED9D0D04FC564 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 05B47ACBB91CB73783DB737D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 00AEF116211ECEDBCAA81829 /* 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 = ""; }; + 0CAB5771EF690A1573A15A45 /* 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 = ""; }; 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 +80,14 @@ 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 = ""; }; - 3AE18D82F37280713B196B39 /* 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 = ""; }; - 628A0B5B24C60790C23F0931 /* 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 = ""; }; - 6633226FA7F8A6076DE19748 /* 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 = ""; }; + 3ECEAA4E464EA89599DD4FBA /* 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 = ""; }; + 4F107C5797D9F84822E23890 /* 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 = ""; }; + 55CC1DCF928EA48A70C65603 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 8E977BE8DD1001E2FC7EFC78 /* 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 = ""; }; - 9896755208E905FA378D4626 /* 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 = ""; }; - A200F7A08E5E9080EAC6A820 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F00AB30B2705C5E35DE7D30E /* 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 = ""; }; - F4C41AAD766769D63CFE3C90 /* 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 = ""; }; + C8A80AEBA93ED9D0D04FC564 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CDCAF1D3C55B10085557AB35 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BD12500112AE57AF6A93A256 /* Pods_RunnerTests.framework in Frameworks */, + CF34BDC9EE75BD71E7A44E7B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3A45715FADC2CBED049E8EAB /* Pods_Runner.framework in Frameworks */, + E14E78C549643B909081B68F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 8506074FDB4F5D2BD2C4FF28 /* Pods */, + 6AB10AA6ADF68E295573E896 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 8506074FDB4F5D2BD2C4FF28 /* Pods */ = { + 6AB10AA6ADF68E295573E896 /* Pods */ = { isa = PBXGroup; children = ( - 3AE18D82F37280713B196B39 /* Pods-Runner.debug.xcconfig */, - 9896755208E905FA378D4626 /* Pods-Runner.release.xcconfig */, - 628A0B5B24C60790C23F0931 /* Pods-Runner.profile.xcconfig */, - F4C41AAD766769D63CFE3C90 /* Pods-RunnerTests.debug.xcconfig */, - F00AB30B2705C5E35DE7D30E /* Pods-RunnerTests.release.xcconfig */, - 6633226FA7F8A6076DE19748 /* Pods-RunnerTests.profile.xcconfig */, + 8E977BE8DD1001E2FC7EFC78 /* Pods-Runner.debug.xcconfig */, + 3ECEAA4E464EA89599DD4FBA /* Pods-Runner.release.xcconfig */, + 4F107C5797D9F84822E23890 /* Pods-Runner.profile.xcconfig */, + 0CAB5771EF690A1573A15A45 /* Pods-RunnerTests.debug.xcconfig */, + CDCAF1D3C55B10085557AB35 /* Pods-RunnerTests.release.xcconfig */, + 00AEF116211ECEDBCAA81829 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - A200F7A08E5E9080EAC6A820 /* Pods_Runner.framework */, - 05B47ACBB91CB73783DB737D /* Pods_RunnerTests.framework */, + C8A80AEBA93ED9D0D04FC564 /* Pods_Runner.framework */, + 55CC1DCF928EA48A70C65603 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5A8AD9E79DA62B1FA3F47D7E /* [CP] Check Pods Manifest.lock */, + FF2EF262F0A49D2B916E47F3 /* [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 = ( - C4BE51617943B724B05C8371 /* [CP] Check Pods Manifest.lock */, + B0F4D836178C059A737EB208 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 3CB4256D3750DD481DDEE45B /* [CP] Embed Pods Frameworks */, + 30067A468F36871AB85CA23D /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 30067A468F36871AB85CA23D /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 3CB4256D3750DD481DDEE45B /* [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; - }; - 5A8AD9E79DA62B1FA3F47D7E /* [CP] Check Pods Manifest.lock */ = { + B0F4D836178C059A737EB208 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -393,14 +393,14 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - C4BE51617943B724B05C8371 /* [CP] Check Pods Manifest.lock */ = { + FF2EF262F0A49D2B916E47F3 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -415,7 +415,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F4C41AAD766769D63CFE3C90 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 0CAB5771EF690A1573A15A45 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F00AB30B2705C5E35DE7D30E /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = CDCAF1D3C55B10085557AB35 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6633226FA7F8A6076DE19748 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 00AEF116211ECEDBCAA81829 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/ffigen_codelab/step_07/example/pubspec.yaml b/ffigen_codelab/step_07/example/pubspec.yaml index c88d5bc4e6..384a4e1e30 100644 --- a/ffigen_codelab/step_07/example/pubspec.yaml +++ b/ffigen_codelab/step_07/example/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -43,7 +43,7 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 flutter_riverpod: ^2.6.1 - freezed_annotation: ^3.0.0 + freezed_annotation: ^3.1.0 google_fonts: ^6.3.0 dev_dependencies: @@ -56,8 +56,8 @@ dev_dependencies: # package. See that file for information about deactivating specific lint # rules and activating additional ones. flutter_lints: ^6.0.0 - build_runner: ^2.5.1 - freezed: ^3.0.6 + build_runner: ^2.6.0 + freezed: ^3.2.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/ffigen_codelab/step_07/ios/ffigen_app.podspec b/ffigen_codelab/step_07/ios/ffigen_app.podspec index a84b65211e..a5e62ced15 100644 --- a/ffigen_codelab/step_07/ios/ffigen_app.podspec +++ b/ffigen_codelab/step_07/ios/ffigen_app.podspec @@ -20,7 +20,7 @@ A new Flutter FFI plugin project. s.source = { :path => '.' } s.source_files = 'Classes/**/*' s.dependency 'Flutter' - s.platform = :ios, '12.0' + s.platform = :ios, '13.0' # Flutter.framework does not contain a i386 slice. s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } diff --git a/ffigen_codelab/step_07/pubspec.yaml b/ffigen_codelab/step_07/pubspec.yaml index 5b8e39a49b..e064a38510 100644 --- a/ffigen_codelab/step_07/pubspec.yaml +++ b/ffigen_codelab/step_07/pubspec.yaml @@ -4,7 +4,7 @@ version: 0.0.1 homepage: environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 flutter: '>=3.3.0' dependencies: @@ -15,7 +15,7 @@ dependencies: plugin_platform_interface: ^2.0.2 dev_dependencies: - ffigen: ^19.0.0 + ffigen: ^19.1.0 flutter_test: sdk: flutter flutter_lints: ^6.0.0 diff --git a/firebase-auth-flutterfire-ui/codelab_rebuild.yaml b/firebase-auth-flutterfire-ui/codelab_rebuild.yaml index ffeb70803f..ba70730ac8 100644 --- a/firebase-auth-flutterfire-ui/codelab_rebuild.yaml +++ b/firebase-auth-flutterfire-ui/codelab_rebuild.yaml @@ -24,6 +24,21 @@ steps: - name: Remove README.md path: firebase_auth_flutterfire_ui rm: README.md + - name: Add .gemini directory + mkdir: firebase_auth_flutterfire_ui/.gemini + - name: Add .gemini/settings.json + path: firebase_auth_flutterfire_ui/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Patch pubspec.yaml path: firebase_auth_flutterfire_ui/pubspec.yaml patch-u: | @@ -4504,29 +4519,6 @@ steps: sJAW+CGuKkfLO1v/EBbSAv9qos3R8k7XP4SFtMDPmmh6tLwX9Q9hIS3wV1wt0T++VaYmelX/EBbSAv/FpTta3rv6h7CQFoQhrZmhmpglrgepqNZDWHeENV5a PnxYdVlK6w6/reirorrNpnVR1b6/p6J64HuiAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAkPmfAAMA4+D7weSj8KQAAAAASUVO RK5CYII= - - name: Patch android/app/build.gradle.kts - path: firebase_auth_flutterfire_ui/android/app/build.gradle.kts - patch-u: | - --- b/firebase-auth-flutterfire-ui/start/android/app/build.gradle.kts - +++ a/firebase-auth-flutterfire-ui/start/android/app/build.gradle.kts - @@ -8,7 +8,7 @@ plugins { - android { - namespace = "com.example.firebase_auth_flutterfire_ui" - compileSdk = flutter.compileSdkVersion - - ndkVersion = flutter.ndkVersion - + ndkVersion = "27.0.12077973" - - compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - @@ -24,7 +24,7 @@ android { - applicationId = "com.example.firebase_auth_flutterfire_ui" - // You can update the following values to match your application needs. - // For more information, see: https://flutter.dev/to/review-gradle-config. - - minSdk = flutter.minSdkVersion - + minSdk = 23 - targetSdk = flutter.targetSdkVersion - versionCode = flutter.versionCode - versionName = flutter.versionName - name: Patch macos/Runner/Release.entitlements path: firebase_auth_flutterfire_ui/macos/Runner/Release.entitlements patch-u: | @@ -4629,16 +4621,18 @@ steps: - name: Patch ios/Podfile path: firebase_auth_flutterfire_ui/ios/Podfile patch-u: | - --- b/firebase-auth-flutterfire-ui/start/ios/Podfile - +++ a/firebase-auth-flutterfire-ui/start/ios/Podfile + --- a/firebase-get-to-know-flutter/step_02/ios/Podfile + +++ b/firebase-get-to-know-flutter/step_02/ios/Podfile @@ -1,5 +1,5 @@ - -# Uncomment this line to define a global platform for your project - -# platform :ios, '12.0' - +# Native Firebase plugins require iOS 13.0 minimum, Flutter only requires 12.0 - +platform :ios, '13.0' + # Uncomment this line to define a global platform for your project + -# platform :ios, '13.0' + +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' + - name: Patch ios/Runner.xcodeproj/project.pbxproj + xcode-project-path: firebase_auth_flutterfire_ui/ios/Runner.xcodeproj + iphoneos-deployment-target: '15.0' - name: pod update ios path: firebase_auth_flutterfire_ui/ios pod: update @@ -4679,18 +4673,6 @@ steps: 1:963656261848:ios:d9e01cfe8b675dfcb237ad - - name: Patch macos/Podfile - path: firebase_auth_flutterfire_ui/macos/Podfile - patch-u: | - --- b/adaptive_app/step_07/macos/Podfile - +++ a/adaptive_app/step_07/macos/Podfile - @@ -1,4 +1,5 @@ - -platform :osx, '10.14' - +# Native Firebase plugins require MacOS 10.15 minimum, Flutter only requires 10.14 - +platform :osx, '10.15' - - # CocoaPods analytics sends network stats synchronously affecting flutter build latency. - ENV['COCOAPODS_DISABLE_STATS'] = 'true' - name: Patch macos/Runner.xcodeproj/project.pbxproj xcode-project-path: firebase_auth_flutterfire_ui/macos/Runner.xcodeproj macosx-deployment-target: '10.15' @@ -4800,6 +4782,29 @@ steps: + runApp(const MyApp(clientId: clientId)); } + - name: flutter clean + path: firebase_auth_flutterfire_ui + flutter: clean + - name: flutter pub get + path: firebase_auth_flutterfire_ui + flutter: pub get + - name: pod update ios + path: firebase_auth_flutterfire_ui/ios + pod: update + - name: Build iOS + platforms: [ macos ] + path: firebase_auth_flutterfire_ui + flutter: build ios --simulator + - name: pod update mac + path: firebase_auth_flutterfire_ui/macos + pod: update + - name: Build macOS + platforms: [ macos ] + path: firebase_auth_flutterfire_ui + flutter: build macos + - name: Build Android + path: firebase_auth_flutterfire_ui + flutter: build apk - name: Build web path: firebase_auth_flutterfire_ui flutter: build web diff --git a/firebase-auth-flutterfire-ui/complete/.gemini/settings.json b/firebase-auth-flutterfire-ui/complete/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-auth-flutterfire-ui/complete/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-auth-flutterfire-ui/complete/.gitignore b/firebase-auth-flutterfire-ui/complete/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-auth-flutterfire-ui/complete/.gitignore +++ b/firebase-auth-flutterfire-ui/complete/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-auth-flutterfire-ui/complete/android/app/build.gradle.kts b/firebase-auth-flutterfire-ui/complete/android/app/build.gradle.kts index cfefc64d45..8deb6f0894 100644 --- a/firebase-auth-flutterfire-ui/complete/android/app/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/complete/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.firebase_auth_flutterfire_ui" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.firebase_auth_flutterfire_ui" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-auth-flutterfire-ui/complete/android/build.gradle.kts b/firebase-auth-flutterfire-ui/complete/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-auth-flutterfire-ui/complete/android/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/complete/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-auth-flutterfire-ui/complete/android/settings.gradle.kts b/firebase-auth-flutterfire-ui/complete/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-auth-flutterfire-ui/complete/android/settings.gradle.kts +++ b/firebase-auth-flutterfire-ui/complete/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-auth-flutterfire-ui/complete/ios/Flutter/AppFrameworkInfo.plist b/firebase-auth-flutterfire-ui/complete/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-auth-flutterfire-ui/complete/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-auth-flutterfire-ui/complete/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-auth-flutterfire-ui/complete/ios/Podfile b/firebase-auth-flutterfire-ui/complete/ios/Podfile index a35276b04c..6649374d4c 100644 --- a/firebase-auth-flutterfire-ui/complete/ios/Podfile +++ b/firebase-auth-flutterfire-ui/complete/ios/Podfile @@ -1,5 +1,5 @@ -# Native Firebase plugins require iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-auth-flutterfire-ui/complete/ios/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/complete/ios/Runner.xcodeproj/project.pbxproj index b899cf6c89..ce6561b31b 100644 --- a/firebase-auth-flutterfire-ui/complete/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/complete/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD8723D6E263C0937F31B807 /* Pods_Runner.framework */; }; 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 */; }; + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,15 +44,16 @@ /* 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 = ""; }; - 17E9C3493747E1EFBB2B43DF /* 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 = ""; }; - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D26131AF8DB47C10EE2F0C1 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6363B3B94BDC7FA125F213A2 /* 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 = ""; }; 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 = ""; }; + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D13DB4334452E8A7411F7A3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,27 +61,26 @@ 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 = ""; }; - A0BF4D89B17C9C69338E812C /* 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 = ""; }; - A363C68338BB477EBF97D6A1 /* 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 = ""; }; - B1E8A6D0948BE0A6A75381C9 /* 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 = ""; }; - B4674E413662C477A4B68423 /* 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 = ""; }; - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E677A4DD85B7E0D78732574 /* 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 = ""; }; + B28E10018E17DA077C45C504 /* 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 = ""; }; + B36DB634D8B9CCE980DF54B1 /* 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 = ""; }; + E620F43AB2A53C6E2983D2B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 89D0D1BEAF50AB7F233993A7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */, + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FF7E7F711E7E08915717A2B3 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */, + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 780008811740DCC549BDAB17 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */, + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - EBB68C10E7E1388A9ABE6CA4 /* Pods */, - EDC4E73E2C532DAC106C1B1C /* Frameworks */, + D0800E66CFB4D0BE303D577D /* Pods */, + 780008811740DCC549BDAB17 /* Frameworks */, ); sourceTree = ""; }; @@ -142,29 +151,20 @@ path = Runner; sourceTree = ""; }; - EBB68C10E7E1388A9ABE6CA4 /* Pods */ = { + D0800E66CFB4D0BE303D577D /* Pods */ = { isa = PBXGroup; children = ( - 2D26131AF8DB47C10EE2F0C1 /* Pods-Runner.debug.xcconfig */, - A363C68338BB477EBF97D6A1 /* Pods-Runner.release.xcconfig */, - 17E9C3493747E1EFBB2B43DF /* Pods-Runner.profile.xcconfig */, - B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */, - B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */, - A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */, + B28E10018E17DA077C45C504 /* Pods-Runner.debug.xcconfig */, + E620F43AB2A53C6E2983D2B2 /* Pods-Runner.release.xcconfig */, + 6363B3B94BDC7FA125F213A2 /* Pods-Runner.profile.xcconfig */, + B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */, + 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */, + 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; - EDC4E73E2C532DAC106C1B1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */, - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */, + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - FF7E7F711E7E08915717A2B3 /* Frameworks */, + 89D0D1BEAF50AB7F233993A7 /* Frameworks */, ); buildRules = ( ); @@ -191,15 +191,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */, + 72CCEC7099A1B0E3C9437199 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D95411149BD4F324F7CBF5AD /* [CP] Embed Pods Frameworks */, - 100DFF4B742CDFBF5ED832F0 /* [CP] Copy Pods Resources */, + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */, + E897B3771FBC40ACD4470975 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -271,60 +271,60 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 100DFF4B742CDFBF5ED832F0 /* [CP] Copy Pods Resources */ = { + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + "${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-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 72CCEC7099A1B0E3C9437199 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -341,43 +341,43 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */ = { + E897B3771FBC40ACD4470975 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; showEnvVarsInLog = 0; }; - D95411149BD4F324F7CBF5AD /* [CP] Embed Pods Frameworks */ = { + F1677CCA75E43428BDFDF036 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -491,6 +491,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -505,12 +506,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -523,12 +525,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -539,12 +542,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -602,7 +606,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -653,7 +657,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -673,6 +677,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -695,6 +700,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-auth-flutterfire-ui/complete/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-auth-flutterfire-ui/complete/macos/Flutter/GeneratedPluginRegistrant.swift index 55e2c3d751..9485df03b1 100644 --- a/firebase-auth-flutterfire-ui/complete/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-auth-flutterfire-ui/complete/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,12 +5,14 @@ import FlutterMacOS import Foundation +import app_links import desktop_webview_auth import firebase_auth import firebase_core import google_sign_in_ios func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) diff --git a/firebase-auth-flutterfire-ui/complete/macos/Podfile b/firebase-auth-flutterfire-ui/complete/macos/Podfile index ee6a5b9d34..ff5ddb3b8b 100644 --- a/firebase-auth-flutterfire-ui/complete/macos/Podfile +++ b/firebase-auth-flutterfire-ui/complete/macos/Podfile @@ -1,4 +1,3 @@ -# Native Firebase plugins require MacOS 10.15 minimum, Flutter only requires 10.14 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/firebase-auth-flutterfire-ui/complete/macos/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/complete/macos/Runner.xcodeproj/project.pbxproj index 4451e07f5c..36453d31dd 100644 --- a/firebase-auth-flutterfire-ui/complete/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/complete/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 */; }; - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */; }; - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1371F0164C42C0305E27BBD /* Pods_Runner.framework */; }; + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */; }; + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A5852748AF14E3228865E74 /* 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 = ""; }; 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 +78,16 @@ 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 = ""; }; - 3AE4EE855986D1F3F380EB9E /* 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 = ""; }; - 40426B4A7A9E11CA61FF6DF0 /* 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 = ""; }; - 4D5732846470451386DF89FC /* 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 = ""; }; + 3D755F9DAA9DEDE08DC69111 /* 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 = ""; }; + 6A68BA8B026BA27D28814268 /* 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 = ""; }; + 75DD3034081E67A7A578ABB3 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8DF9742CF61BEFDB4450F884 /* 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 = ""; }; + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B4E3647E5F4591F0F628EF00 /* 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 = ""; }; - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A8FA5D7A88A7FB7C8736CB4E /* 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 = ""; }; + DE265DD77C584A35E54640A6 /* 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 = ""; }; + F590A1A5D1DCE039ADE077B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */, + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */, + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - D4F3B89EF1EBFB62BC83EE4B /* Pods */, + 599AAB410CFF8E2A0BAAAAFE /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - D4F3B89EF1EBFB62BC83EE4B /* Pods */ = { + 599AAB410CFF8E2A0BAAAAFE /* Pods */ = { isa = PBXGroup; children = ( - 0A5852748AF14E3228865E74 /* Pods-Runner.debug.xcconfig */, - B4E3647E5F4591F0F628EF00 /* Pods-Runner.release.xcconfig */, - 4D5732846470451386DF89FC /* Pods-Runner.profile.xcconfig */, - 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */, - 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */, - 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */, + 75DD3034081E67A7A578ABB3 /* Pods-Runner.debug.xcconfig */, + F590A1A5D1DCE039ADE077B2 /* Pods-Runner.release.xcconfig */, + 6A68BA8B026BA27D28814268 /* Pods-Runner.profile.xcconfig */, + 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */, + DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */, + A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */, - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */, + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */, + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */, + 713D777502C3E92B65F20A2A /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -234,14 +234,14 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */, + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */, - E1EC3732787A7AA3D95BF15F /* [CP] Copy Pods Resources */, + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */, + 4ECF910472E1F185078DD7DF /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -362,24 +362,24 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */ = { + 4ECF910472E1F185078DD7DF /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; showEnvVarsInLog = 0; }; - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */ = { + 713D777502C3E92B65F20A2A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -401,24 +401,24 @@ 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; }; - E1EC3732787A7AA3D95BF15F /* [CP] Copy Pods Resources */ = { + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + "${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-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */ = { + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -491,7 +491,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -507,7 +507,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -523,7 +523,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -578,7 +578,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -662,7 +662,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -712,7 +712,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-auth-flutterfire-ui/complete/pubspec.yaml b/firebase-auth-flutterfire-ui/complete/pubspec.yaml index 5521ecfaf7..27a44deb4f 100644 --- a/firebase-auth-flutterfire-ui/complete/pubspec.yaml +++ b/firebase-auth-flutterfire-ui/complete/pubspec.yaml @@ -4,15 +4,15 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - firebase_auth: ^5.6.0 - firebase_core: ^3.14.0 - firebase_ui_auth: ^1.17.0 - firebase_ui_oauth_google: ^1.4.2 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 + firebase_ui_auth: ^3.0.0 + firebase_ui_oauth_google: ^2.0.0 google_sign_in: ^6.3.0 dev_dependencies: diff --git a/firebase-auth-flutterfire-ui/start/.gemini/settings.json b/firebase-auth-flutterfire-ui/start/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-auth-flutterfire-ui/start/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-auth-flutterfire-ui/start/.gitignore b/firebase-auth-flutterfire-ui/start/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-auth-flutterfire-ui/start/.gitignore +++ b/firebase-auth-flutterfire-ui/start/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-auth-flutterfire-ui/start/android/app/build.gradle.kts b/firebase-auth-flutterfire-ui/start/android/app/build.gradle.kts index cfefc64d45..8deb6f0894 100644 --- a/firebase-auth-flutterfire-ui/start/android/app/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/start/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.firebase_auth_flutterfire_ui" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.firebase_auth_flutterfire_ui" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-auth-flutterfire-ui/start/android/build.gradle.kts b/firebase-auth-flutterfire-ui/start/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-auth-flutterfire-ui/start/android/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/start/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-auth-flutterfire-ui/start/android/settings.gradle.kts b/firebase-auth-flutterfire-ui/start/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-auth-flutterfire-ui/start/android/settings.gradle.kts +++ b/firebase-auth-flutterfire-ui/start/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-auth-flutterfire-ui/start/ios/Flutter/AppFrameworkInfo.plist b/firebase-auth-flutterfire-ui/start/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-auth-flutterfire-ui/start/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-auth-flutterfire-ui/start/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-auth-flutterfire-ui/start/ios/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/start/ios/Runner.xcodeproj/project.pbxproj index ae7a811094..b74cabb42a 100644 --- a/firebase-auth-flutterfire-ui/start/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/start/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/firebase-auth-flutterfire-ui/start/macos/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/start/macos/Runner.xcodeproj/project.pbxproj index 26fe27f3cb..181f12aa7c 100644 --- a/firebase-auth-flutterfire-ui/start/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/start/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-auth-flutterfire-ui/start/pubspec.yaml b/firebase-auth-flutterfire-ui/start/pubspec.yaml index 7f2c1af186..5d51d48f78 100644 --- a/firebase-auth-flutterfire-ui/start/pubspec.yaml +++ b/firebase-auth-flutterfire-ui/start/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: diff --git a/firebase-auth-flutterfire-ui/step_01/.gemini/settings.json b/firebase-auth-flutterfire-ui/step_01/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-auth-flutterfire-ui/step_01/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-auth-flutterfire-ui/step_01/.gitignore b/firebase-auth-flutterfire-ui/step_01/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-auth-flutterfire-ui/step_01/.gitignore +++ b/firebase-auth-flutterfire-ui/step_01/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-auth-flutterfire-ui/step_01/android/app/build.gradle.kts b/firebase-auth-flutterfire-ui/step_01/android/app/build.gradle.kts index cfefc64d45..8deb6f0894 100644 --- a/firebase-auth-flutterfire-ui/step_01/android/app/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_01/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.firebase_auth_flutterfire_ui" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.firebase_auth_flutterfire_ui" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-auth-flutterfire-ui/step_01/android/build.gradle.kts b/firebase-auth-flutterfire-ui/step_01/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-auth-flutterfire-ui/step_01/android/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_01/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-auth-flutterfire-ui/step_01/android/settings.gradle.kts b/firebase-auth-flutterfire-ui/step_01/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-auth-flutterfire-ui/step_01/android/settings.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_01/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-auth-flutterfire-ui/step_01/ios/Flutter/AppFrameworkInfo.plist b/firebase-auth-flutterfire-ui/step_01/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-auth-flutterfire-ui/step_01/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-auth-flutterfire-ui/step_01/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-auth-flutterfire-ui/step_01/ios/Podfile b/firebase-auth-flutterfire-ui/step_01/ios/Podfile index a35276b04c..6649374d4c 100644 --- a/firebase-auth-flutterfire-ui/step_01/ios/Podfile +++ b/firebase-auth-flutterfire-ui/step_01/ios/Podfile @@ -1,5 +1,5 @@ -# Native Firebase plugins require iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-auth-flutterfire-ui/step_01/ios/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_01/ios/Runner.xcodeproj/project.pbxproj index f2e3b15882..f7f02552ce 100644 --- a/firebase-auth-flutterfire-ui/step_01/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_01/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD8723D6E263C0937F31B807 /* Pods_Runner.framework */; }; 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 */; }; + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,15 +44,16 @@ /* 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 = ""; }; - 17E9C3493747E1EFBB2B43DF /* 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 = ""; }; - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D26131AF8DB47C10EE2F0C1 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6363B3B94BDC7FA125F213A2 /* 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 = ""; }; 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 = ""; }; + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D13DB4334452E8A7411F7A3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,27 +61,26 @@ 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 = ""; }; - A0BF4D89B17C9C69338E812C /* 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 = ""; }; - A363C68338BB477EBF97D6A1 /* 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 = ""; }; - B1E8A6D0948BE0A6A75381C9 /* 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 = ""; }; - B4674E413662C477A4B68423 /* 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 = ""; }; - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E677A4DD85B7E0D78732574 /* 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 = ""; }; + B28E10018E17DA077C45C504 /* 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 = ""; }; + B36DB634D8B9CCE980DF54B1 /* 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 = ""; }; + E620F43AB2A53C6E2983D2B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 89D0D1BEAF50AB7F233993A7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */, + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FF7E7F711E7E08915717A2B3 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */, + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 780008811740DCC549BDAB17 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */, + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - EBB68C10E7E1388A9ABE6CA4 /* Pods */, - EDC4E73E2C532DAC106C1B1C /* Frameworks */, + D0800E66CFB4D0BE303D577D /* Pods */, + 780008811740DCC549BDAB17 /* Frameworks */, ); sourceTree = ""; }; @@ -142,29 +151,20 @@ path = Runner; sourceTree = ""; }; - EBB68C10E7E1388A9ABE6CA4 /* Pods */ = { + D0800E66CFB4D0BE303D577D /* Pods */ = { isa = PBXGroup; children = ( - 2D26131AF8DB47C10EE2F0C1 /* Pods-Runner.debug.xcconfig */, - A363C68338BB477EBF97D6A1 /* Pods-Runner.release.xcconfig */, - 17E9C3493747E1EFBB2B43DF /* Pods-Runner.profile.xcconfig */, - B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */, - B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */, - A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */, + B28E10018E17DA077C45C504 /* Pods-Runner.debug.xcconfig */, + E620F43AB2A53C6E2983D2B2 /* Pods-Runner.release.xcconfig */, + 6363B3B94BDC7FA125F213A2 /* Pods-Runner.profile.xcconfig */, + B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */, + 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */, + 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; - EDC4E73E2C532DAC106C1B1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */, - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */, + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - FF7E7F711E7E08915717A2B3 /* Frameworks */, + 89D0D1BEAF50AB7F233993A7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */, + 72CCEC7099A1B0E3C9437199 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D95411149BD4F324F7CBF5AD /* [CP] Embed Pods Frameworks */, + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,26 +270,21 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */ = { + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { @@ -308,6 +303,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 72CCEC7099A1B0E3C9437199 /* [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; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -323,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */ = { + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -338,30 +355,13 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - D95411149BD4F324F7CBF5AD /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-auth-flutterfire-ui/step_01/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-auth-flutterfire-ui/step_01/macos/Flutter/GeneratedPluginRegistrant.swift index 98428509f7..4116d2e5cf 100644 --- a/firebase-auth-flutterfire-ui/step_01/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-auth-flutterfire-ui/step_01/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,11 +5,13 @@ import FlutterMacOS import Foundation +import app_links import desktop_webview_auth import firebase_auth import firebase_core func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) diff --git a/firebase-auth-flutterfire-ui/step_01/macos/Podfile b/firebase-auth-flutterfire-ui/step_01/macos/Podfile index ee6a5b9d34..ff5ddb3b8b 100644 --- a/firebase-auth-flutterfire-ui/step_01/macos/Podfile +++ b/firebase-auth-flutterfire-ui/step_01/macos/Podfile @@ -1,4 +1,3 @@ -# Native Firebase plugins require MacOS 10.15 minimum, Flutter only requires 10.14 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/firebase-auth-flutterfire-ui/step_01/macos/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_01/macos/Runner.xcodeproj/project.pbxproj index 4f55949579..cc800b10dd 100644 --- a/firebase-auth-flutterfire-ui/step_01/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_01/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 */; }; - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */; }; - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1371F0164C42C0305E27BBD /* Pods_Runner.framework */; }; + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */; }; + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A5852748AF14E3228865E74 /* 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 = ""; }; 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 +78,16 @@ 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 = ""; }; - 3AE4EE855986D1F3F380EB9E /* 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 = ""; }; - 40426B4A7A9E11CA61FF6DF0 /* 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 = ""; }; - 4D5732846470451386DF89FC /* 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 = ""; }; + 3D755F9DAA9DEDE08DC69111 /* 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 = ""; }; + 6A68BA8B026BA27D28814268 /* 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 = ""; }; + 75DD3034081E67A7A578ABB3 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8DF9742CF61BEFDB4450F884 /* 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 = ""; }; + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B4E3647E5F4591F0F628EF00 /* 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 = ""; }; - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A8FA5D7A88A7FB7C8736CB4E /* 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 = ""; }; + DE265DD77C584A35E54640A6 /* 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 = ""; }; + F590A1A5D1DCE039ADE077B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */, + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */, + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - D4F3B89EF1EBFB62BC83EE4B /* Pods */, + 599AAB410CFF8E2A0BAAAAFE /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - D4F3B89EF1EBFB62BC83EE4B /* Pods */ = { + 599AAB410CFF8E2A0BAAAAFE /* Pods */ = { isa = PBXGroup; children = ( - 0A5852748AF14E3228865E74 /* Pods-Runner.debug.xcconfig */, - B4E3647E5F4591F0F628EF00 /* Pods-Runner.release.xcconfig */, - 4D5732846470451386DF89FC /* Pods-Runner.profile.xcconfig */, - 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */, - 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */, - 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */, + 75DD3034081E67A7A578ABB3 /* Pods-Runner.debug.xcconfig */, + F590A1A5D1DCE039ADE077B2 /* Pods-Runner.release.xcconfig */, + 6A68BA8B026BA27D28814268 /* Pods-Runner.profile.xcconfig */, + 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */, + DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */, + A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */, - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */, + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */, + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */, + 713D777502C3E92B65F20A2A /* [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 = ( - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */, + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */, + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,46 +361,46 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */ = { + 713D777502C3E92B65F20A2A /* [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; }; - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */ = { + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */ = { + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -489,7 +489,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -505,7 +505,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -560,7 +560,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -644,7 +644,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +694,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-auth-flutterfire-ui/step_01/pubspec.yaml b/firebase-auth-flutterfire-ui/step_01/pubspec.yaml index 2a4a766c97..cac9a2f22e 100644 --- a/firebase-auth-flutterfire-ui/step_01/pubspec.yaml +++ b/firebase-auth-flutterfire-ui/step_01/pubspec.yaml @@ -4,14 +4,14 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - firebase_auth: ^5.6.0 - firebase_core: ^3.14.0 - firebase_ui_auth: ^1.17.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: diff --git a/firebase-auth-flutterfire-ui/step_02/.gemini/settings.json b/firebase-auth-flutterfire-ui/step_02/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-auth-flutterfire-ui/step_02/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-auth-flutterfire-ui/step_02/.gitignore b/firebase-auth-flutterfire-ui/step_02/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-auth-flutterfire-ui/step_02/.gitignore +++ b/firebase-auth-flutterfire-ui/step_02/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-auth-flutterfire-ui/step_02/android/app/build.gradle.kts b/firebase-auth-flutterfire-ui/step_02/android/app/build.gradle.kts index cfefc64d45..8deb6f0894 100644 --- a/firebase-auth-flutterfire-ui/step_02/android/app/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_02/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.firebase_auth_flutterfire_ui" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.firebase_auth_flutterfire_ui" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-auth-flutterfire-ui/step_02/android/build.gradle.kts b/firebase-auth-flutterfire-ui/step_02/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-auth-flutterfire-ui/step_02/android/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_02/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-auth-flutterfire-ui/step_02/android/settings.gradle.kts b/firebase-auth-flutterfire-ui/step_02/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-auth-flutterfire-ui/step_02/android/settings.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_02/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-auth-flutterfire-ui/step_02/ios/Flutter/AppFrameworkInfo.plist b/firebase-auth-flutterfire-ui/step_02/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-auth-flutterfire-ui/step_02/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-auth-flutterfire-ui/step_02/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-auth-flutterfire-ui/step_02/ios/Podfile b/firebase-auth-flutterfire-ui/step_02/ios/Podfile index a35276b04c..6649374d4c 100644 --- a/firebase-auth-flutterfire-ui/step_02/ios/Podfile +++ b/firebase-auth-flutterfire-ui/step_02/ios/Podfile @@ -1,5 +1,5 @@ -# Native Firebase plugins require iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-auth-flutterfire-ui/step_02/ios/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_02/ios/Runner.xcodeproj/project.pbxproj index f2e3b15882..f7f02552ce 100644 --- a/firebase-auth-flutterfire-ui/step_02/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_02/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD8723D6E263C0937F31B807 /* Pods_Runner.framework */; }; 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 */; }; + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,15 +44,16 @@ /* 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 = ""; }; - 17E9C3493747E1EFBB2B43DF /* 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 = ""; }; - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D26131AF8DB47C10EE2F0C1 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6363B3B94BDC7FA125F213A2 /* 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 = ""; }; 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 = ""; }; + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D13DB4334452E8A7411F7A3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,27 +61,26 @@ 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 = ""; }; - A0BF4D89B17C9C69338E812C /* 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 = ""; }; - A363C68338BB477EBF97D6A1 /* 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 = ""; }; - B1E8A6D0948BE0A6A75381C9 /* 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 = ""; }; - B4674E413662C477A4B68423 /* 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 = ""; }; - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E677A4DD85B7E0D78732574 /* 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 = ""; }; + B28E10018E17DA077C45C504 /* 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 = ""; }; + B36DB634D8B9CCE980DF54B1 /* 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 = ""; }; + E620F43AB2A53C6E2983D2B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 89D0D1BEAF50AB7F233993A7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */, + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FF7E7F711E7E08915717A2B3 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */, + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 780008811740DCC549BDAB17 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */, + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - EBB68C10E7E1388A9ABE6CA4 /* Pods */, - EDC4E73E2C532DAC106C1B1C /* Frameworks */, + D0800E66CFB4D0BE303D577D /* Pods */, + 780008811740DCC549BDAB17 /* Frameworks */, ); sourceTree = ""; }; @@ -142,29 +151,20 @@ path = Runner; sourceTree = ""; }; - EBB68C10E7E1388A9ABE6CA4 /* Pods */ = { + D0800E66CFB4D0BE303D577D /* Pods */ = { isa = PBXGroup; children = ( - 2D26131AF8DB47C10EE2F0C1 /* Pods-Runner.debug.xcconfig */, - A363C68338BB477EBF97D6A1 /* Pods-Runner.release.xcconfig */, - 17E9C3493747E1EFBB2B43DF /* Pods-Runner.profile.xcconfig */, - B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */, - B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */, - A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */, + B28E10018E17DA077C45C504 /* Pods-Runner.debug.xcconfig */, + E620F43AB2A53C6E2983D2B2 /* Pods-Runner.release.xcconfig */, + 6363B3B94BDC7FA125F213A2 /* Pods-Runner.profile.xcconfig */, + B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */, + 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */, + 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; - EDC4E73E2C532DAC106C1B1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */, - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */, + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - FF7E7F711E7E08915717A2B3 /* Frameworks */, + 89D0D1BEAF50AB7F233993A7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */, + 72CCEC7099A1B0E3C9437199 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D95411149BD4F324F7CBF5AD /* [CP] Embed Pods Frameworks */, + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,26 +270,21 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */ = { + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { @@ -308,6 +303,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 72CCEC7099A1B0E3C9437199 /* [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; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -323,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */ = { + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -338,30 +355,13 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - D95411149BD4F324F7CBF5AD /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-auth-flutterfire-ui/step_02/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-auth-flutterfire-ui/step_02/macos/Flutter/GeneratedPluginRegistrant.swift index 98428509f7..4116d2e5cf 100644 --- a/firebase-auth-flutterfire-ui/step_02/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-auth-flutterfire-ui/step_02/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,11 +5,13 @@ import FlutterMacOS import Foundation +import app_links import desktop_webview_auth import firebase_auth import firebase_core func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) diff --git a/firebase-auth-flutterfire-ui/step_02/macos/Podfile b/firebase-auth-flutterfire-ui/step_02/macos/Podfile index ee6a5b9d34..ff5ddb3b8b 100644 --- a/firebase-auth-flutterfire-ui/step_02/macos/Podfile +++ b/firebase-auth-flutterfire-ui/step_02/macos/Podfile @@ -1,4 +1,3 @@ -# Native Firebase plugins require MacOS 10.15 minimum, Flutter only requires 10.14 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/firebase-auth-flutterfire-ui/step_02/macos/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_02/macos/Runner.xcodeproj/project.pbxproj index 4f55949579..cc800b10dd 100644 --- a/firebase-auth-flutterfire-ui/step_02/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/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 */; }; - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */; }; - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1371F0164C42C0305E27BBD /* Pods_Runner.framework */; }; + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */; }; + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A5852748AF14E3228865E74 /* 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 = ""; }; 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 +78,16 @@ 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 = ""; }; - 3AE4EE855986D1F3F380EB9E /* 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 = ""; }; - 40426B4A7A9E11CA61FF6DF0 /* 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 = ""; }; - 4D5732846470451386DF89FC /* 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 = ""; }; + 3D755F9DAA9DEDE08DC69111 /* 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 = ""; }; + 6A68BA8B026BA27D28814268 /* 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 = ""; }; + 75DD3034081E67A7A578ABB3 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8DF9742CF61BEFDB4450F884 /* 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 = ""; }; + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B4E3647E5F4591F0F628EF00 /* 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 = ""; }; - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A8FA5D7A88A7FB7C8736CB4E /* 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 = ""; }; + DE265DD77C584A35E54640A6 /* 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 = ""; }; + F590A1A5D1DCE039ADE077B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */, + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */, + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - D4F3B89EF1EBFB62BC83EE4B /* Pods */, + 599AAB410CFF8E2A0BAAAAFE /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - D4F3B89EF1EBFB62BC83EE4B /* Pods */ = { + 599AAB410CFF8E2A0BAAAAFE /* Pods */ = { isa = PBXGroup; children = ( - 0A5852748AF14E3228865E74 /* Pods-Runner.debug.xcconfig */, - B4E3647E5F4591F0F628EF00 /* Pods-Runner.release.xcconfig */, - 4D5732846470451386DF89FC /* Pods-Runner.profile.xcconfig */, - 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */, - 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */, - 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */, + 75DD3034081E67A7A578ABB3 /* Pods-Runner.debug.xcconfig */, + F590A1A5D1DCE039ADE077B2 /* Pods-Runner.release.xcconfig */, + 6A68BA8B026BA27D28814268 /* Pods-Runner.profile.xcconfig */, + 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */, + DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */, + A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */, - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */, + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */, + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */, + 713D777502C3E92B65F20A2A /* [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 = ( - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */, + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */, + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,46 +361,46 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */ = { + 713D777502C3E92B65F20A2A /* [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; }; - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */ = { + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */ = { + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -489,7 +489,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -505,7 +505,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -560,7 +560,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -644,7 +644,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +694,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-auth-flutterfire-ui/step_02/pubspec.yaml b/firebase-auth-flutterfire-ui/step_02/pubspec.yaml index 2a4a766c97..cac9a2f22e 100644 --- a/firebase-auth-flutterfire-ui/step_02/pubspec.yaml +++ b/firebase-auth-flutterfire-ui/step_02/pubspec.yaml @@ -4,14 +4,14 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - firebase_auth: ^5.6.0 - firebase_core: ^3.14.0 - firebase_ui_auth: ^1.17.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: diff --git a/firebase-auth-flutterfire-ui/step_03_a/.gemini/settings.json b/firebase-auth-flutterfire-ui/step_03_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-auth-flutterfire-ui/step_03_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-auth-flutterfire-ui/step_03_a/.gitignore b/firebase-auth-flutterfire-ui/step_03_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-auth-flutterfire-ui/step_03_a/.gitignore +++ b/firebase-auth-flutterfire-ui/step_03_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-auth-flutterfire-ui/step_03_a/android/app/build.gradle.kts b/firebase-auth-flutterfire-ui/step_03_a/android/app/build.gradle.kts index cfefc64d45..8deb6f0894 100644 --- a/firebase-auth-flutterfire-ui/step_03_a/android/app/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_a/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.firebase_auth_flutterfire_ui" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.firebase_auth_flutterfire_ui" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-auth-flutterfire-ui/step_03_a/android/build.gradle.kts b/firebase-auth-flutterfire-ui/step_03_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-auth-flutterfire-ui/step_03_a/android/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-auth-flutterfire-ui/step_03_a/android/settings.gradle.kts b/firebase-auth-flutterfire-ui/step_03_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-auth-flutterfire-ui/step_03_a/android/settings.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-auth-flutterfire-ui/step_03_a/ios/Flutter/AppFrameworkInfo.plist b/firebase-auth-flutterfire-ui/step_03_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-auth-flutterfire-ui/step_03_a/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-auth-flutterfire-ui/step_03_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-auth-flutterfire-ui/step_03_a/ios/Podfile b/firebase-auth-flutterfire-ui/step_03_a/ios/Podfile index a35276b04c..6649374d4c 100644 --- a/firebase-auth-flutterfire-ui/step_03_a/ios/Podfile +++ b/firebase-auth-flutterfire-ui/step_03_a/ios/Podfile @@ -1,5 +1,5 @@ -# Native Firebase plugins require iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-auth-flutterfire-ui/step_03_a/ios/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_03_a/ios/Runner.xcodeproj/project.pbxproj index f2e3b15882..f7f02552ce 100644 --- a/firebase-auth-flutterfire-ui/step_03_a/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_03_a/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD8723D6E263C0937F31B807 /* Pods_Runner.framework */; }; 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 */; }; + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,15 +44,16 @@ /* 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 = ""; }; - 17E9C3493747E1EFBB2B43DF /* 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 = ""; }; - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D26131AF8DB47C10EE2F0C1 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6363B3B94BDC7FA125F213A2 /* 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 = ""; }; 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 = ""; }; + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D13DB4334452E8A7411F7A3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,27 +61,26 @@ 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 = ""; }; - A0BF4D89B17C9C69338E812C /* 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 = ""; }; - A363C68338BB477EBF97D6A1 /* 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 = ""; }; - B1E8A6D0948BE0A6A75381C9 /* 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 = ""; }; - B4674E413662C477A4B68423 /* 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 = ""; }; - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E677A4DD85B7E0D78732574 /* 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 = ""; }; + B28E10018E17DA077C45C504 /* 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 = ""; }; + B36DB634D8B9CCE980DF54B1 /* 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 = ""; }; + E620F43AB2A53C6E2983D2B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 89D0D1BEAF50AB7F233993A7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */, + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FF7E7F711E7E08915717A2B3 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */, + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 780008811740DCC549BDAB17 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */, + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - EBB68C10E7E1388A9ABE6CA4 /* Pods */, - EDC4E73E2C532DAC106C1B1C /* Frameworks */, + D0800E66CFB4D0BE303D577D /* Pods */, + 780008811740DCC549BDAB17 /* Frameworks */, ); sourceTree = ""; }; @@ -142,29 +151,20 @@ path = Runner; sourceTree = ""; }; - EBB68C10E7E1388A9ABE6CA4 /* Pods */ = { + D0800E66CFB4D0BE303D577D /* Pods */ = { isa = PBXGroup; children = ( - 2D26131AF8DB47C10EE2F0C1 /* Pods-Runner.debug.xcconfig */, - A363C68338BB477EBF97D6A1 /* Pods-Runner.release.xcconfig */, - 17E9C3493747E1EFBB2B43DF /* Pods-Runner.profile.xcconfig */, - B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */, - B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */, - A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */, + B28E10018E17DA077C45C504 /* Pods-Runner.debug.xcconfig */, + E620F43AB2A53C6E2983D2B2 /* Pods-Runner.release.xcconfig */, + 6363B3B94BDC7FA125F213A2 /* Pods-Runner.profile.xcconfig */, + B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */, + 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */, + 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; - EDC4E73E2C532DAC106C1B1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */, - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */, + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - FF7E7F711E7E08915717A2B3 /* Frameworks */, + 89D0D1BEAF50AB7F233993A7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */, + 72CCEC7099A1B0E3C9437199 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D95411149BD4F324F7CBF5AD /* [CP] Embed Pods Frameworks */, + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,26 +270,21 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */ = { + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { @@ -308,6 +303,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 72CCEC7099A1B0E3C9437199 /* [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; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -323,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */ = { + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -338,30 +355,13 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - D95411149BD4F324F7CBF5AD /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-auth-flutterfire-ui/step_03_a/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-auth-flutterfire-ui/step_03_a/macos/Flutter/GeneratedPluginRegistrant.swift index 98428509f7..4116d2e5cf 100644 --- a/firebase-auth-flutterfire-ui/step_03_a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-auth-flutterfire-ui/step_03_a/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,11 +5,13 @@ import FlutterMacOS import Foundation +import app_links import desktop_webview_auth import firebase_auth import firebase_core func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) diff --git a/firebase-auth-flutterfire-ui/step_03_a/macos/Podfile b/firebase-auth-flutterfire-ui/step_03_a/macos/Podfile index ee6a5b9d34..ff5ddb3b8b 100644 --- a/firebase-auth-flutterfire-ui/step_03_a/macos/Podfile +++ b/firebase-auth-flutterfire-ui/step_03_a/macos/Podfile @@ -1,4 +1,3 @@ -# Native Firebase plugins require MacOS 10.15 minimum, Flutter only requires 10.14 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/firebase-auth-flutterfire-ui/step_03_a/macos/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_03_a/macos/Runner.xcodeproj/project.pbxproj index 4f55949579..cc800b10dd 100644 --- a/firebase-auth-flutterfire-ui/step_03_a/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_03_a/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 */; }; - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */; }; - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1371F0164C42C0305E27BBD /* Pods_Runner.framework */; }; + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */; }; + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A5852748AF14E3228865E74 /* 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 = ""; }; 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 +78,16 @@ 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 = ""; }; - 3AE4EE855986D1F3F380EB9E /* 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 = ""; }; - 40426B4A7A9E11CA61FF6DF0 /* 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 = ""; }; - 4D5732846470451386DF89FC /* 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 = ""; }; + 3D755F9DAA9DEDE08DC69111 /* 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 = ""; }; + 6A68BA8B026BA27D28814268 /* 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 = ""; }; + 75DD3034081E67A7A578ABB3 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8DF9742CF61BEFDB4450F884 /* 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 = ""; }; + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B4E3647E5F4591F0F628EF00 /* 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 = ""; }; - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A8FA5D7A88A7FB7C8736CB4E /* 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 = ""; }; + DE265DD77C584A35E54640A6 /* 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 = ""; }; + F590A1A5D1DCE039ADE077B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */, + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */, + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - D4F3B89EF1EBFB62BC83EE4B /* Pods */, + 599AAB410CFF8E2A0BAAAAFE /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - D4F3B89EF1EBFB62BC83EE4B /* Pods */ = { + 599AAB410CFF8E2A0BAAAAFE /* Pods */ = { isa = PBXGroup; children = ( - 0A5852748AF14E3228865E74 /* Pods-Runner.debug.xcconfig */, - B4E3647E5F4591F0F628EF00 /* Pods-Runner.release.xcconfig */, - 4D5732846470451386DF89FC /* Pods-Runner.profile.xcconfig */, - 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */, - 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */, - 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */, + 75DD3034081E67A7A578ABB3 /* Pods-Runner.debug.xcconfig */, + F590A1A5D1DCE039ADE077B2 /* Pods-Runner.release.xcconfig */, + 6A68BA8B026BA27D28814268 /* Pods-Runner.profile.xcconfig */, + 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */, + DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */, + A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */, - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */, + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */, + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */, + 713D777502C3E92B65F20A2A /* [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 = ( - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */, + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */, + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,46 +361,46 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */ = { + 713D777502C3E92B65F20A2A /* [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; }; - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */ = { + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */ = { + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -489,7 +489,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -505,7 +505,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -560,7 +560,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -644,7 +644,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +694,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-auth-flutterfire-ui/step_03_a/pubspec.yaml b/firebase-auth-flutterfire-ui/step_03_a/pubspec.yaml index 2a4a766c97..cac9a2f22e 100644 --- a/firebase-auth-flutterfire-ui/step_03_a/pubspec.yaml +++ b/firebase-auth-flutterfire-ui/step_03_a/pubspec.yaml @@ -4,14 +4,14 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - firebase_auth: ^5.6.0 - firebase_core: ^3.14.0 - firebase_ui_auth: ^1.17.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: diff --git a/firebase-auth-flutterfire-ui/step_03_b/.gemini/settings.json b/firebase-auth-flutterfire-ui/step_03_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-auth-flutterfire-ui/step_03_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-auth-flutterfire-ui/step_03_b/.gitignore b/firebase-auth-flutterfire-ui/step_03_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-auth-flutterfire-ui/step_03_b/.gitignore +++ b/firebase-auth-flutterfire-ui/step_03_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-auth-flutterfire-ui/step_03_b/android/app/build.gradle.kts b/firebase-auth-flutterfire-ui/step_03_b/android/app/build.gradle.kts index cfefc64d45..8deb6f0894 100644 --- a/firebase-auth-flutterfire-ui/step_03_b/android/app/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_b/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.firebase_auth_flutterfire_ui" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.firebase_auth_flutterfire_ui" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-auth-flutterfire-ui/step_03_b/android/build.gradle.kts b/firebase-auth-flutterfire-ui/step_03_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-auth-flutterfire-ui/step_03_b/android/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-auth-flutterfire-ui/step_03_b/android/settings.gradle.kts b/firebase-auth-flutterfire-ui/step_03_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-auth-flutterfire-ui/step_03_b/android/settings.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-auth-flutterfire-ui/step_03_b/ios/Flutter/AppFrameworkInfo.plist b/firebase-auth-flutterfire-ui/step_03_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-auth-flutterfire-ui/step_03_b/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-auth-flutterfire-ui/step_03_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-auth-flutterfire-ui/step_03_b/ios/Podfile b/firebase-auth-flutterfire-ui/step_03_b/ios/Podfile index a35276b04c..6649374d4c 100644 --- a/firebase-auth-flutterfire-ui/step_03_b/ios/Podfile +++ b/firebase-auth-flutterfire-ui/step_03_b/ios/Podfile @@ -1,5 +1,5 @@ -# Native Firebase plugins require iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-auth-flutterfire-ui/step_03_b/ios/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_03_b/ios/Runner.xcodeproj/project.pbxproj index f2e3b15882..f7f02552ce 100644 --- a/firebase-auth-flutterfire-ui/step_03_b/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_03_b/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD8723D6E263C0937F31B807 /* Pods_Runner.framework */; }; 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 */; }; + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,15 +44,16 @@ /* 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 = ""; }; - 17E9C3493747E1EFBB2B43DF /* 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 = ""; }; - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D26131AF8DB47C10EE2F0C1 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6363B3B94BDC7FA125F213A2 /* 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 = ""; }; 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 = ""; }; + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D13DB4334452E8A7411F7A3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,27 +61,26 @@ 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 = ""; }; - A0BF4D89B17C9C69338E812C /* 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 = ""; }; - A363C68338BB477EBF97D6A1 /* 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 = ""; }; - B1E8A6D0948BE0A6A75381C9 /* 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 = ""; }; - B4674E413662C477A4B68423 /* 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 = ""; }; - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E677A4DD85B7E0D78732574 /* 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 = ""; }; + B28E10018E17DA077C45C504 /* 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 = ""; }; + B36DB634D8B9CCE980DF54B1 /* 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 = ""; }; + E620F43AB2A53C6E2983D2B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 89D0D1BEAF50AB7F233993A7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */, + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FF7E7F711E7E08915717A2B3 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */, + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 780008811740DCC549BDAB17 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */, + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - EBB68C10E7E1388A9ABE6CA4 /* Pods */, - EDC4E73E2C532DAC106C1B1C /* Frameworks */, + D0800E66CFB4D0BE303D577D /* Pods */, + 780008811740DCC549BDAB17 /* Frameworks */, ); sourceTree = ""; }; @@ -142,29 +151,20 @@ path = Runner; sourceTree = ""; }; - EBB68C10E7E1388A9ABE6CA4 /* Pods */ = { + D0800E66CFB4D0BE303D577D /* Pods */ = { isa = PBXGroup; children = ( - 2D26131AF8DB47C10EE2F0C1 /* Pods-Runner.debug.xcconfig */, - A363C68338BB477EBF97D6A1 /* Pods-Runner.release.xcconfig */, - 17E9C3493747E1EFBB2B43DF /* Pods-Runner.profile.xcconfig */, - B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */, - B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */, - A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */, + B28E10018E17DA077C45C504 /* Pods-Runner.debug.xcconfig */, + E620F43AB2A53C6E2983D2B2 /* Pods-Runner.release.xcconfig */, + 6363B3B94BDC7FA125F213A2 /* Pods-Runner.profile.xcconfig */, + B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */, + 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */, + 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; - EDC4E73E2C532DAC106C1B1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */, - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */, + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - FF7E7F711E7E08915717A2B3 /* Frameworks */, + 89D0D1BEAF50AB7F233993A7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */, + 72CCEC7099A1B0E3C9437199 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D95411149BD4F324F7CBF5AD /* [CP] Embed Pods Frameworks */, + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,26 +270,21 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */ = { + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { @@ -308,6 +303,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 72CCEC7099A1B0E3C9437199 /* [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; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -323,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */ = { + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -338,30 +355,13 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - D95411149BD4F324F7CBF5AD /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-auth-flutterfire-ui/step_03_b/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-auth-flutterfire-ui/step_03_b/macos/Flutter/GeneratedPluginRegistrant.swift index 98428509f7..4116d2e5cf 100644 --- a/firebase-auth-flutterfire-ui/step_03_b/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-auth-flutterfire-ui/step_03_b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,11 +5,13 @@ import FlutterMacOS import Foundation +import app_links import desktop_webview_auth import firebase_auth import firebase_core func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) diff --git a/firebase-auth-flutterfire-ui/step_03_b/macos/Podfile b/firebase-auth-flutterfire-ui/step_03_b/macos/Podfile index ee6a5b9d34..ff5ddb3b8b 100644 --- a/firebase-auth-flutterfire-ui/step_03_b/macos/Podfile +++ b/firebase-auth-flutterfire-ui/step_03_b/macos/Podfile @@ -1,4 +1,3 @@ -# Native Firebase plugins require MacOS 10.15 minimum, Flutter only requires 10.14 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/firebase-auth-flutterfire-ui/step_03_b/macos/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_03_b/macos/Runner.xcodeproj/project.pbxproj index 4f55949579..cc800b10dd 100644 --- a/firebase-auth-flutterfire-ui/step_03_b/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_03_b/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 */; }; - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */; }; - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1371F0164C42C0305E27BBD /* Pods_Runner.framework */; }; + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */; }; + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A5852748AF14E3228865E74 /* 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 = ""; }; 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 +78,16 @@ 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 = ""; }; - 3AE4EE855986D1F3F380EB9E /* 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 = ""; }; - 40426B4A7A9E11CA61FF6DF0 /* 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 = ""; }; - 4D5732846470451386DF89FC /* 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 = ""; }; + 3D755F9DAA9DEDE08DC69111 /* 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 = ""; }; + 6A68BA8B026BA27D28814268 /* 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 = ""; }; + 75DD3034081E67A7A578ABB3 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8DF9742CF61BEFDB4450F884 /* 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 = ""; }; + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B4E3647E5F4591F0F628EF00 /* 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 = ""; }; - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A8FA5D7A88A7FB7C8736CB4E /* 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 = ""; }; + DE265DD77C584A35E54640A6 /* 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 = ""; }; + F590A1A5D1DCE039ADE077B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */, + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */, + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - D4F3B89EF1EBFB62BC83EE4B /* Pods */, + 599AAB410CFF8E2A0BAAAAFE /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - D4F3B89EF1EBFB62BC83EE4B /* Pods */ = { + 599AAB410CFF8E2A0BAAAAFE /* Pods */ = { isa = PBXGroup; children = ( - 0A5852748AF14E3228865E74 /* Pods-Runner.debug.xcconfig */, - B4E3647E5F4591F0F628EF00 /* Pods-Runner.release.xcconfig */, - 4D5732846470451386DF89FC /* Pods-Runner.profile.xcconfig */, - 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */, - 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */, - 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */, + 75DD3034081E67A7A578ABB3 /* Pods-Runner.debug.xcconfig */, + F590A1A5D1DCE039ADE077B2 /* Pods-Runner.release.xcconfig */, + 6A68BA8B026BA27D28814268 /* Pods-Runner.profile.xcconfig */, + 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */, + DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */, + A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */, - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */, + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */, + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */, + 713D777502C3E92B65F20A2A /* [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 = ( - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */, + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */, + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,46 +361,46 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */ = { + 713D777502C3E92B65F20A2A /* [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; }; - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */ = { + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */ = { + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -489,7 +489,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -505,7 +505,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -560,7 +560,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -644,7 +644,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +694,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-auth-flutterfire-ui/step_03_b/pubspec.yaml b/firebase-auth-flutterfire-ui/step_03_b/pubspec.yaml index 2a4a766c97..cac9a2f22e 100644 --- a/firebase-auth-flutterfire-ui/step_03_b/pubspec.yaml +++ b/firebase-auth-flutterfire-ui/step_03_b/pubspec.yaml @@ -4,14 +4,14 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - firebase_auth: ^5.6.0 - firebase_core: ^3.14.0 - firebase_ui_auth: ^1.17.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: diff --git a/firebase-auth-flutterfire-ui/step_03_c/.gemini/settings.json b/firebase-auth-flutterfire-ui/step_03_c/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-auth-flutterfire-ui/step_03_c/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-auth-flutterfire-ui/step_03_c/.gitignore b/firebase-auth-flutterfire-ui/step_03_c/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-auth-flutterfire-ui/step_03_c/.gitignore +++ b/firebase-auth-flutterfire-ui/step_03_c/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-auth-flutterfire-ui/step_03_c/android/app/build.gradle.kts b/firebase-auth-flutterfire-ui/step_03_c/android/app/build.gradle.kts index cfefc64d45..8deb6f0894 100644 --- a/firebase-auth-flutterfire-ui/step_03_c/android/app/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_c/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.firebase_auth_flutterfire_ui" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.firebase_auth_flutterfire_ui" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-auth-flutterfire-ui/step_03_c/android/build.gradle.kts b/firebase-auth-flutterfire-ui/step_03_c/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-auth-flutterfire-ui/step_03_c/android/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_c/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-auth-flutterfire-ui/step_03_c/android/settings.gradle.kts b/firebase-auth-flutterfire-ui/step_03_c/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-auth-flutterfire-ui/step_03_c/android/settings.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_c/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-auth-flutterfire-ui/step_03_c/ios/Flutter/AppFrameworkInfo.plist b/firebase-auth-flutterfire-ui/step_03_c/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-auth-flutterfire-ui/step_03_c/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-auth-flutterfire-ui/step_03_c/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-auth-flutterfire-ui/step_03_c/ios/Podfile b/firebase-auth-flutterfire-ui/step_03_c/ios/Podfile index a35276b04c..6649374d4c 100644 --- a/firebase-auth-flutterfire-ui/step_03_c/ios/Podfile +++ b/firebase-auth-flutterfire-ui/step_03_c/ios/Podfile @@ -1,5 +1,5 @@ -# Native Firebase plugins require iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-auth-flutterfire-ui/step_03_c/ios/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_03_c/ios/Runner.xcodeproj/project.pbxproj index f2e3b15882..f7f02552ce 100644 --- a/firebase-auth-flutterfire-ui/step_03_c/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_03_c/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD8723D6E263C0937F31B807 /* Pods_Runner.framework */; }; 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 */; }; + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,15 +44,16 @@ /* 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 = ""; }; - 17E9C3493747E1EFBB2B43DF /* 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 = ""; }; - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D26131AF8DB47C10EE2F0C1 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6363B3B94BDC7FA125F213A2 /* 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 = ""; }; 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 = ""; }; + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D13DB4334452E8A7411F7A3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,27 +61,26 @@ 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 = ""; }; - A0BF4D89B17C9C69338E812C /* 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 = ""; }; - A363C68338BB477EBF97D6A1 /* 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 = ""; }; - B1E8A6D0948BE0A6A75381C9 /* 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 = ""; }; - B4674E413662C477A4B68423 /* 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 = ""; }; - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E677A4DD85B7E0D78732574 /* 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 = ""; }; + B28E10018E17DA077C45C504 /* 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 = ""; }; + B36DB634D8B9CCE980DF54B1 /* 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 = ""; }; + E620F43AB2A53C6E2983D2B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 89D0D1BEAF50AB7F233993A7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */, + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FF7E7F711E7E08915717A2B3 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */, + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 780008811740DCC549BDAB17 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */, + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - EBB68C10E7E1388A9ABE6CA4 /* Pods */, - EDC4E73E2C532DAC106C1B1C /* Frameworks */, + D0800E66CFB4D0BE303D577D /* Pods */, + 780008811740DCC549BDAB17 /* Frameworks */, ); sourceTree = ""; }; @@ -142,29 +151,20 @@ path = Runner; sourceTree = ""; }; - EBB68C10E7E1388A9ABE6CA4 /* Pods */ = { + D0800E66CFB4D0BE303D577D /* Pods */ = { isa = PBXGroup; children = ( - 2D26131AF8DB47C10EE2F0C1 /* Pods-Runner.debug.xcconfig */, - A363C68338BB477EBF97D6A1 /* Pods-Runner.release.xcconfig */, - 17E9C3493747E1EFBB2B43DF /* Pods-Runner.profile.xcconfig */, - B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */, - B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */, - A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */, + B28E10018E17DA077C45C504 /* Pods-Runner.debug.xcconfig */, + E620F43AB2A53C6E2983D2B2 /* Pods-Runner.release.xcconfig */, + 6363B3B94BDC7FA125F213A2 /* Pods-Runner.profile.xcconfig */, + B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */, + 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */, + 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; - EDC4E73E2C532DAC106C1B1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */, - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */, + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - FF7E7F711E7E08915717A2B3 /* Frameworks */, + 89D0D1BEAF50AB7F233993A7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */, + 72CCEC7099A1B0E3C9437199 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D95411149BD4F324F7CBF5AD /* [CP] Embed Pods Frameworks */, + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,26 +270,21 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */ = { + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { @@ -308,6 +303,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 72CCEC7099A1B0E3C9437199 /* [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; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -323,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */ = { + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -338,30 +355,13 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - D95411149BD4F324F7CBF5AD /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-auth-flutterfire-ui/step_03_c/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-auth-flutterfire-ui/step_03_c/macos/Flutter/GeneratedPluginRegistrant.swift index 98428509f7..4116d2e5cf 100644 --- a/firebase-auth-flutterfire-ui/step_03_c/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-auth-flutterfire-ui/step_03_c/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,11 +5,13 @@ import FlutterMacOS import Foundation +import app_links import desktop_webview_auth import firebase_auth import firebase_core func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) diff --git a/firebase-auth-flutterfire-ui/step_03_c/macos/Podfile b/firebase-auth-flutterfire-ui/step_03_c/macos/Podfile index ee6a5b9d34..ff5ddb3b8b 100644 --- a/firebase-auth-flutterfire-ui/step_03_c/macos/Podfile +++ b/firebase-auth-flutterfire-ui/step_03_c/macos/Podfile @@ -1,4 +1,3 @@ -# Native Firebase plugins require MacOS 10.15 minimum, Flutter only requires 10.14 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/firebase-auth-flutterfire-ui/step_03_c/macos/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_03_c/macos/Runner.xcodeproj/project.pbxproj index 4f55949579..cc800b10dd 100644 --- a/firebase-auth-flutterfire-ui/step_03_c/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_03_c/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 */; }; - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */; }; - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1371F0164C42C0305E27BBD /* Pods_Runner.framework */; }; + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */; }; + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A5852748AF14E3228865E74 /* 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 = ""; }; 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 +78,16 @@ 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 = ""; }; - 3AE4EE855986D1F3F380EB9E /* 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 = ""; }; - 40426B4A7A9E11CA61FF6DF0 /* 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 = ""; }; - 4D5732846470451386DF89FC /* 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 = ""; }; + 3D755F9DAA9DEDE08DC69111 /* 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 = ""; }; + 6A68BA8B026BA27D28814268 /* 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 = ""; }; + 75DD3034081E67A7A578ABB3 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8DF9742CF61BEFDB4450F884 /* 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 = ""; }; + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B4E3647E5F4591F0F628EF00 /* 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 = ""; }; - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A8FA5D7A88A7FB7C8736CB4E /* 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 = ""; }; + DE265DD77C584A35E54640A6 /* 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 = ""; }; + F590A1A5D1DCE039ADE077B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */, + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */, + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - D4F3B89EF1EBFB62BC83EE4B /* Pods */, + 599AAB410CFF8E2A0BAAAAFE /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - D4F3B89EF1EBFB62BC83EE4B /* Pods */ = { + 599AAB410CFF8E2A0BAAAAFE /* Pods */ = { isa = PBXGroup; children = ( - 0A5852748AF14E3228865E74 /* Pods-Runner.debug.xcconfig */, - B4E3647E5F4591F0F628EF00 /* Pods-Runner.release.xcconfig */, - 4D5732846470451386DF89FC /* Pods-Runner.profile.xcconfig */, - 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */, - 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */, - 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */, + 75DD3034081E67A7A578ABB3 /* Pods-Runner.debug.xcconfig */, + F590A1A5D1DCE039ADE077B2 /* Pods-Runner.release.xcconfig */, + 6A68BA8B026BA27D28814268 /* Pods-Runner.profile.xcconfig */, + 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */, + DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */, + A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */, - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */, + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */, + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */, + 713D777502C3E92B65F20A2A /* [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 = ( - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */, + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */, + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,46 +361,46 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */ = { + 713D777502C3E92B65F20A2A /* [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; }; - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */ = { + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */ = { + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -489,7 +489,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -505,7 +505,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -560,7 +560,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -644,7 +644,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +694,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-auth-flutterfire-ui/step_03_c/pubspec.yaml b/firebase-auth-flutterfire-ui/step_03_c/pubspec.yaml index 2a4a766c97..cac9a2f22e 100644 --- a/firebase-auth-flutterfire-ui/step_03_c/pubspec.yaml +++ b/firebase-auth-flutterfire-ui/step_03_c/pubspec.yaml @@ -4,14 +4,14 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - firebase_auth: ^5.6.0 - firebase_core: ^3.14.0 - firebase_ui_auth: ^1.17.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: diff --git a/firebase-auth-flutterfire-ui/step_03_d/.gemini/settings.json b/firebase-auth-flutterfire-ui/step_03_d/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-auth-flutterfire-ui/step_03_d/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-auth-flutterfire-ui/step_03_d/.gitignore b/firebase-auth-flutterfire-ui/step_03_d/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-auth-flutterfire-ui/step_03_d/.gitignore +++ b/firebase-auth-flutterfire-ui/step_03_d/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-auth-flutterfire-ui/step_03_d/android/app/build.gradle.kts b/firebase-auth-flutterfire-ui/step_03_d/android/app/build.gradle.kts index cfefc64d45..8deb6f0894 100644 --- a/firebase-auth-flutterfire-ui/step_03_d/android/app/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_d/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.firebase_auth_flutterfire_ui" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.firebase_auth_flutterfire_ui" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-auth-flutterfire-ui/step_03_d/android/build.gradle.kts b/firebase-auth-flutterfire-ui/step_03_d/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-auth-flutterfire-ui/step_03_d/android/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_d/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-auth-flutterfire-ui/step_03_d/android/settings.gradle.kts b/firebase-auth-flutterfire-ui/step_03_d/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-auth-flutterfire-ui/step_03_d/android/settings.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_d/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-auth-flutterfire-ui/step_03_d/ios/Flutter/AppFrameworkInfo.plist b/firebase-auth-flutterfire-ui/step_03_d/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-auth-flutterfire-ui/step_03_d/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-auth-flutterfire-ui/step_03_d/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-auth-flutterfire-ui/step_03_d/ios/Podfile b/firebase-auth-flutterfire-ui/step_03_d/ios/Podfile index a35276b04c..6649374d4c 100644 --- a/firebase-auth-flutterfire-ui/step_03_d/ios/Podfile +++ b/firebase-auth-flutterfire-ui/step_03_d/ios/Podfile @@ -1,5 +1,5 @@ -# Native Firebase plugins require iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-auth-flutterfire-ui/step_03_d/ios/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_03_d/ios/Runner.xcodeproj/project.pbxproj index f2e3b15882..f7f02552ce 100644 --- a/firebase-auth-flutterfire-ui/step_03_d/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_03_d/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD8723D6E263C0937F31B807 /* Pods_Runner.framework */; }; 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 */; }; + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,15 +44,16 @@ /* 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 = ""; }; - 17E9C3493747E1EFBB2B43DF /* 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 = ""; }; - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D26131AF8DB47C10EE2F0C1 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6363B3B94BDC7FA125F213A2 /* 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 = ""; }; 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 = ""; }; + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D13DB4334452E8A7411F7A3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,27 +61,26 @@ 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 = ""; }; - A0BF4D89B17C9C69338E812C /* 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 = ""; }; - A363C68338BB477EBF97D6A1 /* 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 = ""; }; - B1E8A6D0948BE0A6A75381C9 /* 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 = ""; }; - B4674E413662C477A4B68423 /* 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 = ""; }; - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E677A4DD85B7E0D78732574 /* 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 = ""; }; + B28E10018E17DA077C45C504 /* 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 = ""; }; + B36DB634D8B9CCE980DF54B1 /* 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 = ""; }; + E620F43AB2A53C6E2983D2B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 89D0D1BEAF50AB7F233993A7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */, + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FF7E7F711E7E08915717A2B3 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */, + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 780008811740DCC549BDAB17 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */, + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - EBB68C10E7E1388A9ABE6CA4 /* Pods */, - EDC4E73E2C532DAC106C1B1C /* Frameworks */, + D0800E66CFB4D0BE303D577D /* Pods */, + 780008811740DCC549BDAB17 /* Frameworks */, ); sourceTree = ""; }; @@ -142,29 +151,20 @@ path = Runner; sourceTree = ""; }; - EBB68C10E7E1388A9ABE6CA4 /* Pods */ = { + D0800E66CFB4D0BE303D577D /* Pods */ = { isa = PBXGroup; children = ( - 2D26131AF8DB47C10EE2F0C1 /* Pods-Runner.debug.xcconfig */, - A363C68338BB477EBF97D6A1 /* Pods-Runner.release.xcconfig */, - 17E9C3493747E1EFBB2B43DF /* Pods-Runner.profile.xcconfig */, - B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */, - B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */, - A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */, + B28E10018E17DA077C45C504 /* Pods-Runner.debug.xcconfig */, + E620F43AB2A53C6E2983D2B2 /* Pods-Runner.release.xcconfig */, + 6363B3B94BDC7FA125F213A2 /* Pods-Runner.profile.xcconfig */, + B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */, + 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */, + 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; - EDC4E73E2C532DAC106C1B1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */, - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */, + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - FF7E7F711E7E08915717A2B3 /* Frameworks */, + 89D0D1BEAF50AB7F233993A7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */, + 72CCEC7099A1B0E3C9437199 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D95411149BD4F324F7CBF5AD /* [CP] Embed Pods Frameworks */, + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,26 +270,21 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */ = { + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { @@ -308,6 +303,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 72CCEC7099A1B0E3C9437199 /* [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; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -323,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */ = { + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -338,30 +355,13 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - D95411149BD4F324F7CBF5AD /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-auth-flutterfire-ui/step_03_d/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-auth-flutterfire-ui/step_03_d/macos/Flutter/GeneratedPluginRegistrant.swift index 98428509f7..4116d2e5cf 100644 --- a/firebase-auth-flutterfire-ui/step_03_d/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-auth-flutterfire-ui/step_03_d/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,11 +5,13 @@ import FlutterMacOS import Foundation +import app_links import desktop_webview_auth import firebase_auth import firebase_core func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) diff --git a/firebase-auth-flutterfire-ui/step_03_d/macos/Podfile b/firebase-auth-flutterfire-ui/step_03_d/macos/Podfile index ee6a5b9d34..ff5ddb3b8b 100644 --- a/firebase-auth-flutterfire-ui/step_03_d/macos/Podfile +++ b/firebase-auth-flutterfire-ui/step_03_d/macos/Podfile @@ -1,4 +1,3 @@ -# Native Firebase plugins require MacOS 10.15 minimum, Flutter only requires 10.14 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/firebase-auth-flutterfire-ui/step_03_d/macos/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_03_d/macos/Runner.xcodeproj/project.pbxproj index 4f55949579..cc800b10dd 100644 --- a/firebase-auth-flutterfire-ui/step_03_d/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_03_d/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 */; }; - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */; }; - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1371F0164C42C0305E27BBD /* Pods_Runner.framework */; }; + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */; }; + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A5852748AF14E3228865E74 /* 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 = ""; }; 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 +78,16 @@ 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 = ""; }; - 3AE4EE855986D1F3F380EB9E /* 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 = ""; }; - 40426B4A7A9E11CA61FF6DF0 /* 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 = ""; }; - 4D5732846470451386DF89FC /* 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 = ""; }; + 3D755F9DAA9DEDE08DC69111 /* 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 = ""; }; + 6A68BA8B026BA27D28814268 /* 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 = ""; }; + 75DD3034081E67A7A578ABB3 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8DF9742CF61BEFDB4450F884 /* 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 = ""; }; + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B4E3647E5F4591F0F628EF00 /* 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 = ""; }; - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A8FA5D7A88A7FB7C8736CB4E /* 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 = ""; }; + DE265DD77C584A35E54640A6 /* 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 = ""; }; + F590A1A5D1DCE039ADE077B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */, + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */, + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - D4F3B89EF1EBFB62BC83EE4B /* Pods */, + 599AAB410CFF8E2A0BAAAAFE /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - D4F3B89EF1EBFB62BC83EE4B /* Pods */ = { + 599AAB410CFF8E2A0BAAAAFE /* Pods */ = { isa = PBXGroup; children = ( - 0A5852748AF14E3228865E74 /* Pods-Runner.debug.xcconfig */, - B4E3647E5F4591F0F628EF00 /* Pods-Runner.release.xcconfig */, - 4D5732846470451386DF89FC /* Pods-Runner.profile.xcconfig */, - 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */, - 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */, - 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */, + 75DD3034081E67A7A578ABB3 /* Pods-Runner.debug.xcconfig */, + F590A1A5D1DCE039ADE077B2 /* Pods-Runner.release.xcconfig */, + 6A68BA8B026BA27D28814268 /* Pods-Runner.profile.xcconfig */, + 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */, + DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */, + A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */, - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */, + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */, + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */, + 713D777502C3E92B65F20A2A /* [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 = ( - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */, + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */, + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,46 +361,46 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */ = { + 713D777502C3E92B65F20A2A /* [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; }; - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */ = { + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */ = { + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -489,7 +489,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -505,7 +505,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -560,7 +560,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -644,7 +644,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +694,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-auth-flutterfire-ui/step_03_d/pubspec.yaml b/firebase-auth-flutterfire-ui/step_03_d/pubspec.yaml index 2a4a766c97..cac9a2f22e 100644 --- a/firebase-auth-flutterfire-ui/step_03_d/pubspec.yaml +++ b/firebase-auth-flutterfire-ui/step_03_d/pubspec.yaml @@ -4,14 +4,14 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - firebase_auth: ^5.6.0 - firebase_core: ^3.14.0 - firebase_ui_auth: ^1.17.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: diff --git a/firebase-auth-flutterfire-ui/step_03_e/.gemini/settings.json b/firebase-auth-flutterfire-ui/step_03_e/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-auth-flutterfire-ui/step_03_e/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-auth-flutterfire-ui/step_03_e/.gitignore b/firebase-auth-flutterfire-ui/step_03_e/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-auth-flutterfire-ui/step_03_e/.gitignore +++ b/firebase-auth-flutterfire-ui/step_03_e/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-auth-flutterfire-ui/step_03_e/android/app/build.gradle.kts b/firebase-auth-flutterfire-ui/step_03_e/android/app/build.gradle.kts index cfefc64d45..8deb6f0894 100644 --- a/firebase-auth-flutterfire-ui/step_03_e/android/app/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_e/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.firebase_auth_flutterfire_ui" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.firebase_auth_flutterfire_ui" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-auth-flutterfire-ui/step_03_e/android/build.gradle.kts b/firebase-auth-flutterfire-ui/step_03_e/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-auth-flutterfire-ui/step_03_e/android/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_e/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-auth-flutterfire-ui/step_03_e/android/settings.gradle.kts b/firebase-auth-flutterfire-ui/step_03_e/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-auth-flutterfire-ui/step_03_e/android/settings.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_03_e/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-auth-flutterfire-ui/step_03_e/ios/Flutter/AppFrameworkInfo.plist b/firebase-auth-flutterfire-ui/step_03_e/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-auth-flutterfire-ui/step_03_e/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-auth-flutterfire-ui/step_03_e/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-auth-flutterfire-ui/step_03_e/ios/Podfile b/firebase-auth-flutterfire-ui/step_03_e/ios/Podfile index a35276b04c..6649374d4c 100644 --- a/firebase-auth-flutterfire-ui/step_03_e/ios/Podfile +++ b/firebase-auth-flutterfire-ui/step_03_e/ios/Podfile @@ -1,5 +1,5 @@ -# Native Firebase plugins require iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-auth-flutterfire-ui/step_03_e/ios/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_03_e/ios/Runner.xcodeproj/project.pbxproj index f2e3b15882..f7f02552ce 100644 --- a/firebase-auth-flutterfire-ui/step_03_e/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_03_e/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD8723D6E263C0937F31B807 /* Pods_Runner.framework */; }; 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 */; }; + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,15 +44,16 @@ /* 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 = ""; }; - 17E9C3493747E1EFBB2B43DF /* 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 = ""; }; - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D26131AF8DB47C10EE2F0C1 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6363B3B94BDC7FA125F213A2 /* 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 = ""; }; 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 = ""; }; + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D13DB4334452E8A7411F7A3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,27 +61,26 @@ 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 = ""; }; - A0BF4D89B17C9C69338E812C /* 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 = ""; }; - A363C68338BB477EBF97D6A1 /* 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 = ""; }; - B1E8A6D0948BE0A6A75381C9 /* 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 = ""; }; - B4674E413662C477A4B68423 /* 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 = ""; }; - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E677A4DD85B7E0D78732574 /* 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 = ""; }; + B28E10018E17DA077C45C504 /* 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 = ""; }; + B36DB634D8B9CCE980DF54B1 /* 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 = ""; }; + E620F43AB2A53C6E2983D2B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 89D0D1BEAF50AB7F233993A7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */, + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FF7E7F711E7E08915717A2B3 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */, + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 780008811740DCC549BDAB17 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */, + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - EBB68C10E7E1388A9ABE6CA4 /* Pods */, - EDC4E73E2C532DAC106C1B1C /* Frameworks */, + D0800E66CFB4D0BE303D577D /* Pods */, + 780008811740DCC549BDAB17 /* Frameworks */, ); sourceTree = ""; }; @@ -142,29 +151,20 @@ path = Runner; sourceTree = ""; }; - EBB68C10E7E1388A9ABE6CA4 /* Pods */ = { + D0800E66CFB4D0BE303D577D /* Pods */ = { isa = PBXGroup; children = ( - 2D26131AF8DB47C10EE2F0C1 /* Pods-Runner.debug.xcconfig */, - A363C68338BB477EBF97D6A1 /* Pods-Runner.release.xcconfig */, - 17E9C3493747E1EFBB2B43DF /* Pods-Runner.profile.xcconfig */, - B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */, - B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */, - A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */, + B28E10018E17DA077C45C504 /* Pods-Runner.debug.xcconfig */, + E620F43AB2A53C6E2983D2B2 /* Pods-Runner.release.xcconfig */, + 6363B3B94BDC7FA125F213A2 /* Pods-Runner.profile.xcconfig */, + B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */, + 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */, + 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; - EDC4E73E2C532DAC106C1B1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */, - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */, + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - FF7E7F711E7E08915717A2B3 /* Frameworks */, + 89D0D1BEAF50AB7F233993A7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */, + 72CCEC7099A1B0E3C9437199 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D95411149BD4F324F7CBF5AD /* [CP] Embed Pods Frameworks */, + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,26 +270,21 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */ = { + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { @@ -308,6 +303,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 72CCEC7099A1B0E3C9437199 /* [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; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -323,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */ = { + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -338,30 +355,13 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - D95411149BD4F324F7CBF5AD /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-auth-flutterfire-ui/step_03_e/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-auth-flutterfire-ui/step_03_e/macos/Flutter/GeneratedPluginRegistrant.swift index 98428509f7..4116d2e5cf 100644 --- a/firebase-auth-flutterfire-ui/step_03_e/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-auth-flutterfire-ui/step_03_e/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,11 +5,13 @@ import FlutterMacOS import Foundation +import app_links import desktop_webview_auth import firebase_auth import firebase_core func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) diff --git a/firebase-auth-flutterfire-ui/step_03_e/macos/Podfile b/firebase-auth-flutterfire-ui/step_03_e/macos/Podfile index ee6a5b9d34..ff5ddb3b8b 100644 --- a/firebase-auth-flutterfire-ui/step_03_e/macos/Podfile +++ b/firebase-auth-flutterfire-ui/step_03_e/macos/Podfile @@ -1,4 +1,3 @@ -# Native Firebase plugins require MacOS 10.15 minimum, Flutter only requires 10.14 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/firebase-auth-flutterfire-ui/step_03_e/macos/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_03_e/macos/Runner.xcodeproj/project.pbxproj index 4f55949579..cc800b10dd 100644 --- a/firebase-auth-flutterfire-ui/step_03_e/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_03_e/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 */; }; - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */; }; - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1371F0164C42C0305E27BBD /* Pods_Runner.framework */; }; + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */; }; + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A5852748AF14E3228865E74 /* 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 = ""; }; 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 +78,16 @@ 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 = ""; }; - 3AE4EE855986D1F3F380EB9E /* 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 = ""; }; - 40426B4A7A9E11CA61FF6DF0 /* 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 = ""; }; - 4D5732846470451386DF89FC /* 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 = ""; }; + 3D755F9DAA9DEDE08DC69111 /* 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 = ""; }; + 6A68BA8B026BA27D28814268 /* 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 = ""; }; + 75DD3034081E67A7A578ABB3 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8DF9742CF61BEFDB4450F884 /* 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 = ""; }; + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B4E3647E5F4591F0F628EF00 /* 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 = ""; }; - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A8FA5D7A88A7FB7C8736CB4E /* 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 = ""; }; + DE265DD77C584A35E54640A6 /* 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 = ""; }; + F590A1A5D1DCE039ADE077B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */, + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */, + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - D4F3B89EF1EBFB62BC83EE4B /* Pods */, + 599AAB410CFF8E2A0BAAAAFE /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - D4F3B89EF1EBFB62BC83EE4B /* Pods */ = { + 599AAB410CFF8E2A0BAAAAFE /* Pods */ = { isa = PBXGroup; children = ( - 0A5852748AF14E3228865E74 /* Pods-Runner.debug.xcconfig */, - B4E3647E5F4591F0F628EF00 /* Pods-Runner.release.xcconfig */, - 4D5732846470451386DF89FC /* Pods-Runner.profile.xcconfig */, - 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */, - 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */, - 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */, + 75DD3034081E67A7A578ABB3 /* Pods-Runner.debug.xcconfig */, + F590A1A5D1DCE039ADE077B2 /* Pods-Runner.release.xcconfig */, + 6A68BA8B026BA27D28814268 /* Pods-Runner.profile.xcconfig */, + 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */, + DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */, + A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */, - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */, + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */, + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */, + 713D777502C3E92B65F20A2A /* [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 = ( - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */, + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */, + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,46 +361,46 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */ = { + 713D777502C3E92B65F20A2A /* [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; }; - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */ = { + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */ = { + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -489,7 +489,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -505,7 +505,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -560,7 +560,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -644,7 +644,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +694,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-auth-flutterfire-ui/step_03_e/pubspec.yaml b/firebase-auth-flutterfire-ui/step_03_e/pubspec.yaml index 2a4a766c97..cac9a2f22e 100644 --- a/firebase-auth-flutterfire-ui/step_03_e/pubspec.yaml +++ b/firebase-auth-flutterfire-ui/step_03_e/pubspec.yaml @@ -4,14 +4,14 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - firebase_auth: ^5.6.0 - firebase_core: ^3.14.0 - firebase_ui_auth: ^1.17.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: diff --git a/firebase-auth-flutterfire-ui/step_04_a/.gemini/settings.json b/firebase-auth-flutterfire-ui/step_04_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-auth-flutterfire-ui/step_04_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-auth-flutterfire-ui/step_04_a/.gitignore b/firebase-auth-flutterfire-ui/step_04_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-auth-flutterfire-ui/step_04_a/.gitignore +++ b/firebase-auth-flutterfire-ui/step_04_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-auth-flutterfire-ui/step_04_a/android/app/build.gradle.kts b/firebase-auth-flutterfire-ui/step_04_a/android/app/build.gradle.kts index cfefc64d45..8deb6f0894 100644 --- a/firebase-auth-flutterfire-ui/step_04_a/android/app/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_04_a/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.firebase_auth_flutterfire_ui" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.firebase_auth_flutterfire_ui" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-auth-flutterfire-ui/step_04_a/android/build.gradle.kts b/firebase-auth-flutterfire-ui/step_04_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-auth-flutterfire-ui/step_04_a/android/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_04_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-auth-flutterfire-ui/step_04_a/android/settings.gradle.kts b/firebase-auth-flutterfire-ui/step_04_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-auth-flutterfire-ui/step_04_a/android/settings.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_04_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-auth-flutterfire-ui/step_04_a/ios/Flutter/AppFrameworkInfo.plist b/firebase-auth-flutterfire-ui/step_04_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-auth-flutterfire-ui/step_04_a/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-auth-flutterfire-ui/step_04_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-auth-flutterfire-ui/step_04_a/ios/Podfile b/firebase-auth-flutterfire-ui/step_04_a/ios/Podfile index a35276b04c..6649374d4c 100644 --- a/firebase-auth-flutterfire-ui/step_04_a/ios/Podfile +++ b/firebase-auth-flutterfire-ui/step_04_a/ios/Podfile @@ -1,5 +1,5 @@ -# Native Firebase plugins require iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-auth-flutterfire-ui/step_04_a/ios/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_04_a/ios/Runner.xcodeproj/project.pbxproj index f2e3b15882..f7f02552ce 100644 --- a/firebase-auth-flutterfire-ui/step_04_a/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_04_a/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD8723D6E263C0937F31B807 /* Pods_Runner.framework */; }; 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 */; }; + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,15 +44,16 @@ /* 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 = ""; }; - 17E9C3493747E1EFBB2B43DF /* 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 = ""; }; - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D26131AF8DB47C10EE2F0C1 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6363B3B94BDC7FA125F213A2 /* 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 = ""; }; 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 = ""; }; + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D13DB4334452E8A7411F7A3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,27 +61,26 @@ 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 = ""; }; - A0BF4D89B17C9C69338E812C /* 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 = ""; }; - A363C68338BB477EBF97D6A1 /* 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 = ""; }; - B1E8A6D0948BE0A6A75381C9 /* 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 = ""; }; - B4674E413662C477A4B68423 /* 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 = ""; }; - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E677A4DD85B7E0D78732574 /* 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 = ""; }; + B28E10018E17DA077C45C504 /* 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 = ""; }; + B36DB634D8B9CCE980DF54B1 /* 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 = ""; }; + E620F43AB2A53C6E2983D2B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 89D0D1BEAF50AB7F233993A7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */, + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FF7E7F711E7E08915717A2B3 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */, + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 780008811740DCC549BDAB17 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */, + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - EBB68C10E7E1388A9ABE6CA4 /* Pods */, - EDC4E73E2C532DAC106C1B1C /* Frameworks */, + D0800E66CFB4D0BE303D577D /* Pods */, + 780008811740DCC549BDAB17 /* Frameworks */, ); sourceTree = ""; }; @@ -142,29 +151,20 @@ path = Runner; sourceTree = ""; }; - EBB68C10E7E1388A9ABE6CA4 /* Pods */ = { + D0800E66CFB4D0BE303D577D /* Pods */ = { isa = PBXGroup; children = ( - 2D26131AF8DB47C10EE2F0C1 /* Pods-Runner.debug.xcconfig */, - A363C68338BB477EBF97D6A1 /* Pods-Runner.release.xcconfig */, - 17E9C3493747E1EFBB2B43DF /* Pods-Runner.profile.xcconfig */, - B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */, - B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */, - A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */, + B28E10018E17DA077C45C504 /* Pods-Runner.debug.xcconfig */, + E620F43AB2A53C6E2983D2B2 /* Pods-Runner.release.xcconfig */, + 6363B3B94BDC7FA125F213A2 /* Pods-Runner.profile.xcconfig */, + B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */, + 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */, + 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; - EDC4E73E2C532DAC106C1B1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */, - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */, + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - FF7E7F711E7E08915717A2B3 /* Frameworks */, + 89D0D1BEAF50AB7F233993A7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */, + 72CCEC7099A1B0E3C9437199 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D95411149BD4F324F7CBF5AD /* [CP] Embed Pods Frameworks */, + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,26 +270,21 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */ = { + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { @@ -308,6 +303,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 72CCEC7099A1B0E3C9437199 /* [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; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -323,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */ = { + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -338,30 +355,13 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - D95411149BD4F324F7CBF5AD /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-auth-flutterfire-ui/step_04_a/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-auth-flutterfire-ui/step_04_a/macos/Flutter/GeneratedPluginRegistrant.swift index 98428509f7..4116d2e5cf 100644 --- a/firebase-auth-flutterfire-ui/step_04_a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-auth-flutterfire-ui/step_04_a/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,11 +5,13 @@ import FlutterMacOS import Foundation +import app_links import desktop_webview_auth import firebase_auth import firebase_core func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) diff --git a/firebase-auth-flutterfire-ui/step_04_a/macos/Podfile b/firebase-auth-flutterfire-ui/step_04_a/macos/Podfile index ee6a5b9d34..ff5ddb3b8b 100644 --- a/firebase-auth-flutterfire-ui/step_04_a/macos/Podfile +++ b/firebase-auth-flutterfire-ui/step_04_a/macos/Podfile @@ -1,4 +1,3 @@ -# Native Firebase plugins require MacOS 10.15 minimum, Flutter only requires 10.14 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/firebase-auth-flutterfire-ui/step_04_a/macos/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_04_a/macos/Runner.xcodeproj/project.pbxproj index 4f55949579..cc800b10dd 100644 --- a/firebase-auth-flutterfire-ui/step_04_a/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_04_a/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 */; }; - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */; }; - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1371F0164C42C0305E27BBD /* Pods_Runner.framework */; }; + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */; }; + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A5852748AF14E3228865E74 /* 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 = ""; }; 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 +78,16 @@ 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 = ""; }; - 3AE4EE855986D1F3F380EB9E /* 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 = ""; }; - 40426B4A7A9E11CA61FF6DF0 /* 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 = ""; }; - 4D5732846470451386DF89FC /* 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 = ""; }; + 3D755F9DAA9DEDE08DC69111 /* 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 = ""; }; + 6A68BA8B026BA27D28814268 /* 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 = ""; }; + 75DD3034081E67A7A578ABB3 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8DF9742CF61BEFDB4450F884 /* 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 = ""; }; + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B4E3647E5F4591F0F628EF00 /* 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 = ""; }; - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A8FA5D7A88A7FB7C8736CB4E /* 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 = ""; }; + DE265DD77C584A35E54640A6 /* 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 = ""; }; + F590A1A5D1DCE039ADE077B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */, + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */, + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - D4F3B89EF1EBFB62BC83EE4B /* Pods */, + 599AAB410CFF8E2A0BAAAAFE /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - D4F3B89EF1EBFB62BC83EE4B /* Pods */ = { + 599AAB410CFF8E2A0BAAAAFE /* Pods */ = { isa = PBXGroup; children = ( - 0A5852748AF14E3228865E74 /* Pods-Runner.debug.xcconfig */, - B4E3647E5F4591F0F628EF00 /* Pods-Runner.release.xcconfig */, - 4D5732846470451386DF89FC /* Pods-Runner.profile.xcconfig */, - 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */, - 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */, - 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */, + 75DD3034081E67A7A578ABB3 /* Pods-Runner.debug.xcconfig */, + F590A1A5D1DCE039ADE077B2 /* Pods-Runner.release.xcconfig */, + 6A68BA8B026BA27D28814268 /* Pods-Runner.profile.xcconfig */, + 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */, + DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */, + A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */, - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */, + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */, + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */, + 713D777502C3E92B65F20A2A /* [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 = ( - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */, + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */, + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,46 +361,46 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */ = { + 713D777502C3E92B65F20A2A /* [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; }; - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */ = { + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */ = { + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -489,7 +489,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -505,7 +505,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -560,7 +560,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -644,7 +644,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +694,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-auth-flutterfire-ui/step_04_a/pubspec.yaml b/firebase-auth-flutterfire-ui/step_04_a/pubspec.yaml index 2a4a766c97..cac9a2f22e 100644 --- a/firebase-auth-flutterfire-ui/step_04_a/pubspec.yaml +++ b/firebase-auth-flutterfire-ui/step_04_a/pubspec.yaml @@ -4,14 +4,14 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - firebase_auth: ^5.6.0 - firebase_core: ^3.14.0 - firebase_ui_auth: ^1.17.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: diff --git a/firebase-auth-flutterfire-ui/step_04_b/.gemini/settings.json b/firebase-auth-flutterfire-ui/step_04_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-auth-flutterfire-ui/step_04_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-auth-flutterfire-ui/step_04_b/.gitignore b/firebase-auth-flutterfire-ui/step_04_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-auth-flutterfire-ui/step_04_b/.gitignore +++ b/firebase-auth-flutterfire-ui/step_04_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-auth-flutterfire-ui/step_04_b/android/app/build.gradle.kts b/firebase-auth-flutterfire-ui/step_04_b/android/app/build.gradle.kts index cfefc64d45..8deb6f0894 100644 --- a/firebase-auth-flutterfire-ui/step_04_b/android/app/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_04_b/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.firebase_auth_flutterfire_ui" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.firebase_auth_flutterfire_ui" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-auth-flutterfire-ui/step_04_b/android/build.gradle.kts b/firebase-auth-flutterfire-ui/step_04_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-auth-flutterfire-ui/step_04_b/android/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_04_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-auth-flutterfire-ui/step_04_b/android/settings.gradle.kts b/firebase-auth-flutterfire-ui/step_04_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-auth-flutterfire-ui/step_04_b/android/settings.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_04_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-auth-flutterfire-ui/step_04_b/ios/Flutter/AppFrameworkInfo.plist b/firebase-auth-flutterfire-ui/step_04_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-auth-flutterfire-ui/step_04_b/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-auth-flutterfire-ui/step_04_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-auth-flutterfire-ui/step_04_b/ios/Podfile b/firebase-auth-flutterfire-ui/step_04_b/ios/Podfile index a35276b04c..6649374d4c 100644 --- a/firebase-auth-flutterfire-ui/step_04_b/ios/Podfile +++ b/firebase-auth-flutterfire-ui/step_04_b/ios/Podfile @@ -1,5 +1,5 @@ -# Native Firebase plugins require iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-auth-flutterfire-ui/step_04_b/ios/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_04_b/ios/Runner.xcodeproj/project.pbxproj index f2e3b15882..f7f02552ce 100644 --- a/firebase-auth-flutterfire-ui/step_04_b/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_04_b/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD8723D6E263C0937F31B807 /* Pods_Runner.framework */; }; 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 */; }; + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,15 +44,16 @@ /* 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 = ""; }; - 17E9C3493747E1EFBB2B43DF /* 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 = ""; }; - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D26131AF8DB47C10EE2F0C1 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6363B3B94BDC7FA125F213A2 /* 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 = ""; }; 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 = ""; }; + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D13DB4334452E8A7411F7A3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,27 +61,26 @@ 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 = ""; }; - A0BF4D89B17C9C69338E812C /* 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 = ""; }; - A363C68338BB477EBF97D6A1 /* 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 = ""; }; - B1E8A6D0948BE0A6A75381C9 /* 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 = ""; }; - B4674E413662C477A4B68423 /* 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 = ""; }; - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E677A4DD85B7E0D78732574 /* 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 = ""; }; + B28E10018E17DA077C45C504 /* 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 = ""; }; + B36DB634D8B9CCE980DF54B1 /* 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 = ""; }; + E620F43AB2A53C6E2983D2B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 89D0D1BEAF50AB7F233993A7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */, + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FF7E7F711E7E08915717A2B3 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */, + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 780008811740DCC549BDAB17 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */, + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - EBB68C10E7E1388A9ABE6CA4 /* Pods */, - EDC4E73E2C532DAC106C1B1C /* Frameworks */, + D0800E66CFB4D0BE303D577D /* Pods */, + 780008811740DCC549BDAB17 /* Frameworks */, ); sourceTree = ""; }; @@ -142,29 +151,20 @@ path = Runner; sourceTree = ""; }; - EBB68C10E7E1388A9ABE6CA4 /* Pods */ = { + D0800E66CFB4D0BE303D577D /* Pods */ = { isa = PBXGroup; children = ( - 2D26131AF8DB47C10EE2F0C1 /* Pods-Runner.debug.xcconfig */, - A363C68338BB477EBF97D6A1 /* Pods-Runner.release.xcconfig */, - 17E9C3493747E1EFBB2B43DF /* Pods-Runner.profile.xcconfig */, - B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */, - B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */, - A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */, + B28E10018E17DA077C45C504 /* Pods-Runner.debug.xcconfig */, + E620F43AB2A53C6E2983D2B2 /* Pods-Runner.release.xcconfig */, + 6363B3B94BDC7FA125F213A2 /* Pods-Runner.profile.xcconfig */, + B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */, + 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */, + 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; - EDC4E73E2C532DAC106C1B1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */, - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */, + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - FF7E7F711E7E08915717A2B3 /* Frameworks */, + 89D0D1BEAF50AB7F233993A7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */, + 72CCEC7099A1B0E3C9437199 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D95411149BD4F324F7CBF5AD /* [CP] Embed Pods Frameworks */, + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,26 +270,21 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */ = { + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { @@ -308,6 +303,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 72CCEC7099A1B0E3C9437199 /* [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; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -323,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */ = { + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -338,30 +355,13 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - D95411149BD4F324F7CBF5AD /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-auth-flutterfire-ui/step_04_b/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-auth-flutterfire-ui/step_04_b/macos/Flutter/GeneratedPluginRegistrant.swift index 98428509f7..4116d2e5cf 100644 --- a/firebase-auth-flutterfire-ui/step_04_b/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-auth-flutterfire-ui/step_04_b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,11 +5,13 @@ import FlutterMacOS import Foundation +import app_links import desktop_webview_auth import firebase_auth import firebase_core func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) diff --git a/firebase-auth-flutterfire-ui/step_04_b/macos/Podfile b/firebase-auth-flutterfire-ui/step_04_b/macos/Podfile index ee6a5b9d34..ff5ddb3b8b 100644 --- a/firebase-auth-flutterfire-ui/step_04_b/macos/Podfile +++ b/firebase-auth-flutterfire-ui/step_04_b/macos/Podfile @@ -1,4 +1,3 @@ -# Native Firebase plugins require MacOS 10.15 minimum, Flutter only requires 10.14 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/firebase-auth-flutterfire-ui/step_04_b/macos/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_04_b/macos/Runner.xcodeproj/project.pbxproj index 4f55949579..cc800b10dd 100644 --- a/firebase-auth-flutterfire-ui/step_04_b/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_04_b/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 */; }; - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */; }; - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1371F0164C42C0305E27BBD /* Pods_Runner.framework */; }; + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */; }; + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A5852748AF14E3228865E74 /* 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 = ""; }; 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 +78,16 @@ 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 = ""; }; - 3AE4EE855986D1F3F380EB9E /* 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 = ""; }; - 40426B4A7A9E11CA61FF6DF0 /* 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 = ""; }; - 4D5732846470451386DF89FC /* 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 = ""; }; + 3D755F9DAA9DEDE08DC69111 /* 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 = ""; }; + 6A68BA8B026BA27D28814268 /* 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 = ""; }; + 75DD3034081E67A7A578ABB3 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8DF9742CF61BEFDB4450F884 /* 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 = ""; }; + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B4E3647E5F4591F0F628EF00 /* 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 = ""; }; - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A8FA5D7A88A7FB7C8736CB4E /* 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 = ""; }; + DE265DD77C584A35E54640A6 /* 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 = ""; }; + F590A1A5D1DCE039ADE077B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */, + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */, + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - D4F3B89EF1EBFB62BC83EE4B /* Pods */, + 599AAB410CFF8E2A0BAAAAFE /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - D4F3B89EF1EBFB62BC83EE4B /* Pods */ = { + 599AAB410CFF8E2A0BAAAAFE /* Pods */ = { isa = PBXGroup; children = ( - 0A5852748AF14E3228865E74 /* Pods-Runner.debug.xcconfig */, - B4E3647E5F4591F0F628EF00 /* Pods-Runner.release.xcconfig */, - 4D5732846470451386DF89FC /* Pods-Runner.profile.xcconfig */, - 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */, - 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */, - 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */, + 75DD3034081E67A7A578ABB3 /* Pods-Runner.debug.xcconfig */, + F590A1A5D1DCE039ADE077B2 /* Pods-Runner.release.xcconfig */, + 6A68BA8B026BA27D28814268 /* Pods-Runner.profile.xcconfig */, + 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */, + DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */, + A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */, - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */, + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */, + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */, + 713D777502C3E92B65F20A2A /* [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 = ( - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */, + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */, + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,46 +361,46 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */ = { + 713D777502C3E92B65F20A2A /* [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; }; - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */ = { + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */ = { + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -489,7 +489,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -505,7 +505,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -560,7 +560,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -644,7 +644,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +694,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-auth-flutterfire-ui/step_04_b/pubspec.yaml b/firebase-auth-flutterfire-ui/step_04_b/pubspec.yaml index 2a4a766c97..cac9a2f22e 100644 --- a/firebase-auth-flutterfire-ui/step_04_b/pubspec.yaml +++ b/firebase-auth-flutterfire-ui/step_04_b/pubspec.yaml @@ -4,14 +4,14 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - firebase_auth: ^5.6.0 - firebase_core: ^3.14.0 - firebase_ui_auth: ^1.17.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: diff --git a/firebase-auth-flutterfire-ui/step_04_c/.gemini/settings.json b/firebase-auth-flutterfire-ui/step_04_c/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-auth-flutterfire-ui/step_04_c/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-auth-flutterfire-ui/step_04_c/.gitignore b/firebase-auth-flutterfire-ui/step_04_c/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-auth-flutterfire-ui/step_04_c/.gitignore +++ b/firebase-auth-flutterfire-ui/step_04_c/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-auth-flutterfire-ui/step_04_c/android/app/build.gradle.kts b/firebase-auth-flutterfire-ui/step_04_c/android/app/build.gradle.kts index cfefc64d45..8deb6f0894 100644 --- a/firebase-auth-flutterfire-ui/step_04_c/android/app/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_04_c/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.firebase_auth_flutterfire_ui" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.firebase_auth_flutterfire_ui" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-auth-flutterfire-ui/step_04_c/android/build.gradle.kts b/firebase-auth-flutterfire-ui/step_04_c/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-auth-flutterfire-ui/step_04_c/android/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_04_c/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-auth-flutterfire-ui/step_04_c/android/settings.gradle.kts b/firebase-auth-flutterfire-ui/step_04_c/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-auth-flutterfire-ui/step_04_c/android/settings.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_04_c/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-auth-flutterfire-ui/step_04_c/ios/Flutter/AppFrameworkInfo.plist b/firebase-auth-flutterfire-ui/step_04_c/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-auth-flutterfire-ui/step_04_c/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-auth-flutterfire-ui/step_04_c/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-auth-flutterfire-ui/step_04_c/ios/Podfile b/firebase-auth-flutterfire-ui/step_04_c/ios/Podfile index a35276b04c..6649374d4c 100644 --- a/firebase-auth-flutterfire-ui/step_04_c/ios/Podfile +++ b/firebase-auth-flutterfire-ui/step_04_c/ios/Podfile @@ -1,5 +1,5 @@ -# Native Firebase plugins require iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-auth-flutterfire-ui/step_04_c/ios/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_04_c/ios/Runner.xcodeproj/project.pbxproj index f2e3b15882..f7f02552ce 100644 --- a/firebase-auth-flutterfire-ui/step_04_c/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_04_c/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD8723D6E263C0937F31B807 /* Pods_Runner.framework */; }; 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 */; }; + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,15 +44,16 @@ /* 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 = ""; }; - 17E9C3493747E1EFBB2B43DF /* 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 = ""; }; - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D26131AF8DB47C10EE2F0C1 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6363B3B94BDC7FA125F213A2 /* 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 = ""; }; 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 = ""; }; + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D13DB4334452E8A7411F7A3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,27 +61,26 @@ 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 = ""; }; - A0BF4D89B17C9C69338E812C /* 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 = ""; }; - A363C68338BB477EBF97D6A1 /* 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 = ""; }; - B1E8A6D0948BE0A6A75381C9 /* 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 = ""; }; - B4674E413662C477A4B68423 /* 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 = ""; }; - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E677A4DD85B7E0D78732574 /* 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 = ""; }; + B28E10018E17DA077C45C504 /* 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 = ""; }; + B36DB634D8B9CCE980DF54B1 /* 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 = ""; }; + E620F43AB2A53C6E2983D2B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 89D0D1BEAF50AB7F233993A7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */, + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FF7E7F711E7E08915717A2B3 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */, + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 780008811740DCC549BDAB17 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */, + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - EBB68C10E7E1388A9ABE6CA4 /* Pods */, - EDC4E73E2C532DAC106C1B1C /* Frameworks */, + D0800E66CFB4D0BE303D577D /* Pods */, + 780008811740DCC549BDAB17 /* Frameworks */, ); sourceTree = ""; }; @@ -142,29 +151,20 @@ path = Runner; sourceTree = ""; }; - EBB68C10E7E1388A9ABE6CA4 /* Pods */ = { + D0800E66CFB4D0BE303D577D /* Pods */ = { isa = PBXGroup; children = ( - 2D26131AF8DB47C10EE2F0C1 /* Pods-Runner.debug.xcconfig */, - A363C68338BB477EBF97D6A1 /* Pods-Runner.release.xcconfig */, - 17E9C3493747E1EFBB2B43DF /* Pods-Runner.profile.xcconfig */, - B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */, - B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */, - A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */, + B28E10018E17DA077C45C504 /* Pods-Runner.debug.xcconfig */, + E620F43AB2A53C6E2983D2B2 /* Pods-Runner.release.xcconfig */, + 6363B3B94BDC7FA125F213A2 /* Pods-Runner.profile.xcconfig */, + B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */, + 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */, + 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; - EDC4E73E2C532DAC106C1B1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */, - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */, + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - FF7E7F711E7E08915717A2B3 /* Frameworks */, + 89D0D1BEAF50AB7F233993A7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */, + 72CCEC7099A1B0E3C9437199 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D95411149BD4F324F7CBF5AD /* [CP] Embed Pods Frameworks */, + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,26 +270,21 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */ = { + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { @@ -308,6 +303,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 72CCEC7099A1B0E3C9437199 /* [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; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -323,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */ = { + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -338,30 +355,13 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - D95411149BD4F324F7CBF5AD /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-auth-flutterfire-ui/step_04_c/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-auth-flutterfire-ui/step_04_c/macos/Flutter/GeneratedPluginRegistrant.swift index 98428509f7..4116d2e5cf 100644 --- a/firebase-auth-flutterfire-ui/step_04_c/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-auth-flutterfire-ui/step_04_c/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,11 +5,13 @@ import FlutterMacOS import Foundation +import app_links import desktop_webview_auth import firebase_auth import firebase_core func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) diff --git a/firebase-auth-flutterfire-ui/step_04_c/macos/Podfile b/firebase-auth-flutterfire-ui/step_04_c/macos/Podfile index ee6a5b9d34..ff5ddb3b8b 100644 --- a/firebase-auth-flutterfire-ui/step_04_c/macos/Podfile +++ b/firebase-auth-flutterfire-ui/step_04_c/macos/Podfile @@ -1,4 +1,3 @@ -# Native Firebase plugins require MacOS 10.15 minimum, Flutter only requires 10.14 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/firebase-auth-flutterfire-ui/step_04_c/macos/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_04_c/macos/Runner.xcodeproj/project.pbxproj index 4f55949579..cc800b10dd 100644 --- a/firebase-auth-flutterfire-ui/step_04_c/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_04_c/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 */; }; - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */; }; - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1371F0164C42C0305E27BBD /* Pods_Runner.framework */; }; + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */; }; + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A5852748AF14E3228865E74 /* 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 = ""; }; 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 +78,16 @@ 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 = ""; }; - 3AE4EE855986D1F3F380EB9E /* 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 = ""; }; - 40426B4A7A9E11CA61FF6DF0 /* 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 = ""; }; - 4D5732846470451386DF89FC /* 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 = ""; }; + 3D755F9DAA9DEDE08DC69111 /* 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 = ""; }; + 6A68BA8B026BA27D28814268 /* 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 = ""; }; + 75DD3034081E67A7A578ABB3 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8DF9742CF61BEFDB4450F884 /* 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 = ""; }; + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B4E3647E5F4591F0F628EF00 /* 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 = ""; }; - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A8FA5D7A88A7FB7C8736CB4E /* 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 = ""; }; + DE265DD77C584A35E54640A6 /* 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 = ""; }; + F590A1A5D1DCE039ADE077B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */, + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */, + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - D4F3B89EF1EBFB62BC83EE4B /* Pods */, + 599AAB410CFF8E2A0BAAAAFE /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - D4F3B89EF1EBFB62BC83EE4B /* Pods */ = { + 599AAB410CFF8E2A0BAAAAFE /* Pods */ = { isa = PBXGroup; children = ( - 0A5852748AF14E3228865E74 /* Pods-Runner.debug.xcconfig */, - B4E3647E5F4591F0F628EF00 /* Pods-Runner.release.xcconfig */, - 4D5732846470451386DF89FC /* Pods-Runner.profile.xcconfig */, - 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */, - 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */, - 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */, + 75DD3034081E67A7A578ABB3 /* Pods-Runner.debug.xcconfig */, + F590A1A5D1DCE039ADE077B2 /* Pods-Runner.release.xcconfig */, + 6A68BA8B026BA27D28814268 /* Pods-Runner.profile.xcconfig */, + 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */, + DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */, + A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */, - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */, + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */, + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */, + 713D777502C3E92B65F20A2A /* [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 = ( - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */, + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */, + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,46 +361,46 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */ = { + 713D777502C3E92B65F20A2A /* [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; }; - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */ = { + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */ = { + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -489,7 +489,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -505,7 +505,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -560,7 +560,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -644,7 +644,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +694,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-auth-flutterfire-ui/step_04_c/pubspec.yaml b/firebase-auth-flutterfire-ui/step_04_c/pubspec.yaml index 2a4a766c97..cac9a2f22e 100644 --- a/firebase-auth-flutterfire-ui/step_04_c/pubspec.yaml +++ b/firebase-auth-flutterfire-ui/step_04_c/pubspec.yaml @@ -4,14 +4,14 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - firebase_auth: ^5.6.0 - firebase_core: ^3.14.0 - firebase_ui_auth: ^1.17.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: diff --git a/firebase-auth-flutterfire-ui/step_04_d/.gemini/settings.json b/firebase-auth-flutterfire-ui/step_04_d/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-auth-flutterfire-ui/step_04_d/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-auth-flutterfire-ui/step_04_d/.gitignore b/firebase-auth-flutterfire-ui/step_04_d/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-auth-flutterfire-ui/step_04_d/.gitignore +++ b/firebase-auth-flutterfire-ui/step_04_d/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-auth-flutterfire-ui/step_04_d/android/app/build.gradle.kts b/firebase-auth-flutterfire-ui/step_04_d/android/app/build.gradle.kts index cfefc64d45..8deb6f0894 100644 --- a/firebase-auth-flutterfire-ui/step_04_d/android/app/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_04_d/android/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.example.firebase_auth_flutterfire_ui" compileSdk = flutter.compileSdkVersion - ndkVersion = "27.0.12077973" + ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_11 @@ -24,7 +24,7 @@ android { applicationId = "com.example.firebase_auth_flutterfire_ui" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-auth-flutterfire-ui/step_04_d/android/build.gradle.kts b/firebase-auth-flutterfire-ui/step_04_d/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-auth-flutterfire-ui/step_04_d/android/build.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_04_d/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-auth-flutterfire-ui/step_04_d/android/settings.gradle.kts b/firebase-auth-flutterfire-ui/step_04_d/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-auth-flutterfire-ui/step_04_d/android/settings.gradle.kts +++ b/firebase-auth-flutterfire-ui/step_04_d/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-auth-flutterfire-ui/step_04_d/ios/Flutter/AppFrameworkInfo.plist b/firebase-auth-flutterfire-ui/step_04_d/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-auth-flutterfire-ui/step_04_d/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-auth-flutterfire-ui/step_04_d/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-auth-flutterfire-ui/step_04_d/ios/Podfile b/firebase-auth-flutterfire-ui/step_04_d/ios/Podfile index a35276b04c..6649374d4c 100644 --- a/firebase-auth-flutterfire-ui/step_04_d/ios/Podfile +++ b/firebase-auth-flutterfire-ui/step_04_d/ios/Podfile @@ -1,5 +1,5 @@ -# Native Firebase plugins require iOS 13.0 minimum, Flutter only requires 12.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-auth-flutterfire-ui/step_04_d/ios/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_04_d/ios/Runner.xcodeproj/project.pbxproj index f2e3b15882..f7f02552ce 100644 --- a/firebase-auth-flutterfire-ui/step_04_d/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_04_d/ios/Runner.xcodeproj/project.pbxproj @@ -7,15 +7,15 @@ objects = { /* Begin PBXBuildFile section */ + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD8723D6E263C0937F31B807 /* Pods_Runner.framework */; }; 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 */; }; + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,15 +44,16 @@ /* 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 = ""; }; - 17E9C3493747E1EFBB2B43DF /* 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 = ""; }; - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2D26131AF8DB47C10EE2F0C1 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6363B3B94BDC7FA125F213A2 /* 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 = ""; }; 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 = ""; }; + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D13DB4334452E8A7411F7A3 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,27 +61,26 @@ 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 = ""; }; - A0BF4D89B17C9C69338E812C /* 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 = ""; }; - A363C68338BB477EBF97D6A1 /* 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 = ""; }; - B1E8A6D0948BE0A6A75381C9 /* 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 = ""; }; - B4674E413662C477A4B68423 /* 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 = ""; }; - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E677A4DD85B7E0D78732574 /* 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 = ""; }; + B28E10018E17DA077C45C504 /* 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 = ""; }; + B36DB634D8B9CCE980DF54B1 /* 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 = ""; }; + E620F43AB2A53C6E2983D2B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { + 89D0D1BEAF50AB7F233993A7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 77090033BA5C81DCAF1C2B34 /* Pods_Runner.framework in Frameworks */, + A124928E50B1290738D7FB3B /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FF7E7F711E7E08915717A2B3 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 44F9DC18045CEF46EC34BD1C /* Pods_RunnerTests.framework in Frameworks */, + 032619CDEACAEC076F22BDAD /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 780008811740DCC549BDAB17 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58205E4EB6943FE0CD059F13 /* Pods_Runner.framework */, + 7E39D4D5A7B16DCE802A0354 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - EBB68C10E7E1388A9ABE6CA4 /* Pods */, - EDC4E73E2C532DAC106C1B1C /* Frameworks */, + D0800E66CFB4D0BE303D577D /* Pods */, + 780008811740DCC549BDAB17 /* Frameworks */, ); sourceTree = ""; }; @@ -142,29 +151,20 @@ path = Runner; sourceTree = ""; }; - EBB68C10E7E1388A9ABE6CA4 /* Pods */ = { + D0800E66CFB4D0BE303D577D /* Pods */ = { isa = PBXGroup; children = ( - 2D26131AF8DB47C10EE2F0C1 /* Pods-Runner.debug.xcconfig */, - A363C68338BB477EBF97D6A1 /* Pods-Runner.release.xcconfig */, - 17E9C3493747E1EFBB2B43DF /* Pods-Runner.profile.xcconfig */, - B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */, - B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */, - A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */, + B28E10018E17DA077C45C504 /* Pods-Runner.debug.xcconfig */, + E620F43AB2A53C6E2983D2B2 /* Pods-Runner.release.xcconfig */, + 6363B3B94BDC7FA125F213A2 /* Pods-Runner.profile.xcconfig */, + B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */, + 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */, + 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; - EDC4E73E2C532DAC106C1B1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - FD8723D6E263C0937F31B807 /* Pods_Runner.framework */, - 2B68228F9DD9E9D4962B07CB /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */, + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - FF7E7F711E7E08915717A2B3 /* Frameworks */, + 89D0D1BEAF50AB7F233993A7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */, + 72CCEC7099A1B0E3C9437199 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D95411149BD4F324F7CBF5AD /* [CP] Embed Pods Frameworks */, + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,26 +270,21 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 128664FD58BE8FD30A76E6C2 /* [CP] Check Pods Manifest.lock */ = { + 2063623024DAF08339B46D3A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { @@ -308,6 +303,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 72CCEC7099A1B0E3C9437199 /* [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; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -323,7 +340,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D878778C5DD942EC2B7F7531 /* [CP] Check Pods Manifest.lock */ = { + F1677CCA75E43428BDFDF036 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -338,30 +355,13 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; }; - D95411149BD4F324F7CBF5AD /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B4674E413662C477A4B68423 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = B36DB634D8B9CCE980DF54B1 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B1E8A6D0948BE0A6A75381C9 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9E677A4DD85B7E0D78732574 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A0BF4D89B17C9C69338E812C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 8D13DB4334452E8A7411F7A3 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.firebaseAuthFlutterfireUi.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-auth-flutterfire-ui/step_04_d/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-auth-flutterfire-ui/step_04_d/macos/Flutter/GeneratedPluginRegistrant.swift index 98428509f7..4116d2e5cf 100644 --- a/firebase-auth-flutterfire-ui/step_04_d/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-auth-flutterfire-ui/step_04_d/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,11 +5,13 @@ import FlutterMacOS import Foundation +import app_links import desktop_webview_auth import firebase_auth import firebase_core func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) diff --git a/firebase-auth-flutterfire-ui/step_04_d/macos/Podfile b/firebase-auth-flutterfire-ui/step_04_d/macos/Podfile index ee6a5b9d34..ff5ddb3b8b 100644 --- a/firebase-auth-flutterfire-ui/step_04_d/macos/Podfile +++ b/firebase-auth-flutterfire-ui/step_04_d/macos/Podfile @@ -1,4 +1,3 @@ -# Native Firebase plugins require MacOS 10.15 minimum, Flutter only requires 10.14 platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. diff --git a/firebase-auth-flutterfire-ui/step_04_d/macos/Runner.xcodeproj/project.pbxproj b/firebase-auth-flutterfire-ui/step_04_d/macos/Runner.xcodeproj/project.pbxproj index 4f55949579..cc800b10dd 100644 --- a/firebase-auth-flutterfire-ui/step_04_d/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-auth-flutterfire-ui/step_04_d/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 */; }; - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */; }; - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1371F0164C42C0305E27BBD /* Pods_Runner.framework */; }; + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */; }; + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A5852748AF14E3228865E74 /* 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 = ""; }; 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 +78,16 @@ 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 = ""; }; - 3AE4EE855986D1F3F380EB9E /* 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 = ""; }; - 40426B4A7A9E11CA61FF6DF0 /* 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 = ""; }; - 4D5732846470451386DF89FC /* 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 = ""; }; + 3D755F9DAA9DEDE08DC69111 /* 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 = ""; }; + 6A68BA8B026BA27D28814268 /* 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 = ""; }; + 75DD3034081E67A7A578ABB3 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8DF9742CF61BEFDB4450F884 /* 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 = ""; }; + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B4E3647E5F4591F0F628EF00 /* 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 = ""; }; - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A8FA5D7A88A7FB7C8736CB4E /* 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 = ""; }; + DE265DD77C584A35E54640A6 /* 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 = ""; }; + F590A1A5D1DCE039ADE077B2 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 808670861A82B8D1C7FBE179 /* Pods_RunnerTests.framework in Frameworks */, + 3B9DD4A043B6CBC61B1BEDD9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BCBFFC66AC35C177E620F43E /* Pods_Runner.framework in Frameworks */, + 61FC349846A80FA80131BF31 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - D4F3B89EF1EBFB62BC83EE4B /* Pods */, + 599AAB410CFF8E2A0BAAAAFE /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - D4F3B89EF1EBFB62BC83EE4B /* Pods */ = { + 599AAB410CFF8E2A0BAAAAFE /* Pods */ = { isa = PBXGroup; children = ( - 0A5852748AF14E3228865E74 /* Pods-Runner.debug.xcconfig */, - B4E3647E5F4591F0F628EF00 /* Pods-Runner.release.xcconfig */, - 4D5732846470451386DF89FC /* Pods-Runner.profile.xcconfig */, - 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */, - 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */, - 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */, + 75DD3034081E67A7A578ABB3 /* Pods-Runner.debug.xcconfig */, + F590A1A5D1DCE039ADE077B2 /* Pods-Runner.release.xcconfig */, + 6A68BA8B026BA27D28814268 /* Pods-Runner.profile.xcconfig */, + 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */, + DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */, + A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - C1371F0164C42C0305E27BBD /* Pods_Runner.framework */, - EC08DB924121B413C5D77100 /* Pods_RunnerTests.framework */, + A4E8FCEB2EC792E1CF6A58BE /* Pods_Runner.framework */, + 95F199D3B1670B2C3BE245A0 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */, + 713D777502C3E92B65F20A2A /* [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 = ( - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */, + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */, + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,46 +361,46 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 905014DB1FC0676CBA0DB7E5 /* [CP] Embed Pods Frameworks */ = { + 713D777502C3E92B65F20A2A /* [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; }; - CEFCB7C6D7A3E2B3ECE36BE2 /* [CP] Check Pods Manifest.lock */ = { + CC792606337A6F6CF1BDE3A0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F1F235E35655E98007713D5B /* [CP] Check Pods Manifest.lock */ = { + FFE50B2C9DD624A0D60B7E34 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3AE4EE855986D1F3F380EB9E /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 3D755F9DAA9DEDE08DC69111 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -489,7 +489,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8DF9742CF61BEFDB4450F884 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = DE265DD77C584A35E54640A6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -505,7 +505,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 40426B4A7A9E11CA61FF6DF0 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = A8FA5D7A88A7FB7C8736CB4E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -560,7 +560,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -644,7 +644,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +694,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-auth-flutterfire-ui/step_04_d/pubspec.yaml b/firebase-auth-flutterfire-ui/step_04_d/pubspec.yaml index 2a4a766c97..cac9a2f22e 100644 --- a/firebase-auth-flutterfire-ui/step_04_d/pubspec.yaml +++ b/firebase-auth-flutterfire-ui/step_04_d/pubspec.yaml @@ -4,14 +4,14 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - firebase_auth: ^5.6.0 - firebase_core: ^3.14.0 - firebase_ui_auth: ^1.17.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: diff --git a/firebase-emulator-suite/codelab_rebuild.yaml b/firebase-emulator-suite/codelab_rebuild.yaml index c854382ff5..b39d02c373 100644 --- a/firebase-emulator-suite/codelab_rebuild.yaml +++ b/firebase-emulator-suite/codelab_rebuild.yaml @@ -13,6 +13,21 @@ steps: - name: Update deps path: complete flutter: pub upgrade --major-versions + - name: Add .gemini directory + mkdir: complete/.gemini + - name: Add .gemini/settings.json + path: complete/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Configure analysis_options.yaml path: complete/analysis_options.yaml replace-contents: | diff --git a/firebase-emulator-suite/complete/.gemini/settings.json b/firebase-emulator-suite/complete/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-emulator-suite/complete/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-emulator-suite/complete/.gitignore b/firebase-emulator-suite/complete/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-emulator-suite/complete/.gitignore +++ b/firebase-emulator-suite/complete/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-emulator-suite/complete/android/build.gradle.kts b/firebase-emulator-suite/complete/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-emulator-suite/complete/android/build.gradle.kts +++ b/firebase-emulator-suite/complete/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-emulator-suite/complete/android/settings.gradle.kts b/firebase-emulator-suite/complete/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-emulator-suite/complete/android/settings.gradle.kts +++ b/firebase-emulator-suite/complete/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-emulator-suite/complete/ios/Flutter/AppFrameworkInfo.plist b/firebase-emulator-suite/complete/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-emulator-suite/complete/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-emulator-suite/complete/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-emulator-suite/complete/ios/Podfile b/firebase-emulator-suite/complete/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/firebase-emulator-suite/complete/ios/Podfile +++ b/firebase-emulator-suite/complete/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-emulator-suite/complete/ios/Runner.xcodeproj/project.pbxproj b/firebase-emulator-suite/complete/ios/Runner.xcodeproj/project.pbxproj index 967e41451e..6c069a98ed 100644 --- a/firebase-emulator-suite/complete/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-emulator-suite/complete/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/firebase-emulator-suite/complete/macos/Podfile b/firebase-emulator-suite/complete/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/firebase-emulator-suite/complete/macos/Podfile +++ b/firebase-emulator-suite/complete/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/firebase-emulator-suite/complete/macos/Runner.xcodeproj/project.pbxproj b/firebase-emulator-suite/complete/macos/Runner.xcodeproj/project.pbxproj index 97a73a82fa..f51a461d2b 100644 --- a/firebase-emulator-suite/complete/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-emulator-suite/complete/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-emulator-suite/complete/pubspec.yaml b/firebase-emulator-suite/complete/pubspec.yaml index 82780452ae..bc43c0d935 100644 --- a/firebase-emulator-suite/complete/pubspec.yaml +++ b/firebase-emulator-suite/complete/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,10 +34,10 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - go_router: ^15.1.2 - firebase_core: ^3.13.0 - firebase_auth: ^5.5.3 - cloud_firestore: ^5.6.7 + go_router: ^16.1.0 + firebase_core: ^4.0.0 + firebase_auth: ^6.0.1 + cloud_firestore: ^6.0.0 dev_dependencies: flutter_test: @@ -48,7 +48,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/firebase-emulator-suite/start/.gemini/settings.json b/firebase-emulator-suite/start/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-emulator-suite/start/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-emulator-suite/start/.gitignore b/firebase-emulator-suite/start/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-emulator-suite/start/.gitignore +++ b/firebase-emulator-suite/start/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-emulator-suite/start/android/build.gradle.kts b/firebase-emulator-suite/start/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-emulator-suite/start/android/build.gradle.kts +++ b/firebase-emulator-suite/start/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-emulator-suite/start/android/settings.gradle.kts b/firebase-emulator-suite/start/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-emulator-suite/start/android/settings.gradle.kts +++ b/firebase-emulator-suite/start/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-emulator-suite/start/ios/Flutter/AppFrameworkInfo.plist b/firebase-emulator-suite/start/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-emulator-suite/start/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-emulator-suite/start/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-emulator-suite/start/ios/Runner.xcodeproj/project.pbxproj b/firebase-emulator-suite/start/ios/Runner.xcodeproj/project.pbxproj index 967e41451e..6c069a98ed 100644 --- a/firebase-emulator-suite/start/ios/Runner.xcodeproj/project.pbxproj +++ b/firebase-emulator-suite/start/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/firebase-emulator-suite/start/macos/Runner.xcodeproj/project.pbxproj b/firebase-emulator-suite/start/macos/Runner.xcodeproj/project.pbxproj index 97a73a82fa..f51a461d2b 100644 --- a/firebase-emulator-suite/start/macos/Runner.xcodeproj/project.pbxproj +++ b/firebase-emulator-suite/start/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/firebase-emulator-suite/start/pubspec.yaml b/firebase-emulator-suite/start/pubspec.yaml index 13a590b830..9d39b3b98d 100644 --- a/firebase-emulator-suite/start/pubspec.yaml +++ b/firebase-emulator-suite/start/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - go_router: ^15.1.2 + go_router: ^16.1.0 dev_dependencies: flutter_test: @@ -45,7 +45,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/firebase-get-to-know-flutter/codelab_rebuild.yaml b/firebase-get-to-know-flutter/codelab_rebuild.yaml index fe5306297a..9e2bfcacd8 100644 --- a/firebase-get-to-know-flutter/codelab_rebuild.yaml +++ b/firebase-get-to-know-flutter/codelab_rebuild.yaml @@ -19,6 +19,21 @@ steps: - name: Add dependencies path: gtk_flutter flutter: pub add google_fonts go_router + - name: Add .gemini directory + mkdir: gtk_flutter/.gemini + - name: Add .gemini/settings.json + path: gtk_flutter/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Patch pubspec.yaml path: gtk_flutter/pubspec.yaml patch-u: | @@ -41,34 +56,6 @@ steps: # To add assets to your application, add an assets section, like this: # assets: - - name: Patch android/app/build.gradle.kts - path: gtk_flutter/android/app/build.gradle.kts - patch-u: | - --- b/firebase-get-to-know-flutter/step_02/android/app/build.gradle - +++ a/firebase-get-to-know-flutter/step_02/android/app/build.gradle - @@ -24,7 +24,7 @@ android { - applicationId = "com.example.gtk_flutter" - // You can update the following values to match your application needs. - // For more information, see: https://flutter.dev/to/review-gradle-config. - - minSdk = flutter.minSdkVersion - + minSdk = 23 - targetSdk = flutter.targetSdkVersion - versionCode = flutter.versionCode - versionName = flutter.versionName - - name: Patch macos/Podfile - path: gtk_flutter/macos/Podfile - patch-u: | - --- b/gtk_flutter/step_02/macos/Podfile - +++ a/gtk_flutter/step_02/macos/Podfile - @@ -1,4 +1,4 @@ - -platform :osx, '10.14' - +platform :osx, '10.15' - - # CocoaPods analytics sends network stats synchronously affecting flutter build latency. - ENV['COCOAPODS_DISABLE_STATS'] = 'true' - - name: Patch macos/Runner.xcodeproj/project.pbxproj - xcode-project-path: gtk_flutter/macos/Runner.xcodeproj - macosx-deployment-target: '10.15' - name: Patch ios/Podfile path: gtk_flutter/ios/Podfile patch-u: | @@ -76,14 +63,14 @@ steps: +++ b/firebase-get-to-know-flutter/step_02/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project - -# platform :ios, '12.0' - +platform :ios, '13.0' + -# platform :ios, '13.0' + +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' - name: Patch ios/Runner.xcodeproj/project.pbxproj xcode-project-path: gtk_flutter/ios/Runner.xcodeproj - iphoneos-deployment-target: '13.0' + iphoneos-deployment-target: '15.0' - name: Remove the README.md rm: gtk_flutter/README.md - name: VSCode config diff --git a/firebase-get-to-know-flutter/step_02/.gemini/settings.json b/firebase-get-to-know-flutter/step_02/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-get-to-know-flutter/step_02/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-get-to-know-flutter/step_02/.gitignore b/firebase-get-to-know-flutter/step_02/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-get-to-know-flutter/step_02/.gitignore +++ b/firebase-get-to-know-flutter/step_02/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-get-to-know-flutter/step_02/android/app/build.gradle.kts b/firebase-get-to-know-flutter/step_02/android/app/build.gradle.kts index 3e28d8bd44..520f06831d 100644 --- a/firebase-get-to-know-flutter/step_02/android/app/build.gradle.kts +++ b/firebase-get-to-know-flutter/step_02/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.gtk_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-get-to-know-flutter/step_02/android/build.gradle.kts b/firebase-get-to-know-flutter/step_02/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-get-to-know-flutter/step_02/android/build.gradle.kts +++ b/firebase-get-to-know-flutter/step_02/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-get-to-know-flutter/step_02/android/settings.gradle.kts b/firebase-get-to-know-flutter/step_02/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-get-to-know-flutter/step_02/android/settings.gradle.kts +++ b/firebase-get-to-know-flutter/step_02/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-get-to-know-flutter/step_02/ios/Flutter/AppFrameworkInfo.plist b/firebase-get-to-know-flutter/step_02/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-get-to-know-flutter/step_02/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-get-to-know-flutter/step_02/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-get-to-know-flutter/step_02/ios/Podfile b/firebase-get-to-know-flutter/step_02/ios/Podfile index 2dbf7d728d..6649374d4c 100644 --- a/firebase-get-to-know-flutter/step_02/ios/Podfile +++ b/firebase-get-to-know-flutter/step_02/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '13.0' +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' 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 e94f2f3d23..1c8af2a288 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,7 +7,7 @@ objects = { /* Begin PBXBuildFile section */ - 06C9C59E16D9F4F4D3C492FF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */; }; + 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; @@ -15,7 +15,7 @@ 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 */; }; - AB3E80FD157D670C0CE70D1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */; }; + 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,17 +44,15 @@ /* 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 = ""; }; - 16FDE7B45714EB48C7696998 /* 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 = ""; }; - 31F5BBAA79FBCAED757BF27D /* 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 = ""; }; + 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4471A0577823020627C563F6 /* 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 = ""; }; - 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 9192EBA0BABB9494623B2536 /* 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; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,17 +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 = ""; }; - A386D17B3AEE391BA261EBA1 /* 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 = ""; }; - C177F27E68A657877BE2733E /* 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 = ""; }; - F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 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; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 801798857E03A0958BA40702 /* Frameworks */ = { + 896D3A1B7C4F5545470D30A4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AB3E80FD157D670C0CE70D1C /* Pods_RunnerTests.framework in Frameworks */, + 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 06C9C59E16D9F4F4D3C492FF /* Pods_Runner.framework in Frameworks */, + 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 79EEF8D08A8312EF51875428 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */, + F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - C2C9D7E652A1BAC45F3B4C2E /* Pods */, - ADDF25D99BD2F81F64E9351B /* Frameworks */, + C7145ABD4CE8720655CB1CDE /* Pods */, + 79EEF8D08A8312EF51875428 /* Frameworks */, ); sourceTree = ""; }; @@ -142,24 +151,15 @@ path = Runner; sourceTree = ""; }; - ADDF25D99BD2F81F64E9351B /* Frameworks */ = { + C7145ABD4CE8720655CB1CDE /* Pods */ = { isa = PBXGroup; children = ( - 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */, - F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - C2C9D7E652A1BAC45F3B4C2E /* Pods */ = { - isa = PBXGroup; - children = ( - 9192EBA0BABB9494623B2536 /* Pods-Runner.debug.xcconfig */, - C177F27E68A657877BE2733E /* Pods-Runner.release.xcconfig */, - 16FDE7B45714EB48C7696998 /* Pods-Runner.profile.xcconfig */, - 4471A0577823020627C563F6 /* Pods-RunnerTests.debug.xcconfig */, - 31F5BBAA79FBCAED757BF27D /* Pods-RunnerTests.release.xcconfig */, - A386D17B3AEE391BA261EBA1 /* Pods-RunnerTests.profile.xcconfig */, + 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 */, ); name = Pods; path = Pods; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5A31DB3B3DD013F047FC06A6 /* [CP] Check Pods Manifest.lock */, + 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 801798857E03A0958BA40702 /* Frameworks */, + 896D3A1B7C4F5545470D30A4 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 6AB59EFDBC4596891A52A553 /* [CP] Check Pods Manifest.lock */, + 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - F89FCE12DFF266023D0BD15A /* [CP] Embed Pods Frameworks */, + 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,6 +270,28 @@ /* 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; @@ -286,29 +308,24 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 5A31DB3B3DD013F047FC06A6 /* [CP] Check Pods Manifest.lock */ = { + 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 6AB59EFDBC4596891A52A553 /* [CP] Check Pods Manifest.lock */ = { + 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -323,7 +340,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -345,23 +362,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - F89FCE12DFF266023D0BD15A /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,7 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -488,13 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4471A0577823020627C563F6 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -507,13 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31F5BBAA79FBCAED757BF27D /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -524,13 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A386D17B3AEE391BA261EBA1 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -588,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -659,7 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -682,7 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", 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 97a96bdb96..59937692e7 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 @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 1C15E3B743C43E964486CF70 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - DB0A09FB6FC66DFC8255ABD6 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */; }; + 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 */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0F16903B3BA7392E6B748F7C /* 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 = ""; }; - 2BC666739A96A03EC0CEAF4D /* 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 = ""; }; + 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +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 = ""; }; - 35F9300C06A94340BEB8B2C9 /* 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 = ""; }; - 6461F4E8D7A226CC9AB38911 /* 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 = ""; }; + 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 7CCA70E6AEF647871EBAC5E8 /* 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 = ""; }; - 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E255CA9EDBC16F47477B65A2 /* 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 = ""; }; + 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1C15E3B743C43E964486CF70 /* Pods_RunnerTests.framework in Frameworks */, + ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DB0A09FB6FC66DFC8255ABD6 /* Pods_Runner.framework in Frameworks */, + 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 97176DD67713B03AB4CD1E40 /* Pods */, + 779340C43E8641722E4AC30F /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 97176DD67713B03AB4CD1E40 /* Pods */ = { + 779340C43E8641722E4AC30F /* Pods */ = { isa = PBXGroup; children = ( - 6461F4E8D7A226CC9AB38911 /* Pods-Runner.debug.xcconfig */, - 2BC666739A96A03EC0CEAF4D /* Pods-Runner.release.xcconfig */, - E255CA9EDBC16F47477B65A2 /* Pods-Runner.profile.xcconfig */, - 35F9300C06A94340BEB8B2C9 /* Pods-RunnerTests.debug.xcconfig */, - 7CCA70E6AEF647871EBAC5E8 /* Pods-RunnerTests.release.xcconfig */, - 0F16903B3BA7392E6B748F7C /* Pods-RunnerTests.profile.xcconfig */, + 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; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */, - 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */, + 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */, + D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 02AF1E8587654528A56A4744 /* [CP] Check Pods Manifest.lock */, + 058D4328BC92A9DE474B0A71 /* [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 = ( - 920BD6477480BA97B4D9D8D2 /* [CP] Check Pods Manifest.lock */, + 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 482F6FF3A36F50C2ABFCCD13 /* [CP] Embed Pods Frameworks */, + 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,7 +323,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 02AF1E8587654528A56A4744 /* [CP] Check Pods Manifest.lock */ = { + 058D4328BC92A9DE474B0A71 /* [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"; }; - 482F6FF3A36F50C2ABFCCD13 /* [CP] Embed Pods Frameworks */ = { + 4221B0A5FAAB355BB0C573AE /* [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; }; - 920BD6477480BA97B4D9D8D2 /* [CP] Check Pods Manifest.lock */ = { + 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,12 +473,11 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 35F9300C06A94340BEB8B2C9 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -489,12 +488,11 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7CCA70E6AEF647871EBAC5E8 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +503,11 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0F16903B3BA7392E6B748F7C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -560,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -582,7 +579,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -592,7 +588,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile; @@ -644,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -716,7 +711,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -737,7 +731,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -747,7 +740,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -756,7 +748,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/firebase-get-to-know-flutter/step_02/pubspec.yaml b/firebase-get-to-know-flutter/step_02/pubspec.yaml index d33b607999..e6c4e904a4 100644 --- a/firebase-get-to-know-flutter/step_02/pubspec.yaml +++ b/firebase-get-to-know-flutter/step_02/pubspec.yaml @@ -20,7 +20,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -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: ^15.1.2 + go_router: ^16.1.0 dev_dependencies: flutter_test: @@ -47,7 +47,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/firebase-get-to-know-flutter/step_04/.gemini/settings.json b/firebase-get-to-know-flutter/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-get-to-know-flutter/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-get-to-know-flutter/step_04/.gitignore b/firebase-get-to-know-flutter/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-get-to-know-flutter/step_04/.gitignore +++ b/firebase-get-to-know-flutter/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-get-to-know-flutter/step_04/android/app/build.gradle.kts b/firebase-get-to-know-flutter/step_04/android/app/build.gradle.kts index 3e28d8bd44..520f06831d 100644 --- a/firebase-get-to-know-flutter/step_04/android/app/build.gradle.kts +++ b/firebase-get-to-know-flutter/step_04/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.gtk_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-get-to-know-flutter/step_04/android/build.gradle.kts b/firebase-get-to-know-flutter/step_04/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-get-to-know-flutter/step_04/android/build.gradle.kts +++ b/firebase-get-to-know-flutter/step_04/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-get-to-know-flutter/step_04/android/settings.gradle.kts b/firebase-get-to-know-flutter/step_04/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-get-to-know-flutter/step_04/android/settings.gradle.kts +++ b/firebase-get-to-know-flutter/step_04/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-get-to-know-flutter/step_04/ios/Flutter/AppFrameworkInfo.plist b/firebase-get-to-know-flutter/step_04/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-get-to-know-flutter/step_04/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-get-to-know-flutter/step_04/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-get-to-know-flutter/step_04/ios/Podfile b/firebase-get-to-know-flutter/step_04/ios/Podfile index 2dbf7d728d..6649374d4c 100644 --- a/firebase-get-to-know-flutter/step_04/ios/Podfile +++ b/firebase-get-to-know-flutter/step_04/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '13.0' +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' 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 e94f2f3d23..1c8af2a288 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,7 +7,7 @@ objects = { /* Begin PBXBuildFile section */ - 06C9C59E16D9F4F4D3C492FF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */; }; + 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; @@ -15,7 +15,7 @@ 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 */; }; - AB3E80FD157D670C0CE70D1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */; }; + 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,17 +44,15 @@ /* 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 = ""; }; - 16FDE7B45714EB48C7696998 /* 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 = ""; }; - 31F5BBAA79FBCAED757BF27D /* 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 = ""; }; + 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4471A0577823020627C563F6 /* 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 = ""; }; - 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 9192EBA0BABB9494623B2536 /* 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; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,17 +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 = ""; }; - A386D17B3AEE391BA261EBA1 /* 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 = ""; }; - C177F27E68A657877BE2733E /* 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 = ""; }; - F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 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; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 801798857E03A0958BA40702 /* Frameworks */ = { + 896D3A1B7C4F5545470D30A4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AB3E80FD157D670C0CE70D1C /* Pods_RunnerTests.framework in Frameworks */, + 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 06C9C59E16D9F4F4D3C492FF /* Pods_Runner.framework in Frameworks */, + 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 79EEF8D08A8312EF51875428 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */, + F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - C2C9D7E652A1BAC45F3B4C2E /* Pods */, - ADDF25D99BD2F81F64E9351B /* Frameworks */, + C7145ABD4CE8720655CB1CDE /* Pods */, + 79EEF8D08A8312EF51875428 /* Frameworks */, ); sourceTree = ""; }; @@ -142,24 +151,15 @@ path = Runner; sourceTree = ""; }; - ADDF25D99BD2F81F64E9351B /* Frameworks */ = { + C7145ABD4CE8720655CB1CDE /* Pods */ = { isa = PBXGroup; children = ( - 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */, - F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - C2C9D7E652A1BAC45F3B4C2E /* Pods */ = { - isa = PBXGroup; - children = ( - 9192EBA0BABB9494623B2536 /* Pods-Runner.debug.xcconfig */, - C177F27E68A657877BE2733E /* Pods-Runner.release.xcconfig */, - 16FDE7B45714EB48C7696998 /* Pods-Runner.profile.xcconfig */, - 4471A0577823020627C563F6 /* Pods-RunnerTests.debug.xcconfig */, - 31F5BBAA79FBCAED757BF27D /* Pods-RunnerTests.release.xcconfig */, - A386D17B3AEE391BA261EBA1 /* Pods-RunnerTests.profile.xcconfig */, + 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 */, ); name = Pods; path = Pods; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5A31DB3B3DD013F047FC06A6 /* [CP] Check Pods Manifest.lock */, + 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 801798857E03A0958BA40702 /* Frameworks */, + 896D3A1B7C4F5545470D30A4 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 6AB59EFDBC4596891A52A553 /* [CP] Check Pods Manifest.lock */, + 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - F89FCE12DFF266023D0BD15A /* [CP] Embed Pods Frameworks */, + 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,6 +270,28 @@ /* 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; @@ -286,29 +308,24 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 5A31DB3B3DD013F047FC06A6 /* [CP] Check Pods Manifest.lock */ = { + 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 6AB59EFDBC4596891A52A553 /* [CP] Check Pods Manifest.lock */ = { + 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -323,7 +340,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -345,23 +362,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - F89FCE12DFF266023D0BD15A /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,7 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -488,13 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4471A0577823020627C563F6 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -507,13 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31F5BBAA79FBCAED757BF27D /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -524,13 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A386D17B3AEE391BA261EBA1 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -588,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -659,7 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -682,7 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-get-to-know-flutter/step_04/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-get-to-know-flutter/step_04/macos/Flutter/GeneratedPluginRegistrant.swift index 2237937c23..ccbc3595df 100644 --- a/firebase-get-to-know-flutter/step_04/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-get-to-know-flutter/step_04/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,7 @@ import FlutterMacOS import Foundation +import app_links import cloud_firestore import desktop_webview_auth import firebase_auth @@ -12,6 +13,7 @@ import firebase_core import path_provider_foundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) 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 97a96bdb96..59937692e7 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 @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 1C15E3B743C43E964486CF70 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - DB0A09FB6FC66DFC8255ABD6 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */; }; + 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 */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0F16903B3BA7392E6B748F7C /* 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 = ""; }; - 2BC666739A96A03EC0CEAF4D /* 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 = ""; }; + 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +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 = ""; }; - 35F9300C06A94340BEB8B2C9 /* 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 = ""; }; - 6461F4E8D7A226CC9AB38911 /* 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 = ""; }; + 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 7CCA70E6AEF647871EBAC5E8 /* 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 = ""; }; - 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E255CA9EDBC16F47477B65A2 /* 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 = ""; }; + 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1C15E3B743C43E964486CF70 /* Pods_RunnerTests.framework in Frameworks */, + ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DB0A09FB6FC66DFC8255ABD6 /* Pods_Runner.framework in Frameworks */, + 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 97176DD67713B03AB4CD1E40 /* Pods */, + 779340C43E8641722E4AC30F /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 97176DD67713B03AB4CD1E40 /* Pods */ = { + 779340C43E8641722E4AC30F /* Pods */ = { isa = PBXGroup; children = ( - 6461F4E8D7A226CC9AB38911 /* Pods-Runner.debug.xcconfig */, - 2BC666739A96A03EC0CEAF4D /* Pods-Runner.release.xcconfig */, - E255CA9EDBC16F47477B65A2 /* Pods-Runner.profile.xcconfig */, - 35F9300C06A94340BEB8B2C9 /* Pods-RunnerTests.debug.xcconfig */, - 7CCA70E6AEF647871EBAC5E8 /* Pods-RunnerTests.release.xcconfig */, - 0F16903B3BA7392E6B748F7C /* Pods-RunnerTests.profile.xcconfig */, + 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; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */, - 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */, + 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */, + D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 02AF1E8587654528A56A4744 /* [CP] Check Pods Manifest.lock */, + 058D4328BC92A9DE474B0A71 /* [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 = ( - 920BD6477480BA97B4D9D8D2 /* [CP] Check Pods Manifest.lock */, + 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 482F6FF3A36F50C2ABFCCD13 /* [CP] Embed Pods Frameworks */, + 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,7 +323,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 02AF1E8587654528A56A4744 /* [CP] Check Pods Manifest.lock */ = { + 058D4328BC92A9DE474B0A71 /* [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"; }; - 482F6FF3A36F50C2ABFCCD13 /* [CP] Embed Pods Frameworks */ = { + 4221B0A5FAAB355BB0C573AE /* [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; }; - 920BD6477480BA97B4D9D8D2 /* [CP] Check Pods Manifest.lock */ = { + 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,12 +473,11 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 35F9300C06A94340BEB8B2C9 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -489,12 +488,11 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7CCA70E6AEF647871EBAC5E8 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +503,11 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0F16903B3BA7392E6B748F7C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -560,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -582,7 +579,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -592,7 +588,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile; @@ -644,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -716,7 +711,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -737,7 +731,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -747,7 +740,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -756,7 +748,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/firebase-get-to-know-flutter/step_04/pubspec.yaml b/firebase-get-to-know-flutter/step_04/pubspec.yaml index c31c1eeaaf..b705ff632f 100644 --- a/firebase-get-to-know-flutter/step_04/pubspec.yaml +++ b/firebase-get-to-know-flutter/step_04/pubspec.yaml @@ -20,7 +20,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -36,12 +36,12 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 google_fonts: ^6.3.0 - go_router: ^15.1.2 - cloud_firestore: ^5.6.7 - firebase_auth: ^5.5.3 - firebase_core: ^3.13.0 + go_router: ^16.1.0 + cloud_firestore: ^6.0.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 provider: ^6.1.5 - firebase_ui_auth: ^1.16.1 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: @@ -52,7 +52,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/firebase-get-to-know-flutter/step_05/.gemini/settings.json b/firebase-get-to-know-flutter/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-get-to-know-flutter/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-get-to-know-flutter/step_05/.gitignore b/firebase-get-to-know-flutter/step_05/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-get-to-know-flutter/step_05/.gitignore +++ b/firebase-get-to-know-flutter/step_05/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-get-to-know-flutter/step_05/android/app/build.gradle.kts b/firebase-get-to-know-flutter/step_05/android/app/build.gradle.kts index 3e28d8bd44..520f06831d 100644 --- a/firebase-get-to-know-flutter/step_05/android/app/build.gradle.kts +++ b/firebase-get-to-know-flutter/step_05/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.gtk_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-get-to-know-flutter/step_05/android/build.gradle.kts b/firebase-get-to-know-flutter/step_05/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-get-to-know-flutter/step_05/android/build.gradle.kts +++ b/firebase-get-to-know-flutter/step_05/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-get-to-know-flutter/step_05/android/settings.gradle.kts b/firebase-get-to-know-flutter/step_05/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-get-to-know-flutter/step_05/android/settings.gradle.kts +++ b/firebase-get-to-know-flutter/step_05/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-get-to-know-flutter/step_05/ios/Flutter/AppFrameworkInfo.plist b/firebase-get-to-know-flutter/step_05/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-get-to-know-flutter/step_05/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-get-to-know-flutter/step_05/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-get-to-know-flutter/step_05/ios/Podfile b/firebase-get-to-know-flutter/step_05/ios/Podfile index 2dbf7d728d..6649374d4c 100644 --- a/firebase-get-to-know-flutter/step_05/ios/Podfile +++ b/firebase-get-to-know-flutter/step_05/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '13.0' +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' 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 e94f2f3d23..1c8af2a288 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,7 +7,7 @@ objects = { /* Begin PBXBuildFile section */ - 06C9C59E16D9F4F4D3C492FF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */; }; + 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; @@ -15,7 +15,7 @@ 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 */; }; - AB3E80FD157D670C0CE70D1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */; }; + 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,17 +44,15 @@ /* 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 = ""; }; - 16FDE7B45714EB48C7696998 /* 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 = ""; }; - 31F5BBAA79FBCAED757BF27D /* 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 = ""; }; + 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4471A0577823020627C563F6 /* 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 = ""; }; - 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 9192EBA0BABB9494623B2536 /* 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; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,17 +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 = ""; }; - A386D17B3AEE391BA261EBA1 /* 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 = ""; }; - C177F27E68A657877BE2733E /* 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 = ""; }; - F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 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; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 801798857E03A0958BA40702 /* Frameworks */ = { + 896D3A1B7C4F5545470D30A4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AB3E80FD157D670C0CE70D1C /* Pods_RunnerTests.framework in Frameworks */, + 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 06C9C59E16D9F4F4D3C492FF /* Pods_Runner.framework in Frameworks */, + 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 79EEF8D08A8312EF51875428 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */, + F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - C2C9D7E652A1BAC45F3B4C2E /* Pods */, - ADDF25D99BD2F81F64E9351B /* Frameworks */, + C7145ABD4CE8720655CB1CDE /* Pods */, + 79EEF8D08A8312EF51875428 /* Frameworks */, ); sourceTree = ""; }; @@ -142,24 +151,15 @@ path = Runner; sourceTree = ""; }; - ADDF25D99BD2F81F64E9351B /* Frameworks */ = { + C7145ABD4CE8720655CB1CDE /* Pods */ = { isa = PBXGroup; children = ( - 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */, - F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - C2C9D7E652A1BAC45F3B4C2E /* Pods */ = { - isa = PBXGroup; - children = ( - 9192EBA0BABB9494623B2536 /* Pods-Runner.debug.xcconfig */, - C177F27E68A657877BE2733E /* Pods-Runner.release.xcconfig */, - 16FDE7B45714EB48C7696998 /* Pods-Runner.profile.xcconfig */, - 4471A0577823020627C563F6 /* Pods-RunnerTests.debug.xcconfig */, - 31F5BBAA79FBCAED757BF27D /* Pods-RunnerTests.release.xcconfig */, - A386D17B3AEE391BA261EBA1 /* Pods-RunnerTests.profile.xcconfig */, + 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 */, ); name = Pods; path = Pods; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5A31DB3B3DD013F047FC06A6 /* [CP] Check Pods Manifest.lock */, + 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 801798857E03A0958BA40702 /* Frameworks */, + 896D3A1B7C4F5545470D30A4 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 6AB59EFDBC4596891A52A553 /* [CP] Check Pods Manifest.lock */, + 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - F89FCE12DFF266023D0BD15A /* [CP] Embed Pods Frameworks */, + 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,6 +270,28 @@ /* 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; @@ -286,29 +308,24 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 5A31DB3B3DD013F047FC06A6 /* [CP] Check Pods Manifest.lock */ = { + 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 6AB59EFDBC4596891A52A553 /* [CP] Check Pods Manifest.lock */ = { + 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -323,7 +340,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -345,23 +362,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - F89FCE12DFF266023D0BD15A /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,7 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -488,13 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4471A0577823020627C563F6 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -507,13 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31F5BBAA79FBCAED757BF27D /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -524,13 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A386D17B3AEE391BA261EBA1 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -588,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -659,7 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -682,7 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-get-to-know-flutter/step_05/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-get-to-know-flutter/step_05/macos/Flutter/GeneratedPluginRegistrant.swift index 2237937c23..ccbc3595df 100644 --- a/firebase-get-to-know-flutter/step_05/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-get-to-know-flutter/step_05/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,7 @@ import FlutterMacOS import Foundation +import app_links import cloud_firestore import desktop_webview_auth import firebase_auth @@ -12,6 +13,7 @@ import firebase_core import path_provider_foundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) 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 97a96bdb96..59937692e7 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 @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 1C15E3B743C43E964486CF70 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - DB0A09FB6FC66DFC8255ABD6 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */; }; + 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 */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0F16903B3BA7392E6B748F7C /* 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 = ""; }; - 2BC666739A96A03EC0CEAF4D /* 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 = ""; }; + 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +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 = ""; }; - 35F9300C06A94340BEB8B2C9 /* 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 = ""; }; - 6461F4E8D7A226CC9AB38911 /* 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 = ""; }; + 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 7CCA70E6AEF647871EBAC5E8 /* 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 = ""; }; - 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E255CA9EDBC16F47477B65A2 /* 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 = ""; }; + 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1C15E3B743C43E964486CF70 /* Pods_RunnerTests.framework in Frameworks */, + ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DB0A09FB6FC66DFC8255ABD6 /* Pods_Runner.framework in Frameworks */, + 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 97176DD67713B03AB4CD1E40 /* Pods */, + 779340C43E8641722E4AC30F /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 97176DD67713B03AB4CD1E40 /* Pods */ = { + 779340C43E8641722E4AC30F /* Pods */ = { isa = PBXGroup; children = ( - 6461F4E8D7A226CC9AB38911 /* Pods-Runner.debug.xcconfig */, - 2BC666739A96A03EC0CEAF4D /* Pods-Runner.release.xcconfig */, - E255CA9EDBC16F47477B65A2 /* Pods-Runner.profile.xcconfig */, - 35F9300C06A94340BEB8B2C9 /* Pods-RunnerTests.debug.xcconfig */, - 7CCA70E6AEF647871EBAC5E8 /* Pods-RunnerTests.release.xcconfig */, - 0F16903B3BA7392E6B748F7C /* Pods-RunnerTests.profile.xcconfig */, + 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; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */, - 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */, + 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */, + D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 02AF1E8587654528A56A4744 /* [CP] Check Pods Manifest.lock */, + 058D4328BC92A9DE474B0A71 /* [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 = ( - 920BD6477480BA97B4D9D8D2 /* [CP] Check Pods Manifest.lock */, + 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 482F6FF3A36F50C2ABFCCD13 /* [CP] Embed Pods Frameworks */, + 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,7 +323,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 02AF1E8587654528A56A4744 /* [CP] Check Pods Manifest.lock */ = { + 058D4328BC92A9DE474B0A71 /* [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"; }; - 482F6FF3A36F50C2ABFCCD13 /* [CP] Embed Pods Frameworks */ = { + 4221B0A5FAAB355BB0C573AE /* [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; }; - 920BD6477480BA97B4D9D8D2 /* [CP] Check Pods Manifest.lock */ = { + 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,12 +473,11 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 35F9300C06A94340BEB8B2C9 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -489,12 +488,11 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7CCA70E6AEF647871EBAC5E8 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +503,11 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0F16903B3BA7392E6B748F7C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -560,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -582,7 +579,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -592,7 +588,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile; @@ -644,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -716,7 +711,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -737,7 +731,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -747,7 +740,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -756,7 +748,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/firebase-get-to-know-flutter/step_05/pubspec.yaml b/firebase-get-to-know-flutter/step_05/pubspec.yaml index c31c1eeaaf..b705ff632f 100644 --- a/firebase-get-to-know-flutter/step_05/pubspec.yaml +++ b/firebase-get-to-know-flutter/step_05/pubspec.yaml @@ -20,7 +20,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -36,12 +36,12 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 google_fonts: ^6.3.0 - go_router: ^15.1.2 - cloud_firestore: ^5.6.7 - firebase_auth: ^5.5.3 - firebase_core: ^3.13.0 + go_router: ^16.1.0 + cloud_firestore: ^6.0.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 provider: ^6.1.5 - firebase_ui_auth: ^1.16.1 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: @@ -52,7 +52,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/firebase-get-to-know-flutter/step_06/.gemini/settings.json b/firebase-get-to-know-flutter/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-get-to-know-flutter/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-get-to-know-flutter/step_06/.gitignore b/firebase-get-to-know-flutter/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-get-to-know-flutter/step_06/.gitignore +++ b/firebase-get-to-know-flutter/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-get-to-know-flutter/step_06/android/app/build.gradle.kts b/firebase-get-to-know-flutter/step_06/android/app/build.gradle.kts index 3e28d8bd44..520f06831d 100644 --- a/firebase-get-to-know-flutter/step_06/android/app/build.gradle.kts +++ b/firebase-get-to-know-flutter/step_06/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.gtk_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-get-to-know-flutter/step_06/android/build.gradle.kts b/firebase-get-to-know-flutter/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-get-to-know-flutter/step_06/android/build.gradle.kts +++ b/firebase-get-to-know-flutter/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-get-to-know-flutter/step_06/android/settings.gradle.kts b/firebase-get-to-know-flutter/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-get-to-know-flutter/step_06/android/settings.gradle.kts +++ b/firebase-get-to-know-flutter/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-get-to-know-flutter/step_06/ios/Flutter/AppFrameworkInfo.plist b/firebase-get-to-know-flutter/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-get-to-know-flutter/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-get-to-know-flutter/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-get-to-know-flutter/step_06/ios/Podfile b/firebase-get-to-know-flutter/step_06/ios/Podfile index 2dbf7d728d..6649374d4c 100644 --- a/firebase-get-to-know-flutter/step_06/ios/Podfile +++ b/firebase-get-to-know-flutter/step_06/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '13.0' +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' 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 e94f2f3d23..1c8af2a288 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,7 +7,7 @@ objects = { /* Begin PBXBuildFile section */ - 06C9C59E16D9F4F4D3C492FF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */; }; + 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; @@ -15,7 +15,7 @@ 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 */; }; - AB3E80FD157D670C0CE70D1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */; }; + 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,17 +44,15 @@ /* 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 = ""; }; - 16FDE7B45714EB48C7696998 /* 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 = ""; }; - 31F5BBAA79FBCAED757BF27D /* 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 = ""; }; + 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4471A0577823020627C563F6 /* 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 = ""; }; - 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 9192EBA0BABB9494623B2536 /* 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; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,17 +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 = ""; }; - A386D17B3AEE391BA261EBA1 /* 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 = ""; }; - C177F27E68A657877BE2733E /* 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 = ""; }; - F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 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; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 801798857E03A0958BA40702 /* Frameworks */ = { + 896D3A1B7C4F5545470D30A4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AB3E80FD157D670C0CE70D1C /* Pods_RunnerTests.framework in Frameworks */, + 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 06C9C59E16D9F4F4D3C492FF /* Pods_Runner.framework in Frameworks */, + 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 79EEF8D08A8312EF51875428 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */, + F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - C2C9D7E652A1BAC45F3B4C2E /* Pods */, - ADDF25D99BD2F81F64E9351B /* Frameworks */, + C7145ABD4CE8720655CB1CDE /* Pods */, + 79EEF8D08A8312EF51875428 /* Frameworks */, ); sourceTree = ""; }; @@ -142,24 +151,15 @@ path = Runner; sourceTree = ""; }; - ADDF25D99BD2F81F64E9351B /* Frameworks */ = { + C7145ABD4CE8720655CB1CDE /* Pods */ = { isa = PBXGroup; children = ( - 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */, - F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - C2C9D7E652A1BAC45F3B4C2E /* Pods */ = { - isa = PBXGroup; - children = ( - 9192EBA0BABB9494623B2536 /* Pods-Runner.debug.xcconfig */, - C177F27E68A657877BE2733E /* Pods-Runner.release.xcconfig */, - 16FDE7B45714EB48C7696998 /* Pods-Runner.profile.xcconfig */, - 4471A0577823020627C563F6 /* Pods-RunnerTests.debug.xcconfig */, - 31F5BBAA79FBCAED757BF27D /* Pods-RunnerTests.release.xcconfig */, - A386D17B3AEE391BA261EBA1 /* Pods-RunnerTests.profile.xcconfig */, + 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 */, ); name = Pods; path = Pods; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5A31DB3B3DD013F047FC06A6 /* [CP] Check Pods Manifest.lock */, + 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 801798857E03A0958BA40702 /* Frameworks */, + 896D3A1B7C4F5545470D30A4 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 6AB59EFDBC4596891A52A553 /* [CP] Check Pods Manifest.lock */, + 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - F89FCE12DFF266023D0BD15A /* [CP] Embed Pods Frameworks */, + 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,6 +270,28 @@ /* 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; @@ -286,29 +308,24 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 5A31DB3B3DD013F047FC06A6 /* [CP] Check Pods Manifest.lock */ = { + 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 6AB59EFDBC4596891A52A553 /* [CP] Check Pods Manifest.lock */ = { + 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -323,7 +340,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -345,23 +362,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - F89FCE12DFF266023D0BD15A /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,7 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -488,13 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4471A0577823020627C563F6 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -507,13 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31F5BBAA79FBCAED757BF27D /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -524,13 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A386D17B3AEE391BA261EBA1 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -588,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -659,7 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -682,7 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-get-to-know-flutter/step_06/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-get-to-know-flutter/step_06/macos/Flutter/GeneratedPluginRegistrant.swift index 2237937c23..ccbc3595df 100644 --- a/firebase-get-to-know-flutter/step_06/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-get-to-know-flutter/step_06/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,7 @@ import FlutterMacOS import Foundation +import app_links import cloud_firestore import desktop_webview_auth import firebase_auth @@ -12,6 +13,7 @@ import firebase_core import path_provider_foundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) 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 97a96bdb96..59937692e7 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 @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 1C15E3B743C43E964486CF70 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - DB0A09FB6FC66DFC8255ABD6 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */; }; + 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 */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0F16903B3BA7392E6B748F7C /* 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 = ""; }; - 2BC666739A96A03EC0CEAF4D /* 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 = ""; }; + 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +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 = ""; }; - 35F9300C06A94340BEB8B2C9 /* 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 = ""; }; - 6461F4E8D7A226CC9AB38911 /* 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 = ""; }; + 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 7CCA70E6AEF647871EBAC5E8 /* 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 = ""; }; - 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E255CA9EDBC16F47477B65A2 /* 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 = ""; }; + 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1C15E3B743C43E964486CF70 /* Pods_RunnerTests.framework in Frameworks */, + ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DB0A09FB6FC66DFC8255ABD6 /* Pods_Runner.framework in Frameworks */, + 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 97176DD67713B03AB4CD1E40 /* Pods */, + 779340C43E8641722E4AC30F /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 97176DD67713B03AB4CD1E40 /* Pods */ = { + 779340C43E8641722E4AC30F /* Pods */ = { isa = PBXGroup; children = ( - 6461F4E8D7A226CC9AB38911 /* Pods-Runner.debug.xcconfig */, - 2BC666739A96A03EC0CEAF4D /* Pods-Runner.release.xcconfig */, - E255CA9EDBC16F47477B65A2 /* Pods-Runner.profile.xcconfig */, - 35F9300C06A94340BEB8B2C9 /* Pods-RunnerTests.debug.xcconfig */, - 7CCA70E6AEF647871EBAC5E8 /* Pods-RunnerTests.release.xcconfig */, - 0F16903B3BA7392E6B748F7C /* Pods-RunnerTests.profile.xcconfig */, + 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; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */, - 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */, + 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */, + D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 02AF1E8587654528A56A4744 /* [CP] Check Pods Manifest.lock */, + 058D4328BC92A9DE474B0A71 /* [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 = ( - 920BD6477480BA97B4D9D8D2 /* [CP] Check Pods Manifest.lock */, + 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 482F6FF3A36F50C2ABFCCD13 /* [CP] Embed Pods Frameworks */, + 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,7 +323,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 02AF1E8587654528A56A4744 /* [CP] Check Pods Manifest.lock */ = { + 058D4328BC92A9DE474B0A71 /* [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"; }; - 482F6FF3A36F50C2ABFCCD13 /* [CP] Embed Pods Frameworks */ = { + 4221B0A5FAAB355BB0C573AE /* [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; }; - 920BD6477480BA97B4D9D8D2 /* [CP] Check Pods Manifest.lock */ = { + 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,12 +473,11 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 35F9300C06A94340BEB8B2C9 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -489,12 +488,11 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7CCA70E6AEF647871EBAC5E8 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +503,11 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0F16903B3BA7392E6B748F7C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -560,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -582,7 +579,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -592,7 +588,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile; @@ -644,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -716,7 +711,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -737,7 +731,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -747,7 +740,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -756,7 +748,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/firebase-get-to-know-flutter/step_06/pubspec.yaml b/firebase-get-to-know-flutter/step_06/pubspec.yaml index c31c1eeaaf..b705ff632f 100644 --- a/firebase-get-to-know-flutter/step_06/pubspec.yaml +++ b/firebase-get-to-know-flutter/step_06/pubspec.yaml @@ -20,7 +20,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -36,12 +36,12 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 google_fonts: ^6.3.0 - go_router: ^15.1.2 - cloud_firestore: ^5.6.7 - firebase_auth: ^5.5.3 - firebase_core: ^3.13.0 + go_router: ^16.1.0 + cloud_firestore: ^6.0.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 provider: ^6.1.5 - firebase_ui_auth: ^1.16.1 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: @@ -52,7 +52,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/firebase-get-to-know-flutter/step_07/.gemini/settings.json b/firebase-get-to-know-flutter/step_07/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-get-to-know-flutter/step_07/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-get-to-know-flutter/step_07/.gitignore b/firebase-get-to-know-flutter/step_07/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-get-to-know-flutter/step_07/.gitignore +++ b/firebase-get-to-know-flutter/step_07/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-get-to-know-flutter/step_07/android/app/build.gradle.kts b/firebase-get-to-know-flutter/step_07/android/app/build.gradle.kts index 3e28d8bd44..520f06831d 100644 --- a/firebase-get-to-know-flutter/step_07/android/app/build.gradle.kts +++ b/firebase-get-to-know-flutter/step_07/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.gtk_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-get-to-know-flutter/step_07/android/build.gradle.kts b/firebase-get-to-know-flutter/step_07/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-get-to-know-flutter/step_07/android/build.gradle.kts +++ b/firebase-get-to-know-flutter/step_07/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-get-to-know-flutter/step_07/android/settings.gradle.kts b/firebase-get-to-know-flutter/step_07/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-get-to-know-flutter/step_07/android/settings.gradle.kts +++ b/firebase-get-to-know-flutter/step_07/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-get-to-know-flutter/step_07/ios/Flutter/AppFrameworkInfo.plist b/firebase-get-to-know-flutter/step_07/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-get-to-know-flutter/step_07/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-get-to-know-flutter/step_07/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-get-to-know-flutter/step_07/ios/Podfile b/firebase-get-to-know-flutter/step_07/ios/Podfile index 2dbf7d728d..6649374d4c 100644 --- a/firebase-get-to-know-flutter/step_07/ios/Podfile +++ b/firebase-get-to-know-flutter/step_07/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '13.0' +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' 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 e94f2f3d23..1c8af2a288 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,7 +7,7 @@ objects = { /* Begin PBXBuildFile section */ - 06C9C59E16D9F4F4D3C492FF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */; }; + 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; @@ -15,7 +15,7 @@ 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 */; }; - AB3E80FD157D670C0CE70D1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */; }; + 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,17 +44,15 @@ /* 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 = ""; }; - 16FDE7B45714EB48C7696998 /* 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 = ""; }; - 31F5BBAA79FBCAED757BF27D /* 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 = ""; }; + 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4471A0577823020627C563F6 /* 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 = ""; }; - 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 9192EBA0BABB9494623B2536 /* 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; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,17 +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 = ""; }; - A386D17B3AEE391BA261EBA1 /* 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 = ""; }; - C177F27E68A657877BE2733E /* 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 = ""; }; - F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 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; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 801798857E03A0958BA40702 /* Frameworks */ = { + 896D3A1B7C4F5545470D30A4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AB3E80FD157D670C0CE70D1C /* Pods_RunnerTests.framework in Frameworks */, + 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 06C9C59E16D9F4F4D3C492FF /* Pods_Runner.framework in Frameworks */, + 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 79EEF8D08A8312EF51875428 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */, + F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - C2C9D7E652A1BAC45F3B4C2E /* Pods */, - ADDF25D99BD2F81F64E9351B /* Frameworks */, + C7145ABD4CE8720655CB1CDE /* Pods */, + 79EEF8D08A8312EF51875428 /* Frameworks */, ); sourceTree = ""; }; @@ -142,24 +151,15 @@ path = Runner; sourceTree = ""; }; - ADDF25D99BD2F81F64E9351B /* Frameworks */ = { + C7145ABD4CE8720655CB1CDE /* Pods */ = { isa = PBXGroup; children = ( - 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */, - F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - C2C9D7E652A1BAC45F3B4C2E /* Pods */ = { - isa = PBXGroup; - children = ( - 9192EBA0BABB9494623B2536 /* Pods-Runner.debug.xcconfig */, - C177F27E68A657877BE2733E /* Pods-Runner.release.xcconfig */, - 16FDE7B45714EB48C7696998 /* Pods-Runner.profile.xcconfig */, - 4471A0577823020627C563F6 /* Pods-RunnerTests.debug.xcconfig */, - 31F5BBAA79FBCAED757BF27D /* Pods-RunnerTests.release.xcconfig */, - A386D17B3AEE391BA261EBA1 /* Pods-RunnerTests.profile.xcconfig */, + 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 */, ); name = Pods; path = Pods; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5A31DB3B3DD013F047FC06A6 /* [CP] Check Pods Manifest.lock */, + 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 801798857E03A0958BA40702 /* Frameworks */, + 896D3A1B7C4F5545470D30A4 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 6AB59EFDBC4596891A52A553 /* [CP] Check Pods Manifest.lock */, + 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - F89FCE12DFF266023D0BD15A /* [CP] Embed Pods Frameworks */, + 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,6 +270,28 @@ /* 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; @@ -286,29 +308,24 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 5A31DB3B3DD013F047FC06A6 /* [CP] Check Pods Manifest.lock */ = { + 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 6AB59EFDBC4596891A52A553 /* [CP] Check Pods Manifest.lock */ = { + 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -323,7 +340,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -345,23 +362,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - F89FCE12DFF266023D0BD15A /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,7 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -488,13 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4471A0577823020627C563F6 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -507,13 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31F5BBAA79FBCAED757BF27D /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -524,13 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A386D17B3AEE391BA261EBA1 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -588,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -659,7 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -682,7 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-get-to-know-flutter/step_07/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-get-to-know-flutter/step_07/macos/Flutter/GeneratedPluginRegistrant.swift index 2237937c23..ccbc3595df 100644 --- a/firebase-get-to-know-flutter/step_07/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-get-to-know-flutter/step_07/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,7 @@ import FlutterMacOS import Foundation +import app_links import cloud_firestore import desktop_webview_auth import firebase_auth @@ -12,6 +13,7 @@ import firebase_core import path_provider_foundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) 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 97a96bdb96..59937692e7 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 @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 1C15E3B743C43E964486CF70 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - DB0A09FB6FC66DFC8255ABD6 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */; }; + 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 */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0F16903B3BA7392E6B748F7C /* 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 = ""; }; - 2BC666739A96A03EC0CEAF4D /* 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 = ""; }; + 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +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 = ""; }; - 35F9300C06A94340BEB8B2C9 /* 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 = ""; }; - 6461F4E8D7A226CC9AB38911 /* 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 = ""; }; + 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 7CCA70E6AEF647871EBAC5E8 /* 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 = ""; }; - 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E255CA9EDBC16F47477B65A2 /* 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 = ""; }; + 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1C15E3B743C43E964486CF70 /* Pods_RunnerTests.framework in Frameworks */, + ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DB0A09FB6FC66DFC8255ABD6 /* Pods_Runner.framework in Frameworks */, + 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 97176DD67713B03AB4CD1E40 /* Pods */, + 779340C43E8641722E4AC30F /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 97176DD67713B03AB4CD1E40 /* Pods */ = { + 779340C43E8641722E4AC30F /* Pods */ = { isa = PBXGroup; children = ( - 6461F4E8D7A226CC9AB38911 /* Pods-Runner.debug.xcconfig */, - 2BC666739A96A03EC0CEAF4D /* Pods-Runner.release.xcconfig */, - E255CA9EDBC16F47477B65A2 /* Pods-Runner.profile.xcconfig */, - 35F9300C06A94340BEB8B2C9 /* Pods-RunnerTests.debug.xcconfig */, - 7CCA70E6AEF647871EBAC5E8 /* Pods-RunnerTests.release.xcconfig */, - 0F16903B3BA7392E6B748F7C /* Pods-RunnerTests.profile.xcconfig */, + 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; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */, - 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */, + 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */, + D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 02AF1E8587654528A56A4744 /* [CP] Check Pods Manifest.lock */, + 058D4328BC92A9DE474B0A71 /* [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 = ( - 920BD6477480BA97B4D9D8D2 /* [CP] Check Pods Manifest.lock */, + 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 482F6FF3A36F50C2ABFCCD13 /* [CP] Embed Pods Frameworks */, + 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,7 +323,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 02AF1E8587654528A56A4744 /* [CP] Check Pods Manifest.lock */ = { + 058D4328BC92A9DE474B0A71 /* [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"; }; - 482F6FF3A36F50C2ABFCCD13 /* [CP] Embed Pods Frameworks */ = { + 4221B0A5FAAB355BB0C573AE /* [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; }; - 920BD6477480BA97B4D9D8D2 /* [CP] Check Pods Manifest.lock */ = { + 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,12 +473,11 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 35F9300C06A94340BEB8B2C9 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -489,12 +488,11 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7CCA70E6AEF647871EBAC5E8 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +503,11 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0F16903B3BA7392E6B748F7C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -560,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -582,7 +579,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -592,7 +588,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile; @@ -644,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -716,7 +711,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -737,7 +731,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -747,7 +740,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -756,7 +748,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/firebase-get-to-know-flutter/step_07/pubspec.yaml b/firebase-get-to-know-flutter/step_07/pubspec.yaml index c31c1eeaaf..b705ff632f 100644 --- a/firebase-get-to-know-flutter/step_07/pubspec.yaml +++ b/firebase-get-to-know-flutter/step_07/pubspec.yaml @@ -20,7 +20,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -36,12 +36,12 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 google_fonts: ^6.3.0 - go_router: ^15.1.2 - cloud_firestore: ^5.6.7 - firebase_auth: ^5.5.3 - firebase_core: ^3.13.0 + go_router: ^16.1.0 + cloud_firestore: ^6.0.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 provider: ^6.1.5 - firebase_ui_auth: ^1.16.1 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: @@ -52,7 +52,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/firebase-get-to-know-flutter/step_09/.gemini/settings.json b/firebase-get-to-know-flutter/step_09/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/firebase-get-to-know-flutter/step_09/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/firebase-get-to-know-flutter/step_09/.gitignore b/firebase-get-to-know-flutter/step_09/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/firebase-get-to-know-flutter/step_09/.gitignore +++ b/firebase-get-to-know-flutter/step_09/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/firebase-get-to-know-flutter/step_09/android/app/build.gradle.kts b/firebase-get-to-know-flutter/step_09/android/app/build.gradle.kts index 3e28d8bd44..520f06831d 100644 --- a/firebase-get-to-know-flutter/step_09/android/app/build.gradle.kts +++ b/firebase-get-to-know-flutter/step_09/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.gtk_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 23 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/firebase-get-to-know-flutter/step_09/android/build.gradle.kts b/firebase-get-to-know-flutter/step_09/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/firebase-get-to-know-flutter/step_09/android/build.gradle.kts +++ b/firebase-get-to-know-flutter/step_09/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/firebase-get-to-know-flutter/step_09/android/settings.gradle.kts b/firebase-get-to-know-flutter/step_09/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/firebase-get-to-know-flutter/step_09/android/settings.gradle.kts +++ b/firebase-get-to-know-flutter/step_09/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/firebase-get-to-know-flutter/step_09/ios/Flutter/AppFrameworkInfo.plist b/firebase-get-to-know-flutter/step_09/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/firebase-get-to-know-flutter/step_09/ios/Flutter/AppFrameworkInfo.plist +++ b/firebase-get-to-know-flutter/step_09/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/firebase-get-to-know-flutter/step_09/ios/Podfile b/firebase-get-to-know-flutter/step_09/ios/Podfile index 2dbf7d728d..6649374d4c 100644 --- a/firebase-get-to-know-flutter/step_09/ios/Podfile +++ b/firebase-get-to-know-flutter/step_09/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '13.0' +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' 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 e94f2f3d23..1c8af2a288 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,7 +7,7 @@ objects = { /* Begin PBXBuildFile section */ - 06C9C59E16D9F4F4D3C492FF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */; }; + 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; @@ -15,7 +15,7 @@ 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 */; }; - AB3E80FD157D670C0CE70D1C /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */; }; + 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -44,17 +44,15 @@ /* 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 = ""; }; - 16FDE7B45714EB48C7696998 /* 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 = ""; }; - 31F5BBAA79FBCAED757BF27D /* 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 = ""; }; + 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4471A0577823020627C563F6 /* 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 = ""; }; - 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 9192EBA0BABB9494623B2536 /* 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; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,17 +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 = ""; }; - A386D17B3AEE391BA261EBA1 /* 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 = ""; }; - C177F27E68A657877BE2733E /* 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 = ""; }; - F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 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; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 801798857E03A0958BA40702 /* Frameworks */ = { + 896D3A1B7C4F5545470D30A4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AB3E80FD157D670C0CE70D1C /* Pods_RunnerTests.framework in Frameworks */, + 0CF036B29D5AC70C93C54E27 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 06C9C59E16D9F4F4D3C492FF /* Pods_Runner.framework in Frameworks */, + 9FF0CBB386805A0E7FCC98BF /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,6 +95,15 @@ path = RunnerTests; sourceTree = ""; }; + 79EEF8D08A8312EF51875428 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5511FAB2C45F67D11CA09392 /* Pods_Runner.framework */, + F078D94A33C227445A9EB014 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -113,8 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - C2C9D7E652A1BAC45F3B4C2E /* Pods */, - ADDF25D99BD2F81F64E9351B /* Frameworks */, + C7145ABD4CE8720655CB1CDE /* Pods */, + 79EEF8D08A8312EF51875428 /* Frameworks */, ); sourceTree = ""; }; @@ -142,24 +151,15 @@ path = Runner; sourceTree = ""; }; - ADDF25D99BD2F81F64E9351B /* Frameworks */ = { + C7145ABD4CE8720655CB1CDE /* Pods */ = { isa = PBXGroup; children = ( - 655A3F83C3E09E800EC78268 /* Pods_Runner.framework */, - F89C642817A15787C42090F3 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - C2C9D7E652A1BAC45F3B4C2E /* Pods */ = { - isa = PBXGroup; - children = ( - 9192EBA0BABB9494623B2536 /* Pods-Runner.debug.xcconfig */, - C177F27E68A657877BE2733E /* Pods-Runner.release.xcconfig */, - 16FDE7B45714EB48C7696998 /* Pods-Runner.profile.xcconfig */, - 4471A0577823020627C563F6 /* Pods-RunnerTests.debug.xcconfig */, - 31F5BBAA79FBCAED757BF27D /* Pods-RunnerTests.release.xcconfig */, - A386D17B3AEE391BA261EBA1 /* Pods-RunnerTests.profile.xcconfig */, + 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 */, ); name = Pods; path = Pods; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5A31DB3B3DD013F047FC06A6 /* [CP] Check Pods Manifest.lock */, + 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 801798857E03A0958BA40702 /* Frameworks */, + 896D3A1B7C4F5545470D30A4 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 6AB59EFDBC4596891A52A553 /* [CP] Check Pods Manifest.lock */, + 0F792B91B55773B232277DF6 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - F89FCE12DFF266023D0BD15A /* [CP] Embed Pods Frameworks */, + 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,6 +270,28 @@ /* 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; @@ -286,29 +308,24 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 5A31DB3B3DD013F047FC06A6 /* [CP] Check Pods Manifest.lock */ = { + 740B81CB267B965049A661FC /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 6AB59EFDBC4596891A52A553 /* [CP] Check Pods Manifest.lock */ = { + 7EB4D075897A4C16A437E967 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -323,7 +340,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -345,23 +362,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - F89FCE12DFF266023D0BD15A /* [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 */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,7 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -488,13 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4471A0577823020627C563F6 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 187DCE1ACEBD31C9823CB6A6 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -507,13 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31F5BBAA79FBCAED757BF27D /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C98021A56EF619F7E33BB392 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -524,13 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A386D17B3AEE391BA261EBA1 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = C5B367FF45FE1CDA974096EB /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -588,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -659,7 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -682,7 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/firebase-get-to-know-flutter/step_09/macos/Flutter/GeneratedPluginRegistrant.swift b/firebase-get-to-know-flutter/step_09/macos/Flutter/GeneratedPluginRegistrant.swift index 2237937c23..ccbc3595df 100644 --- a/firebase-get-to-know-flutter/step_09/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/firebase-get-to-know-flutter/step_09/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,7 @@ import FlutterMacOS import Foundation +import app_links import cloud_firestore import desktop_webview_auth import firebase_auth @@ -12,6 +13,7 @@ import firebase_core import path_provider_foundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) FLTFirebaseFirestorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseFirestorePlugin")) DesktopWebviewAuthPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewAuthPlugin")) FLTFirebaseAuthPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAuthPlugin")) 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 97a96bdb96..59937692e7 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 @@ -21,14 +21,14 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 1C15E3B743C43E964486CF70 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */; }; 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 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 */; }; - DB0A09FB6FC66DFC8255ABD6 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */; }; + 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 */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0F16903B3BA7392E6B748F7C /* 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 = ""; }; - 2BC666739A96A03EC0CEAF4D /* 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 = ""; }; + 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; @@ -80,14 +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 = ""; }; - 35F9300C06A94340BEB8B2C9 /* 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 = ""; }; - 6461F4E8D7A226CC9AB38911 /* 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 = ""; }; + 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 7CCA70E6AEF647871EBAC5E8 /* 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 = ""; }; - 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E255CA9EDBC16F47477B65A2 /* 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 = ""; }; + 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1C15E3B743C43E964486CF70 /* Pods_RunnerTests.framework in Frameworks */, + ADAB078BB2987E1CB0B088E0 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DB0A09FB6FC66DFC8255ABD6 /* Pods_Runner.framework in Frameworks */, + 6979A9CE063662D276C35D95 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 97176DD67713B03AB4CD1E40 /* Pods */, + 779340C43E8641722E4AC30F /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 97176DD67713B03AB4CD1E40 /* Pods */ = { + 779340C43E8641722E4AC30F /* Pods */ = { isa = PBXGroup; children = ( - 6461F4E8D7A226CC9AB38911 /* Pods-Runner.debug.xcconfig */, - 2BC666739A96A03EC0CEAF4D /* Pods-Runner.release.xcconfig */, - E255CA9EDBC16F47477B65A2 /* Pods-Runner.profile.xcconfig */, - 35F9300C06A94340BEB8B2C9 /* Pods-RunnerTests.debug.xcconfig */, - 7CCA70E6AEF647871EBAC5E8 /* Pods-RunnerTests.release.xcconfig */, - 0F16903B3BA7392E6B748F7C /* Pods-RunnerTests.profile.xcconfig */, + 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; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - BF21030F3CBAF9ED7F0EFF77 /* Pods_Runner.framework */, - 801B3D418782B201A9718F3D /* Pods_RunnerTests.framework */, + 2AFAE681DF7A9639C81D64C7 /* Pods_Runner.framework */, + D97F3F01C0548AA9E5AA42E2 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 02AF1E8587654528A56A4744 /* [CP] Check Pods Manifest.lock */, + 058D4328BC92A9DE474B0A71 /* [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 = ( - 920BD6477480BA97B4D9D8D2 /* [CP] Check Pods Manifest.lock */, + 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 482F6FF3A36F50C2ABFCCD13 /* [CP] Embed Pods Frameworks */, + 4221B0A5FAAB355BB0C573AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,7 +323,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 02AF1E8587654528A56A4744 /* [CP] Check Pods Manifest.lock */ = { + 058D4328BC92A9DE474B0A71 /* [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"; }; - 482F6FF3A36F50C2ABFCCD13 /* [CP] Embed Pods Frameworks */ = { + 4221B0A5FAAB355BB0C573AE /* [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; }; - 920BD6477480BA97B4D9D8D2 /* [CP] Check Pods Manifest.lock */ = { + 954AB1000F001BAB8567EF55 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,12 +473,11 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 35F9300C06A94340BEB8B2C9 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = EC8F7552AEB7F8AB94568A44 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -489,12 +488,11 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7CCA70E6AEF647871EBAC5E8 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = D0FB50CFFCD23BA017C60271 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +503,11 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0F16903B3BA7392E6B748F7C /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = D45E580D4E859208E0682237 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.gtkFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -560,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -582,7 +579,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -592,7 +588,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Profile; @@ -644,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -694,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -716,7 +711,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -737,7 +731,6 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.15; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -747,7 +740,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Manual; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -756,7 +748,6 @@ isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; - MACOSX_DEPLOYMENT_TARGET = 10.15; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/firebase-get-to-know-flutter/step_09/pubspec.yaml b/firebase-get-to-know-flutter/step_09/pubspec.yaml index c31c1eeaaf..b705ff632f 100644 --- a/firebase-get-to-know-flutter/step_09/pubspec.yaml +++ b/firebase-get-to-know-flutter/step_09/pubspec.yaml @@ -20,7 +20,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -36,12 +36,12 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 google_fonts: ^6.3.0 - go_router: ^15.1.2 - cloud_firestore: ^5.6.7 - firebase_auth: ^5.5.3 - firebase_core: ^3.13.0 + go_router: ^16.1.0 + cloud_firestore: ^6.0.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 provider: ^6.1.5 - firebase_ui_auth: ^1.16.1 + firebase_ui_auth: ^3.0.0 dev_dependencies: flutter_test: @@ -52,7 +52,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/flutter_ci_script_beta.sh b/flutter_ci_script_beta.sh index 4d02cfe60e..cbc8f1e520 100755 --- a/flutter_ci_script_beta.sh +++ b/flutter_ci_script_beta.sh @@ -6,13 +6,11 @@ DIR="${BASH_SOURCE%/*}" source "$DIR/flutter_ci_script_shared.sh" declare -a CODELABS=( - # TODO(DomesticMouse): The argument type 'BottomAppBarTheme' can't be assigned to the parameter type 'BottomAppBarThemeData?'. - # "adaptive_app" + "adaptive_app" "animated-responsive-layout" "animations" "audio_soloud" - # TODO(DomesticMouse): The argument type 'BottomAppBarTheme' can't be assigned to the parameter type 'BottomAppBarThemeData?'. - # "boring_to_beautiful" + "boring_to_beautiful" "brick_breaker" "colorist" "dart-patterns-and-records" @@ -35,8 +33,7 @@ declare -a CODELABS=( "testing_codelab" "tfagents-flutter" "tfrs-flutter" - # TODO(DomesticMouse): 'groupValue' is deprecated and shouldn't be used. - # "tfserving-flutter" + "tfserving-flutter" "tooling" "webview_flutter" ) diff --git a/flutter_ci_script_master.sh b/flutter_ci_script_master.sh index 76937f3021..003b874234 100755 --- a/flutter_ci_script_master.sh +++ b/flutter_ci_script_master.sh @@ -6,13 +6,13 @@ DIR="${BASH_SOURCE%/*}" source "$DIR/flutter_ci_script_shared.sh" declare -a CODELABS=( - # TODO(DomesticMouse): The argument type 'BottomAppBarTheme' can't be assigned to the parameter type 'BottomAppBarThemeData?'. + # TODO(DomesticMouse): Re-introduce once `flex_color_scheme` is updated for Flutter 3.33 + # Tracking bug: https://github.com/rydmike/flex_color_scheme/issues/283 # "adaptive_app" "animated-responsive-layout" "animations" "audio_soloud" - # TODO(DomesticMouse): The argument type 'BottomAppBarTheme' can't be assigned to the parameter type 'BottomAppBarThemeData?'. - # "boring_to_beautiful" + "boring_to_beautiful" "brick_breaker" "colorist" "dart-patterns-and-records" @@ -34,8 +34,7 @@ declare -a CODELABS=( "testing_codelab" "tfagents-flutter" "tfrs-flutter" - # TODO(DomesticMouse): 'groupValue' is deprecated and shouldn't be used. - # "tfserving-flutter" + "tfserving-flutter" "tooling" "webview_flutter" ) diff --git a/forge2d_game/codelab_rebuild.yaml b/forge2d_game/codelab_rebuild.yaml index 75475100f6..062dc45634 100644 --- a/forge2d_game/codelab_rebuild.yaml +++ b/forge2d_game/codelab_rebuild.yaml @@ -21,6 +21,21 @@ steps: prefer_const_constructors: false - name: Remove README rm: forge2d_game/README.md + - name: Add .gemini directory + mkdir: forge2d_game/.gemini + - name: Add .gemini/settings.json + path: forge2d_game/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add .vscode directory mkdir: forge2d_game/.vscode - name: Add .vscode/launch.json diff --git a/forge2d_game/step_02/.gemini/settings.json b/forge2d_game/step_02/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/forge2d_game/step_02/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/forge2d_game/step_02/.gitignore b/forge2d_game/step_02/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/forge2d_game/step_02/.gitignore +++ b/forge2d_game/step_02/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/forge2d_game/step_02/android/build.gradle.kts b/forge2d_game/step_02/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/forge2d_game/step_02/android/build.gradle.kts +++ b/forge2d_game/step_02/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/forge2d_game/step_02/android/settings.gradle.kts b/forge2d_game/step_02/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/forge2d_game/step_02/android/settings.gradle.kts +++ b/forge2d_game/step_02/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/forge2d_game/step_02/ios/Flutter/AppFrameworkInfo.plist b/forge2d_game/step_02/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/forge2d_game/step_02/ios/Flutter/AppFrameworkInfo.plist +++ b/forge2d_game/step_02/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/forge2d_game/step_02/ios/Runner.xcodeproj/project.pbxproj b/forge2d_game/step_02/ios/Runner.xcodeproj/project.pbxproj index 7838587c16..e964754b27 100644 --- a/forge2d_game/step_02/ios/Runner.xcodeproj/project.pbxproj +++ b/forge2d_game/step_02/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/forge2d_game/step_02/linux/runner/my_application.cc b/forge2d_game/step_02/linux/runner/my_application.cc index 9a172938c7..d4fdc67de1 100644 --- a/forge2d_game/step_02/linux/runner/my_application.cc +++ b/forge2d_game/step_02/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/forge2d_game/step_02/macos/Runner.xcodeproj/project.pbxproj b/forge2d_game/step_02/macos/Runner.xcodeproj/project.pbxproj index 365d8874b7..8c043b4a50 100644 --- a/forge2d_game/step_02/macos/Runner.xcodeproj/project.pbxproj +++ b/forge2d_game/step_02/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/forge2d_game/step_02/pubspec.yaml b/forge2d_game/step_02/pubspec.yaml index fb2b6518f2..a550e07a11 100644 --- a/forge2d_game/step_02/pubspec.yaml +++ b/forge2d_game/step_02/pubspec.yaml @@ -4,15 +4,15 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter characters: ^1.4.0 - flame: ^1.28.1 - flame_forge2d: ^0.19.0+1 - flame_kenney_xml: ^0.1.1+11 + flame: ^1.30.1 + flame_forge2d: ^0.19.0+4 + flame_kenney_xml: ^0.1.1+14 xml: ^6.5.0 dev_dependencies: diff --git a/forge2d_game/step_03/.gemini/settings.json b/forge2d_game/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/forge2d_game/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/forge2d_game/step_03/.gitignore b/forge2d_game/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/forge2d_game/step_03/.gitignore +++ b/forge2d_game/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/forge2d_game/step_03/android/build.gradle.kts b/forge2d_game/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/forge2d_game/step_03/android/build.gradle.kts +++ b/forge2d_game/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/forge2d_game/step_03/android/settings.gradle.kts b/forge2d_game/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/forge2d_game/step_03/android/settings.gradle.kts +++ b/forge2d_game/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/forge2d_game/step_03/ios/Flutter/AppFrameworkInfo.plist b/forge2d_game/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/forge2d_game/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/forge2d_game/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/forge2d_game/step_03/ios/Runner.xcodeproj/project.pbxproj b/forge2d_game/step_03/ios/Runner.xcodeproj/project.pbxproj index 7838587c16..e964754b27 100644 --- a/forge2d_game/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/forge2d_game/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/forge2d_game/step_03/linux/runner/my_application.cc b/forge2d_game/step_03/linux/runner/my_application.cc index 9a172938c7..d4fdc67de1 100644 --- a/forge2d_game/step_03/linux/runner/my_application.cc +++ b/forge2d_game/step_03/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/forge2d_game/step_03/macos/Runner.xcodeproj/project.pbxproj b/forge2d_game/step_03/macos/Runner.xcodeproj/project.pbxproj index 365d8874b7..8c043b4a50 100644 --- a/forge2d_game/step_03/macos/Runner.xcodeproj/project.pbxproj +++ b/forge2d_game/step_03/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/forge2d_game/step_03/pubspec.yaml b/forge2d_game/step_03/pubspec.yaml index 6aeeb089bb..8d06550ad3 100644 --- a/forge2d_game/step_03/pubspec.yaml +++ b/forge2d_game/step_03/pubspec.yaml @@ -4,15 +4,15 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter characters: ^1.4.0 - flame: ^1.28.1 - flame_forge2d: ^0.19.0+1 - flame_kenney_xml: ^0.1.1+11 + flame: ^1.30.1 + flame_forge2d: ^0.19.0+4 + flame_kenney_xml: ^0.1.1+14 xml: ^6.5.0 dev_dependencies: diff --git a/forge2d_game/step_04/.gemini/settings.json b/forge2d_game/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/forge2d_game/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/forge2d_game/step_04/.gitignore b/forge2d_game/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/forge2d_game/step_04/.gitignore +++ b/forge2d_game/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/forge2d_game/step_04/android/build.gradle.kts b/forge2d_game/step_04/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/forge2d_game/step_04/android/build.gradle.kts +++ b/forge2d_game/step_04/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/forge2d_game/step_04/android/settings.gradle.kts b/forge2d_game/step_04/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/forge2d_game/step_04/android/settings.gradle.kts +++ b/forge2d_game/step_04/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/forge2d_game/step_04/ios/Flutter/AppFrameworkInfo.plist b/forge2d_game/step_04/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/forge2d_game/step_04/ios/Flutter/AppFrameworkInfo.plist +++ b/forge2d_game/step_04/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/forge2d_game/step_04/ios/Runner.xcodeproj/project.pbxproj b/forge2d_game/step_04/ios/Runner.xcodeproj/project.pbxproj index 7838587c16..e964754b27 100644 --- a/forge2d_game/step_04/ios/Runner.xcodeproj/project.pbxproj +++ b/forge2d_game/step_04/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/forge2d_game/step_04/linux/runner/my_application.cc b/forge2d_game/step_04/linux/runner/my_application.cc index 9a172938c7..d4fdc67de1 100644 --- a/forge2d_game/step_04/linux/runner/my_application.cc +++ b/forge2d_game/step_04/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/forge2d_game/step_04/macos/Runner.xcodeproj/project.pbxproj b/forge2d_game/step_04/macos/Runner.xcodeproj/project.pbxproj index 365d8874b7..8c043b4a50 100644 --- a/forge2d_game/step_04/macos/Runner.xcodeproj/project.pbxproj +++ b/forge2d_game/step_04/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/forge2d_game/step_04/pubspec.yaml b/forge2d_game/step_04/pubspec.yaml index 6aeeb089bb..8d06550ad3 100644 --- a/forge2d_game/step_04/pubspec.yaml +++ b/forge2d_game/step_04/pubspec.yaml @@ -4,15 +4,15 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter characters: ^1.4.0 - flame: ^1.28.1 - flame_forge2d: ^0.19.0+1 - flame_kenney_xml: ^0.1.1+11 + flame: ^1.30.1 + flame_forge2d: ^0.19.0+4 + flame_kenney_xml: ^0.1.1+14 xml: ^6.5.0 dev_dependencies: diff --git a/forge2d_game/step_05/.gemini/settings.json b/forge2d_game/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/forge2d_game/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/forge2d_game/step_05/.gitignore b/forge2d_game/step_05/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/forge2d_game/step_05/.gitignore +++ b/forge2d_game/step_05/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/forge2d_game/step_05/android/build.gradle.kts b/forge2d_game/step_05/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/forge2d_game/step_05/android/build.gradle.kts +++ b/forge2d_game/step_05/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/forge2d_game/step_05/android/settings.gradle.kts b/forge2d_game/step_05/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/forge2d_game/step_05/android/settings.gradle.kts +++ b/forge2d_game/step_05/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/forge2d_game/step_05/ios/Flutter/AppFrameworkInfo.plist b/forge2d_game/step_05/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/forge2d_game/step_05/ios/Flutter/AppFrameworkInfo.plist +++ b/forge2d_game/step_05/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/forge2d_game/step_05/ios/Runner.xcodeproj/project.pbxproj b/forge2d_game/step_05/ios/Runner.xcodeproj/project.pbxproj index 7838587c16..e964754b27 100644 --- a/forge2d_game/step_05/ios/Runner.xcodeproj/project.pbxproj +++ b/forge2d_game/step_05/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/forge2d_game/step_05/linux/runner/my_application.cc b/forge2d_game/step_05/linux/runner/my_application.cc index 9a172938c7..d4fdc67de1 100644 --- a/forge2d_game/step_05/linux/runner/my_application.cc +++ b/forge2d_game/step_05/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/forge2d_game/step_05/macos/Runner.xcodeproj/project.pbxproj b/forge2d_game/step_05/macos/Runner.xcodeproj/project.pbxproj index 365d8874b7..8c043b4a50 100644 --- a/forge2d_game/step_05/macos/Runner.xcodeproj/project.pbxproj +++ b/forge2d_game/step_05/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/forge2d_game/step_05/pubspec.yaml b/forge2d_game/step_05/pubspec.yaml index 2e4805f280..af152bdff6 100644 --- a/forge2d_game/step_05/pubspec.yaml +++ b/forge2d_game/step_05/pubspec.yaml @@ -4,15 +4,15 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter characters: ^1.4.0 - flame: ^1.28.1 - flame_forge2d: ^0.19.0+1 - flame_kenney_xml: ^0.1.1+11 + flame: ^1.30.1 + flame_forge2d: ^0.19.0+4 + flame_kenney_xml: ^0.1.1+14 xml: ^6.5.0 equatable: ^2.0.7 diff --git a/forge2d_game/step_06/.gemini/settings.json b/forge2d_game/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/forge2d_game/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/forge2d_game/step_06/.gitignore b/forge2d_game/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/forge2d_game/step_06/.gitignore +++ b/forge2d_game/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/forge2d_game/step_06/android/build.gradle.kts b/forge2d_game/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/forge2d_game/step_06/android/build.gradle.kts +++ b/forge2d_game/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/forge2d_game/step_06/android/settings.gradle.kts b/forge2d_game/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/forge2d_game/step_06/android/settings.gradle.kts +++ b/forge2d_game/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/forge2d_game/step_06/ios/Flutter/AppFrameworkInfo.plist b/forge2d_game/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/forge2d_game/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/forge2d_game/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/forge2d_game/step_06/ios/Runner.xcodeproj/project.pbxproj b/forge2d_game/step_06/ios/Runner.xcodeproj/project.pbxproj index 7838587c16..e964754b27 100644 --- a/forge2d_game/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/forge2d_game/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/forge2d_game/step_06/linux/runner/my_application.cc b/forge2d_game/step_06/linux/runner/my_application.cc index 9a172938c7..d4fdc67de1 100644 --- a/forge2d_game/step_06/linux/runner/my_application.cc +++ b/forge2d_game/step_06/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/forge2d_game/step_06/macos/Runner.xcodeproj/project.pbxproj b/forge2d_game/step_06/macos/Runner.xcodeproj/project.pbxproj index 365d8874b7..8c043b4a50 100644 --- a/forge2d_game/step_06/macos/Runner.xcodeproj/project.pbxproj +++ b/forge2d_game/step_06/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/forge2d_game/step_06/pubspec.yaml b/forge2d_game/step_06/pubspec.yaml index 2e4805f280..af152bdff6 100644 --- a/forge2d_game/step_06/pubspec.yaml +++ b/forge2d_game/step_06/pubspec.yaml @@ -4,15 +4,15 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter characters: ^1.4.0 - flame: ^1.28.1 - flame_forge2d: ^0.19.0+1 - flame_kenney_xml: ^0.1.1+11 + flame: ^1.30.1 + flame_forge2d: ^0.19.0+4 + flame_kenney_xml: ^0.1.1+14 xml: ^6.5.0 equatable: ^2.0.7 diff --git a/forge2d_game/step_07/.gemini/settings.json b/forge2d_game/step_07/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/forge2d_game/step_07/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/forge2d_game/step_07/.gitignore b/forge2d_game/step_07/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/forge2d_game/step_07/.gitignore +++ b/forge2d_game/step_07/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/forge2d_game/step_07/android/build.gradle.kts b/forge2d_game/step_07/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/forge2d_game/step_07/android/build.gradle.kts +++ b/forge2d_game/step_07/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/forge2d_game/step_07/android/settings.gradle.kts b/forge2d_game/step_07/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/forge2d_game/step_07/android/settings.gradle.kts +++ b/forge2d_game/step_07/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/forge2d_game/step_07/ios/Flutter/AppFrameworkInfo.plist b/forge2d_game/step_07/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/forge2d_game/step_07/ios/Flutter/AppFrameworkInfo.plist +++ b/forge2d_game/step_07/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/forge2d_game/step_07/ios/Runner.xcodeproj/project.pbxproj b/forge2d_game/step_07/ios/Runner.xcodeproj/project.pbxproj index 7838587c16..e964754b27 100644 --- a/forge2d_game/step_07/ios/Runner.xcodeproj/project.pbxproj +++ b/forge2d_game/step_07/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/forge2d_game/step_07/linux/runner/my_application.cc b/forge2d_game/step_07/linux/runner/my_application.cc index 9a172938c7..d4fdc67de1 100644 --- a/forge2d_game/step_07/linux/runner/my_application.cc +++ b/forge2d_game/step_07/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/forge2d_game/step_07/macos/Runner.xcodeproj/project.pbxproj b/forge2d_game/step_07/macos/Runner.xcodeproj/project.pbxproj index 365d8874b7..8c043b4a50 100644 --- a/forge2d_game/step_07/macos/Runner.xcodeproj/project.pbxproj +++ b/forge2d_game/step_07/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/forge2d_game/step_07/pubspec.yaml b/forge2d_game/step_07/pubspec.yaml index 2e4805f280..af152bdff6 100644 --- a/forge2d_game/step_07/pubspec.yaml +++ b/forge2d_game/step_07/pubspec.yaml @@ -4,15 +4,15 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter characters: ^1.4.0 - flame: ^1.28.1 - flame_forge2d: ^0.19.0+1 - flame_kenney_xml: ^0.1.1+11 + flame: ^1.30.1 + flame_forge2d: ^0.19.0+4 + flame_kenney_xml: ^0.1.1+14 xml: ^6.5.0 equatable: ^2.0.7 diff --git a/generate_crossword/codelab_rebuild.yaml b/generate_crossword/codelab_rebuild.yaml index 303fbb321c..70f036f3b4 100644 --- a/generate_crossword/codelab_rebuild.yaml +++ b/generate_crossword/codelab_rebuild.yaml @@ -25,6 +25,21 @@ steps: linter: rules: prefer_const_constructors: false + - name: Add .gemini directory + mkdir: generate_crossword/.gemini + - name: Add .gemini/settings.json + path: generate_crossword/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Remove README rm: generate_crossword/README.md - name: Add .vscode directory diff --git a/generate_crossword/step_02/.gemini/settings.json b/generate_crossword/step_02/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/generate_crossword/step_02/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/generate_crossword/step_02/.gitignore b/generate_crossword/step_02/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/generate_crossword/step_02/.gitignore +++ b/generate_crossword/step_02/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/generate_crossword/step_02/android/build.gradle.kts b/generate_crossword/step_02/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/generate_crossword/step_02/android/build.gradle.kts +++ b/generate_crossword/step_02/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/generate_crossword/step_02/android/settings.gradle.kts b/generate_crossword/step_02/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/generate_crossword/step_02/android/settings.gradle.kts +++ b/generate_crossword/step_02/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/generate_crossword/step_02/ios/Flutter/AppFrameworkInfo.plist b/generate_crossword/step_02/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/generate_crossword/step_02/ios/Flutter/AppFrameworkInfo.plist +++ b/generate_crossword/step_02/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/generate_crossword/step_02/ios/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_02/ios/Runner.xcodeproj/project.pbxproj index 0cb40440c1..4b54ab68d5 100644 --- a/generate_crossword/step_02/ios/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_02/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/generate_crossword/step_02/linux/runner/my_application.cc b/generate_crossword/step_02/linux/runner/my_application.cc index dbf3c88029..8d7170cbe5 100644 --- a/generate_crossword/step_02/linux/runner/my_application.cc +++ b/generate_crossword/step_02/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/generate_crossword/step_02/macos/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_02/macos/Runner.xcodeproj/project.pbxproj index 32b42372b9..0da0fc331a 100644 --- a/generate_crossword/step_02/macos/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_02/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/generate_crossword/step_02/pubspec.yaml b/generate_crossword/step_02/pubspec.yaml index 36bddd885b..722dd51fa0 100644 --- a/generate_crossword/step_02/pubspec.yaml +++ b/generate_crossword/step_02/pubspec.yaml @@ -4,27 +4,27 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter built_collection: ^5.1.1 - built_value: ^8.9.5 + built_value: ^8.10.1 characters: ^1.4.0 flutter_riverpod: ^2.6.1 intl: ^0.20.2 riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - two_dimensional_scrollables: ^0.3.4 + two_dimensional_scrollables: ^0.3.7 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - build_runner: ^2.4.15 - built_value_generator: ^8.9.5 - custom_lint: ^0.7.5 + build_runner: ^2.5.4 + built_value_generator: ^8.10.1 + custom_lint: ^0.7.6 riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 diff --git a/generate_crossword/step_03/.gemini/settings.json b/generate_crossword/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/generate_crossword/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/generate_crossword/step_03/.gitignore b/generate_crossword/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/generate_crossword/step_03/.gitignore +++ b/generate_crossword/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/generate_crossword/step_03/android/build.gradle.kts b/generate_crossword/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/generate_crossword/step_03/android/build.gradle.kts +++ b/generate_crossword/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/generate_crossword/step_03/android/settings.gradle.kts b/generate_crossword/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/generate_crossword/step_03/android/settings.gradle.kts +++ b/generate_crossword/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/generate_crossword/step_03/ios/Flutter/AppFrameworkInfo.plist b/generate_crossword/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/generate_crossword/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/generate_crossword/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/generate_crossword/step_03/ios/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_03/ios/Runner.xcodeproj/project.pbxproj index 0cb40440c1..4b54ab68d5 100644 --- a/generate_crossword/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/generate_crossword/step_03/linux/runner/my_application.cc b/generate_crossword/step_03/linux/runner/my_application.cc index dbf3c88029..8d7170cbe5 100644 --- a/generate_crossword/step_03/linux/runner/my_application.cc +++ b/generate_crossword/step_03/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/generate_crossword/step_03/macos/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_03/macos/Runner.xcodeproj/project.pbxproj index 32b42372b9..0da0fc331a 100644 --- a/generate_crossword/step_03/macos/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_03/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/generate_crossword/step_03/pubspec.yaml b/generate_crossword/step_03/pubspec.yaml index bb10d4cd49..9b4f7e67a8 100644 --- a/generate_crossword/step_03/pubspec.yaml +++ b/generate_crossword/step_03/pubspec.yaml @@ -4,27 +4,27 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter built_collection: ^5.1.1 - built_value: ^8.9.5 + built_value: ^8.10.1 characters: ^1.4.0 flutter_riverpod: ^2.6.1 intl: ^0.20.2 riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - two_dimensional_scrollables: ^0.3.4 + two_dimensional_scrollables: ^0.3.7 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - build_runner: ^2.4.15 - built_value_generator: ^8.9.5 - custom_lint: ^0.7.5 + build_runner: ^2.5.4 + built_value_generator: ^8.10.1 + custom_lint: ^0.7.6 riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 diff --git a/generate_crossword/step_04/.gemini/settings.json b/generate_crossword/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/generate_crossword/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/generate_crossword/step_04/.gitignore b/generate_crossword/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/generate_crossword/step_04/.gitignore +++ b/generate_crossword/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/generate_crossword/step_04/android/build.gradle.kts b/generate_crossword/step_04/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/generate_crossword/step_04/android/build.gradle.kts +++ b/generate_crossword/step_04/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/generate_crossword/step_04/android/settings.gradle.kts b/generate_crossword/step_04/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/generate_crossword/step_04/android/settings.gradle.kts +++ b/generate_crossword/step_04/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/generate_crossword/step_04/ios/Flutter/AppFrameworkInfo.plist b/generate_crossword/step_04/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/generate_crossword/step_04/ios/Flutter/AppFrameworkInfo.plist +++ b/generate_crossword/step_04/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/generate_crossword/step_04/ios/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_04/ios/Runner.xcodeproj/project.pbxproj index 0cb40440c1..4b54ab68d5 100644 --- a/generate_crossword/step_04/ios/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_04/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/generate_crossword/step_04/lib/model.g.dart b/generate_crossword/step_04/lib/model.g.dart index a4ddf76c65..fdce744073 100644 --- a/generate_crossword/step_04/lib/model.g.dart +++ b/generate_crossword/step_04/lib/model.g.dart @@ -7,29 +7,29 @@ part of 'model.dart'; // ************************************************************************** Serializers _$serializers = - (new Serializers().toBuilder() + (Serializers().toBuilder() ..add(Crossword.serializer) ..add(CrosswordCharacter.serializer) ..add(CrosswordWord.serializer) ..add(Location.serializer) ..addBuilderFactory( const FullType(BuiltList, const [const FullType(CrosswordWord)]), - () => new ListBuilder(), + () => ListBuilder(), ) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(Location), const FullType(CrosswordCharacter), ]), - () => new MapBuilder(), + () => MapBuilder(), )) .build(); -Serializer _$locationSerializer = new _$LocationSerializer(); +Serializer _$locationSerializer = _$LocationSerializer(); Serializer _$crosswordWordSerializer = - new _$CrosswordWordSerializer(); + _$CrosswordWordSerializer(); Serializer _$crosswordCharacterSerializer = - new _$CrosswordCharacterSerializer(); -Serializer _$crosswordSerializer = new _$CrosswordSerializer(); + _$CrosswordCharacterSerializer(); +Serializer _$crosswordSerializer = _$CrosswordSerializer(); class _$LocationSerializer implements StructuredSerializer { @override @@ -59,7 +59,7 @@ class _$LocationSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new LocationBuilder(); + final result = LocationBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -126,7 +126,7 @@ class _$CrosswordWordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordWordBuilder(); + final result = CrosswordWordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -218,7 +218,7 @@ class _$CrosswordCharacterSerializer Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordCharacterBuilder(); + final result = CrosswordCharacterBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -302,7 +302,7 @@ class _$CrosswordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordBuilder(); + final result = CrosswordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -362,19 +362,15 @@ class _$Location extends Location { final int y; factory _$Location([void Function(LocationBuilder)? updates]) => - (new LocationBuilder()..update(updates))._build(); - - _$Location._({required this.x, required this.y}) : super._() { - BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'); - BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'); - } + (LocationBuilder()..update(updates))._build(); + _$Location._({required this.x, required this.y}) : super._(); @override Location rebuild(void Function(LocationBuilder) updates) => (toBuilder()..update(updates)).build(); @override - LocationBuilder toBuilder() => new LocationBuilder()..replace(this); + LocationBuilder toBuilder() => LocationBuilder()..replace(this); @override bool operator ==(Object other) { @@ -425,7 +421,6 @@ class LocationBuilder implements Builder { @override void replace(Location other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Location; } @@ -440,7 +435,7 @@ class LocationBuilder implements Builder { _$Location _build() { final _$result = _$v ?? - new _$Location._( + _$Location._( x: BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'), y: BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'), ); @@ -458,32 +453,19 @@ class _$CrosswordWord extends CrosswordWord { final Direction direction; factory _$CrosswordWord([void Function(CrosswordWordBuilder)? updates]) => - (new CrosswordWordBuilder()..update(updates))._build(); + (CrosswordWordBuilder()..update(updates))._build(); _$CrosswordWord._({ required this.word, required this.location, required this.direction, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(word, r'CrosswordWord', 'word'); - BuiltValueNullFieldError.checkNotNull( - location, - r'CrosswordWord', - 'location', - ); - BuiltValueNullFieldError.checkNotNull( - direction, - r'CrosswordWord', - 'direction', - ); - } - + }) : super._(); @override CrosswordWord rebuild(void Function(CrosswordWordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordWordBuilder toBuilder() => new CrosswordWordBuilder()..replace(this); + CrosswordWordBuilder toBuilder() => CrosswordWordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -523,7 +505,7 @@ class CrosswordWordBuilder set word(String? word) => _$this._word = word; LocationBuilder? _location; - LocationBuilder get location => _$this._location ??= new LocationBuilder(); + LocationBuilder get location => _$this._location ??= LocationBuilder(); set location(LocationBuilder? location) => _$this._location = location; Direction? _direction; @@ -545,7 +527,6 @@ class CrosswordWordBuilder @override void replace(CrosswordWord other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordWord; } @@ -562,7 +543,7 @@ class CrosswordWordBuilder try { _$result = _$v ?? - new _$CrosswordWord._( + _$CrosswordWord._( word: BuiltValueNullFieldError.checkNotNull( word, r'CrosswordWord', @@ -581,7 +562,7 @@ class CrosswordWordBuilder _$failedField = 'location'; location.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordWord', _$failedField, e.toString(), @@ -604,20 +585,13 @@ class _$CrosswordCharacter extends CrosswordCharacter { factory _$CrosswordCharacter([ void Function(CrosswordCharacterBuilder)? updates, - ]) => (new CrosswordCharacterBuilder()..update(updates))._build(); + ]) => (CrosswordCharacterBuilder()..update(updates))._build(); _$CrosswordCharacter._({ required this.character, this.acrossWord, this.downWord, - }) : super._() { - BuiltValueNullFieldError.checkNotNull( - character, - r'CrosswordCharacter', - 'character', - ); - } - + }) : super._(); @override CrosswordCharacter rebuild( void Function(CrosswordCharacterBuilder) updates, @@ -625,7 +599,7 @@ class _$CrosswordCharacter extends CrosswordCharacter { @override CrosswordCharacterBuilder toBuilder() => - new CrosswordCharacterBuilder()..replace(this); + CrosswordCharacterBuilder()..replace(this); @override bool operator ==(Object other) { @@ -666,13 +640,13 @@ class CrosswordCharacterBuilder CrosswordWordBuilder? _acrossWord; CrosswordWordBuilder get acrossWord => - _$this._acrossWord ??= new CrosswordWordBuilder(); + _$this._acrossWord ??= CrosswordWordBuilder(); set acrossWord(CrosswordWordBuilder? acrossWord) => _$this._acrossWord = acrossWord; CrosswordWordBuilder? _downWord; CrosswordWordBuilder get downWord => - _$this._downWord ??= new CrosswordWordBuilder(); + _$this._downWord ??= CrosswordWordBuilder(); set downWord(CrosswordWordBuilder? downWord) => _$this._downWord = downWord; CrosswordCharacterBuilder(); @@ -690,7 +664,6 @@ class CrosswordCharacterBuilder @override void replace(CrosswordCharacter other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordCharacter; } @@ -707,7 +680,7 @@ class CrosswordCharacterBuilder try { _$result = _$v ?? - new _$CrosswordCharacter._( + _$CrosswordCharacter._( character: BuiltValueNullFieldError.checkNotNull( character, r'CrosswordCharacter', @@ -724,7 +697,7 @@ class CrosswordCharacterBuilder _$failedField = 'downWord'; _downWord?.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordCharacter', _$failedField, e.toString(), @@ -748,30 +721,20 @@ class _$Crossword extends Crossword { final BuiltMap characters; factory _$Crossword([void Function(CrosswordBuilder)? updates]) => - (new CrosswordBuilder()..update(updates))._build(); + (CrosswordBuilder()..update(updates))._build(); _$Crossword._({ required this.width, required this.height, required this.words, required this.characters, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(width, r'Crossword', 'width'); - BuiltValueNullFieldError.checkNotNull(height, r'Crossword', 'height'); - BuiltValueNullFieldError.checkNotNull(words, r'Crossword', 'words'); - BuiltValueNullFieldError.checkNotNull( - characters, - r'Crossword', - 'characters', - ); - } - + }) : super._(); @override Crossword rebuild(void Function(CrosswordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordBuilder toBuilder() => new CrosswordBuilder()..replace(this); + CrosswordBuilder toBuilder() => CrosswordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -818,12 +781,12 @@ class CrosswordBuilder implements Builder { ListBuilder? _words; ListBuilder get words => - _$this._words ??= new ListBuilder(); + _$this._words ??= ListBuilder(); set words(ListBuilder? words) => _$this._words = words; MapBuilder? _characters; MapBuilder get characters => - _$this._characters ??= new MapBuilder(); + _$this._characters ??= MapBuilder(); set characters(MapBuilder? characters) => _$this._characters = characters; @@ -843,7 +806,6 @@ class CrosswordBuilder implements Builder { @override void replace(Crossword other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Crossword; } @@ -861,7 +823,7 @@ class CrosswordBuilder implements Builder { try { _$result = _$v ?? - new _$Crossword._( + _$Crossword._( width: BuiltValueNullFieldError.checkNotNull( width, r'Crossword', @@ -883,7 +845,7 @@ class CrosswordBuilder implements Builder { _$failedField = 'characters'; characters.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'Crossword', _$failedField, e.toString(), diff --git a/generate_crossword/step_04/linux/runner/my_application.cc b/generate_crossword/step_04/linux/runner/my_application.cc index dbf3c88029..8d7170cbe5 100644 --- a/generate_crossword/step_04/linux/runner/my_application.cc +++ b/generate_crossword/step_04/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/generate_crossword/step_04/macos/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_04/macos/Runner.xcodeproj/project.pbxproj index 32b42372b9..0da0fc331a 100644 --- a/generate_crossword/step_04/macos/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_04/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/generate_crossword/step_04/pubspec.yaml b/generate_crossword/step_04/pubspec.yaml index bb10d4cd49..9b4f7e67a8 100644 --- a/generate_crossword/step_04/pubspec.yaml +++ b/generate_crossword/step_04/pubspec.yaml @@ -4,27 +4,27 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter built_collection: ^5.1.1 - built_value: ^8.9.5 + built_value: ^8.10.1 characters: ^1.4.0 flutter_riverpod: ^2.6.1 intl: ^0.20.2 riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - two_dimensional_scrollables: ^0.3.4 + two_dimensional_scrollables: ^0.3.7 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - build_runner: ^2.4.15 - built_value_generator: ^8.9.5 - custom_lint: ^0.7.5 + build_runner: ^2.5.4 + built_value_generator: ^8.10.1 + custom_lint: ^0.7.6 riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 diff --git a/generate_crossword/step_05_a/.gemini/settings.json b/generate_crossword/step_05_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/generate_crossword/step_05_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/generate_crossword/step_05_a/.gitignore b/generate_crossword/step_05_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/generate_crossword/step_05_a/.gitignore +++ b/generate_crossword/step_05_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/generate_crossword/step_05_a/android/build.gradle.kts b/generate_crossword/step_05_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/generate_crossword/step_05_a/android/build.gradle.kts +++ b/generate_crossword/step_05_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/generate_crossword/step_05_a/android/settings.gradle.kts b/generate_crossword/step_05_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/generate_crossword/step_05_a/android/settings.gradle.kts +++ b/generate_crossword/step_05_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/generate_crossword/step_05_a/ios/Flutter/AppFrameworkInfo.plist b/generate_crossword/step_05_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/generate_crossword/step_05_a/ios/Flutter/AppFrameworkInfo.plist +++ b/generate_crossword/step_05_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/generate_crossword/step_05_a/ios/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_05_a/ios/Runner.xcodeproj/project.pbxproj index 0cb40440c1..4b54ab68d5 100644 --- a/generate_crossword/step_05_a/ios/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_05_a/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/generate_crossword/step_05_a/lib/model.g.dart b/generate_crossword/step_05_a/lib/model.g.dart index a4ddf76c65..fdce744073 100644 --- a/generate_crossword/step_05_a/lib/model.g.dart +++ b/generate_crossword/step_05_a/lib/model.g.dart @@ -7,29 +7,29 @@ part of 'model.dart'; // ************************************************************************** Serializers _$serializers = - (new Serializers().toBuilder() + (Serializers().toBuilder() ..add(Crossword.serializer) ..add(CrosswordCharacter.serializer) ..add(CrosswordWord.serializer) ..add(Location.serializer) ..addBuilderFactory( const FullType(BuiltList, const [const FullType(CrosswordWord)]), - () => new ListBuilder(), + () => ListBuilder(), ) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(Location), const FullType(CrosswordCharacter), ]), - () => new MapBuilder(), + () => MapBuilder(), )) .build(); -Serializer _$locationSerializer = new _$LocationSerializer(); +Serializer _$locationSerializer = _$LocationSerializer(); Serializer _$crosswordWordSerializer = - new _$CrosswordWordSerializer(); + _$CrosswordWordSerializer(); Serializer _$crosswordCharacterSerializer = - new _$CrosswordCharacterSerializer(); -Serializer _$crosswordSerializer = new _$CrosswordSerializer(); + _$CrosswordCharacterSerializer(); +Serializer _$crosswordSerializer = _$CrosswordSerializer(); class _$LocationSerializer implements StructuredSerializer { @override @@ -59,7 +59,7 @@ class _$LocationSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new LocationBuilder(); + final result = LocationBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -126,7 +126,7 @@ class _$CrosswordWordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordWordBuilder(); + final result = CrosswordWordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -218,7 +218,7 @@ class _$CrosswordCharacterSerializer Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordCharacterBuilder(); + final result = CrosswordCharacterBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -302,7 +302,7 @@ class _$CrosswordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordBuilder(); + final result = CrosswordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -362,19 +362,15 @@ class _$Location extends Location { final int y; factory _$Location([void Function(LocationBuilder)? updates]) => - (new LocationBuilder()..update(updates))._build(); - - _$Location._({required this.x, required this.y}) : super._() { - BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'); - BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'); - } + (LocationBuilder()..update(updates))._build(); + _$Location._({required this.x, required this.y}) : super._(); @override Location rebuild(void Function(LocationBuilder) updates) => (toBuilder()..update(updates)).build(); @override - LocationBuilder toBuilder() => new LocationBuilder()..replace(this); + LocationBuilder toBuilder() => LocationBuilder()..replace(this); @override bool operator ==(Object other) { @@ -425,7 +421,6 @@ class LocationBuilder implements Builder { @override void replace(Location other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Location; } @@ -440,7 +435,7 @@ class LocationBuilder implements Builder { _$Location _build() { final _$result = _$v ?? - new _$Location._( + _$Location._( x: BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'), y: BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'), ); @@ -458,32 +453,19 @@ class _$CrosswordWord extends CrosswordWord { final Direction direction; factory _$CrosswordWord([void Function(CrosswordWordBuilder)? updates]) => - (new CrosswordWordBuilder()..update(updates))._build(); + (CrosswordWordBuilder()..update(updates))._build(); _$CrosswordWord._({ required this.word, required this.location, required this.direction, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(word, r'CrosswordWord', 'word'); - BuiltValueNullFieldError.checkNotNull( - location, - r'CrosswordWord', - 'location', - ); - BuiltValueNullFieldError.checkNotNull( - direction, - r'CrosswordWord', - 'direction', - ); - } - + }) : super._(); @override CrosswordWord rebuild(void Function(CrosswordWordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordWordBuilder toBuilder() => new CrosswordWordBuilder()..replace(this); + CrosswordWordBuilder toBuilder() => CrosswordWordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -523,7 +505,7 @@ class CrosswordWordBuilder set word(String? word) => _$this._word = word; LocationBuilder? _location; - LocationBuilder get location => _$this._location ??= new LocationBuilder(); + LocationBuilder get location => _$this._location ??= LocationBuilder(); set location(LocationBuilder? location) => _$this._location = location; Direction? _direction; @@ -545,7 +527,6 @@ class CrosswordWordBuilder @override void replace(CrosswordWord other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordWord; } @@ -562,7 +543,7 @@ class CrosswordWordBuilder try { _$result = _$v ?? - new _$CrosswordWord._( + _$CrosswordWord._( word: BuiltValueNullFieldError.checkNotNull( word, r'CrosswordWord', @@ -581,7 +562,7 @@ class CrosswordWordBuilder _$failedField = 'location'; location.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordWord', _$failedField, e.toString(), @@ -604,20 +585,13 @@ class _$CrosswordCharacter extends CrosswordCharacter { factory _$CrosswordCharacter([ void Function(CrosswordCharacterBuilder)? updates, - ]) => (new CrosswordCharacterBuilder()..update(updates))._build(); + ]) => (CrosswordCharacterBuilder()..update(updates))._build(); _$CrosswordCharacter._({ required this.character, this.acrossWord, this.downWord, - }) : super._() { - BuiltValueNullFieldError.checkNotNull( - character, - r'CrosswordCharacter', - 'character', - ); - } - + }) : super._(); @override CrosswordCharacter rebuild( void Function(CrosswordCharacterBuilder) updates, @@ -625,7 +599,7 @@ class _$CrosswordCharacter extends CrosswordCharacter { @override CrosswordCharacterBuilder toBuilder() => - new CrosswordCharacterBuilder()..replace(this); + CrosswordCharacterBuilder()..replace(this); @override bool operator ==(Object other) { @@ -666,13 +640,13 @@ class CrosswordCharacterBuilder CrosswordWordBuilder? _acrossWord; CrosswordWordBuilder get acrossWord => - _$this._acrossWord ??= new CrosswordWordBuilder(); + _$this._acrossWord ??= CrosswordWordBuilder(); set acrossWord(CrosswordWordBuilder? acrossWord) => _$this._acrossWord = acrossWord; CrosswordWordBuilder? _downWord; CrosswordWordBuilder get downWord => - _$this._downWord ??= new CrosswordWordBuilder(); + _$this._downWord ??= CrosswordWordBuilder(); set downWord(CrosswordWordBuilder? downWord) => _$this._downWord = downWord; CrosswordCharacterBuilder(); @@ -690,7 +664,6 @@ class CrosswordCharacterBuilder @override void replace(CrosswordCharacter other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordCharacter; } @@ -707,7 +680,7 @@ class CrosswordCharacterBuilder try { _$result = _$v ?? - new _$CrosswordCharacter._( + _$CrosswordCharacter._( character: BuiltValueNullFieldError.checkNotNull( character, r'CrosswordCharacter', @@ -724,7 +697,7 @@ class CrosswordCharacterBuilder _$failedField = 'downWord'; _downWord?.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordCharacter', _$failedField, e.toString(), @@ -748,30 +721,20 @@ class _$Crossword extends Crossword { final BuiltMap characters; factory _$Crossword([void Function(CrosswordBuilder)? updates]) => - (new CrosswordBuilder()..update(updates))._build(); + (CrosswordBuilder()..update(updates))._build(); _$Crossword._({ required this.width, required this.height, required this.words, required this.characters, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(width, r'Crossword', 'width'); - BuiltValueNullFieldError.checkNotNull(height, r'Crossword', 'height'); - BuiltValueNullFieldError.checkNotNull(words, r'Crossword', 'words'); - BuiltValueNullFieldError.checkNotNull( - characters, - r'Crossword', - 'characters', - ); - } - + }) : super._(); @override Crossword rebuild(void Function(CrosswordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordBuilder toBuilder() => new CrosswordBuilder()..replace(this); + CrosswordBuilder toBuilder() => CrosswordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -818,12 +781,12 @@ class CrosswordBuilder implements Builder { ListBuilder? _words; ListBuilder get words => - _$this._words ??= new ListBuilder(); + _$this._words ??= ListBuilder(); set words(ListBuilder? words) => _$this._words = words; MapBuilder? _characters; MapBuilder get characters => - _$this._characters ??= new MapBuilder(); + _$this._characters ??= MapBuilder(); set characters(MapBuilder? characters) => _$this._characters = characters; @@ -843,7 +806,6 @@ class CrosswordBuilder implements Builder { @override void replace(Crossword other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Crossword; } @@ -861,7 +823,7 @@ class CrosswordBuilder implements Builder { try { _$result = _$v ?? - new _$Crossword._( + _$Crossword._( width: BuiltValueNullFieldError.checkNotNull( width, r'Crossword', @@ -883,7 +845,7 @@ class CrosswordBuilder implements Builder { _$failedField = 'characters'; characters.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'Crossword', _$failedField, e.toString(), diff --git a/generate_crossword/step_05_a/linux/runner/my_application.cc b/generate_crossword/step_05_a/linux/runner/my_application.cc index dbf3c88029..8d7170cbe5 100644 --- a/generate_crossword/step_05_a/linux/runner/my_application.cc +++ b/generate_crossword/step_05_a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/generate_crossword/step_05_a/macos/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_05_a/macos/Runner.xcodeproj/project.pbxproj index 32b42372b9..0da0fc331a 100644 --- a/generate_crossword/step_05_a/macos/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_05_a/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/generate_crossword/step_05_a/pubspec.yaml b/generate_crossword/step_05_a/pubspec.yaml index bb10d4cd49..9b4f7e67a8 100644 --- a/generate_crossword/step_05_a/pubspec.yaml +++ b/generate_crossword/step_05_a/pubspec.yaml @@ -4,27 +4,27 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter built_collection: ^5.1.1 - built_value: ^8.9.5 + built_value: ^8.10.1 characters: ^1.4.0 flutter_riverpod: ^2.6.1 intl: ^0.20.2 riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - two_dimensional_scrollables: ^0.3.4 + two_dimensional_scrollables: ^0.3.7 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - build_runner: ^2.4.15 - built_value_generator: ^8.9.5 - custom_lint: ^0.7.5 + build_runner: ^2.5.4 + built_value_generator: ^8.10.1 + custom_lint: ^0.7.6 riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 diff --git a/generate_crossword/step_05_b/.gemini/settings.json b/generate_crossword/step_05_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/generate_crossword/step_05_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/generate_crossword/step_05_b/.gitignore b/generate_crossword/step_05_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/generate_crossword/step_05_b/.gitignore +++ b/generate_crossword/step_05_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/generate_crossword/step_05_b/android/build.gradle.kts b/generate_crossword/step_05_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/generate_crossword/step_05_b/android/build.gradle.kts +++ b/generate_crossword/step_05_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/generate_crossword/step_05_b/android/settings.gradle.kts b/generate_crossword/step_05_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/generate_crossword/step_05_b/android/settings.gradle.kts +++ b/generate_crossword/step_05_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/generate_crossword/step_05_b/ios/Flutter/AppFrameworkInfo.plist b/generate_crossword/step_05_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/generate_crossword/step_05_b/ios/Flutter/AppFrameworkInfo.plist +++ b/generate_crossword/step_05_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/generate_crossword/step_05_b/ios/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_05_b/ios/Runner.xcodeproj/project.pbxproj index 0cb40440c1..4b54ab68d5 100644 --- a/generate_crossword/step_05_b/ios/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_05_b/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/generate_crossword/step_05_b/lib/model.g.dart b/generate_crossword/step_05_b/lib/model.g.dart index a4ddf76c65..fdce744073 100644 --- a/generate_crossword/step_05_b/lib/model.g.dart +++ b/generate_crossword/step_05_b/lib/model.g.dart @@ -7,29 +7,29 @@ part of 'model.dart'; // ************************************************************************** Serializers _$serializers = - (new Serializers().toBuilder() + (Serializers().toBuilder() ..add(Crossword.serializer) ..add(CrosswordCharacter.serializer) ..add(CrosswordWord.serializer) ..add(Location.serializer) ..addBuilderFactory( const FullType(BuiltList, const [const FullType(CrosswordWord)]), - () => new ListBuilder(), + () => ListBuilder(), ) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(Location), const FullType(CrosswordCharacter), ]), - () => new MapBuilder(), + () => MapBuilder(), )) .build(); -Serializer _$locationSerializer = new _$LocationSerializer(); +Serializer _$locationSerializer = _$LocationSerializer(); Serializer _$crosswordWordSerializer = - new _$CrosswordWordSerializer(); + _$CrosswordWordSerializer(); Serializer _$crosswordCharacterSerializer = - new _$CrosswordCharacterSerializer(); -Serializer _$crosswordSerializer = new _$CrosswordSerializer(); + _$CrosswordCharacterSerializer(); +Serializer _$crosswordSerializer = _$CrosswordSerializer(); class _$LocationSerializer implements StructuredSerializer { @override @@ -59,7 +59,7 @@ class _$LocationSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new LocationBuilder(); + final result = LocationBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -126,7 +126,7 @@ class _$CrosswordWordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordWordBuilder(); + final result = CrosswordWordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -218,7 +218,7 @@ class _$CrosswordCharacterSerializer Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordCharacterBuilder(); + final result = CrosswordCharacterBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -302,7 +302,7 @@ class _$CrosswordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordBuilder(); + final result = CrosswordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -362,19 +362,15 @@ class _$Location extends Location { final int y; factory _$Location([void Function(LocationBuilder)? updates]) => - (new LocationBuilder()..update(updates))._build(); - - _$Location._({required this.x, required this.y}) : super._() { - BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'); - BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'); - } + (LocationBuilder()..update(updates))._build(); + _$Location._({required this.x, required this.y}) : super._(); @override Location rebuild(void Function(LocationBuilder) updates) => (toBuilder()..update(updates)).build(); @override - LocationBuilder toBuilder() => new LocationBuilder()..replace(this); + LocationBuilder toBuilder() => LocationBuilder()..replace(this); @override bool operator ==(Object other) { @@ -425,7 +421,6 @@ class LocationBuilder implements Builder { @override void replace(Location other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Location; } @@ -440,7 +435,7 @@ class LocationBuilder implements Builder { _$Location _build() { final _$result = _$v ?? - new _$Location._( + _$Location._( x: BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'), y: BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'), ); @@ -458,32 +453,19 @@ class _$CrosswordWord extends CrosswordWord { final Direction direction; factory _$CrosswordWord([void Function(CrosswordWordBuilder)? updates]) => - (new CrosswordWordBuilder()..update(updates))._build(); + (CrosswordWordBuilder()..update(updates))._build(); _$CrosswordWord._({ required this.word, required this.location, required this.direction, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(word, r'CrosswordWord', 'word'); - BuiltValueNullFieldError.checkNotNull( - location, - r'CrosswordWord', - 'location', - ); - BuiltValueNullFieldError.checkNotNull( - direction, - r'CrosswordWord', - 'direction', - ); - } - + }) : super._(); @override CrosswordWord rebuild(void Function(CrosswordWordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordWordBuilder toBuilder() => new CrosswordWordBuilder()..replace(this); + CrosswordWordBuilder toBuilder() => CrosswordWordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -523,7 +505,7 @@ class CrosswordWordBuilder set word(String? word) => _$this._word = word; LocationBuilder? _location; - LocationBuilder get location => _$this._location ??= new LocationBuilder(); + LocationBuilder get location => _$this._location ??= LocationBuilder(); set location(LocationBuilder? location) => _$this._location = location; Direction? _direction; @@ -545,7 +527,6 @@ class CrosswordWordBuilder @override void replace(CrosswordWord other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordWord; } @@ -562,7 +543,7 @@ class CrosswordWordBuilder try { _$result = _$v ?? - new _$CrosswordWord._( + _$CrosswordWord._( word: BuiltValueNullFieldError.checkNotNull( word, r'CrosswordWord', @@ -581,7 +562,7 @@ class CrosswordWordBuilder _$failedField = 'location'; location.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordWord', _$failedField, e.toString(), @@ -604,20 +585,13 @@ class _$CrosswordCharacter extends CrosswordCharacter { factory _$CrosswordCharacter([ void Function(CrosswordCharacterBuilder)? updates, - ]) => (new CrosswordCharacterBuilder()..update(updates))._build(); + ]) => (CrosswordCharacterBuilder()..update(updates))._build(); _$CrosswordCharacter._({ required this.character, this.acrossWord, this.downWord, - }) : super._() { - BuiltValueNullFieldError.checkNotNull( - character, - r'CrosswordCharacter', - 'character', - ); - } - + }) : super._(); @override CrosswordCharacter rebuild( void Function(CrosswordCharacterBuilder) updates, @@ -625,7 +599,7 @@ class _$CrosswordCharacter extends CrosswordCharacter { @override CrosswordCharacterBuilder toBuilder() => - new CrosswordCharacterBuilder()..replace(this); + CrosswordCharacterBuilder()..replace(this); @override bool operator ==(Object other) { @@ -666,13 +640,13 @@ class CrosswordCharacterBuilder CrosswordWordBuilder? _acrossWord; CrosswordWordBuilder get acrossWord => - _$this._acrossWord ??= new CrosswordWordBuilder(); + _$this._acrossWord ??= CrosswordWordBuilder(); set acrossWord(CrosswordWordBuilder? acrossWord) => _$this._acrossWord = acrossWord; CrosswordWordBuilder? _downWord; CrosswordWordBuilder get downWord => - _$this._downWord ??= new CrosswordWordBuilder(); + _$this._downWord ??= CrosswordWordBuilder(); set downWord(CrosswordWordBuilder? downWord) => _$this._downWord = downWord; CrosswordCharacterBuilder(); @@ -690,7 +664,6 @@ class CrosswordCharacterBuilder @override void replace(CrosswordCharacter other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordCharacter; } @@ -707,7 +680,7 @@ class CrosswordCharacterBuilder try { _$result = _$v ?? - new _$CrosswordCharacter._( + _$CrosswordCharacter._( character: BuiltValueNullFieldError.checkNotNull( character, r'CrosswordCharacter', @@ -724,7 +697,7 @@ class CrosswordCharacterBuilder _$failedField = 'downWord'; _downWord?.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordCharacter', _$failedField, e.toString(), @@ -748,30 +721,20 @@ class _$Crossword extends Crossword { final BuiltMap characters; factory _$Crossword([void Function(CrosswordBuilder)? updates]) => - (new CrosswordBuilder()..update(updates))._build(); + (CrosswordBuilder()..update(updates))._build(); _$Crossword._({ required this.width, required this.height, required this.words, required this.characters, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(width, r'Crossword', 'width'); - BuiltValueNullFieldError.checkNotNull(height, r'Crossword', 'height'); - BuiltValueNullFieldError.checkNotNull(words, r'Crossword', 'words'); - BuiltValueNullFieldError.checkNotNull( - characters, - r'Crossword', - 'characters', - ); - } - + }) : super._(); @override Crossword rebuild(void Function(CrosswordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordBuilder toBuilder() => new CrosswordBuilder()..replace(this); + CrosswordBuilder toBuilder() => CrosswordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -818,12 +781,12 @@ class CrosswordBuilder implements Builder { ListBuilder? _words; ListBuilder get words => - _$this._words ??= new ListBuilder(); + _$this._words ??= ListBuilder(); set words(ListBuilder? words) => _$this._words = words; MapBuilder? _characters; MapBuilder get characters => - _$this._characters ??= new MapBuilder(); + _$this._characters ??= MapBuilder(); set characters(MapBuilder? characters) => _$this._characters = characters; @@ -843,7 +806,6 @@ class CrosswordBuilder implements Builder { @override void replace(Crossword other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Crossword; } @@ -861,7 +823,7 @@ class CrosswordBuilder implements Builder { try { _$result = _$v ?? - new _$Crossword._( + _$Crossword._( width: BuiltValueNullFieldError.checkNotNull( width, r'Crossword', @@ -883,7 +845,7 @@ class CrosswordBuilder implements Builder { _$failedField = 'characters'; characters.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'Crossword', _$failedField, e.toString(), diff --git a/generate_crossword/step_05_b/linux/runner/my_application.cc b/generate_crossword/step_05_b/linux/runner/my_application.cc index dbf3c88029..8d7170cbe5 100644 --- a/generate_crossword/step_05_b/linux/runner/my_application.cc +++ b/generate_crossword/step_05_b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/generate_crossword/step_05_b/macos/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_05_b/macos/Runner.xcodeproj/project.pbxproj index 32b42372b9..0da0fc331a 100644 --- a/generate_crossword/step_05_b/macos/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_05_b/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/generate_crossword/step_05_b/pubspec.yaml b/generate_crossword/step_05_b/pubspec.yaml index bb10d4cd49..9b4f7e67a8 100644 --- a/generate_crossword/step_05_b/pubspec.yaml +++ b/generate_crossword/step_05_b/pubspec.yaml @@ -4,27 +4,27 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter built_collection: ^5.1.1 - built_value: ^8.9.5 + built_value: ^8.10.1 characters: ^1.4.0 flutter_riverpod: ^2.6.1 intl: ^0.20.2 riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - two_dimensional_scrollables: ^0.3.4 + two_dimensional_scrollables: ^0.3.7 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - build_runner: ^2.4.15 - built_value_generator: ^8.9.5 - custom_lint: ^0.7.5 + build_runner: ^2.5.4 + built_value_generator: ^8.10.1 + custom_lint: ^0.7.6 riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 diff --git a/generate_crossword/step_05_c/.gemini/settings.json b/generate_crossword/step_05_c/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/generate_crossword/step_05_c/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/generate_crossword/step_05_c/.gitignore b/generate_crossword/step_05_c/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/generate_crossword/step_05_c/.gitignore +++ b/generate_crossword/step_05_c/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/generate_crossword/step_05_c/android/build.gradle.kts b/generate_crossword/step_05_c/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/generate_crossword/step_05_c/android/build.gradle.kts +++ b/generate_crossword/step_05_c/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/generate_crossword/step_05_c/android/settings.gradle.kts b/generate_crossword/step_05_c/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/generate_crossword/step_05_c/android/settings.gradle.kts +++ b/generate_crossword/step_05_c/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/generate_crossword/step_05_c/ios/Flutter/AppFrameworkInfo.plist b/generate_crossword/step_05_c/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/generate_crossword/step_05_c/ios/Flutter/AppFrameworkInfo.plist +++ b/generate_crossword/step_05_c/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/generate_crossword/step_05_c/ios/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_05_c/ios/Runner.xcodeproj/project.pbxproj index 0cb40440c1..4b54ab68d5 100644 --- a/generate_crossword/step_05_c/ios/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_05_c/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/generate_crossword/step_05_c/lib/model.g.dart b/generate_crossword/step_05_c/lib/model.g.dart index a4ddf76c65..fdce744073 100644 --- a/generate_crossword/step_05_c/lib/model.g.dart +++ b/generate_crossword/step_05_c/lib/model.g.dart @@ -7,29 +7,29 @@ part of 'model.dart'; // ************************************************************************** Serializers _$serializers = - (new Serializers().toBuilder() + (Serializers().toBuilder() ..add(Crossword.serializer) ..add(CrosswordCharacter.serializer) ..add(CrosswordWord.serializer) ..add(Location.serializer) ..addBuilderFactory( const FullType(BuiltList, const [const FullType(CrosswordWord)]), - () => new ListBuilder(), + () => ListBuilder(), ) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(Location), const FullType(CrosswordCharacter), ]), - () => new MapBuilder(), + () => MapBuilder(), )) .build(); -Serializer _$locationSerializer = new _$LocationSerializer(); +Serializer _$locationSerializer = _$LocationSerializer(); Serializer _$crosswordWordSerializer = - new _$CrosswordWordSerializer(); + _$CrosswordWordSerializer(); Serializer _$crosswordCharacterSerializer = - new _$CrosswordCharacterSerializer(); -Serializer _$crosswordSerializer = new _$CrosswordSerializer(); + _$CrosswordCharacterSerializer(); +Serializer _$crosswordSerializer = _$CrosswordSerializer(); class _$LocationSerializer implements StructuredSerializer { @override @@ -59,7 +59,7 @@ class _$LocationSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new LocationBuilder(); + final result = LocationBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -126,7 +126,7 @@ class _$CrosswordWordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordWordBuilder(); + final result = CrosswordWordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -218,7 +218,7 @@ class _$CrosswordCharacterSerializer Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordCharacterBuilder(); + final result = CrosswordCharacterBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -302,7 +302,7 @@ class _$CrosswordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordBuilder(); + final result = CrosswordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -362,19 +362,15 @@ class _$Location extends Location { final int y; factory _$Location([void Function(LocationBuilder)? updates]) => - (new LocationBuilder()..update(updates))._build(); - - _$Location._({required this.x, required this.y}) : super._() { - BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'); - BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'); - } + (LocationBuilder()..update(updates))._build(); + _$Location._({required this.x, required this.y}) : super._(); @override Location rebuild(void Function(LocationBuilder) updates) => (toBuilder()..update(updates)).build(); @override - LocationBuilder toBuilder() => new LocationBuilder()..replace(this); + LocationBuilder toBuilder() => LocationBuilder()..replace(this); @override bool operator ==(Object other) { @@ -425,7 +421,6 @@ class LocationBuilder implements Builder { @override void replace(Location other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Location; } @@ -440,7 +435,7 @@ class LocationBuilder implements Builder { _$Location _build() { final _$result = _$v ?? - new _$Location._( + _$Location._( x: BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'), y: BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'), ); @@ -458,32 +453,19 @@ class _$CrosswordWord extends CrosswordWord { final Direction direction; factory _$CrosswordWord([void Function(CrosswordWordBuilder)? updates]) => - (new CrosswordWordBuilder()..update(updates))._build(); + (CrosswordWordBuilder()..update(updates))._build(); _$CrosswordWord._({ required this.word, required this.location, required this.direction, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(word, r'CrosswordWord', 'word'); - BuiltValueNullFieldError.checkNotNull( - location, - r'CrosswordWord', - 'location', - ); - BuiltValueNullFieldError.checkNotNull( - direction, - r'CrosswordWord', - 'direction', - ); - } - + }) : super._(); @override CrosswordWord rebuild(void Function(CrosswordWordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordWordBuilder toBuilder() => new CrosswordWordBuilder()..replace(this); + CrosswordWordBuilder toBuilder() => CrosswordWordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -523,7 +505,7 @@ class CrosswordWordBuilder set word(String? word) => _$this._word = word; LocationBuilder? _location; - LocationBuilder get location => _$this._location ??= new LocationBuilder(); + LocationBuilder get location => _$this._location ??= LocationBuilder(); set location(LocationBuilder? location) => _$this._location = location; Direction? _direction; @@ -545,7 +527,6 @@ class CrosswordWordBuilder @override void replace(CrosswordWord other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordWord; } @@ -562,7 +543,7 @@ class CrosswordWordBuilder try { _$result = _$v ?? - new _$CrosswordWord._( + _$CrosswordWord._( word: BuiltValueNullFieldError.checkNotNull( word, r'CrosswordWord', @@ -581,7 +562,7 @@ class CrosswordWordBuilder _$failedField = 'location'; location.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordWord', _$failedField, e.toString(), @@ -604,20 +585,13 @@ class _$CrosswordCharacter extends CrosswordCharacter { factory _$CrosswordCharacter([ void Function(CrosswordCharacterBuilder)? updates, - ]) => (new CrosswordCharacterBuilder()..update(updates))._build(); + ]) => (CrosswordCharacterBuilder()..update(updates))._build(); _$CrosswordCharacter._({ required this.character, this.acrossWord, this.downWord, - }) : super._() { - BuiltValueNullFieldError.checkNotNull( - character, - r'CrosswordCharacter', - 'character', - ); - } - + }) : super._(); @override CrosswordCharacter rebuild( void Function(CrosswordCharacterBuilder) updates, @@ -625,7 +599,7 @@ class _$CrosswordCharacter extends CrosswordCharacter { @override CrosswordCharacterBuilder toBuilder() => - new CrosswordCharacterBuilder()..replace(this); + CrosswordCharacterBuilder()..replace(this); @override bool operator ==(Object other) { @@ -666,13 +640,13 @@ class CrosswordCharacterBuilder CrosswordWordBuilder? _acrossWord; CrosswordWordBuilder get acrossWord => - _$this._acrossWord ??= new CrosswordWordBuilder(); + _$this._acrossWord ??= CrosswordWordBuilder(); set acrossWord(CrosswordWordBuilder? acrossWord) => _$this._acrossWord = acrossWord; CrosswordWordBuilder? _downWord; CrosswordWordBuilder get downWord => - _$this._downWord ??= new CrosswordWordBuilder(); + _$this._downWord ??= CrosswordWordBuilder(); set downWord(CrosswordWordBuilder? downWord) => _$this._downWord = downWord; CrosswordCharacterBuilder(); @@ -690,7 +664,6 @@ class CrosswordCharacterBuilder @override void replace(CrosswordCharacter other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordCharacter; } @@ -707,7 +680,7 @@ class CrosswordCharacterBuilder try { _$result = _$v ?? - new _$CrosswordCharacter._( + _$CrosswordCharacter._( character: BuiltValueNullFieldError.checkNotNull( character, r'CrosswordCharacter', @@ -724,7 +697,7 @@ class CrosswordCharacterBuilder _$failedField = 'downWord'; _downWord?.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordCharacter', _$failedField, e.toString(), @@ -748,30 +721,20 @@ class _$Crossword extends Crossword { final BuiltMap characters; factory _$Crossword([void Function(CrosswordBuilder)? updates]) => - (new CrosswordBuilder()..update(updates))._build(); + (CrosswordBuilder()..update(updates))._build(); _$Crossword._({ required this.width, required this.height, required this.words, required this.characters, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(width, r'Crossword', 'width'); - BuiltValueNullFieldError.checkNotNull(height, r'Crossword', 'height'); - BuiltValueNullFieldError.checkNotNull(words, r'Crossword', 'words'); - BuiltValueNullFieldError.checkNotNull( - characters, - r'Crossword', - 'characters', - ); - } - + }) : super._(); @override Crossword rebuild(void Function(CrosswordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordBuilder toBuilder() => new CrosswordBuilder()..replace(this); + CrosswordBuilder toBuilder() => CrosswordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -818,12 +781,12 @@ class CrosswordBuilder implements Builder { ListBuilder? _words; ListBuilder get words => - _$this._words ??= new ListBuilder(); + _$this._words ??= ListBuilder(); set words(ListBuilder? words) => _$this._words = words; MapBuilder? _characters; MapBuilder get characters => - _$this._characters ??= new MapBuilder(); + _$this._characters ??= MapBuilder(); set characters(MapBuilder? characters) => _$this._characters = characters; @@ -843,7 +806,6 @@ class CrosswordBuilder implements Builder { @override void replace(Crossword other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Crossword; } @@ -861,7 +823,7 @@ class CrosswordBuilder implements Builder { try { _$result = _$v ?? - new _$Crossword._( + _$Crossword._( width: BuiltValueNullFieldError.checkNotNull( width, r'Crossword', @@ -883,7 +845,7 @@ class CrosswordBuilder implements Builder { _$failedField = 'characters'; characters.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'Crossword', _$failedField, e.toString(), diff --git a/generate_crossword/step_05_c/linux/runner/my_application.cc b/generate_crossword/step_05_c/linux/runner/my_application.cc index dbf3c88029..8d7170cbe5 100644 --- a/generate_crossword/step_05_c/linux/runner/my_application.cc +++ b/generate_crossword/step_05_c/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/generate_crossword/step_05_c/macos/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_05_c/macos/Runner.xcodeproj/project.pbxproj index 32b42372b9..0da0fc331a 100644 --- a/generate_crossword/step_05_c/macos/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_05_c/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/generate_crossword/step_05_c/pubspec.yaml b/generate_crossword/step_05_c/pubspec.yaml index bb10d4cd49..9b4f7e67a8 100644 --- a/generate_crossword/step_05_c/pubspec.yaml +++ b/generate_crossword/step_05_c/pubspec.yaml @@ -4,27 +4,27 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter built_collection: ^5.1.1 - built_value: ^8.9.5 + built_value: ^8.10.1 characters: ^1.4.0 flutter_riverpod: ^2.6.1 intl: ^0.20.2 riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - two_dimensional_scrollables: ^0.3.4 + two_dimensional_scrollables: ^0.3.7 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - build_runner: ^2.4.15 - built_value_generator: ^8.9.5 - custom_lint: ^0.7.5 + build_runner: ^2.5.4 + built_value_generator: ^8.10.1 + custom_lint: ^0.7.6 riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 diff --git a/generate_crossword/step_06/.gemini/settings.json b/generate_crossword/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/generate_crossword/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/generate_crossword/step_06/.gitignore b/generate_crossword/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/generate_crossword/step_06/.gitignore +++ b/generate_crossword/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/generate_crossword/step_06/android/build.gradle.kts b/generate_crossword/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/generate_crossword/step_06/android/build.gradle.kts +++ b/generate_crossword/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/generate_crossword/step_06/android/settings.gradle.kts b/generate_crossword/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/generate_crossword/step_06/android/settings.gradle.kts +++ b/generate_crossword/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/generate_crossword/step_06/ios/Flutter/AppFrameworkInfo.plist b/generate_crossword/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/generate_crossword/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/generate_crossword/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/generate_crossword/step_06/ios/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_06/ios/Runner.xcodeproj/project.pbxproj index 0cb40440c1..4b54ab68d5 100644 --- a/generate_crossword/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/generate_crossword/step_06/lib/model.g.dart b/generate_crossword/step_06/lib/model.g.dart index ac2ab54c78..1758af3933 100644 --- a/generate_crossword/step_06/lib/model.g.dart +++ b/generate_crossword/step_06/lib/model.g.dart @@ -7,7 +7,7 @@ part of 'model.dart'; // ************************************************************************** Serializers _$serializers = - (new Serializers().toBuilder() + (Serializers().toBuilder() ..add(Crossword.serializer) ..add(CrosswordCharacter.serializer) ..add(CrosswordWord.serializer) @@ -15,38 +15,38 @@ Serializers _$serializers = ..add(WorkQueue.serializer) ..addBuilderFactory( const FullType(BuiltList, const [const FullType(CrosswordWord)]), - () => new ListBuilder(), + () => ListBuilder(), ) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(Location), const FullType(CrosswordCharacter), ]), - () => new MapBuilder(), + () => MapBuilder(), ) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(Location), const FullType(Direction), ]), - () => new MapBuilder(), + () => MapBuilder(), ) ..addBuilderFactory( const FullType(BuiltSet, const [const FullType(Location)]), - () => new SetBuilder(), + () => SetBuilder(), ) ..addBuilderFactory( const FullType(BuiltSet, const [const FullType(String)]), - () => new SetBuilder(), + () => SetBuilder(), )) .build(); -Serializer _$locationSerializer = new _$LocationSerializer(); +Serializer _$locationSerializer = _$LocationSerializer(); Serializer _$crosswordWordSerializer = - new _$CrosswordWordSerializer(); + _$CrosswordWordSerializer(); Serializer _$crosswordCharacterSerializer = - new _$CrosswordCharacterSerializer(); -Serializer _$crosswordSerializer = new _$CrosswordSerializer(); -Serializer _$workQueueSerializer = new _$WorkQueueSerializer(); + _$CrosswordCharacterSerializer(); +Serializer _$crosswordSerializer = _$CrosswordSerializer(); +Serializer _$workQueueSerializer = _$WorkQueueSerializer(); class _$LocationSerializer implements StructuredSerializer { @override @@ -76,7 +76,7 @@ class _$LocationSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new LocationBuilder(); + final result = LocationBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -143,7 +143,7 @@ class _$CrosswordWordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordWordBuilder(); + final result = CrosswordWordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -235,7 +235,7 @@ class _$CrosswordCharacterSerializer Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordCharacterBuilder(); + final result = CrosswordCharacterBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -319,7 +319,7 @@ class _$CrosswordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordBuilder(); + final result = CrosswordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -421,7 +421,7 @@ class _$WorkQueueSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new WorkQueueBuilder(); + final result = WorkQueueBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -485,19 +485,15 @@ class _$Location extends Location { final int y; factory _$Location([void Function(LocationBuilder)? updates]) => - (new LocationBuilder()..update(updates))._build(); - - _$Location._({required this.x, required this.y}) : super._() { - BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'); - BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'); - } + (LocationBuilder()..update(updates))._build(); + _$Location._({required this.x, required this.y}) : super._(); @override Location rebuild(void Function(LocationBuilder) updates) => (toBuilder()..update(updates)).build(); @override - LocationBuilder toBuilder() => new LocationBuilder()..replace(this); + LocationBuilder toBuilder() => LocationBuilder()..replace(this); @override bool operator ==(Object other) { @@ -548,7 +544,6 @@ class LocationBuilder implements Builder { @override void replace(Location other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Location; } @@ -563,7 +558,7 @@ class LocationBuilder implements Builder { _$Location _build() { final _$result = _$v ?? - new _$Location._( + _$Location._( x: BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'), y: BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'), ); @@ -581,32 +576,19 @@ class _$CrosswordWord extends CrosswordWord { final Direction direction; factory _$CrosswordWord([void Function(CrosswordWordBuilder)? updates]) => - (new CrosswordWordBuilder()..update(updates))._build(); + (CrosswordWordBuilder()..update(updates))._build(); _$CrosswordWord._({ required this.word, required this.location, required this.direction, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(word, r'CrosswordWord', 'word'); - BuiltValueNullFieldError.checkNotNull( - location, - r'CrosswordWord', - 'location', - ); - BuiltValueNullFieldError.checkNotNull( - direction, - r'CrosswordWord', - 'direction', - ); - } - + }) : super._(); @override CrosswordWord rebuild(void Function(CrosswordWordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordWordBuilder toBuilder() => new CrosswordWordBuilder()..replace(this); + CrosswordWordBuilder toBuilder() => CrosswordWordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -646,7 +628,7 @@ class CrosswordWordBuilder set word(String? word) => _$this._word = word; LocationBuilder? _location; - LocationBuilder get location => _$this._location ??= new LocationBuilder(); + LocationBuilder get location => _$this._location ??= LocationBuilder(); set location(LocationBuilder? location) => _$this._location = location; Direction? _direction; @@ -668,7 +650,6 @@ class CrosswordWordBuilder @override void replace(CrosswordWord other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordWord; } @@ -685,7 +666,7 @@ class CrosswordWordBuilder try { _$result = _$v ?? - new _$CrosswordWord._( + _$CrosswordWord._( word: BuiltValueNullFieldError.checkNotNull( word, r'CrosswordWord', @@ -704,7 +685,7 @@ class CrosswordWordBuilder _$failedField = 'location'; location.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordWord', _$failedField, e.toString(), @@ -727,20 +708,13 @@ class _$CrosswordCharacter extends CrosswordCharacter { factory _$CrosswordCharacter([ void Function(CrosswordCharacterBuilder)? updates, - ]) => (new CrosswordCharacterBuilder()..update(updates))._build(); + ]) => (CrosswordCharacterBuilder()..update(updates))._build(); _$CrosswordCharacter._({ required this.character, this.acrossWord, this.downWord, - }) : super._() { - BuiltValueNullFieldError.checkNotNull( - character, - r'CrosswordCharacter', - 'character', - ); - } - + }) : super._(); @override CrosswordCharacter rebuild( void Function(CrosswordCharacterBuilder) updates, @@ -748,7 +722,7 @@ class _$CrosswordCharacter extends CrosswordCharacter { @override CrosswordCharacterBuilder toBuilder() => - new CrosswordCharacterBuilder()..replace(this); + CrosswordCharacterBuilder()..replace(this); @override bool operator ==(Object other) { @@ -789,13 +763,13 @@ class CrosswordCharacterBuilder CrosswordWordBuilder? _acrossWord; CrosswordWordBuilder get acrossWord => - _$this._acrossWord ??= new CrosswordWordBuilder(); + _$this._acrossWord ??= CrosswordWordBuilder(); set acrossWord(CrosswordWordBuilder? acrossWord) => _$this._acrossWord = acrossWord; CrosswordWordBuilder? _downWord; CrosswordWordBuilder get downWord => - _$this._downWord ??= new CrosswordWordBuilder(); + _$this._downWord ??= CrosswordWordBuilder(); set downWord(CrosswordWordBuilder? downWord) => _$this._downWord = downWord; CrosswordCharacterBuilder(); @@ -813,7 +787,6 @@ class CrosswordCharacterBuilder @override void replace(CrosswordCharacter other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordCharacter; } @@ -830,7 +803,7 @@ class CrosswordCharacterBuilder try { _$result = _$v ?? - new _$CrosswordCharacter._( + _$CrosswordCharacter._( character: BuiltValueNullFieldError.checkNotNull( character, r'CrosswordCharacter', @@ -847,7 +820,7 @@ class CrosswordCharacterBuilder _$failedField = 'downWord'; _downWord?.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordCharacter', _$failedField, e.toString(), @@ -871,30 +844,20 @@ class _$Crossword extends Crossword { final BuiltMap characters; factory _$Crossword([void Function(CrosswordBuilder)? updates]) => - (new CrosswordBuilder()..update(updates))._build(); + (CrosswordBuilder()..update(updates))._build(); _$Crossword._({ required this.width, required this.height, required this.words, required this.characters, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(width, r'Crossword', 'width'); - BuiltValueNullFieldError.checkNotNull(height, r'Crossword', 'height'); - BuiltValueNullFieldError.checkNotNull(words, r'Crossword', 'words'); - BuiltValueNullFieldError.checkNotNull( - characters, - r'Crossword', - 'characters', - ); - } - + }) : super._(); @override Crossword rebuild(void Function(CrosswordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordBuilder toBuilder() => new CrosswordBuilder()..replace(this); + CrosswordBuilder toBuilder() => CrosswordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -941,12 +904,12 @@ class CrosswordBuilder implements Builder { ListBuilder? _words; ListBuilder get words => - _$this._words ??= new ListBuilder(); + _$this._words ??= ListBuilder(); set words(ListBuilder? words) => _$this._words = words; MapBuilder? _characters; MapBuilder get characters => - _$this._characters ??= new MapBuilder(); + _$this._characters ??= MapBuilder(); set characters(MapBuilder? characters) => _$this._characters = characters; @@ -966,7 +929,6 @@ class CrosswordBuilder implements Builder { @override void replace(Crossword other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Crossword; } @@ -984,7 +946,7 @@ class CrosswordBuilder implements Builder { try { _$result = _$v ?? - new _$Crossword._( + _$Crossword._( width: BuiltValueNullFieldError.checkNotNull( width, r'Crossword', @@ -1006,7 +968,7 @@ class CrosswordBuilder implements Builder { _$failedField = 'characters'; characters.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'Crossword', _$failedField, e.toString(), @@ -1030,38 +992,20 @@ class _$WorkQueue extends WorkQueue { final BuiltSet candidateWords; factory _$WorkQueue([void Function(WorkQueueBuilder)? updates]) => - (new WorkQueueBuilder()..update(updates))._build(); + (WorkQueueBuilder()..update(updates))._build(); _$WorkQueue._({ required this.crossword, required this.locationsToTry, required this.badLocations, required this.candidateWords, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(crossword, r'WorkQueue', 'crossword'); - BuiltValueNullFieldError.checkNotNull( - locationsToTry, - r'WorkQueue', - 'locationsToTry', - ); - BuiltValueNullFieldError.checkNotNull( - badLocations, - r'WorkQueue', - 'badLocations', - ); - BuiltValueNullFieldError.checkNotNull( - candidateWords, - r'WorkQueue', - 'candidateWords', - ); - } - + }) : super._(); @override WorkQueue rebuild(void Function(WorkQueueBuilder) updates) => (toBuilder()..update(updates)).build(); @override - WorkQueueBuilder toBuilder() => new WorkQueueBuilder()..replace(this); + WorkQueueBuilder toBuilder() => WorkQueueBuilder()..replace(this); @override bool operator ==(Object other) { @@ -1099,25 +1043,24 @@ class WorkQueueBuilder implements Builder { _$WorkQueue? _$v; CrosswordBuilder? _crossword; - CrosswordBuilder get crossword => - _$this._crossword ??= new CrosswordBuilder(); + CrosswordBuilder get crossword => _$this._crossword ??= CrosswordBuilder(); set crossword(CrosswordBuilder? crossword) => _$this._crossword = crossword; MapBuilder? _locationsToTry; MapBuilder get locationsToTry => - _$this._locationsToTry ??= new MapBuilder(); + _$this._locationsToTry ??= MapBuilder(); set locationsToTry(MapBuilder? locationsToTry) => _$this._locationsToTry = locationsToTry; SetBuilder? _badLocations; SetBuilder get badLocations => - _$this._badLocations ??= new SetBuilder(); + _$this._badLocations ??= SetBuilder(); set badLocations(SetBuilder? badLocations) => _$this._badLocations = badLocations; SetBuilder? _candidateWords; SetBuilder get candidateWords => - _$this._candidateWords ??= new SetBuilder(); + _$this._candidateWords ??= SetBuilder(); set candidateWords(SetBuilder? candidateWords) => _$this._candidateWords = candidateWords; @@ -1137,7 +1080,6 @@ class WorkQueueBuilder implements Builder { @override void replace(WorkQueue other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$WorkQueue; } @@ -1154,7 +1096,7 @@ class WorkQueueBuilder implements Builder { try { _$result = _$v ?? - new _$WorkQueue._( + _$WorkQueue._( crossword: crossword.build(), locationsToTry: locationsToTry.build(), badLocations: badLocations.build(), @@ -1172,7 +1114,7 @@ class WorkQueueBuilder implements Builder { _$failedField = 'candidateWords'; candidateWords.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'WorkQueue', _$failedField, e.toString(), diff --git a/generate_crossword/step_06/linux/runner/my_application.cc b/generate_crossword/step_06/linux/runner/my_application.cc index dbf3c88029..8d7170cbe5 100644 --- a/generate_crossword/step_06/linux/runner/my_application.cc +++ b/generate_crossword/step_06/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/generate_crossword/step_06/macos/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_06/macos/Runner.xcodeproj/project.pbxproj index 32b42372b9..0da0fc331a 100644 --- a/generate_crossword/step_06/macos/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_06/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/generate_crossword/step_06/pubspec.yaml b/generate_crossword/step_06/pubspec.yaml index bb10d4cd49..9b4f7e67a8 100644 --- a/generate_crossword/step_06/pubspec.yaml +++ b/generate_crossword/step_06/pubspec.yaml @@ -4,27 +4,27 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter built_collection: ^5.1.1 - built_value: ^8.9.5 + built_value: ^8.10.1 characters: ^1.4.0 flutter_riverpod: ^2.6.1 intl: ^0.20.2 riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - two_dimensional_scrollables: ^0.3.4 + two_dimensional_scrollables: ^0.3.7 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - build_runner: ^2.4.15 - built_value_generator: ^8.9.5 - custom_lint: ^0.7.5 + build_runner: ^2.5.4 + built_value_generator: ^8.10.1 + custom_lint: ^0.7.6 riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 diff --git a/generate_crossword/step_07/.gemini/settings.json b/generate_crossword/step_07/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/generate_crossword/step_07/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/generate_crossword/step_07/.gitignore b/generate_crossword/step_07/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/generate_crossword/step_07/.gitignore +++ b/generate_crossword/step_07/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/generate_crossword/step_07/android/build.gradle.kts b/generate_crossword/step_07/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/generate_crossword/step_07/android/build.gradle.kts +++ b/generate_crossword/step_07/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/generate_crossword/step_07/android/settings.gradle.kts b/generate_crossword/step_07/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/generate_crossword/step_07/android/settings.gradle.kts +++ b/generate_crossword/step_07/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/generate_crossword/step_07/ios/Flutter/AppFrameworkInfo.plist b/generate_crossword/step_07/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/generate_crossword/step_07/ios/Flutter/AppFrameworkInfo.plist +++ b/generate_crossword/step_07/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/generate_crossword/step_07/ios/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_07/ios/Runner.xcodeproj/project.pbxproj index 0cb40440c1..4b54ab68d5 100644 --- a/generate_crossword/step_07/ios/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_07/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/generate_crossword/step_07/lib/model.g.dart b/generate_crossword/step_07/lib/model.g.dart index f10a37ad34..f79b7fa80e 100644 --- a/generate_crossword/step_07/lib/model.g.dart +++ b/generate_crossword/step_07/lib/model.g.dart @@ -7,7 +7,7 @@ part of 'model.dart'; // ************************************************************************** Serializers _$serializers = - (new Serializers().toBuilder() + (Serializers().toBuilder() ..add(Crossword.serializer) ..add(CrosswordCharacter.serializer) ..add(CrosswordWord.serializer) @@ -16,39 +16,39 @@ Serializers _$serializers = ..add(WorkQueue.serializer) ..addBuilderFactory( const FullType(BuiltList, const [const FullType(CrosswordWord)]), - () => new ListBuilder(), + () => ListBuilder(), ) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(Location), const FullType(CrosswordCharacter), ]), - () => new MapBuilder(), + () => MapBuilder(), ) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(Location), const FullType(Direction), ]), - () => new MapBuilder(), + () => MapBuilder(), ) ..addBuilderFactory( const FullType(BuiltSet, const [const FullType(Location)]), - () => new SetBuilder(), + () => SetBuilder(), ) ..addBuilderFactory( const FullType(BuiltSet, const [const FullType(String)]), - () => new SetBuilder(), + () => SetBuilder(), )) .build(); -Serializer _$locationSerializer = new _$LocationSerializer(); +Serializer _$locationSerializer = _$LocationSerializer(); Serializer _$crosswordWordSerializer = - new _$CrosswordWordSerializer(); + _$CrosswordWordSerializer(); Serializer _$crosswordCharacterSerializer = - new _$CrosswordCharacterSerializer(); -Serializer _$crosswordSerializer = new _$CrosswordSerializer(); -Serializer _$workQueueSerializer = new _$WorkQueueSerializer(); -Serializer _$displayInfoSerializer = new _$DisplayInfoSerializer(); + _$CrosswordCharacterSerializer(); +Serializer _$crosswordSerializer = _$CrosswordSerializer(); +Serializer _$workQueueSerializer = _$WorkQueueSerializer(); +Serializer _$displayInfoSerializer = _$DisplayInfoSerializer(); class _$LocationSerializer implements StructuredSerializer { @override @@ -78,7 +78,7 @@ class _$LocationSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new LocationBuilder(); + final result = LocationBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -145,7 +145,7 @@ class _$CrosswordWordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordWordBuilder(); + final result = CrosswordWordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -237,7 +237,7 @@ class _$CrosswordCharacterSerializer Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordCharacterBuilder(); + final result = CrosswordCharacterBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -321,7 +321,7 @@ class _$CrosswordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordBuilder(); + final result = CrosswordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -423,7 +423,7 @@ class _$WorkQueueSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new WorkQueueBuilder(); + final result = WorkQueueBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -529,7 +529,7 @@ class _$DisplayInfoSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new DisplayInfoBuilder(); + final result = DisplayInfoBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -591,19 +591,15 @@ class _$Location extends Location { final int y; factory _$Location([void Function(LocationBuilder)? updates]) => - (new LocationBuilder()..update(updates))._build(); - - _$Location._({required this.x, required this.y}) : super._() { - BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'); - BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'); - } + (LocationBuilder()..update(updates))._build(); + _$Location._({required this.x, required this.y}) : super._(); @override Location rebuild(void Function(LocationBuilder) updates) => (toBuilder()..update(updates)).build(); @override - LocationBuilder toBuilder() => new LocationBuilder()..replace(this); + LocationBuilder toBuilder() => LocationBuilder()..replace(this); @override bool operator ==(Object other) { @@ -654,7 +650,6 @@ class LocationBuilder implements Builder { @override void replace(Location other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Location; } @@ -669,7 +664,7 @@ class LocationBuilder implements Builder { _$Location _build() { final _$result = _$v ?? - new _$Location._( + _$Location._( x: BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'), y: BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'), ); @@ -687,32 +682,19 @@ class _$CrosswordWord extends CrosswordWord { final Direction direction; factory _$CrosswordWord([void Function(CrosswordWordBuilder)? updates]) => - (new CrosswordWordBuilder()..update(updates))._build(); + (CrosswordWordBuilder()..update(updates))._build(); _$CrosswordWord._({ required this.word, required this.location, required this.direction, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(word, r'CrosswordWord', 'word'); - BuiltValueNullFieldError.checkNotNull( - location, - r'CrosswordWord', - 'location', - ); - BuiltValueNullFieldError.checkNotNull( - direction, - r'CrosswordWord', - 'direction', - ); - } - + }) : super._(); @override CrosswordWord rebuild(void Function(CrosswordWordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordWordBuilder toBuilder() => new CrosswordWordBuilder()..replace(this); + CrosswordWordBuilder toBuilder() => CrosswordWordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -752,7 +734,7 @@ class CrosswordWordBuilder set word(String? word) => _$this._word = word; LocationBuilder? _location; - LocationBuilder get location => _$this._location ??= new LocationBuilder(); + LocationBuilder get location => _$this._location ??= LocationBuilder(); set location(LocationBuilder? location) => _$this._location = location; Direction? _direction; @@ -774,7 +756,6 @@ class CrosswordWordBuilder @override void replace(CrosswordWord other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordWord; } @@ -791,7 +772,7 @@ class CrosswordWordBuilder try { _$result = _$v ?? - new _$CrosswordWord._( + _$CrosswordWord._( word: BuiltValueNullFieldError.checkNotNull( word, r'CrosswordWord', @@ -810,7 +791,7 @@ class CrosswordWordBuilder _$failedField = 'location'; location.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordWord', _$failedField, e.toString(), @@ -833,20 +814,13 @@ class _$CrosswordCharacter extends CrosswordCharacter { factory _$CrosswordCharacter([ void Function(CrosswordCharacterBuilder)? updates, - ]) => (new CrosswordCharacterBuilder()..update(updates))._build(); + ]) => (CrosswordCharacterBuilder()..update(updates))._build(); _$CrosswordCharacter._({ required this.character, this.acrossWord, this.downWord, - }) : super._() { - BuiltValueNullFieldError.checkNotNull( - character, - r'CrosswordCharacter', - 'character', - ); - } - + }) : super._(); @override CrosswordCharacter rebuild( void Function(CrosswordCharacterBuilder) updates, @@ -854,7 +828,7 @@ class _$CrosswordCharacter extends CrosswordCharacter { @override CrosswordCharacterBuilder toBuilder() => - new CrosswordCharacterBuilder()..replace(this); + CrosswordCharacterBuilder()..replace(this); @override bool operator ==(Object other) { @@ -895,13 +869,13 @@ class CrosswordCharacterBuilder CrosswordWordBuilder? _acrossWord; CrosswordWordBuilder get acrossWord => - _$this._acrossWord ??= new CrosswordWordBuilder(); + _$this._acrossWord ??= CrosswordWordBuilder(); set acrossWord(CrosswordWordBuilder? acrossWord) => _$this._acrossWord = acrossWord; CrosswordWordBuilder? _downWord; CrosswordWordBuilder get downWord => - _$this._downWord ??= new CrosswordWordBuilder(); + _$this._downWord ??= CrosswordWordBuilder(); set downWord(CrosswordWordBuilder? downWord) => _$this._downWord = downWord; CrosswordCharacterBuilder(); @@ -919,7 +893,6 @@ class CrosswordCharacterBuilder @override void replace(CrosswordCharacter other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordCharacter; } @@ -936,7 +909,7 @@ class CrosswordCharacterBuilder try { _$result = _$v ?? - new _$CrosswordCharacter._( + _$CrosswordCharacter._( character: BuiltValueNullFieldError.checkNotNull( character, r'CrosswordCharacter', @@ -953,7 +926,7 @@ class CrosswordCharacterBuilder _$failedField = 'downWord'; _downWord?.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordCharacter', _$failedField, e.toString(), @@ -977,30 +950,20 @@ class _$Crossword extends Crossword { final BuiltMap characters; factory _$Crossword([void Function(CrosswordBuilder)? updates]) => - (new CrosswordBuilder()..update(updates))._build(); + (CrosswordBuilder()..update(updates))._build(); _$Crossword._({ required this.width, required this.height, required this.words, required this.characters, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(width, r'Crossword', 'width'); - BuiltValueNullFieldError.checkNotNull(height, r'Crossword', 'height'); - BuiltValueNullFieldError.checkNotNull(words, r'Crossword', 'words'); - BuiltValueNullFieldError.checkNotNull( - characters, - r'Crossword', - 'characters', - ); - } - + }) : super._(); @override Crossword rebuild(void Function(CrosswordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordBuilder toBuilder() => new CrosswordBuilder()..replace(this); + CrosswordBuilder toBuilder() => CrosswordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -1047,12 +1010,12 @@ class CrosswordBuilder implements Builder { ListBuilder? _words; ListBuilder get words => - _$this._words ??= new ListBuilder(); + _$this._words ??= ListBuilder(); set words(ListBuilder? words) => _$this._words = words; MapBuilder? _characters; MapBuilder get characters => - _$this._characters ??= new MapBuilder(); + _$this._characters ??= MapBuilder(); set characters(MapBuilder? characters) => _$this._characters = characters; @@ -1072,7 +1035,6 @@ class CrosswordBuilder implements Builder { @override void replace(Crossword other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Crossword; } @@ -1090,7 +1052,7 @@ class CrosswordBuilder implements Builder { try { _$result = _$v ?? - new _$Crossword._( + _$Crossword._( width: BuiltValueNullFieldError.checkNotNull( width, r'Crossword', @@ -1112,7 +1074,7 @@ class CrosswordBuilder implements Builder { _$failedField = 'characters'; characters.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'Crossword', _$failedField, e.toString(), @@ -1136,38 +1098,20 @@ class _$WorkQueue extends WorkQueue { final BuiltSet candidateWords; factory _$WorkQueue([void Function(WorkQueueBuilder)? updates]) => - (new WorkQueueBuilder()..update(updates))._build(); + (WorkQueueBuilder()..update(updates))._build(); _$WorkQueue._({ required this.crossword, required this.locationsToTry, required this.badLocations, required this.candidateWords, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(crossword, r'WorkQueue', 'crossword'); - BuiltValueNullFieldError.checkNotNull( - locationsToTry, - r'WorkQueue', - 'locationsToTry', - ); - BuiltValueNullFieldError.checkNotNull( - badLocations, - r'WorkQueue', - 'badLocations', - ); - BuiltValueNullFieldError.checkNotNull( - candidateWords, - r'WorkQueue', - 'candidateWords', - ); - } - + }) : super._(); @override WorkQueue rebuild(void Function(WorkQueueBuilder) updates) => (toBuilder()..update(updates)).build(); @override - WorkQueueBuilder toBuilder() => new WorkQueueBuilder()..replace(this); + WorkQueueBuilder toBuilder() => WorkQueueBuilder()..replace(this); @override bool operator ==(Object other) { @@ -1205,25 +1149,24 @@ class WorkQueueBuilder implements Builder { _$WorkQueue? _$v; CrosswordBuilder? _crossword; - CrosswordBuilder get crossword => - _$this._crossword ??= new CrosswordBuilder(); + CrosswordBuilder get crossword => _$this._crossword ??= CrosswordBuilder(); set crossword(CrosswordBuilder? crossword) => _$this._crossword = crossword; MapBuilder? _locationsToTry; MapBuilder get locationsToTry => - _$this._locationsToTry ??= new MapBuilder(); + _$this._locationsToTry ??= MapBuilder(); set locationsToTry(MapBuilder? locationsToTry) => _$this._locationsToTry = locationsToTry; SetBuilder? _badLocations; SetBuilder get badLocations => - _$this._badLocations ??= new SetBuilder(); + _$this._badLocations ??= SetBuilder(); set badLocations(SetBuilder? badLocations) => _$this._badLocations = badLocations; SetBuilder? _candidateWords; SetBuilder get candidateWords => - _$this._candidateWords ??= new SetBuilder(); + _$this._candidateWords ??= SetBuilder(); set candidateWords(SetBuilder? candidateWords) => _$this._candidateWords = candidateWords; @@ -1243,7 +1186,6 @@ class WorkQueueBuilder implements Builder { @override void replace(WorkQueue other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$WorkQueue; } @@ -1260,7 +1202,7 @@ class WorkQueueBuilder implements Builder { try { _$result = _$v ?? - new _$WorkQueue._( + _$WorkQueue._( crossword: crossword.build(), locationsToTry: locationsToTry.build(), badLocations: badLocations.build(), @@ -1278,7 +1220,7 @@ class WorkQueueBuilder implements Builder { _$failedField = 'candidateWords'; candidateWords.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'WorkQueue', _$failedField, e.toString(), @@ -1304,7 +1246,7 @@ class _$DisplayInfo extends DisplayInfo { final String gridFilledPercentage; factory _$DisplayInfo([void Function(DisplayInfoBuilder)? updates]) => - (new DisplayInfoBuilder()..update(updates))._build(); + (DisplayInfoBuilder()..update(updates))._build(); _$DisplayInfo._({ required this.wordsInGridCount, @@ -1312,40 +1254,13 @@ class _$DisplayInfo extends DisplayInfo { required this.locationsToExploreCount, required this.knownBadLocationsCount, required this.gridFilledPercentage, - }) : super._() { - BuiltValueNullFieldError.checkNotNull( - wordsInGridCount, - r'DisplayInfo', - 'wordsInGridCount', - ); - BuiltValueNullFieldError.checkNotNull( - candidateWordsCount, - r'DisplayInfo', - 'candidateWordsCount', - ); - BuiltValueNullFieldError.checkNotNull( - locationsToExploreCount, - r'DisplayInfo', - 'locationsToExploreCount', - ); - BuiltValueNullFieldError.checkNotNull( - knownBadLocationsCount, - r'DisplayInfo', - 'knownBadLocationsCount', - ); - BuiltValueNullFieldError.checkNotNull( - gridFilledPercentage, - r'DisplayInfo', - 'gridFilledPercentage', - ); - } - + }) : super._(); @override DisplayInfo rebuild(void Function(DisplayInfoBuilder) updates) => (toBuilder()..update(updates)).build(); @override - DisplayInfoBuilder toBuilder() => new DisplayInfoBuilder()..replace(this); + DisplayInfoBuilder toBuilder() => DisplayInfoBuilder()..replace(this); @override bool operator ==(Object other) { @@ -1427,7 +1342,6 @@ class DisplayInfoBuilder implements Builder { @override void replace(DisplayInfo other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$DisplayInfo; } @@ -1442,7 +1356,7 @@ class DisplayInfoBuilder implements Builder { _$DisplayInfo _build() { final _$result = _$v ?? - new _$DisplayInfo._( + _$DisplayInfo._( wordsInGridCount: BuiltValueNullFieldError.checkNotNull( wordsInGridCount, r'DisplayInfo', diff --git a/generate_crossword/step_07/linux/runner/my_application.cc b/generate_crossword/step_07/linux/runner/my_application.cc index dbf3c88029..8d7170cbe5 100644 --- a/generate_crossword/step_07/linux/runner/my_application.cc +++ b/generate_crossword/step_07/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/generate_crossword/step_07/macos/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_07/macos/Runner.xcodeproj/project.pbxproj index 32b42372b9..0da0fc331a 100644 --- a/generate_crossword/step_07/macos/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_07/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/generate_crossword/step_07/pubspec.yaml b/generate_crossword/step_07/pubspec.yaml index bb10d4cd49..9b4f7e67a8 100644 --- a/generate_crossword/step_07/pubspec.yaml +++ b/generate_crossword/step_07/pubspec.yaml @@ -4,27 +4,27 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter built_collection: ^5.1.1 - built_value: ^8.9.5 + built_value: ^8.10.1 characters: ^1.4.0 flutter_riverpod: ^2.6.1 intl: ^0.20.2 riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - two_dimensional_scrollables: ^0.3.4 + two_dimensional_scrollables: ^0.3.7 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - build_runner: ^2.4.15 - built_value_generator: ^8.9.5 - custom_lint: ^0.7.5 + build_runner: ^2.5.4 + built_value_generator: ^8.10.1 + custom_lint: ^0.7.6 riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 diff --git a/generate_crossword/step_08/.gemini/settings.json b/generate_crossword/step_08/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/generate_crossword/step_08/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/generate_crossword/step_08/.gitignore b/generate_crossword/step_08/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/generate_crossword/step_08/.gitignore +++ b/generate_crossword/step_08/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/generate_crossword/step_08/android/build.gradle.kts b/generate_crossword/step_08/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/generate_crossword/step_08/android/build.gradle.kts +++ b/generate_crossword/step_08/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/generate_crossword/step_08/android/settings.gradle.kts b/generate_crossword/step_08/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/generate_crossword/step_08/android/settings.gradle.kts +++ b/generate_crossword/step_08/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/generate_crossword/step_08/ios/Flutter/AppFrameworkInfo.plist b/generate_crossword/step_08/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/generate_crossword/step_08/ios/Flutter/AppFrameworkInfo.plist +++ b/generate_crossword/step_08/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/generate_crossword/step_08/ios/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_08/ios/Runner.xcodeproj/project.pbxproj index 0cb40440c1..4b54ab68d5 100644 --- a/generate_crossword/step_08/ios/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_08/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/generate_crossword/step_08/lib/model.g.dart b/generate_crossword/step_08/lib/model.g.dart index f10a37ad34..f79b7fa80e 100644 --- a/generate_crossword/step_08/lib/model.g.dart +++ b/generate_crossword/step_08/lib/model.g.dart @@ -7,7 +7,7 @@ part of 'model.dart'; // ************************************************************************** Serializers _$serializers = - (new Serializers().toBuilder() + (Serializers().toBuilder() ..add(Crossword.serializer) ..add(CrosswordCharacter.serializer) ..add(CrosswordWord.serializer) @@ -16,39 +16,39 @@ Serializers _$serializers = ..add(WorkQueue.serializer) ..addBuilderFactory( const FullType(BuiltList, const [const FullType(CrosswordWord)]), - () => new ListBuilder(), + () => ListBuilder(), ) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(Location), const FullType(CrosswordCharacter), ]), - () => new MapBuilder(), + () => MapBuilder(), ) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(Location), const FullType(Direction), ]), - () => new MapBuilder(), + () => MapBuilder(), ) ..addBuilderFactory( const FullType(BuiltSet, const [const FullType(Location)]), - () => new SetBuilder(), + () => SetBuilder(), ) ..addBuilderFactory( const FullType(BuiltSet, const [const FullType(String)]), - () => new SetBuilder(), + () => SetBuilder(), )) .build(); -Serializer _$locationSerializer = new _$LocationSerializer(); +Serializer _$locationSerializer = _$LocationSerializer(); Serializer _$crosswordWordSerializer = - new _$CrosswordWordSerializer(); + _$CrosswordWordSerializer(); Serializer _$crosswordCharacterSerializer = - new _$CrosswordCharacterSerializer(); -Serializer _$crosswordSerializer = new _$CrosswordSerializer(); -Serializer _$workQueueSerializer = new _$WorkQueueSerializer(); -Serializer _$displayInfoSerializer = new _$DisplayInfoSerializer(); + _$CrosswordCharacterSerializer(); +Serializer _$crosswordSerializer = _$CrosswordSerializer(); +Serializer _$workQueueSerializer = _$WorkQueueSerializer(); +Serializer _$displayInfoSerializer = _$DisplayInfoSerializer(); class _$LocationSerializer implements StructuredSerializer { @override @@ -78,7 +78,7 @@ class _$LocationSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new LocationBuilder(); + final result = LocationBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -145,7 +145,7 @@ class _$CrosswordWordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordWordBuilder(); + final result = CrosswordWordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -237,7 +237,7 @@ class _$CrosswordCharacterSerializer Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordCharacterBuilder(); + final result = CrosswordCharacterBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -321,7 +321,7 @@ class _$CrosswordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordBuilder(); + final result = CrosswordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -423,7 +423,7 @@ class _$WorkQueueSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new WorkQueueBuilder(); + final result = WorkQueueBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -529,7 +529,7 @@ class _$DisplayInfoSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new DisplayInfoBuilder(); + final result = DisplayInfoBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -591,19 +591,15 @@ class _$Location extends Location { final int y; factory _$Location([void Function(LocationBuilder)? updates]) => - (new LocationBuilder()..update(updates))._build(); - - _$Location._({required this.x, required this.y}) : super._() { - BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'); - BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'); - } + (LocationBuilder()..update(updates))._build(); + _$Location._({required this.x, required this.y}) : super._(); @override Location rebuild(void Function(LocationBuilder) updates) => (toBuilder()..update(updates)).build(); @override - LocationBuilder toBuilder() => new LocationBuilder()..replace(this); + LocationBuilder toBuilder() => LocationBuilder()..replace(this); @override bool operator ==(Object other) { @@ -654,7 +650,6 @@ class LocationBuilder implements Builder { @override void replace(Location other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Location; } @@ -669,7 +664,7 @@ class LocationBuilder implements Builder { _$Location _build() { final _$result = _$v ?? - new _$Location._( + _$Location._( x: BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'), y: BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'), ); @@ -687,32 +682,19 @@ class _$CrosswordWord extends CrosswordWord { final Direction direction; factory _$CrosswordWord([void Function(CrosswordWordBuilder)? updates]) => - (new CrosswordWordBuilder()..update(updates))._build(); + (CrosswordWordBuilder()..update(updates))._build(); _$CrosswordWord._({ required this.word, required this.location, required this.direction, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(word, r'CrosswordWord', 'word'); - BuiltValueNullFieldError.checkNotNull( - location, - r'CrosswordWord', - 'location', - ); - BuiltValueNullFieldError.checkNotNull( - direction, - r'CrosswordWord', - 'direction', - ); - } - + }) : super._(); @override CrosswordWord rebuild(void Function(CrosswordWordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordWordBuilder toBuilder() => new CrosswordWordBuilder()..replace(this); + CrosswordWordBuilder toBuilder() => CrosswordWordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -752,7 +734,7 @@ class CrosswordWordBuilder set word(String? word) => _$this._word = word; LocationBuilder? _location; - LocationBuilder get location => _$this._location ??= new LocationBuilder(); + LocationBuilder get location => _$this._location ??= LocationBuilder(); set location(LocationBuilder? location) => _$this._location = location; Direction? _direction; @@ -774,7 +756,6 @@ class CrosswordWordBuilder @override void replace(CrosswordWord other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordWord; } @@ -791,7 +772,7 @@ class CrosswordWordBuilder try { _$result = _$v ?? - new _$CrosswordWord._( + _$CrosswordWord._( word: BuiltValueNullFieldError.checkNotNull( word, r'CrosswordWord', @@ -810,7 +791,7 @@ class CrosswordWordBuilder _$failedField = 'location'; location.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordWord', _$failedField, e.toString(), @@ -833,20 +814,13 @@ class _$CrosswordCharacter extends CrosswordCharacter { factory _$CrosswordCharacter([ void Function(CrosswordCharacterBuilder)? updates, - ]) => (new CrosswordCharacterBuilder()..update(updates))._build(); + ]) => (CrosswordCharacterBuilder()..update(updates))._build(); _$CrosswordCharacter._({ required this.character, this.acrossWord, this.downWord, - }) : super._() { - BuiltValueNullFieldError.checkNotNull( - character, - r'CrosswordCharacter', - 'character', - ); - } - + }) : super._(); @override CrosswordCharacter rebuild( void Function(CrosswordCharacterBuilder) updates, @@ -854,7 +828,7 @@ class _$CrosswordCharacter extends CrosswordCharacter { @override CrosswordCharacterBuilder toBuilder() => - new CrosswordCharacterBuilder()..replace(this); + CrosswordCharacterBuilder()..replace(this); @override bool operator ==(Object other) { @@ -895,13 +869,13 @@ class CrosswordCharacterBuilder CrosswordWordBuilder? _acrossWord; CrosswordWordBuilder get acrossWord => - _$this._acrossWord ??= new CrosswordWordBuilder(); + _$this._acrossWord ??= CrosswordWordBuilder(); set acrossWord(CrosswordWordBuilder? acrossWord) => _$this._acrossWord = acrossWord; CrosswordWordBuilder? _downWord; CrosswordWordBuilder get downWord => - _$this._downWord ??= new CrosswordWordBuilder(); + _$this._downWord ??= CrosswordWordBuilder(); set downWord(CrosswordWordBuilder? downWord) => _$this._downWord = downWord; CrosswordCharacterBuilder(); @@ -919,7 +893,6 @@ class CrosswordCharacterBuilder @override void replace(CrosswordCharacter other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordCharacter; } @@ -936,7 +909,7 @@ class CrosswordCharacterBuilder try { _$result = _$v ?? - new _$CrosswordCharacter._( + _$CrosswordCharacter._( character: BuiltValueNullFieldError.checkNotNull( character, r'CrosswordCharacter', @@ -953,7 +926,7 @@ class CrosswordCharacterBuilder _$failedField = 'downWord'; _downWord?.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordCharacter', _$failedField, e.toString(), @@ -977,30 +950,20 @@ class _$Crossword extends Crossword { final BuiltMap characters; factory _$Crossword([void Function(CrosswordBuilder)? updates]) => - (new CrosswordBuilder()..update(updates))._build(); + (CrosswordBuilder()..update(updates))._build(); _$Crossword._({ required this.width, required this.height, required this.words, required this.characters, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(width, r'Crossword', 'width'); - BuiltValueNullFieldError.checkNotNull(height, r'Crossword', 'height'); - BuiltValueNullFieldError.checkNotNull(words, r'Crossword', 'words'); - BuiltValueNullFieldError.checkNotNull( - characters, - r'Crossword', - 'characters', - ); - } - + }) : super._(); @override Crossword rebuild(void Function(CrosswordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordBuilder toBuilder() => new CrosswordBuilder()..replace(this); + CrosswordBuilder toBuilder() => CrosswordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -1047,12 +1010,12 @@ class CrosswordBuilder implements Builder { ListBuilder? _words; ListBuilder get words => - _$this._words ??= new ListBuilder(); + _$this._words ??= ListBuilder(); set words(ListBuilder? words) => _$this._words = words; MapBuilder? _characters; MapBuilder get characters => - _$this._characters ??= new MapBuilder(); + _$this._characters ??= MapBuilder(); set characters(MapBuilder? characters) => _$this._characters = characters; @@ -1072,7 +1035,6 @@ class CrosswordBuilder implements Builder { @override void replace(Crossword other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Crossword; } @@ -1090,7 +1052,7 @@ class CrosswordBuilder implements Builder { try { _$result = _$v ?? - new _$Crossword._( + _$Crossword._( width: BuiltValueNullFieldError.checkNotNull( width, r'Crossword', @@ -1112,7 +1074,7 @@ class CrosswordBuilder implements Builder { _$failedField = 'characters'; characters.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'Crossword', _$failedField, e.toString(), @@ -1136,38 +1098,20 @@ class _$WorkQueue extends WorkQueue { final BuiltSet candidateWords; factory _$WorkQueue([void Function(WorkQueueBuilder)? updates]) => - (new WorkQueueBuilder()..update(updates))._build(); + (WorkQueueBuilder()..update(updates))._build(); _$WorkQueue._({ required this.crossword, required this.locationsToTry, required this.badLocations, required this.candidateWords, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(crossword, r'WorkQueue', 'crossword'); - BuiltValueNullFieldError.checkNotNull( - locationsToTry, - r'WorkQueue', - 'locationsToTry', - ); - BuiltValueNullFieldError.checkNotNull( - badLocations, - r'WorkQueue', - 'badLocations', - ); - BuiltValueNullFieldError.checkNotNull( - candidateWords, - r'WorkQueue', - 'candidateWords', - ); - } - + }) : super._(); @override WorkQueue rebuild(void Function(WorkQueueBuilder) updates) => (toBuilder()..update(updates)).build(); @override - WorkQueueBuilder toBuilder() => new WorkQueueBuilder()..replace(this); + WorkQueueBuilder toBuilder() => WorkQueueBuilder()..replace(this); @override bool operator ==(Object other) { @@ -1205,25 +1149,24 @@ class WorkQueueBuilder implements Builder { _$WorkQueue? _$v; CrosswordBuilder? _crossword; - CrosswordBuilder get crossword => - _$this._crossword ??= new CrosswordBuilder(); + CrosswordBuilder get crossword => _$this._crossword ??= CrosswordBuilder(); set crossword(CrosswordBuilder? crossword) => _$this._crossword = crossword; MapBuilder? _locationsToTry; MapBuilder get locationsToTry => - _$this._locationsToTry ??= new MapBuilder(); + _$this._locationsToTry ??= MapBuilder(); set locationsToTry(MapBuilder? locationsToTry) => _$this._locationsToTry = locationsToTry; SetBuilder? _badLocations; SetBuilder get badLocations => - _$this._badLocations ??= new SetBuilder(); + _$this._badLocations ??= SetBuilder(); set badLocations(SetBuilder? badLocations) => _$this._badLocations = badLocations; SetBuilder? _candidateWords; SetBuilder get candidateWords => - _$this._candidateWords ??= new SetBuilder(); + _$this._candidateWords ??= SetBuilder(); set candidateWords(SetBuilder? candidateWords) => _$this._candidateWords = candidateWords; @@ -1243,7 +1186,6 @@ class WorkQueueBuilder implements Builder { @override void replace(WorkQueue other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$WorkQueue; } @@ -1260,7 +1202,7 @@ class WorkQueueBuilder implements Builder { try { _$result = _$v ?? - new _$WorkQueue._( + _$WorkQueue._( crossword: crossword.build(), locationsToTry: locationsToTry.build(), badLocations: badLocations.build(), @@ -1278,7 +1220,7 @@ class WorkQueueBuilder implements Builder { _$failedField = 'candidateWords'; candidateWords.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'WorkQueue', _$failedField, e.toString(), @@ -1304,7 +1246,7 @@ class _$DisplayInfo extends DisplayInfo { final String gridFilledPercentage; factory _$DisplayInfo([void Function(DisplayInfoBuilder)? updates]) => - (new DisplayInfoBuilder()..update(updates))._build(); + (DisplayInfoBuilder()..update(updates))._build(); _$DisplayInfo._({ required this.wordsInGridCount, @@ -1312,40 +1254,13 @@ class _$DisplayInfo extends DisplayInfo { required this.locationsToExploreCount, required this.knownBadLocationsCount, required this.gridFilledPercentage, - }) : super._() { - BuiltValueNullFieldError.checkNotNull( - wordsInGridCount, - r'DisplayInfo', - 'wordsInGridCount', - ); - BuiltValueNullFieldError.checkNotNull( - candidateWordsCount, - r'DisplayInfo', - 'candidateWordsCount', - ); - BuiltValueNullFieldError.checkNotNull( - locationsToExploreCount, - r'DisplayInfo', - 'locationsToExploreCount', - ); - BuiltValueNullFieldError.checkNotNull( - knownBadLocationsCount, - r'DisplayInfo', - 'knownBadLocationsCount', - ); - BuiltValueNullFieldError.checkNotNull( - gridFilledPercentage, - r'DisplayInfo', - 'gridFilledPercentage', - ); - } - + }) : super._(); @override DisplayInfo rebuild(void Function(DisplayInfoBuilder) updates) => (toBuilder()..update(updates)).build(); @override - DisplayInfoBuilder toBuilder() => new DisplayInfoBuilder()..replace(this); + DisplayInfoBuilder toBuilder() => DisplayInfoBuilder()..replace(this); @override bool operator ==(Object other) { @@ -1427,7 +1342,6 @@ class DisplayInfoBuilder implements Builder { @override void replace(DisplayInfo other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$DisplayInfo; } @@ -1442,7 +1356,7 @@ class DisplayInfoBuilder implements Builder { _$DisplayInfo _build() { final _$result = _$v ?? - new _$DisplayInfo._( + _$DisplayInfo._( wordsInGridCount: BuiltValueNullFieldError.checkNotNull( wordsInGridCount, r'DisplayInfo', diff --git a/generate_crossword/step_08/linux/runner/my_application.cc b/generate_crossword/step_08/linux/runner/my_application.cc index dbf3c88029..8d7170cbe5 100644 --- a/generate_crossword/step_08/linux/runner/my_application.cc +++ b/generate_crossword/step_08/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/generate_crossword/step_08/macos/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_08/macos/Runner.xcodeproj/project.pbxproj index 32b42372b9..0da0fc331a 100644 --- a/generate_crossword/step_08/macos/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_08/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/generate_crossword/step_08/pubspec.yaml b/generate_crossword/step_08/pubspec.yaml index bb10d4cd49..9b4f7e67a8 100644 --- a/generate_crossword/step_08/pubspec.yaml +++ b/generate_crossword/step_08/pubspec.yaml @@ -4,27 +4,27 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter built_collection: ^5.1.1 - built_value: ^8.9.5 + built_value: ^8.10.1 characters: ^1.4.0 flutter_riverpod: ^2.6.1 intl: ^0.20.2 riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - two_dimensional_scrollables: ^0.3.4 + two_dimensional_scrollables: ^0.3.7 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - build_runner: ^2.4.15 - built_value_generator: ^8.9.5 - custom_lint: ^0.7.5 + build_runner: ^2.5.4 + built_value_generator: ^8.10.1 + custom_lint: ^0.7.6 riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 diff --git a/generate_crossword/step_09/.gemini/settings.json b/generate_crossword/step_09/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/generate_crossword/step_09/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/generate_crossword/step_09/.gitignore b/generate_crossword/step_09/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/generate_crossword/step_09/.gitignore +++ b/generate_crossword/step_09/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/generate_crossword/step_09/android/build.gradle.kts b/generate_crossword/step_09/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/generate_crossword/step_09/android/build.gradle.kts +++ b/generate_crossword/step_09/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/generate_crossword/step_09/android/settings.gradle.kts b/generate_crossword/step_09/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/generate_crossword/step_09/android/settings.gradle.kts +++ b/generate_crossword/step_09/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/generate_crossword/step_09/ios/Flutter/AppFrameworkInfo.plist b/generate_crossword/step_09/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/generate_crossword/step_09/ios/Flutter/AppFrameworkInfo.plist +++ b/generate_crossword/step_09/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/generate_crossword/step_09/ios/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_09/ios/Runner.xcodeproj/project.pbxproj index 0cb40440c1..4b54ab68d5 100644 --- a/generate_crossword/step_09/ios/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_09/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/generate_crossword/step_09/lib/model.g.dart b/generate_crossword/step_09/lib/model.g.dart index dfedcd96b8..4f25b1d95b 100644 --- a/generate_crossword/step_09/lib/model.g.dart +++ b/generate_crossword/step_09/lib/model.g.dart @@ -7,7 +7,7 @@ part of 'model.dart'; // ************************************************************************** Serializers _$serializers = - (new Serializers().toBuilder() + (Serializers().toBuilder() ..add(Crossword.serializer) ..add(CrosswordCharacter.serializer) ..add(CrosswordPuzzleGame.serializer) @@ -17,14 +17,14 @@ Serializers _$serializers = ..add(WorkQueue.serializer) ..addBuilderFactory( const FullType(BuiltList, const [const FullType(CrosswordWord)]), - () => new ListBuilder(), + () => ListBuilder(), ) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(Location), const FullType(CrosswordCharacter), ]), - () => new MapBuilder(), + () => MapBuilder(), ) ..addBuilderFactory( const FullType(BuiltMap, const [ @@ -35,41 +35,38 @@ Serializers _$serializers = ]), ]), () => - new MapBuilder< - Location, - BuiltMap> - >(), + MapBuilder>>(), ) ..addBuilderFactory( const FullType(BuiltList, const [const FullType(CrosswordWord)]), - () => new ListBuilder(), + () => ListBuilder(), ) ..addBuilderFactory( const FullType(BuiltMap, const [ const FullType(Location), const FullType(Direction), ]), - () => new MapBuilder(), + () => MapBuilder(), ) ..addBuilderFactory( const FullType(BuiltSet, const [const FullType(Location)]), - () => new SetBuilder(), + () => SetBuilder(), ) ..addBuilderFactory( const FullType(BuiltSet, const [const FullType(String)]), - () => new SetBuilder(), + () => SetBuilder(), )) .build(); -Serializer _$locationSerializer = new _$LocationSerializer(); +Serializer _$locationSerializer = _$LocationSerializer(); Serializer _$crosswordWordSerializer = - new _$CrosswordWordSerializer(); + _$CrosswordWordSerializer(); Serializer _$crosswordCharacterSerializer = - new _$CrosswordCharacterSerializer(); -Serializer _$crosswordSerializer = new _$CrosswordSerializer(); -Serializer _$workQueueSerializer = new _$WorkQueueSerializer(); -Serializer _$displayInfoSerializer = new _$DisplayInfoSerializer(); + _$CrosswordCharacterSerializer(); +Serializer _$crosswordSerializer = _$CrosswordSerializer(); +Serializer _$workQueueSerializer = _$WorkQueueSerializer(); +Serializer _$displayInfoSerializer = _$DisplayInfoSerializer(); Serializer _$crosswordPuzzleGameSerializer = - new _$CrosswordPuzzleGameSerializer(); + _$CrosswordPuzzleGameSerializer(); class _$LocationSerializer implements StructuredSerializer { @override @@ -99,7 +96,7 @@ class _$LocationSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new LocationBuilder(); + final result = LocationBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -166,7 +163,7 @@ class _$CrosswordWordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordWordBuilder(); + final result = CrosswordWordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -258,7 +255,7 @@ class _$CrosswordCharacterSerializer Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordCharacterBuilder(); + final result = CrosswordCharacterBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -342,7 +339,7 @@ class _$CrosswordSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordBuilder(); + final result = CrosswordBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -444,7 +441,7 @@ class _$WorkQueueSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new WorkQueueBuilder(); + final result = WorkQueueBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -550,7 +547,7 @@ class _$DisplayInfoSerializer implements StructuredSerializer { Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new DisplayInfoBuilder(); + final result = DisplayInfoBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -656,7 +653,7 @@ class _$CrosswordPuzzleGameSerializer Iterable serialized, { FullType specifiedType = FullType.unspecified, }) { - final result = new CrosswordPuzzleGameBuilder(); + final result = CrosswordPuzzleGameBuilder(); final iterator = serialized.iterator; while (iterator.moveNext()) { @@ -712,19 +709,15 @@ class _$Location extends Location { final int y; factory _$Location([void Function(LocationBuilder)? updates]) => - (new LocationBuilder()..update(updates))._build(); - - _$Location._({required this.x, required this.y}) : super._() { - BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'); - BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'); - } + (LocationBuilder()..update(updates))._build(); + _$Location._({required this.x, required this.y}) : super._(); @override Location rebuild(void Function(LocationBuilder) updates) => (toBuilder()..update(updates)).build(); @override - LocationBuilder toBuilder() => new LocationBuilder()..replace(this); + LocationBuilder toBuilder() => LocationBuilder()..replace(this); @override bool operator ==(Object other) { @@ -775,7 +768,6 @@ class LocationBuilder implements Builder { @override void replace(Location other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Location; } @@ -790,7 +782,7 @@ class LocationBuilder implements Builder { _$Location _build() { final _$result = _$v ?? - new _$Location._( + _$Location._( x: BuiltValueNullFieldError.checkNotNull(x, r'Location', 'x'), y: BuiltValueNullFieldError.checkNotNull(y, r'Location', 'y'), ); @@ -808,32 +800,19 @@ class _$CrosswordWord extends CrosswordWord { final Direction direction; factory _$CrosswordWord([void Function(CrosswordWordBuilder)? updates]) => - (new CrosswordWordBuilder()..update(updates))._build(); + (CrosswordWordBuilder()..update(updates))._build(); _$CrosswordWord._({ required this.word, required this.location, required this.direction, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(word, r'CrosswordWord', 'word'); - BuiltValueNullFieldError.checkNotNull( - location, - r'CrosswordWord', - 'location', - ); - BuiltValueNullFieldError.checkNotNull( - direction, - r'CrosswordWord', - 'direction', - ); - } - + }) : super._(); @override CrosswordWord rebuild(void Function(CrosswordWordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordWordBuilder toBuilder() => new CrosswordWordBuilder()..replace(this); + CrosswordWordBuilder toBuilder() => CrosswordWordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -873,7 +852,7 @@ class CrosswordWordBuilder set word(String? word) => _$this._word = word; LocationBuilder? _location; - LocationBuilder get location => _$this._location ??= new LocationBuilder(); + LocationBuilder get location => _$this._location ??= LocationBuilder(); set location(LocationBuilder? location) => _$this._location = location; Direction? _direction; @@ -895,7 +874,6 @@ class CrosswordWordBuilder @override void replace(CrosswordWord other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordWord; } @@ -912,7 +890,7 @@ class CrosswordWordBuilder try { _$result = _$v ?? - new _$CrosswordWord._( + _$CrosswordWord._( word: BuiltValueNullFieldError.checkNotNull( word, r'CrosswordWord', @@ -931,7 +909,7 @@ class CrosswordWordBuilder _$failedField = 'location'; location.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordWord', _$failedField, e.toString(), @@ -954,20 +932,13 @@ class _$CrosswordCharacter extends CrosswordCharacter { factory _$CrosswordCharacter([ void Function(CrosswordCharacterBuilder)? updates, - ]) => (new CrosswordCharacterBuilder()..update(updates))._build(); + ]) => (CrosswordCharacterBuilder()..update(updates))._build(); _$CrosswordCharacter._({ required this.character, this.acrossWord, this.downWord, - }) : super._() { - BuiltValueNullFieldError.checkNotNull( - character, - r'CrosswordCharacter', - 'character', - ); - } - + }) : super._(); @override CrosswordCharacter rebuild( void Function(CrosswordCharacterBuilder) updates, @@ -975,7 +946,7 @@ class _$CrosswordCharacter extends CrosswordCharacter { @override CrosswordCharacterBuilder toBuilder() => - new CrosswordCharacterBuilder()..replace(this); + CrosswordCharacterBuilder()..replace(this); @override bool operator ==(Object other) { @@ -1016,13 +987,13 @@ class CrosswordCharacterBuilder CrosswordWordBuilder? _acrossWord; CrosswordWordBuilder get acrossWord => - _$this._acrossWord ??= new CrosswordWordBuilder(); + _$this._acrossWord ??= CrosswordWordBuilder(); set acrossWord(CrosswordWordBuilder? acrossWord) => _$this._acrossWord = acrossWord; CrosswordWordBuilder? _downWord; CrosswordWordBuilder get downWord => - _$this._downWord ??= new CrosswordWordBuilder(); + _$this._downWord ??= CrosswordWordBuilder(); set downWord(CrosswordWordBuilder? downWord) => _$this._downWord = downWord; CrosswordCharacterBuilder(); @@ -1040,7 +1011,6 @@ class CrosswordCharacterBuilder @override void replace(CrosswordCharacter other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordCharacter; } @@ -1057,7 +1027,7 @@ class CrosswordCharacterBuilder try { _$result = _$v ?? - new _$CrosswordCharacter._( + _$CrosswordCharacter._( character: BuiltValueNullFieldError.checkNotNull( character, r'CrosswordCharacter', @@ -1074,7 +1044,7 @@ class CrosswordCharacterBuilder _$failedField = 'downWord'; _downWord?.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordCharacter', _$failedField, e.toString(), @@ -1098,30 +1068,20 @@ class _$Crossword extends Crossword { final BuiltMap characters; factory _$Crossword([void Function(CrosswordBuilder)? updates]) => - (new CrosswordBuilder()..update(updates))._build(); + (CrosswordBuilder()..update(updates))._build(); _$Crossword._({ required this.width, required this.height, required this.words, required this.characters, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(width, r'Crossword', 'width'); - BuiltValueNullFieldError.checkNotNull(height, r'Crossword', 'height'); - BuiltValueNullFieldError.checkNotNull(words, r'Crossword', 'words'); - BuiltValueNullFieldError.checkNotNull( - characters, - r'Crossword', - 'characters', - ); - } - + }) : super._(); @override Crossword rebuild(void Function(CrosswordBuilder) updates) => (toBuilder()..update(updates)).build(); @override - CrosswordBuilder toBuilder() => new CrosswordBuilder()..replace(this); + CrosswordBuilder toBuilder() => CrosswordBuilder()..replace(this); @override bool operator ==(Object other) { @@ -1168,12 +1128,12 @@ class CrosswordBuilder implements Builder { ListBuilder? _words; ListBuilder get words => - _$this._words ??= new ListBuilder(); + _$this._words ??= ListBuilder(); set words(ListBuilder? words) => _$this._words = words; MapBuilder? _characters; MapBuilder get characters => - _$this._characters ??= new MapBuilder(); + _$this._characters ??= MapBuilder(); set characters(MapBuilder? characters) => _$this._characters = characters; @@ -1193,7 +1153,6 @@ class CrosswordBuilder implements Builder { @override void replace(Crossword other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$Crossword; } @@ -1211,7 +1170,7 @@ class CrosswordBuilder implements Builder { try { _$result = _$v ?? - new _$Crossword._( + _$Crossword._( width: BuiltValueNullFieldError.checkNotNull( width, r'Crossword', @@ -1233,7 +1192,7 @@ class CrosswordBuilder implements Builder { _$failedField = 'characters'; characters.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'Crossword', _$failedField, e.toString(), @@ -1257,38 +1216,20 @@ class _$WorkQueue extends WorkQueue { final BuiltSet candidateWords; factory _$WorkQueue([void Function(WorkQueueBuilder)? updates]) => - (new WorkQueueBuilder()..update(updates))._build(); + (WorkQueueBuilder()..update(updates))._build(); _$WorkQueue._({ required this.crossword, required this.locationsToTry, required this.badLocations, required this.candidateWords, - }) : super._() { - BuiltValueNullFieldError.checkNotNull(crossword, r'WorkQueue', 'crossword'); - BuiltValueNullFieldError.checkNotNull( - locationsToTry, - r'WorkQueue', - 'locationsToTry', - ); - BuiltValueNullFieldError.checkNotNull( - badLocations, - r'WorkQueue', - 'badLocations', - ); - BuiltValueNullFieldError.checkNotNull( - candidateWords, - r'WorkQueue', - 'candidateWords', - ); - } - + }) : super._(); @override WorkQueue rebuild(void Function(WorkQueueBuilder) updates) => (toBuilder()..update(updates)).build(); @override - WorkQueueBuilder toBuilder() => new WorkQueueBuilder()..replace(this); + WorkQueueBuilder toBuilder() => WorkQueueBuilder()..replace(this); @override bool operator ==(Object other) { @@ -1326,25 +1267,24 @@ class WorkQueueBuilder implements Builder { _$WorkQueue? _$v; CrosswordBuilder? _crossword; - CrosswordBuilder get crossword => - _$this._crossword ??= new CrosswordBuilder(); + CrosswordBuilder get crossword => _$this._crossword ??= CrosswordBuilder(); set crossword(CrosswordBuilder? crossword) => _$this._crossword = crossword; MapBuilder? _locationsToTry; MapBuilder get locationsToTry => - _$this._locationsToTry ??= new MapBuilder(); + _$this._locationsToTry ??= MapBuilder(); set locationsToTry(MapBuilder? locationsToTry) => _$this._locationsToTry = locationsToTry; SetBuilder? _badLocations; SetBuilder get badLocations => - _$this._badLocations ??= new SetBuilder(); + _$this._badLocations ??= SetBuilder(); set badLocations(SetBuilder? badLocations) => _$this._badLocations = badLocations; SetBuilder? _candidateWords; SetBuilder get candidateWords => - _$this._candidateWords ??= new SetBuilder(); + _$this._candidateWords ??= SetBuilder(); set candidateWords(SetBuilder? candidateWords) => _$this._candidateWords = candidateWords; @@ -1364,7 +1304,6 @@ class WorkQueueBuilder implements Builder { @override void replace(WorkQueue other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$WorkQueue; } @@ -1381,7 +1320,7 @@ class WorkQueueBuilder implements Builder { try { _$result = _$v ?? - new _$WorkQueue._( + _$WorkQueue._( crossword: crossword.build(), locationsToTry: locationsToTry.build(), badLocations: badLocations.build(), @@ -1399,7 +1338,7 @@ class WorkQueueBuilder implements Builder { _$failedField = 'candidateWords'; candidateWords.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'WorkQueue', _$failedField, e.toString(), @@ -1425,7 +1364,7 @@ class _$DisplayInfo extends DisplayInfo { final String gridFilledPercentage; factory _$DisplayInfo([void Function(DisplayInfoBuilder)? updates]) => - (new DisplayInfoBuilder()..update(updates))._build(); + (DisplayInfoBuilder()..update(updates))._build(); _$DisplayInfo._({ required this.wordsInGridCount, @@ -1433,40 +1372,13 @@ class _$DisplayInfo extends DisplayInfo { required this.locationsToExploreCount, required this.knownBadLocationsCount, required this.gridFilledPercentage, - }) : super._() { - BuiltValueNullFieldError.checkNotNull( - wordsInGridCount, - r'DisplayInfo', - 'wordsInGridCount', - ); - BuiltValueNullFieldError.checkNotNull( - candidateWordsCount, - r'DisplayInfo', - 'candidateWordsCount', - ); - BuiltValueNullFieldError.checkNotNull( - locationsToExploreCount, - r'DisplayInfo', - 'locationsToExploreCount', - ); - BuiltValueNullFieldError.checkNotNull( - knownBadLocationsCount, - r'DisplayInfo', - 'knownBadLocationsCount', - ); - BuiltValueNullFieldError.checkNotNull( - gridFilledPercentage, - r'DisplayInfo', - 'gridFilledPercentage', - ); - } - + }) : super._(); @override DisplayInfo rebuild(void Function(DisplayInfoBuilder) updates) => (toBuilder()..update(updates)).build(); @override - DisplayInfoBuilder toBuilder() => new DisplayInfoBuilder()..replace(this); + DisplayInfoBuilder toBuilder() => DisplayInfoBuilder()..replace(this); @override bool operator ==(Object other) { @@ -1548,7 +1460,6 @@ class DisplayInfoBuilder implements Builder { @override void replace(DisplayInfo other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$DisplayInfo; } @@ -1563,7 +1474,7 @@ class DisplayInfoBuilder implements Builder { _$DisplayInfo _build() { final _$result = _$v ?? - new _$DisplayInfo._( + _$DisplayInfo._( wordsInGridCount: BuiltValueNullFieldError.checkNotNull( wordsInGridCount, r'DisplayInfo', @@ -1606,30 +1517,13 @@ class _$CrosswordPuzzleGame extends CrosswordPuzzleGame { factory _$CrosswordPuzzleGame([ void Function(CrosswordPuzzleGameBuilder)? updates, - ]) => (new CrosswordPuzzleGameBuilder()..update(updates))._build(); + ]) => (CrosswordPuzzleGameBuilder()..update(updates))._build(); _$CrosswordPuzzleGame._({ required this.crossword, required this.alternateWords, required this.selectedWords, - }) : super._() { - BuiltValueNullFieldError.checkNotNull( - crossword, - r'CrosswordPuzzleGame', - 'crossword', - ); - BuiltValueNullFieldError.checkNotNull( - alternateWords, - r'CrosswordPuzzleGame', - 'alternateWords', - ); - BuiltValueNullFieldError.checkNotNull( - selectedWords, - r'CrosswordPuzzleGame', - 'selectedWords', - ); - } - + }) : super._(); @override CrosswordPuzzleGame rebuild( void Function(CrosswordPuzzleGameBuilder) updates, @@ -1637,7 +1531,7 @@ class _$CrosswordPuzzleGame extends CrosswordPuzzleGame { @override CrosswordPuzzleGameBuilder toBuilder() => - new CrosswordPuzzleGameBuilder()..replace(this); + CrosswordPuzzleGameBuilder()..replace(this); @override bool operator ==(Object other) { @@ -1673,14 +1567,13 @@ class CrosswordPuzzleGameBuilder _$CrosswordPuzzleGame? _$v; CrosswordBuilder? _crossword; - CrosswordBuilder get crossword => - _$this._crossword ??= new CrosswordBuilder(); + CrosswordBuilder get crossword => _$this._crossword ??= CrosswordBuilder(); set crossword(CrosswordBuilder? crossword) => _$this._crossword = crossword; MapBuilder>>? _alternateWords; MapBuilder>> get alternateWords => _$this._alternateWords ??= - new MapBuilder>>(); + MapBuilder>>(); set alternateWords( MapBuilder>>? alternateWords, @@ -1688,7 +1581,7 @@ class CrosswordPuzzleGameBuilder ListBuilder? _selectedWords; ListBuilder get selectedWords => - _$this._selectedWords ??= new ListBuilder(); + _$this._selectedWords ??= ListBuilder(); set selectedWords(ListBuilder? selectedWords) => _$this._selectedWords = selectedWords; @@ -1707,7 +1600,6 @@ class CrosswordPuzzleGameBuilder @override void replace(CrosswordPuzzleGame other) { - ArgumentError.checkNotNull(other, 'other'); _$v = other as _$CrosswordPuzzleGame; } @@ -1724,7 +1616,7 @@ class CrosswordPuzzleGameBuilder try { _$result = _$v ?? - new _$CrosswordPuzzleGame._( + _$CrosswordPuzzleGame._( crossword: crossword.build(), alternateWords: alternateWords.build(), selectedWords: selectedWords.build(), @@ -1739,7 +1631,7 @@ class CrosswordPuzzleGameBuilder _$failedField = 'selectedWords'; selectedWords.build(); } catch (e) { - throw new BuiltValueNestedFieldError( + throw BuiltValueNestedFieldError( r'CrosswordPuzzleGame', _$failedField, e.toString(), diff --git a/generate_crossword/step_09/linux/runner/my_application.cc b/generate_crossword/step_09/linux/runner/my_application.cc index dbf3c88029..8d7170cbe5 100644 --- a/generate_crossword/step_09/linux/runner/my_application.cc +++ b/generate_crossword/step_09/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/generate_crossword/step_09/macos/Runner.xcodeproj/project.pbxproj b/generate_crossword/step_09/macos/Runner.xcodeproj/project.pbxproj index 32b42372b9..0da0fc331a 100644 --- a/generate_crossword/step_09/macos/Runner.xcodeproj/project.pbxproj +++ b/generate_crossword/step_09/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/generate_crossword/step_09/pubspec.yaml b/generate_crossword/step_09/pubspec.yaml index bb10d4cd49..9b4f7e67a8 100644 --- a/generate_crossword/step_09/pubspec.yaml +++ b/generate_crossword/step_09/pubspec.yaml @@ -4,27 +4,27 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter built_collection: ^5.1.1 - built_value: ^8.9.5 + built_value: ^8.10.1 characters: ^1.4.0 flutter_riverpod: ^2.6.1 intl: ^0.20.2 riverpod: ^2.6.1 riverpod_annotation: ^2.6.1 - two_dimensional_scrollables: ^0.3.4 + two_dimensional_scrollables: ^0.3.7 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - build_runner: ^2.4.15 - built_value_generator: ^8.9.5 - custom_lint: ^0.7.5 + build_runner: ^2.5.4 + built_value_generator: ^8.10.1 + custom_lint: ^0.7.6 riverpod_generator: ^2.6.5 riverpod_lint: ^2.6.5 diff --git a/github-client/codelab_rebuild.yaml b/github-client/codelab_rebuild.yaml index ed0c31b386..242fb15b5c 100644 --- a/github-client/codelab_rebuild.yaml +++ b/github-client/codelab_rebuild.yaml @@ -9,6 +9,21 @@ steps: - name: Update dependencies path: window_to_front flutter: pub upgrade --major-versions + - name: Add .gemini directory + mkdir: window_to_front/.gemini + - name: Add .gemini/settings.json + path: window_to_front/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Replace analysis_options.yaml path: window_to_front/analysis_options.yaml replace-contents: | @@ -411,6 +426,21 @@ steps: include: ../../analysis_options.yaml - name: Remove the README.md. rm: github_client/README.md + - name: Add .gemini directory + mkdir: github_client/.gemini + - name: Add .gemini/settings.json + path: github_client/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: VSCode config mkdir: github_client/.vscode - name: Add launch.json diff --git a/github-client/step_03/.gemini/settings.json b/github-client/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/github-client/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/github-client/step_03/.gitignore b/github-client/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/github-client/step_03/.gitignore +++ b/github-client/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/github-client/step_03/linux/runner/my_application.cc b/github-client/step_03/linux/runner/my_application.cc index 07d3dc6a33..23e6f4c601 100644 --- a/github-client/step_03/linux/runner/my_application.cc +++ b/github-client/step_03/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/github-client/step_03/macos/Runner.xcodeproj/project.pbxproj b/github-client/step_03/macos/Runner.xcodeproj/project.pbxproj index ea1d7f0585..efbbdcee32 100644 --- a/github-client/step_03/macos/Runner.xcodeproj/project.pbxproj +++ b/github-client/step_03/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/github-client/step_03/pubspec.yaml b/github-client/step_03/pubspec.yaml index 2729979091..6ed2c1370f 100644 --- a/github-client/step_03/pubspec.yaml +++ b/github-client/step_03/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -44,7 +44,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/github-client/step_04/.gemini/settings.json b/github-client/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/github-client/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/github-client/step_04/.gitignore b/github-client/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/github-client/step_04/.gitignore +++ b/github-client/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/github-client/step_04/linux/runner/my_application.cc b/github-client/step_04/linux/runner/my_application.cc index 07d3dc6a33..23e6f4c601 100644 --- a/github-client/step_04/linux/runner/my_application.cc +++ b/github-client/step_04/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/github-client/step_04/macos/Podfile b/github-client/step_04/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/github-client/step_04/macos/Podfile +++ b/github-client/step_04/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/github-client/step_04/macos/Runner.xcodeproj/project.pbxproj b/github-client/step_04/macos/Runner.xcodeproj/project.pbxproj index 4db5820184..49a150ecd4 100644 --- a/github-client/step_04/macos/Runner.xcodeproj/project.pbxproj +++ b/github-client/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 */; }; - 797BDD0E0431FAD048E7763B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 088922E9991DFAB30567AF8D /* Pods_RunnerTests.framework */; }; - E70AD68E04184C86472B8BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61E5BE228655538DD99BE18A /* Pods_Runner.framework */; }; + A955F8F505E3A2E8CBB529F8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5AB2A42D186FAA3347D090B /* Pods_Runner.framework */; }; + BB5259C39E46149DF5D709C9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA25B64F1A0F5BC481795875 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 088922E9991DFAB30567AF8D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 05DD99E69A4C27586877E640 /* 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 = ""; }; + 1C0E75DD7B4DD13D30E535D4 /* 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 = ""; }; 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 +80,14 @@ 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 = ""; }; - 4B93928D1ADB5795749C18AB /* 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 = ""; }; - 4E4698DCF3D47C2398A1195D /* 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 = ""; }; - 61E5BE228655538DD99BE18A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6B7855103D8ADB3BF00D0CC2 /* 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 = ""; }; + 5B058475268BBBF2D351BBD2 /* 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 = ""; }; + 603D9AD823D2B9CE467AF43C /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 99867943115C27533792C611 /* 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 = ""; }; - A7939AB87F44494E4735DD26 /* 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 = ""; }; - C6CF527E2B74B023EB25B356 /* 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 = ""; }; + BFF25CD8ACB051F7D9AFDE19 /* 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 = ""; }; + C5AB2A42D186FAA3347D090B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DA25B64F1A0F5BC481795875 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E86DC419E2E8B5296D77AE84 /* 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 = ( - 797BDD0E0431FAD048E7763B /* Pods_RunnerTests.framework in Frameworks */, + BB5259C39E46149DF5D709C9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E70AD68E04184C86472B8BB8 /* Pods_Runner.framework in Frameworks */, + A955F8F505E3A2E8CBB529F8 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - A14B6D9FAF12F477FF7A5F0A /* Pods */, + 8DD2ADC90649092AAD1ED194 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - A14B6D9FAF12F477FF7A5F0A /* Pods */ = { + 8DD2ADC90649092AAD1ED194 /* Pods */ = { isa = PBXGroup; children = ( - C6CF527E2B74B023EB25B356 /* Pods-Runner.debug.xcconfig */, - A7939AB87F44494E4735DD26 /* Pods-Runner.release.xcconfig */, - 4E4698DCF3D47C2398A1195D /* Pods-Runner.profile.xcconfig */, - 99867943115C27533792C611 /* Pods-RunnerTests.debug.xcconfig */, - 4B93928D1ADB5795749C18AB /* Pods-RunnerTests.release.xcconfig */, - 6B7855103D8ADB3BF00D0CC2 /* Pods-RunnerTests.profile.xcconfig */, + 5B058475268BBBF2D351BBD2 /* Pods-Runner.debug.xcconfig */, + 05DD99E69A4C27586877E640 /* Pods-Runner.release.xcconfig */, + 603D9AD823D2B9CE467AF43C /* Pods-Runner.profile.xcconfig */, + BFF25CD8ACB051F7D9AFDE19 /* Pods-RunnerTests.debug.xcconfig */, + 1C0E75DD7B4DD13D30E535D4 /* Pods-RunnerTests.release.xcconfig */, + E86DC419E2E8B5296D77AE84 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 61E5BE228655538DD99BE18A /* Pods_Runner.framework */, - 088922E9991DFAB30567AF8D /* Pods_RunnerTests.framework */, + C5AB2A42D186FAA3347D090B /* Pods_Runner.framework */, + DA25B64F1A0F5BC481795875 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 786BC907A7B742B3FD84346B /* [CP] Check Pods Manifest.lock */, + 3B5A83E74B303BB26A1DD40B /* [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 = ( - BE3B4CE91209D71783A220B5 /* [CP] Check Pods Manifest.lock */, + 7D8647C9A25CCD97DFC23FF1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 512FE022562180A4BB3B4F96 /* [CP] Embed Pods Frameworks */, + 328F79D4E08FBB68C58D608C /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 328F79D4E08FBB68C58D608C /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 512FE022562180A4BB3B4F96 /* [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; - }; - 786BC907A7B742B3FD84346B /* [CP] Check Pods Manifest.lock */ = { + 3B5A83E74B303BB26A1DD40B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - BE3B4CE91209D71783A220B5 /* [CP] Check Pods Manifest.lock */ = { + 7D8647C9A25CCD97DFC23FF1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99867943115C27533792C611 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = BFF25CD8ACB051F7D9AFDE19 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4B93928D1ADB5795749C18AB /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 1C0E75DD7B4DD13D30E535D4 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6B7855103D8ADB3BF00D0CC2 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E86DC419E2E8B5296D77AE84 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/github-client/step_04/pubspec.yaml b/github-client/step_04/pubspec.yaml index 70f2b48eef..9f72ac47f4 100644 --- a/github-client/step_04/pubspec.yaml +++ b/github-client/step_04/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,9 +34,9 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 oauth2: ^2.0.3 - url_launcher: ^6.3.1 + url_launcher: ^6.3.2 dev_dependencies: flutter_test: @@ -47,7 +47,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/github-client/step_05/.gemini/settings.json b/github-client/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/github-client/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/github-client/step_05/.gitignore b/github-client/step_05/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/github-client/step_05/.gitignore +++ b/github-client/step_05/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/github-client/step_05/linux/runner/my_application.cc b/github-client/step_05/linux/runner/my_application.cc index 07d3dc6a33..23e6f4c601 100644 --- a/github-client/step_05/linux/runner/my_application.cc +++ b/github-client/step_05/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/github-client/step_05/macos/Podfile b/github-client/step_05/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/github-client/step_05/macos/Podfile +++ b/github-client/step_05/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/github-client/step_05/macos/Runner.xcodeproj/project.pbxproj b/github-client/step_05/macos/Runner.xcodeproj/project.pbxproj index 4db5820184..49a150ecd4 100644 --- a/github-client/step_05/macos/Runner.xcodeproj/project.pbxproj +++ b/github-client/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 */; }; - 797BDD0E0431FAD048E7763B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 088922E9991DFAB30567AF8D /* Pods_RunnerTests.framework */; }; - E70AD68E04184C86472B8BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61E5BE228655538DD99BE18A /* Pods_Runner.framework */; }; + A955F8F505E3A2E8CBB529F8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5AB2A42D186FAA3347D090B /* Pods_Runner.framework */; }; + BB5259C39E46149DF5D709C9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA25B64F1A0F5BC481795875 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 088922E9991DFAB30567AF8D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 05DD99E69A4C27586877E640 /* 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 = ""; }; + 1C0E75DD7B4DD13D30E535D4 /* 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 = ""; }; 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 +80,14 @@ 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 = ""; }; - 4B93928D1ADB5795749C18AB /* 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 = ""; }; - 4E4698DCF3D47C2398A1195D /* 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 = ""; }; - 61E5BE228655538DD99BE18A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6B7855103D8ADB3BF00D0CC2 /* 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 = ""; }; + 5B058475268BBBF2D351BBD2 /* 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 = ""; }; + 603D9AD823D2B9CE467AF43C /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 99867943115C27533792C611 /* 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 = ""; }; - A7939AB87F44494E4735DD26 /* 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 = ""; }; - C6CF527E2B74B023EB25B356 /* 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 = ""; }; + BFF25CD8ACB051F7D9AFDE19 /* 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 = ""; }; + C5AB2A42D186FAA3347D090B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DA25B64F1A0F5BC481795875 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E86DC419E2E8B5296D77AE84 /* 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 = ( - 797BDD0E0431FAD048E7763B /* Pods_RunnerTests.framework in Frameworks */, + BB5259C39E46149DF5D709C9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E70AD68E04184C86472B8BB8 /* Pods_Runner.framework in Frameworks */, + A955F8F505E3A2E8CBB529F8 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - A14B6D9FAF12F477FF7A5F0A /* Pods */, + 8DD2ADC90649092AAD1ED194 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - A14B6D9FAF12F477FF7A5F0A /* Pods */ = { + 8DD2ADC90649092AAD1ED194 /* Pods */ = { isa = PBXGroup; children = ( - C6CF527E2B74B023EB25B356 /* Pods-Runner.debug.xcconfig */, - A7939AB87F44494E4735DD26 /* Pods-Runner.release.xcconfig */, - 4E4698DCF3D47C2398A1195D /* Pods-Runner.profile.xcconfig */, - 99867943115C27533792C611 /* Pods-RunnerTests.debug.xcconfig */, - 4B93928D1ADB5795749C18AB /* Pods-RunnerTests.release.xcconfig */, - 6B7855103D8ADB3BF00D0CC2 /* Pods-RunnerTests.profile.xcconfig */, + 5B058475268BBBF2D351BBD2 /* Pods-Runner.debug.xcconfig */, + 05DD99E69A4C27586877E640 /* Pods-Runner.release.xcconfig */, + 603D9AD823D2B9CE467AF43C /* Pods-Runner.profile.xcconfig */, + BFF25CD8ACB051F7D9AFDE19 /* Pods-RunnerTests.debug.xcconfig */, + 1C0E75DD7B4DD13D30E535D4 /* Pods-RunnerTests.release.xcconfig */, + E86DC419E2E8B5296D77AE84 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 61E5BE228655538DD99BE18A /* Pods_Runner.framework */, - 088922E9991DFAB30567AF8D /* Pods_RunnerTests.framework */, + C5AB2A42D186FAA3347D090B /* Pods_Runner.framework */, + DA25B64F1A0F5BC481795875 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 786BC907A7B742B3FD84346B /* [CP] Check Pods Manifest.lock */, + 3B5A83E74B303BB26A1DD40B /* [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 = ( - BE3B4CE91209D71783A220B5 /* [CP] Check Pods Manifest.lock */, + 7D8647C9A25CCD97DFC23FF1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 512FE022562180A4BB3B4F96 /* [CP] Embed Pods Frameworks */, + 328F79D4E08FBB68C58D608C /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 328F79D4E08FBB68C58D608C /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 512FE022562180A4BB3B4F96 /* [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; - }; - 786BC907A7B742B3FD84346B /* [CP] Check Pods Manifest.lock */ = { + 3B5A83E74B303BB26A1DD40B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - BE3B4CE91209D71783A220B5 /* [CP] Check Pods Manifest.lock */ = { + 7D8647C9A25CCD97DFC23FF1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99867943115C27533792C611 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = BFF25CD8ACB051F7D9AFDE19 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4B93928D1ADB5795749C18AB /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 1C0E75DD7B4DD13D30E535D4 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6B7855103D8ADB3BF00D0CC2 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E86DC419E2E8B5296D77AE84 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/github-client/step_05/pubspec.yaml b/github-client/step_05/pubspec.yaml index 52917ff695..cebeb79cf7 100644 --- a/github-client/step_05/pubspec.yaml +++ b/github-client/step_05/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,9 +34,9 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 oauth2: ^2.0.3 - url_launcher: ^6.3.1 + url_launcher: ^6.3.2 github: ^9.25.0 dev_dependencies: @@ -48,7 +48,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/github-client/step_06/.gemini/settings.json b/github-client/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/github-client/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/github-client/step_06/.gitignore b/github-client/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/github-client/step_06/.gitignore +++ b/github-client/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/github-client/step_06/linux/runner/my_application.cc b/github-client/step_06/linux/runner/my_application.cc index 07d3dc6a33..23e6f4c601 100644 --- a/github-client/step_06/linux/runner/my_application.cc +++ b/github-client/step_06/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/github-client/step_06/macos/Podfile b/github-client/step_06/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/github-client/step_06/macos/Podfile +++ b/github-client/step_06/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/github-client/step_06/macos/Runner.xcodeproj/project.pbxproj b/github-client/step_06/macos/Runner.xcodeproj/project.pbxproj index 4db5820184..49a150ecd4 100644 --- a/github-client/step_06/macos/Runner.xcodeproj/project.pbxproj +++ b/github-client/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 */; }; - 797BDD0E0431FAD048E7763B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 088922E9991DFAB30567AF8D /* Pods_RunnerTests.framework */; }; - E70AD68E04184C86472B8BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61E5BE228655538DD99BE18A /* Pods_Runner.framework */; }; + A955F8F505E3A2E8CBB529F8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5AB2A42D186FAA3347D090B /* Pods_Runner.framework */; }; + BB5259C39E46149DF5D709C9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA25B64F1A0F5BC481795875 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 088922E9991DFAB30567AF8D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 05DD99E69A4C27586877E640 /* 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 = ""; }; + 1C0E75DD7B4DD13D30E535D4 /* 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 = ""; }; 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 +80,14 @@ 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 = ""; }; - 4B93928D1ADB5795749C18AB /* 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 = ""; }; - 4E4698DCF3D47C2398A1195D /* 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 = ""; }; - 61E5BE228655538DD99BE18A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6B7855103D8ADB3BF00D0CC2 /* 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 = ""; }; + 5B058475268BBBF2D351BBD2 /* 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 = ""; }; + 603D9AD823D2B9CE467AF43C /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 99867943115C27533792C611 /* 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 = ""; }; - A7939AB87F44494E4735DD26 /* 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 = ""; }; - C6CF527E2B74B023EB25B356 /* 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 = ""; }; + BFF25CD8ACB051F7D9AFDE19 /* 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 = ""; }; + C5AB2A42D186FAA3347D090B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DA25B64F1A0F5BC481795875 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E86DC419E2E8B5296D77AE84 /* 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 = ( - 797BDD0E0431FAD048E7763B /* Pods_RunnerTests.framework in Frameworks */, + BB5259C39E46149DF5D709C9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E70AD68E04184C86472B8BB8 /* Pods_Runner.framework in Frameworks */, + A955F8F505E3A2E8CBB529F8 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - A14B6D9FAF12F477FF7A5F0A /* Pods */, + 8DD2ADC90649092AAD1ED194 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - A14B6D9FAF12F477FF7A5F0A /* Pods */ = { + 8DD2ADC90649092AAD1ED194 /* Pods */ = { isa = PBXGroup; children = ( - C6CF527E2B74B023EB25B356 /* Pods-Runner.debug.xcconfig */, - A7939AB87F44494E4735DD26 /* Pods-Runner.release.xcconfig */, - 4E4698DCF3D47C2398A1195D /* Pods-Runner.profile.xcconfig */, - 99867943115C27533792C611 /* Pods-RunnerTests.debug.xcconfig */, - 4B93928D1ADB5795749C18AB /* Pods-RunnerTests.release.xcconfig */, - 6B7855103D8ADB3BF00D0CC2 /* Pods-RunnerTests.profile.xcconfig */, + 5B058475268BBBF2D351BBD2 /* Pods-Runner.debug.xcconfig */, + 05DD99E69A4C27586877E640 /* Pods-Runner.release.xcconfig */, + 603D9AD823D2B9CE467AF43C /* Pods-Runner.profile.xcconfig */, + BFF25CD8ACB051F7D9AFDE19 /* Pods-RunnerTests.debug.xcconfig */, + 1C0E75DD7B4DD13D30E535D4 /* Pods-RunnerTests.release.xcconfig */, + E86DC419E2E8B5296D77AE84 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 61E5BE228655538DD99BE18A /* Pods_Runner.framework */, - 088922E9991DFAB30567AF8D /* Pods_RunnerTests.framework */, + C5AB2A42D186FAA3347D090B /* Pods_Runner.framework */, + DA25B64F1A0F5BC481795875 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 786BC907A7B742B3FD84346B /* [CP] Check Pods Manifest.lock */, + 3B5A83E74B303BB26A1DD40B /* [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 = ( - BE3B4CE91209D71783A220B5 /* [CP] Check Pods Manifest.lock */, + 7D8647C9A25CCD97DFC23FF1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 512FE022562180A4BB3B4F96 /* [CP] Embed Pods Frameworks */, + 328F79D4E08FBB68C58D608C /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 328F79D4E08FBB68C58D608C /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 512FE022562180A4BB3B4F96 /* [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; - }; - 786BC907A7B742B3FD84346B /* [CP] Check Pods Manifest.lock */ = { + 3B5A83E74B303BB26A1DD40B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - BE3B4CE91209D71783A220B5 /* [CP] Check Pods Manifest.lock */ = { + 7D8647C9A25CCD97DFC23FF1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99867943115C27533792C611 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = BFF25CD8ACB051F7D9AFDE19 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4B93928D1ADB5795749C18AB /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 1C0E75DD7B4DD13D30E535D4 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6B7855103D8ADB3BF00D0CC2 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E86DC419E2E8B5296D77AE84 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/github-client/step_06/pubspec.yaml b/github-client/step_06/pubspec.yaml index 40f2661ef9..13cace3022 100644 --- a/github-client/step_06/pubspec.yaml +++ b/github-client/step_06/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,9 +34,9 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 oauth2: ^2.0.3 - url_launcher: ^6.3.1 + url_launcher: ^6.3.2 github: ^9.25.0 window_to_front: path: ../window_to_front @@ -50,7 +50,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/github-client/step_07/.gemini/settings.json b/github-client/step_07/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/github-client/step_07/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/github-client/step_07/.gitignore b/github-client/step_07/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/github-client/step_07/.gitignore +++ b/github-client/step_07/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/github-client/step_07/linux/runner/my_application.cc b/github-client/step_07/linux/runner/my_application.cc index 07d3dc6a33..23e6f4c601 100644 --- a/github-client/step_07/linux/runner/my_application.cc +++ b/github-client/step_07/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/github-client/step_07/macos/Podfile b/github-client/step_07/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/github-client/step_07/macos/Podfile +++ b/github-client/step_07/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/github-client/step_07/macos/Runner.xcodeproj/project.pbxproj b/github-client/step_07/macos/Runner.xcodeproj/project.pbxproj index 4db5820184..49a150ecd4 100644 --- a/github-client/step_07/macos/Runner.xcodeproj/project.pbxproj +++ b/github-client/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 */; }; - 797BDD0E0431FAD048E7763B /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 088922E9991DFAB30567AF8D /* Pods_RunnerTests.framework */; }; - E70AD68E04184C86472B8BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61E5BE228655538DD99BE18A /* Pods_Runner.framework */; }; + A955F8F505E3A2E8CBB529F8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5AB2A42D186FAA3347D090B /* Pods_Runner.framework */; }; + BB5259C39E46149DF5D709C9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA25B64F1A0F5BC481795875 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,7 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 088922E9991DFAB30567AF8D /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 05DD99E69A4C27586877E640 /* 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 = ""; }; + 1C0E75DD7B4DD13D30E535D4 /* 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 = ""; }; 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 +80,14 @@ 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 = ""; }; - 4B93928D1ADB5795749C18AB /* 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 = ""; }; - 4E4698DCF3D47C2398A1195D /* 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 = ""; }; - 61E5BE228655538DD99BE18A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6B7855103D8ADB3BF00D0CC2 /* 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 = ""; }; + 5B058475268BBBF2D351BBD2 /* 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 = ""; }; + 603D9AD823D2B9CE467AF43C /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 99867943115C27533792C611 /* 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 = ""; }; - A7939AB87F44494E4735DD26 /* 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 = ""; }; - C6CF527E2B74B023EB25B356 /* 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 = ""; }; + BFF25CD8ACB051F7D9AFDE19 /* 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 = ""; }; + C5AB2A42D186FAA3347D090B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DA25B64F1A0F5BC481795875 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E86DC419E2E8B5296D77AE84 /* 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 = ( - 797BDD0E0431FAD048E7763B /* Pods_RunnerTests.framework in Frameworks */, + BB5259C39E46149DF5D709C9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E70AD68E04184C86472B8BB8 /* Pods_Runner.framework in Frameworks */, + A955F8F505E3A2E8CBB529F8 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - A14B6D9FAF12F477FF7A5F0A /* Pods */, + 8DD2ADC90649092AAD1ED194 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - A14B6D9FAF12F477FF7A5F0A /* Pods */ = { + 8DD2ADC90649092AAD1ED194 /* Pods */ = { isa = PBXGroup; children = ( - C6CF527E2B74B023EB25B356 /* Pods-Runner.debug.xcconfig */, - A7939AB87F44494E4735DD26 /* Pods-Runner.release.xcconfig */, - 4E4698DCF3D47C2398A1195D /* Pods-Runner.profile.xcconfig */, - 99867943115C27533792C611 /* Pods-RunnerTests.debug.xcconfig */, - 4B93928D1ADB5795749C18AB /* Pods-RunnerTests.release.xcconfig */, - 6B7855103D8ADB3BF00D0CC2 /* Pods-RunnerTests.profile.xcconfig */, + 5B058475268BBBF2D351BBD2 /* Pods-Runner.debug.xcconfig */, + 05DD99E69A4C27586877E640 /* Pods-Runner.release.xcconfig */, + 603D9AD823D2B9CE467AF43C /* Pods-Runner.profile.xcconfig */, + BFF25CD8ACB051F7D9AFDE19 /* Pods-RunnerTests.debug.xcconfig */, + 1C0E75DD7B4DD13D30E535D4 /* Pods-RunnerTests.release.xcconfig */, + E86DC419E2E8B5296D77AE84 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 61E5BE228655538DD99BE18A /* Pods_Runner.framework */, - 088922E9991DFAB30567AF8D /* Pods_RunnerTests.framework */, + C5AB2A42D186FAA3347D090B /* Pods_Runner.framework */, + DA25B64F1A0F5BC481795875 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 786BC907A7B742B3FD84346B /* [CP] Check Pods Manifest.lock */, + 3B5A83E74B303BB26A1DD40B /* [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 = ( - BE3B4CE91209D71783A220B5 /* [CP] Check Pods Manifest.lock */, + 7D8647C9A25CCD97DFC23FF1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - 512FE022562180A4BB3B4F96 /* [CP] Embed Pods Frameworks */, + 328F79D4E08FBB68C58D608C /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -323,6 +323,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 328F79D4E08FBB68C58D608C /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -361,24 +378,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 512FE022562180A4BB3B4F96 /* [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; - }; - 786BC907A7B742B3FD84346B /* [CP] Check Pods Manifest.lock */ = { + 3B5A83E74B303BB26A1DD40B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,7 +400,7 @@ 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; }; - BE3B4CE91209D71783A220B5 /* [CP] Check Pods Manifest.lock */ = { + 7D8647C9A25CCD97DFC23FF1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99867943115C27533792C611 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = BFF25CD8ACB051F7D9AFDE19 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4B93928D1ADB5795749C18AB /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 1C0E75DD7B4DD13D30E535D4 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6B7855103D8ADB3BF00D0CC2 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E86DC419E2E8B5296D77AE84 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/github-client/step_07/pubspec.yaml b/github-client/step_07/pubspec.yaml index b3c2912560..7105a0f67c 100644 --- a/github-client/step_07/pubspec.yaml +++ b/github-client/step_07/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,9 +34,9 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 oauth2: ^2.0.3 - url_launcher: ^6.3.1 + url_launcher: ^6.3.2 github: ^9.25.0 window_to_front: path: ../window_to_front @@ -51,7 +51,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/github-client/window_to_front/.gemini/settings.json b/github-client/window_to_front/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/github-client/window_to_front/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/github-client/window_to_front/.gitignore b/github-client/window_to_front/.gitignore index e7d347d9d3..b9d7f25b91 100644 --- a/github-client/window_to_front/.gitignore +++ b/github-client/window_to_front/.gitignore @@ -28,6 +28,6 @@ migrate_working_dir/ /pubspec.lock **/doc/api/ .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies -build/ +/build/ +/coverage/ diff --git a/github-client/window_to_front/pubspec.yaml b/github-client/window_to_front/pubspec.yaml index 9ee96cfcfa..b4b75f3e48 100644 --- a/github-client/window_to_front/pubspec.yaml +++ b/github-client/window_to_front/pubspec.yaml @@ -18,7 +18,7 @@ version: 0.0.1 homepage: environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 flutter: '>=3.3.0' dependencies: @@ -29,7 +29,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/google-maps-in-flutter/codelab_rebuild.yaml b/google-maps-in-flutter/codelab_rebuild.yaml index b5874e15c9..d38f9fb4fe 100644 --- a/google-maps-in-flutter/codelab_rebuild.yaml +++ b/google-maps-in-flutter/codelab_rebuild.yaml @@ -28,6 +28,21 @@ steps: flutter: pub add google_maps_flutter - name: Remove the README.md rm: google_maps_in_flutter/README.md + - name: Add .gemini directory + mkdir: google_maps_in_flutter/.gemini + - name: Add .gemini/settings.json + path: google_maps_in_flutter/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: VSCode config path: google_maps_in_flutter mkdir: .vscode @@ -47,24 +62,6 @@ steps: } ] } - - name: Patch android/app/build.gradle.kts - path: google_maps_in_flutter/android/app/build.gradle.kts - patch-u: | - --- b/google-maps-in-flutter/step_3/android/app/build.gradle - +++ a/google-maps-in-flutter/step_3/android/app/build.gradle - @@ -22,9 +22,9 @@ android { - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId = "com.example.google_maps_in_flutter" - - // You can update the following values to match your application needs. - - // For more information, see: https://flutter.dev/to/review-gradle-config. - - minSdk = flutter.minSdkVersion - + // Minimum Android version for Google Maps SDK - + // https://developers.google.com/maps/flutter-package/config#android - + minSdk = 21 - targetSdk = flutter.targetSdkVersion - versionCode = flutter.versionCode - versionName = flutter.versionName - name: Patch ios/Podfile platforms: [ macos ] path: google_maps_in_flutter/ios/Podfile @@ -73,13 +70,16 @@ steps: +++ a/google-maps-in-flutter/step_3/ios/Podfile @@ -1,5 +1,6 @@ -# Uncomment this line to define a global platform for your project - -# platform :ios, '12.0' - +# Google Maps SDK requires platform version 14 + -# platform :ios, '13.0' + +# Google Maps SDK for iOS requires iOS 16.0 +# https://developers.google.com/maps/flutter-package/config#ios - +platform :ios, '14.0' + +platform :ios, '16.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' + - name: Patch ios/Runner.xcodeproj/project.pbxproj + xcode-project-path: google_maps_in_flutter/ios/Runner.xcodeproj + iphoneos-deployment-target: "16.0" - name: Patch ios/Flutter/AppFrameworkInfo.plist path: google_maps_in_flutter/ios/Flutter/AppFrameworkInfo.plist patch-u: | @@ -89,8 +89,8 @@ steps: CFBundleVersion 1.0 MinimumOSVersion - - 12.0 - + 14.0 + - 13.0 + + 16.0 - name: Patch lib/main.dart diff --git a/google-maps-in-flutter/step_3/.gemini/settings.json b/google-maps-in-flutter/step_3/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/google-maps-in-flutter/step_3/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/google-maps-in-flutter/step_3/.gitignore b/google-maps-in-flutter/step_3/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/google-maps-in-flutter/step_3/.gitignore +++ b/google-maps-in-flutter/step_3/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/google-maps-in-flutter/step_3/android/app/build.gradle.kts b/google-maps-in-flutter/step_3/android/app/build.gradle.kts index eef6a54622..04d6e6a611 100644 --- a/google-maps-in-flutter/step_3/android/app/build.gradle.kts +++ b/google-maps-in-flutter/step_3/android/app/build.gradle.kts @@ -22,9 +22,9 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId = "com.example.google_maps_in_flutter" - // Minimum Android version for Google Maps SDK - // https://developers.google.com/maps/flutter-package/config#android - minSdk = 21 + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/google-maps-in-flutter/step_3/android/build.gradle.kts b/google-maps-in-flutter/step_3/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/google-maps-in-flutter/step_3/android/build.gradle.kts +++ b/google-maps-in-flutter/step_3/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/google-maps-in-flutter/step_3/android/settings.gradle.kts b/google-maps-in-flutter/step_3/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/google-maps-in-flutter/step_3/android/settings.gradle.kts +++ b/google-maps-in-flutter/step_3/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/google-maps-in-flutter/step_3/ios/Flutter/AppFrameworkInfo.plist b/google-maps-in-flutter/step_3/ios/Flutter/AppFrameworkInfo.plist index 163000d85c..74210a159b 100644 --- a/google-maps-in-flutter/step_3/ios/Flutter/AppFrameworkInfo.plist +++ b/google-maps-in-flutter/step_3/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 14.0 + 16.0 diff --git a/google-maps-in-flutter/step_3/ios/Podfile b/google-maps-in-flutter/step_3/ios/Podfile index 0f7f6d3141..de096a3a7d 100644 --- a/google-maps-in-flutter/step_3/ios/Podfile +++ b/google-maps-in-flutter/step_3/ios/Podfile @@ -1,6 +1,6 @@ -# Google Maps SDK requires platform version 14 +# Google Maps SDK for iOS requires iOS 16.0 # https://developers.google.com/maps/flutter-package/config#ios -platform :ios, '14.0' +platform :ios, '16.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/google-maps-in-flutter/step_3/ios/Runner.xcodeproj/project.pbxproj b/google-maps-in-flutter/step_3/ios/Runner.xcodeproj/project.pbxproj index 94177a7a74..125b6f44a7 100644 --- a/google-maps-in-flutter/step_3/ios/Runner.xcodeproj/project.pbxproj +++ b/google-maps-in-flutter/step_3/ios/Runner.xcodeproj/project.pbxproj @@ -10,12 +10,12 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 5A572D43C12F3F26BB194EC2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C0F8B46A1C07D376A735392 /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 85F15CE57E6A10C780C973F9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EECA4F407077A46751BDA1E5 /* Pods_RunnerTests.framework */; }; 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 */; }; - D76E711C69670A19C68EBEF4 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDC85B3E1AD76826E5C25CE9 /* Pods_Runner.framework */; }; + EA3FB3D57377BE29DDABA2F9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2DC4EC2416BD54743AAC98AE /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,17 +42,19 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 06AFC2AB50889E48019DEB9F /* 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 = ""; }; + 142186A61E2FA9BD8A223058 /* 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 = ""; }; 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 = ""; }; - 2B586471B7EC50AEAE33AB81 /* 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 = ""; }; + 21CDD432FAE2013A40C9C298 /* 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 = ""; }; + 2DC4EC2416BD54743AAC98AE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4F01804EF24A66E435354E49 /* 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 = ""; }; - 52D46BCF09AD4A6E88938B22 /* 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 = ""; }; 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 = ""; }; + 7C8D3DB3CE204986D7964431 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,19 +62,17 @@ 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 = ""; }; - BDC85B3E1AD76826E5C25CE9 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C5B9212D25D4893BF8AB8C4C /* 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 = ""; }; - C7320A0DCA6BC969D57CDA96 /* 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 = ""; }; - EECA4F407077A46751BDA1E5 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FE4426695A7C9D8B76117302 /* 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 = ""; }; + 9C0F8B46A1C07D376A735392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DA7CB35498FD3560745FA89F /* 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 = ""; }; + E98965DBC955DE1877CBCB19 /* 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 */ - 68432E3B9DCF3EC452B84C09 /* Frameworks */ = { + 1FFFD3B0E7884E228DFB084C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 85F15CE57E6A10C780C973F9 /* Pods_RunnerTests.framework in Frameworks */, + EA3FB3D57377BE29DDABA2F9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D76E711C69670A19C68EBEF4 /* Pods_Runner.framework in Frameworks */, + 5A572D43C12F3F26BB194EC2 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,27 +95,27 @@ path = RunnerTests; sourceTree = ""; }; - 384BAC3463C5664AF4E37B9A /* Frameworks */ = { + 705B69C5995EF35C746B24C7 /* Pods */ = { isa = PBXGroup; children = ( - BDC85B3E1AD76826E5C25CE9 /* Pods_Runner.framework */, - EECA4F407077A46751BDA1E5 /* Pods_RunnerTests.framework */, + 21CDD432FAE2013A40C9C298 /* Pods-Runner.debug.xcconfig */, + 142186A61E2FA9BD8A223058 /* Pods-Runner.release.xcconfig */, + 06AFC2AB50889E48019DEB9F /* Pods-Runner.profile.xcconfig */, + DA7CB35498FD3560745FA89F /* Pods-RunnerTests.debug.xcconfig */, + 7C8D3DB3CE204986D7964431 /* Pods-RunnerTests.release.xcconfig */, + E98965DBC955DE1877CBCB19 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; - 38E9901965F05289BF095ACD /* Pods */ = { + 779E84261D39902CEDAC7FE0 /* Frameworks */ = { isa = PBXGroup; children = ( - C5B9212D25D4893BF8AB8C4C /* Pods-Runner.debug.xcconfig */, - C7320A0DCA6BC969D57CDA96 /* Pods-Runner.release.xcconfig */, - 2B586471B7EC50AEAE33AB81 /* Pods-Runner.profile.xcconfig */, - 4F01804EF24A66E435354E49 /* Pods-RunnerTests.debug.xcconfig */, - FE4426695A7C9D8B76117302 /* Pods-RunnerTests.release.xcconfig */, - 52D46BCF09AD4A6E88938B22 /* Pods-RunnerTests.profile.xcconfig */, + 9C0F8B46A1C07D376A735392 /* Pods_Runner.framework */, + 2DC4EC2416BD54743AAC98AE /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 38E9901965F05289BF095ACD /* Pods */, - 384BAC3463C5664AF4E37B9A /* Frameworks */, + 705B69C5995EF35C746B24C7 /* Pods */, + 779E84261D39902CEDAC7FE0 /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - DA7491906E92459500748231 /* [CP] Check Pods Manifest.lock */, + 1F3804BBC795536FF0D4E1C9 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 68432E3B9DCF3EC452B84C09 /* Frameworks */, + 1FFFD3B0E7884E228DFB084C /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 63706CC340920070DBA6F314 /* [CP] Check Pods Manifest.lock */, + 20F11AD135ED1B73C0023BFD /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 683F1714219C18BD7D83B80B /* [CP] Copy Pods Resources */, + F2376952906D217369DC6244 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -270,23 +270,29 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 1F3804BBC795536FF0D4E1C9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 63706CC340920070DBA6F314 /* [CP] Check Pods Manifest.lock */ = { + 20F11AD135ED1B73C0023BFD /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,22 +314,21 @@ 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; }; - 683F1714219C18BD7D83B80B /* [CP] Copy Pods Resources */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + name = "Thin Binary"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -340,26 +345,21 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DA7491906E92459500748231 /* [CP] Check Pods Manifest.lock */ = { + F2376952906D217369DC6244 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4F01804EF24A66E435354E49 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = DA7CB35498FD3560745FA89F /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.googleMapsInFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FE4426695A7C9D8B76117302 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 7C8D3DB3CE204986D7964431 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.googleMapsInFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 52D46BCF09AD4A6E88938B22 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E98965DBC955DE1877CBCB19 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.googleMapsInFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/google-maps-in-flutter/step_3/pubspec.yaml b/google-maps-in-flutter/step_3/pubspec.yaml index e3ad23d400..fff0b2b725 100644 --- a/google-maps-in-flutter/step_3/pubspec.yaml +++ b/google-maps-in-flutter/step_3/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - google_maps_flutter: ^2.12.2 + google_maps_flutter: ^2.12.3 dev_dependencies: flutter_test: @@ -45,7 +45,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/google-maps-in-flutter/step_4/.gemini/settings.json b/google-maps-in-flutter/step_4/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/google-maps-in-flutter/step_4/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/google-maps-in-flutter/step_4/.gitignore b/google-maps-in-flutter/step_4/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/google-maps-in-flutter/step_4/.gitignore +++ b/google-maps-in-flutter/step_4/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/google-maps-in-flutter/step_4/android/app/build.gradle.kts b/google-maps-in-flutter/step_4/android/app/build.gradle.kts index eef6a54622..04d6e6a611 100644 --- a/google-maps-in-flutter/step_4/android/app/build.gradle.kts +++ b/google-maps-in-flutter/step_4/android/app/build.gradle.kts @@ -22,9 +22,9 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId = "com.example.google_maps_in_flutter" - // Minimum Android version for Google Maps SDK - // https://developers.google.com/maps/flutter-package/config#android - minSdk = 21 + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/google-maps-in-flutter/step_4/android/build.gradle.kts b/google-maps-in-flutter/step_4/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/google-maps-in-flutter/step_4/android/build.gradle.kts +++ b/google-maps-in-flutter/step_4/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/google-maps-in-flutter/step_4/android/settings.gradle.kts b/google-maps-in-flutter/step_4/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/google-maps-in-flutter/step_4/android/settings.gradle.kts +++ b/google-maps-in-flutter/step_4/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/google-maps-in-flutter/step_4/ios/Flutter/AppFrameworkInfo.plist b/google-maps-in-flutter/step_4/ios/Flutter/AppFrameworkInfo.plist index 163000d85c..74210a159b 100644 --- a/google-maps-in-flutter/step_4/ios/Flutter/AppFrameworkInfo.plist +++ b/google-maps-in-flutter/step_4/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 14.0 + 16.0 diff --git a/google-maps-in-flutter/step_4/ios/Podfile b/google-maps-in-flutter/step_4/ios/Podfile index 0f7f6d3141..de096a3a7d 100644 --- a/google-maps-in-flutter/step_4/ios/Podfile +++ b/google-maps-in-flutter/step_4/ios/Podfile @@ -1,6 +1,6 @@ -# Google Maps SDK requires platform version 14 +# Google Maps SDK for iOS requires iOS 16.0 # https://developers.google.com/maps/flutter-package/config#ios -platform :ios, '14.0' +platform :ios, '16.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/google-maps-in-flutter/step_4/ios/Runner.xcodeproj/project.pbxproj b/google-maps-in-flutter/step_4/ios/Runner.xcodeproj/project.pbxproj index 94177a7a74..125b6f44a7 100644 --- a/google-maps-in-flutter/step_4/ios/Runner.xcodeproj/project.pbxproj +++ b/google-maps-in-flutter/step_4/ios/Runner.xcodeproj/project.pbxproj @@ -10,12 +10,12 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 5A572D43C12F3F26BB194EC2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C0F8B46A1C07D376A735392 /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 85F15CE57E6A10C780C973F9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EECA4F407077A46751BDA1E5 /* Pods_RunnerTests.framework */; }; 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 */; }; - D76E711C69670A19C68EBEF4 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDC85B3E1AD76826E5C25CE9 /* Pods_Runner.framework */; }; + EA3FB3D57377BE29DDABA2F9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2DC4EC2416BD54743AAC98AE /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,17 +42,19 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 06AFC2AB50889E48019DEB9F /* 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 = ""; }; + 142186A61E2FA9BD8A223058 /* 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 = ""; }; 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 = ""; }; - 2B586471B7EC50AEAE33AB81 /* 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 = ""; }; + 21CDD432FAE2013A40C9C298 /* 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 = ""; }; + 2DC4EC2416BD54743AAC98AE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4F01804EF24A66E435354E49 /* 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 = ""; }; - 52D46BCF09AD4A6E88938B22 /* 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 = ""; }; 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 = ""; }; + 7C8D3DB3CE204986D7964431 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,19 +62,17 @@ 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 = ""; }; - BDC85B3E1AD76826E5C25CE9 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C5B9212D25D4893BF8AB8C4C /* 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 = ""; }; - C7320A0DCA6BC969D57CDA96 /* 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 = ""; }; - EECA4F407077A46751BDA1E5 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FE4426695A7C9D8B76117302 /* 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 = ""; }; + 9C0F8B46A1C07D376A735392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DA7CB35498FD3560745FA89F /* 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 = ""; }; + E98965DBC955DE1877CBCB19 /* 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 */ - 68432E3B9DCF3EC452B84C09 /* Frameworks */ = { + 1FFFD3B0E7884E228DFB084C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 85F15CE57E6A10C780C973F9 /* Pods_RunnerTests.framework in Frameworks */, + EA3FB3D57377BE29DDABA2F9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D76E711C69670A19C68EBEF4 /* Pods_Runner.framework in Frameworks */, + 5A572D43C12F3F26BB194EC2 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,27 +95,27 @@ path = RunnerTests; sourceTree = ""; }; - 384BAC3463C5664AF4E37B9A /* Frameworks */ = { + 705B69C5995EF35C746B24C7 /* Pods */ = { isa = PBXGroup; children = ( - BDC85B3E1AD76826E5C25CE9 /* Pods_Runner.framework */, - EECA4F407077A46751BDA1E5 /* Pods_RunnerTests.framework */, + 21CDD432FAE2013A40C9C298 /* Pods-Runner.debug.xcconfig */, + 142186A61E2FA9BD8A223058 /* Pods-Runner.release.xcconfig */, + 06AFC2AB50889E48019DEB9F /* Pods-Runner.profile.xcconfig */, + DA7CB35498FD3560745FA89F /* Pods-RunnerTests.debug.xcconfig */, + 7C8D3DB3CE204986D7964431 /* Pods-RunnerTests.release.xcconfig */, + E98965DBC955DE1877CBCB19 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; - 38E9901965F05289BF095ACD /* Pods */ = { + 779E84261D39902CEDAC7FE0 /* Frameworks */ = { isa = PBXGroup; children = ( - C5B9212D25D4893BF8AB8C4C /* Pods-Runner.debug.xcconfig */, - C7320A0DCA6BC969D57CDA96 /* Pods-Runner.release.xcconfig */, - 2B586471B7EC50AEAE33AB81 /* Pods-Runner.profile.xcconfig */, - 4F01804EF24A66E435354E49 /* Pods-RunnerTests.debug.xcconfig */, - FE4426695A7C9D8B76117302 /* Pods-RunnerTests.release.xcconfig */, - 52D46BCF09AD4A6E88938B22 /* Pods-RunnerTests.profile.xcconfig */, + 9C0F8B46A1C07D376A735392 /* Pods_Runner.framework */, + 2DC4EC2416BD54743AAC98AE /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 38E9901965F05289BF095ACD /* Pods */, - 384BAC3463C5664AF4E37B9A /* Frameworks */, + 705B69C5995EF35C746B24C7 /* Pods */, + 779E84261D39902CEDAC7FE0 /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - DA7491906E92459500748231 /* [CP] Check Pods Manifest.lock */, + 1F3804BBC795536FF0D4E1C9 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 68432E3B9DCF3EC452B84C09 /* Frameworks */, + 1FFFD3B0E7884E228DFB084C /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 63706CC340920070DBA6F314 /* [CP] Check Pods Manifest.lock */, + 20F11AD135ED1B73C0023BFD /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 683F1714219C18BD7D83B80B /* [CP] Copy Pods Resources */, + F2376952906D217369DC6244 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -270,23 +270,29 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 1F3804BBC795536FF0D4E1C9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 63706CC340920070DBA6F314 /* [CP] Check Pods Manifest.lock */ = { + 20F11AD135ED1B73C0023BFD /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,22 +314,21 @@ 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; }; - 683F1714219C18BD7D83B80B /* [CP] Copy Pods Resources */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + name = "Thin Binary"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -340,26 +345,21 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DA7491906E92459500748231 /* [CP] Check Pods Manifest.lock */ = { + F2376952906D217369DC6244 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4F01804EF24A66E435354E49 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = DA7CB35498FD3560745FA89F /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.googleMapsInFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FE4426695A7C9D8B76117302 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 7C8D3DB3CE204986D7964431 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.googleMapsInFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 52D46BCF09AD4A6E88938B22 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E98965DBC955DE1877CBCB19 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.googleMapsInFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/google-maps-in-flutter/step_4/pubspec.yaml b/google-maps-in-flutter/step_4/pubspec.yaml index e3ad23d400..fff0b2b725 100644 --- a/google-maps-in-flutter/step_4/pubspec.yaml +++ b/google-maps-in-flutter/step_4/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - google_maps_flutter: ^2.12.2 + google_maps_flutter: ^2.12.3 dev_dependencies: flutter_test: @@ -45,7 +45,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/google-maps-in-flutter/step_5/.gemini/settings.json b/google-maps-in-flutter/step_5/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/google-maps-in-flutter/step_5/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/google-maps-in-flutter/step_5/.gitignore b/google-maps-in-flutter/step_5/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/google-maps-in-flutter/step_5/.gitignore +++ b/google-maps-in-flutter/step_5/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/google-maps-in-flutter/step_5/android/app/build.gradle.kts b/google-maps-in-flutter/step_5/android/app/build.gradle.kts index eef6a54622..04d6e6a611 100644 --- a/google-maps-in-flutter/step_5/android/app/build.gradle.kts +++ b/google-maps-in-flutter/step_5/android/app/build.gradle.kts @@ -22,9 +22,9 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId = "com.example.google_maps_in_flutter" - // Minimum Android version for Google Maps SDK - // https://developers.google.com/maps/flutter-package/config#android - minSdk = 21 + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/google-maps-in-flutter/step_5/android/build.gradle.kts b/google-maps-in-flutter/step_5/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/google-maps-in-flutter/step_5/android/build.gradle.kts +++ b/google-maps-in-flutter/step_5/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/google-maps-in-flutter/step_5/android/settings.gradle.kts b/google-maps-in-flutter/step_5/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/google-maps-in-flutter/step_5/android/settings.gradle.kts +++ b/google-maps-in-flutter/step_5/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/google-maps-in-flutter/step_5/ios/Flutter/AppFrameworkInfo.plist b/google-maps-in-flutter/step_5/ios/Flutter/AppFrameworkInfo.plist index 163000d85c..74210a159b 100644 --- a/google-maps-in-flutter/step_5/ios/Flutter/AppFrameworkInfo.plist +++ b/google-maps-in-flutter/step_5/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 14.0 + 16.0 diff --git a/google-maps-in-flutter/step_5/ios/Podfile b/google-maps-in-flutter/step_5/ios/Podfile index 0f7f6d3141..de096a3a7d 100644 --- a/google-maps-in-flutter/step_5/ios/Podfile +++ b/google-maps-in-flutter/step_5/ios/Podfile @@ -1,6 +1,6 @@ -# Google Maps SDK requires platform version 14 +# Google Maps SDK for iOS requires iOS 16.0 # https://developers.google.com/maps/flutter-package/config#ios -platform :ios, '14.0' +platform :ios, '16.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/google-maps-in-flutter/step_5/ios/Runner.xcodeproj/project.pbxproj b/google-maps-in-flutter/step_5/ios/Runner.xcodeproj/project.pbxproj index 94177a7a74..125b6f44a7 100644 --- a/google-maps-in-flutter/step_5/ios/Runner.xcodeproj/project.pbxproj +++ b/google-maps-in-flutter/step_5/ios/Runner.xcodeproj/project.pbxproj @@ -10,12 +10,12 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 5A572D43C12F3F26BB194EC2 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9C0F8B46A1C07D376A735392 /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 85F15CE57E6A10C780C973F9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EECA4F407077A46751BDA1E5 /* Pods_RunnerTests.framework */; }; 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 */; }; - D76E711C69670A19C68EBEF4 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDC85B3E1AD76826E5C25CE9 /* Pods_Runner.framework */; }; + EA3FB3D57377BE29DDABA2F9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2DC4EC2416BD54743AAC98AE /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,17 +42,19 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 06AFC2AB50889E48019DEB9F /* 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 = ""; }; + 142186A61E2FA9BD8A223058 /* 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 = ""; }; 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 = ""; }; - 2B586471B7EC50AEAE33AB81 /* 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 = ""; }; + 21CDD432FAE2013A40C9C298 /* 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 = ""; }; + 2DC4EC2416BD54743AAC98AE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4F01804EF24A66E435354E49 /* 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 = ""; }; - 52D46BCF09AD4A6E88938B22 /* 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 = ""; }; 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 = ""; }; + 7C8D3DB3CE204986D7964431 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -60,19 +62,17 @@ 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 = ""; }; - BDC85B3E1AD76826E5C25CE9 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C5B9212D25D4893BF8AB8C4C /* 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 = ""; }; - C7320A0DCA6BC969D57CDA96 /* 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 = ""; }; - EECA4F407077A46751BDA1E5 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FE4426695A7C9D8B76117302 /* 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 = ""; }; + 9C0F8B46A1C07D376A735392 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DA7CB35498FD3560745FA89F /* 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 = ""; }; + E98965DBC955DE1877CBCB19 /* 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 */ - 68432E3B9DCF3EC452B84C09 /* Frameworks */ = { + 1FFFD3B0E7884E228DFB084C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 85F15CE57E6A10C780C973F9 /* Pods_RunnerTests.framework in Frameworks */, + EA3FB3D57377BE29DDABA2F9 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D76E711C69670A19C68EBEF4 /* Pods_Runner.framework in Frameworks */, + 5A572D43C12F3F26BB194EC2 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,27 +95,27 @@ path = RunnerTests; sourceTree = ""; }; - 384BAC3463C5664AF4E37B9A /* Frameworks */ = { + 705B69C5995EF35C746B24C7 /* Pods */ = { isa = PBXGroup; children = ( - BDC85B3E1AD76826E5C25CE9 /* Pods_Runner.framework */, - EECA4F407077A46751BDA1E5 /* Pods_RunnerTests.framework */, + 21CDD432FAE2013A40C9C298 /* Pods-Runner.debug.xcconfig */, + 142186A61E2FA9BD8A223058 /* Pods-Runner.release.xcconfig */, + 06AFC2AB50889E48019DEB9F /* Pods-Runner.profile.xcconfig */, + DA7CB35498FD3560745FA89F /* Pods-RunnerTests.debug.xcconfig */, + 7C8D3DB3CE204986D7964431 /* Pods-RunnerTests.release.xcconfig */, + E98965DBC955DE1877CBCB19 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; - 38E9901965F05289BF095ACD /* Pods */ = { + 779E84261D39902CEDAC7FE0 /* Frameworks */ = { isa = PBXGroup; children = ( - C5B9212D25D4893BF8AB8C4C /* Pods-Runner.debug.xcconfig */, - C7320A0DCA6BC969D57CDA96 /* Pods-Runner.release.xcconfig */, - 2B586471B7EC50AEAE33AB81 /* Pods-Runner.profile.xcconfig */, - 4F01804EF24A66E435354E49 /* Pods-RunnerTests.debug.xcconfig */, - FE4426695A7C9D8B76117302 /* Pods-RunnerTests.release.xcconfig */, - 52D46BCF09AD4A6E88938B22 /* Pods-RunnerTests.profile.xcconfig */, + 9C0F8B46A1C07D376A735392 /* Pods_Runner.framework */, + 2DC4EC2416BD54743AAC98AE /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 38E9901965F05289BF095ACD /* Pods */, - 384BAC3463C5664AF4E37B9A /* Frameworks */, + 705B69C5995EF35C746B24C7 /* Pods */, + 779E84261D39902CEDAC7FE0 /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - DA7491906E92459500748231 /* [CP] Check Pods Manifest.lock */, + 1F3804BBC795536FF0D4E1C9 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 68432E3B9DCF3EC452B84C09 /* Frameworks */, + 1FFFD3B0E7884E228DFB084C /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 63706CC340920070DBA6F314 /* [CP] Check Pods Manifest.lock */, + 20F11AD135ED1B73C0023BFD /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 683F1714219C18BD7D83B80B /* [CP] Copy Pods Resources */, + F2376952906D217369DC6244 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -270,23 +270,29 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 1F3804BBC795536FF0D4E1C9 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 63706CC340920070DBA6F314 /* [CP] Check Pods Manifest.lock */ = { + 20F11AD135ED1B73C0023BFD /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,22 +314,21 @@ 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; }; - 683F1714219C18BD7D83B80B /* [CP] Copy Pods Resources */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + name = "Thin Binary"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -340,26 +345,21 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DA7491906E92459500748231 /* [CP] Check Pods Manifest.lock */ = { + F2376952906D217369DC6244 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -487,12 +488,13 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4F01804EF24A66E435354E49 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = DA7CB35498FD3560745FA89F /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.googleMapsInFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -505,12 +507,13 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FE4426695A7C9D8B76117302 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 7C8D3DB3CE204986D7964431 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.googleMapsInFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -521,12 +524,13 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 52D46BCF09AD4A6E88938B22 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E98965DBC955DE1877CBCB19 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.googleMapsInFlutter.RunnerTests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -584,7 +588,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -655,6 +659,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -677,6 +682,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/google-maps-in-flutter/step_5/pubspec.yaml b/google-maps-in-flutter/step_5/pubspec.yaml index 4e6fd2dd17..9d47e2029f 100644 --- a/google-maps-in-flutter/step_5/pubspec.yaml +++ b/google-maps-in-flutter/step_5/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,10 +34,10 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - google_maps_flutter: ^2.12.2 - http: ^1.4.0 + google_maps_flutter: ^2.12.3 + http: ^1.5.0 json_annotation: ^4.9.0 - json_serializable: ^6.9.5 + json_serializable: ^6.10.0 dev_dependencies: flutter_test: @@ -48,8 +48,8 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 - build_runner: ^2.4.15 + flutter_lints: ^6.0.0 + build_runner: ^2.6.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/haiku_generator/codelab_rebuild.yaml b/haiku_generator/codelab_rebuild.yaml index 317198e90b..8c5bfca2f3 100644 --- a/haiku_generator/codelab_rebuild.yaml +++ b/haiku_generator/codelab_rebuild.yaml @@ -22,6 +22,21 @@ steps: # Haiku generator demo app This folder contains the code for [Generative AI](https://developers.generativeai.google/) + Flutter codelab. + - name: Add .gemini directory + mkdir: haiku_generator/.gemini + - name: Add .gemini/settings.json + path: haiku_generator/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add ui.png path: haiku_generator/ui.png base64-contents: | diff --git a/haiku_generator/finished/.gemini/settings.json b/haiku_generator/finished/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/haiku_generator/finished/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/haiku_generator/finished/.gitignore b/haiku_generator/finished/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/haiku_generator/finished/.gitignore +++ b/haiku_generator/finished/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/haiku_generator/finished/android/build.gradle.kts b/haiku_generator/finished/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/haiku_generator/finished/android/build.gradle.kts +++ b/haiku_generator/finished/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/haiku_generator/finished/android/settings.gradle.kts b/haiku_generator/finished/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/haiku_generator/finished/android/settings.gradle.kts +++ b/haiku_generator/finished/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/haiku_generator/finished/ios/Flutter/AppFrameworkInfo.plist b/haiku_generator/finished/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/haiku_generator/finished/ios/Flutter/AppFrameworkInfo.plist +++ b/haiku_generator/finished/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/haiku_generator/finished/ios/Runner.xcodeproj/project.pbxproj b/haiku_generator/finished/ios/Runner.xcodeproj/project.pbxproj index 777a6534e0..916c66c5bd 100644 --- a/haiku_generator/finished/ios/Runner.xcodeproj/project.pbxproj +++ b/haiku_generator/finished/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/haiku_generator/finished/linux/runner/my_application.cc b/haiku_generator/finished/linux/runner/my_application.cc index 719a51f76d..ef7d9ae615 100644 --- a/haiku_generator/finished/linux/runner/my_application.cc +++ b/haiku_generator/finished/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/haiku_generator/finished/macos/Runner.xcodeproj/project.pbxproj b/haiku_generator/finished/macos/Runner.xcodeproj/project.pbxproj index ddc3d69c35..7a69b3483c 100644 --- a/haiku_generator/finished/macos/Runner.xcodeproj/project.pbxproj +++ b/haiku_generator/finished/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/haiku_generator/finished/pubspec.yaml b/haiku_generator/finished/pubspec.yaml index 0723b42305..46a92977eb 100644 --- a/haiku_generator/finished/pubspec.yaml +++ b/haiku_generator/finished/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/haiku_generator/step0/.gemini/settings.json b/haiku_generator/step0/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/haiku_generator/step0/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/haiku_generator/step0/.gitignore b/haiku_generator/step0/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/haiku_generator/step0/.gitignore +++ b/haiku_generator/step0/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/haiku_generator/step0/android/build.gradle.kts b/haiku_generator/step0/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/haiku_generator/step0/android/build.gradle.kts +++ b/haiku_generator/step0/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/haiku_generator/step0/android/settings.gradle.kts b/haiku_generator/step0/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/haiku_generator/step0/android/settings.gradle.kts +++ b/haiku_generator/step0/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/haiku_generator/step0/ios/Flutter/AppFrameworkInfo.plist b/haiku_generator/step0/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/haiku_generator/step0/ios/Flutter/AppFrameworkInfo.plist +++ b/haiku_generator/step0/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/haiku_generator/step0/ios/Runner.xcodeproj/project.pbxproj b/haiku_generator/step0/ios/Runner.xcodeproj/project.pbxproj index 777a6534e0..916c66c5bd 100644 --- a/haiku_generator/step0/ios/Runner.xcodeproj/project.pbxproj +++ b/haiku_generator/step0/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/haiku_generator/step0/linux/runner/my_application.cc b/haiku_generator/step0/linux/runner/my_application.cc index 719a51f76d..ef7d9ae615 100644 --- a/haiku_generator/step0/linux/runner/my_application.cc +++ b/haiku_generator/step0/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/haiku_generator/step0/macos/Runner.xcodeproj/project.pbxproj b/haiku_generator/step0/macos/Runner.xcodeproj/project.pbxproj index ddc3d69c35..7a69b3483c 100644 --- a/haiku_generator/step0/macos/Runner.xcodeproj/project.pbxproj +++ b/haiku_generator/step0/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/haiku_generator/step0/pubspec.yaml b/haiku_generator/step0/pubspec.yaml index 0723b42305..46a92977eb 100644 --- a/haiku_generator/step0/pubspec.yaml +++ b/haiku_generator/step0/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/haiku_generator/step1/.gemini/settings.json b/haiku_generator/step1/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/haiku_generator/step1/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/haiku_generator/step1/.gitignore b/haiku_generator/step1/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/haiku_generator/step1/.gitignore +++ b/haiku_generator/step1/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/haiku_generator/step1/android/build.gradle.kts b/haiku_generator/step1/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/haiku_generator/step1/android/build.gradle.kts +++ b/haiku_generator/step1/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/haiku_generator/step1/android/settings.gradle.kts b/haiku_generator/step1/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/haiku_generator/step1/android/settings.gradle.kts +++ b/haiku_generator/step1/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/haiku_generator/step1/ios/Flutter/AppFrameworkInfo.plist b/haiku_generator/step1/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/haiku_generator/step1/ios/Flutter/AppFrameworkInfo.plist +++ b/haiku_generator/step1/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/haiku_generator/step1/ios/Runner.xcodeproj/project.pbxproj b/haiku_generator/step1/ios/Runner.xcodeproj/project.pbxproj index 777a6534e0..916c66c5bd 100644 --- a/haiku_generator/step1/ios/Runner.xcodeproj/project.pbxproj +++ b/haiku_generator/step1/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/haiku_generator/step1/linux/runner/my_application.cc b/haiku_generator/step1/linux/runner/my_application.cc index 719a51f76d..ef7d9ae615 100644 --- a/haiku_generator/step1/linux/runner/my_application.cc +++ b/haiku_generator/step1/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/haiku_generator/step1/macos/Runner.xcodeproj/project.pbxproj b/haiku_generator/step1/macos/Runner.xcodeproj/project.pbxproj index ddc3d69c35..7a69b3483c 100644 --- a/haiku_generator/step1/macos/Runner.xcodeproj/project.pbxproj +++ b/haiku_generator/step1/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/haiku_generator/step1/pubspec.yaml b/haiku_generator/step1/pubspec.yaml index 0723b42305..46a92977eb 100644 --- a/haiku_generator/step1/pubspec.yaml +++ b/haiku_generator/step1/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/haiku_generator/step2/.gemini/settings.json b/haiku_generator/step2/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/haiku_generator/step2/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/haiku_generator/step2/.gitignore b/haiku_generator/step2/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/haiku_generator/step2/.gitignore +++ b/haiku_generator/step2/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/haiku_generator/step2/android/build.gradle.kts b/haiku_generator/step2/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/haiku_generator/step2/android/build.gradle.kts +++ b/haiku_generator/step2/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/haiku_generator/step2/android/settings.gradle.kts b/haiku_generator/step2/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/haiku_generator/step2/android/settings.gradle.kts +++ b/haiku_generator/step2/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/haiku_generator/step2/ios/Flutter/AppFrameworkInfo.plist b/haiku_generator/step2/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/haiku_generator/step2/ios/Flutter/AppFrameworkInfo.plist +++ b/haiku_generator/step2/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/haiku_generator/step2/ios/Runner.xcodeproj/project.pbxproj b/haiku_generator/step2/ios/Runner.xcodeproj/project.pbxproj index 777a6534e0..916c66c5bd 100644 --- a/haiku_generator/step2/ios/Runner.xcodeproj/project.pbxproj +++ b/haiku_generator/step2/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/haiku_generator/step2/linux/runner/my_application.cc b/haiku_generator/step2/linux/runner/my_application.cc index 719a51f76d..ef7d9ae615 100644 --- a/haiku_generator/step2/linux/runner/my_application.cc +++ b/haiku_generator/step2/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/haiku_generator/step2/macos/Runner.xcodeproj/project.pbxproj b/haiku_generator/step2/macos/Runner.xcodeproj/project.pbxproj index ddc3d69c35..7a69b3483c 100644 --- a/haiku_generator/step2/macos/Runner.xcodeproj/project.pbxproj +++ b/haiku_generator/step2/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/haiku_generator/step2/pubspec.yaml b/haiku_generator/step2/pubspec.yaml index 0723b42305..46a92977eb 100644 --- a/haiku_generator/step2/pubspec.yaml +++ b/haiku_generator/step2/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/haiku_generator/step3/.gemini/settings.json b/haiku_generator/step3/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/haiku_generator/step3/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/haiku_generator/step3/.gitignore b/haiku_generator/step3/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/haiku_generator/step3/.gitignore +++ b/haiku_generator/step3/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/haiku_generator/step3/android/build.gradle.kts b/haiku_generator/step3/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/haiku_generator/step3/android/build.gradle.kts +++ b/haiku_generator/step3/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/haiku_generator/step3/android/settings.gradle.kts b/haiku_generator/step3/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/haiku_generator/step3/android/settings.gradle.kts +++ b/haiku_generator/step3/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/haiku_generator/step3/ios/Flutter/AppFrameworkInfo.plist b/haiku_generator/step3/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/haiku_generator/step3/ios/Flutter/AppFrameworkInfo.plist +++ b/haiku_generator/step3/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/haiku_generator/step3/ios/Runner.xcodeproj/project.pbxproj b/haiku_generator/step3/ios/Runner.xcodeproj/project.pbxproj index 777a6534e0..916c66c5bd 100644 --- a/haiku_generator/step3/ios/Runner.xcodeproj/project.pbxproj +++ b/haiku_generator/step3/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/haiku_generator/step3/linux/runner/my_application.cc b/haiku_generator/step3/linux/runner/my_application.cc index 719a51f76d..ef7d9ae615 100644 --- a/haiku_generator/step3/linux/runner/my_application.cc +++ b/haiku_generator/step3/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/haiku_generator/step3/macos/Runner.xcodeproj/project.pbxproj b/haiku_generator/step3/macos/Runner.xcodeproj/project.pbxproj index ddc3d69c35..7a69b3483c 100644 --- a/haiku_generator/step3/macos/Runner.xcodeproj/project.pbxproj +++ b/haiku_generator/step3/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/haiku_generator/step3/pubspec.yaml b/haiku_generator/step3/pubspec.yaml index 0723b42305..46a92977eb 100644 --- a/haiku_generator/step3/pubspec.yaml +++ b/haiku_generator/step3/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/homescreen_codelab/codelab_rebuild.yaml b/homescreen_codelab/codelab_rebuild.yaml index af0e5fcefa..56715ae41c 100644 --- a/homescreen_codelab/codelab_rebuild.yaml +++ b/homescreen_codelab/codelab_rebuild.yaml @@ -19,6 +19,21 @@ steps: avoid_print: false - name: Remove README rm: homescreen_widgets/README.md + - name: Add .gemini directory + mkdir: homescreen_widgets/.gemini + - name: Add .gemini/settings.json + path: homescreen_widgets/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add .vscode directory mkdir: homescreen_widgets/.vscode - name: Add .vscode/launch.json @@ -1993,7 +2008,7 @@ steps: import 'home_screen.dart'; import 'news_data.dart'; - @@ -13,23 +15,33 @@ class ArticleScreen extends StatefulWidget { + @@ -13,23 +15,31 @@ class ArticleScreen extends StatefulWidget { } class _ArticleScreenState extends State { @@ -2023,16 +2038,14 @@ steps: - // New: call updateHeadline + onPressed: () async { + if (_globalKey.currentContext != null) { - + var path = - + await HomeWidget.renderFlutterWidget( - + const LineChart(), - + key: 'filename', - + logicalSize: _globalKey.currentContext!.size!, - + pixelRatio: MediaQuery.of( - + _globalKey.currentContext!, - + ).devicePixelRatio, - + ) - + as String; + + var path = await HomeWidget.renderFlutterWidget( + + const LineChart(), + + key: 'filename', + + logicalSize: _globalKey.currentContext!.size!, + + pixelRatio: MediaQuery.of( + + _globalKey.currentContext!, + + ).devicePixelRatio, + + ); + setState(() { + imagePath = path; + }); @@ -2040,7 +2053,7 @@ steps: updateHeadline(widget.article); }, label: const Text('Update Homescreen'), - @@ -44,7 +56,11 @@ class _ArticleScreenState extends State { + @@ -44,7 +54,11 @@ class _ArticleScreenState extends State { const SizedBox(height: 20.0), Text(widget.article.articleText!), const SizedBox(height: 20.0), diff --git a/homescreen_codelab/step_03/.gemini/settings.json b/homescreen_codelab/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/homescreen_codelab/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/homescreen_codelab/step_03/.gitignore b/homescreen_codelab/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/homescreen_codelab/step_03/.gitignore +++ b/homescreen_codelab/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/homescreen_codelab/step_03/android/build.gradle.kts b/homescreen_codelab/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/homescreen_codelab/step_03/android/build.gradle.kts +++ b/homescreen_codelab/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/homescreen_codelab/step_03/android/settings.gradle.kts b/homescreen_codelab/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/homescreen_codelab/step_03/android/settings.gradle.kts +++ b/homescreen_codelab/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/homescreen_codelab/step_03/ios/Flutter/AppFrameworkInfo.plist b/homescreen_codelab/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/homescreen_codelab/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/homescreen_codelab/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/homescreen_codelab/step_03/ios/Podfile b/homescreen_codelab/step_03/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/homescreen_codelab/step_03/ios/Podfile +++ b/homescreen_codelab/step_03/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/homescreen_codelab/step_03/ios/Runner.xcodeproj/project.pbxproj b/homescreen_codelab/step_03/ios/Runner.xcodeproj/project.pbxproj index 2170784b95..5e1353be12 100644 --- a/homescreen_codelab/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/homescreen_codelab/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -10,12 +10,12 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 743DC09EF8110BC3C4EC6214 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00684F90D17F7878BA06E035 /* Pods_RunnerTests.framework */; }; + 5C0B555305CD547F5A7448CB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 438493175CA1ED58B80256C2 /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 8EEF0A9544F807165D1F7C8B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B952CA82B8A1D415E0E0C38 /* Pods_Runner.framework */; }; 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 */; }; - E212150CF9270E736AEB30A1 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24FE1DA1E23DDD8F8D810EB0 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,18 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 00684F90D17F7878BA06E035 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 24FE1DA1E23DDD8F8D810EB0 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 292FB0E80E750CF19253DFC6 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 715600572B0799C21A08CF1F /* 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 = ""; }; + 438493175CA1ED58B80256C2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6B952CA82B8A1D415E0E0C38 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 70D11F1ED42701322B839CE5 /* 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 = ""; }; 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 = ""; }; + 811D33D4814C87311ED64ADA /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,10 +61,10 @@ 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 = ""; }; - A89ED20F81F31094F4A2B410 /* 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 = ""; }; - B30F2187CA47DA1FC3EAAD38 /* 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 = ""; }; - C00AD0FCDDDEFD0A075FB97A /* 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 = ""; }; - DE88043D3B1D2566BB0AE47D /* 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 = ""; }; + 9D1610DD638BC7BE2F975FB5 /* 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 = ""; }; + C258F9A836EFC0408D57548C /* 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 = ""; }; + E0DD8D6133E788240370D129 /* 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 = ""; }; + E76D8155852B95FAF0F7E4D6 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,50 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E212150CF9270E736AEB30A1 /* Pods_Runner.framework in Frameworks */, + 8EEF0A9544F807165D1F7C8B /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F8B4D6FBBF15B448FF8A4F5D /* Frameworks */ = { + A3D1CB478498A3758B310DA1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 743DC09EF8110BC3C4EC6214 /* Pods_RunnerTests.framework in Frameworks */, + 5C0B555305CD547F5A7448CB /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C008E3B16B558629408CE3C /* Frameworks */ = { + 1721F28173645AAF71DA61E2 /* Pods */ = { isa = PBXGroup; children = ( - 24FE1DA1E23DDD8F8D810EB0 /* Pods_Runner.framework */, - 00684F90D17F7878BA06E035 /* Pods_RunnerTests.framework */, + E76D8155852B95FAF0F7E4D6 /* Pods-Runner.debug.xcconfig */, + 811D33D4814C87311ED64ADA /* Pods-Runner.release.xcconfig */, + 70D11F1ED42701322B839CE5 /* Pods-Runner.profile.xcconfig */, + C258F9A836EFC0408D57548C /* Pods-RunnerTests.debug.xcconfig */, + 9D1610DD638BC7BE2F975FB5 /* Pods-RunnerTests.release.xcconfig */, + E0DD8D6133E788240370D129 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 2A03A636A30B2750B4B44A1C /* Frameworks */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 6B952CA82B8A1D415E0E0C38 /* Pods_Runner.framework */, + 438493175CA1ED58B80256C2 /* Pods_RunnerTests.framework */, ); - path = RunnerTests; + name = Frameworks; sourceTree = ""; }; - 7B2C9BE3BCF7024D693553F1 /* Pods */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - DE88043D3B1D2566BB0AE47D /* Pods-Runner.debug.xcconfig */, - 715600572B0799C21A08CF1F /* Pods-Runner.release.xcconfig */, - A89ED20F81F31094F4A2B410 /* Pods-Runner.profile.xcconfig */, - C00AD0FCDDDEFD0A075FB97A /* Pods-RunnerTests.debug.xcconfig */, - 292FB0E80E750CF19253DFC6 /* Pods-RunnerTests.release.xcconfig */, - B30F2187CA47DA1FC3EAAD38 /* Pods-RunnerTests.profile.xcconfig */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, ); - name = Pods; - path = Pods; + path = RunnerTests; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 7B2C9BE3BCF7024D693553F1 /* Pods */, - 1C008E3B16B558629408CE3C /* Frameworks */, + 1721F28173645AAF71DA61E2 /* Pods */, + 2A03A636A30B2750B4B44A1C /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5186E082D2558A3F5468BB34 /* [CP] Check Pods Manifest.lock */, + 92A30A1F0A1F2386D2632FA8 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - F8B4D6FBBF15B448FF8A4F5D /* Frameworks */, + A3D1CB478498A3758B310DA1 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 2E407E17B06EF7AE2FAB5440 /* [CP] Check Pods Manifest.lock */, + 3DE7406F4B98716EABB8D2AE /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - AFBE199E172030166A5A9B95 /* [CP] Embed Pods Frameworks */, + A3620F48C3023CBDDF69A856 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,45 +270,45 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 2E407E17B06EF7AE2FAB5440 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 3DE7406F4B98716EABB8D2AE /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 5186E082D2558A3F5468BB34 /* [CP] Check Pods Manifest.lock */ = { + 92A30A1F0A1F2386D2632FA8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +345,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - AFBE199E172030166A5A9B95 /* [CP] Embed Pods Frameworks */ = { + A3620F48C3023CBDDF69A856 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C00AD0FCDDDEFD0A075FB97A /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = C258F9A836EFC0408D57548C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 292FB0E80E750CF19253DFC6 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9D1610DD638BC7BE2F975FB5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B30F2187CA47DA1FC3EAAD38 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E0DD8D6133E788240370D129 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/homescreen_codelab/step_03/pubspec.yaml b/homescreen_codelab/step_03/pubspec.yaml index b272c79260..d0a6d91c86 100644 --- a/homescreen_codelab/step_03/pubspec.yaml +++ b/homescreen_codelab/step_03/pubspec.yaml @@ -4,19 +4,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.8 shared_preferences: ^2.5.3 - home_widget: ^0.7.0+1 + home_widget: ^0.8.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/homescreen_codelab/step_04/.gemini/settings.json b/homescreen_codelab/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/homescreen_codelab/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/homescreen_codelab/step_04/.gitignore b/homescreen_codelab/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/homescreen_codelab/step_04/.gitignore +++ b/homescreen_codelab/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/homescreen_codelab/step_04/android/build.gradle.kts b/homescreen_codelab/step_04/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/homescreen_codelab/step_04/android/build.gradle.kts +++ b/homescreen_codelab/step_04/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/homescreen_codelab/step_04/android/settings.gradle.kts b/homescreen_codelab/step_04/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/homescreen_codelab/step_04/android/settings.gradle.kts +++ b/homescreen_codelab/step_04/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/homescreen_codelab/step_04/ios/Flutter/AppFrameworkInfo.plist b/homescreen_codelab/step_04/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/homescreen_codelab/step_04/ios/Flutter/AppFrameworkInfo.plist +++ b/homescreen_codelab/step_04/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/homescreen_codelab/step_04/ios/Podfile b/homescreen_codelab/step_04/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/homescreen_codelab/step_04/ios/Podfile +++ b/homescreen_codelab/step_04/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/homescreen_codelab/step_04/ios/Runner.xcodeproj/project.pbxproj b/homescreen_codelab/step_04/ios/Runner.xcodeproj/project.pbxproj index 2170784b95..5e1353be12 100644 --- a/homescreen_codelab/step_04/ios/Runner.xcodeproj/project.pbxproj +++ b/homescreen_codelab/step_04/ios/Runner.xcodeproj/project.pbxproj @@ -10,12 +10,12 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 743DC09EF8110BC3C4EC6214 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00684F90D17F7878BA06E035 /* Pods_RunnerTests.framework */; }; + 5C0B555305CD547F5A7448CB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 438493175CA1ED58B80256C2 /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 8EEF0A9544F807165D1F7C8B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B952CA82B8A1D415E0E0C38 /* Pods_Runner.framework */; }; 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 */; }; - E212150CF9270E736AEB30A1 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24FE1DA1E23DDD8F8D810EB0 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,18 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 00684F90D17F7878BA06E035 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 24FE1DA1E23DDD8F8D810EB0 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 292FB0E80E750CF19253DFC6 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 715600572B0799C21A08CF1F /* 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 = ""; }; + 438493175CA1ED58B80256C2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6B952CA82B8A1D415E0E0C38 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 70D11F1ED42701322B839CE5 /* 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 = ""; }; 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 = ""; }; + 811D33D4814C87311ED64ADA /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,10 +61,10 @@ 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 = ""; }; - A89ED20F81F31094F4A2B410 /* 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 = ""; }; - B30F2187CA47DA1FC3EAAD38 /* 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 = ""; }; - C00AD0FCDDDEFD0A075FB97A /* 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 = ""; }; - DE88043D3B1D2566BB0AE47D /* 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 = ""; }; + 9D1610DD638BC7BE2F975FB5 /* 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 = ""; }; + C258F9A836EFC0408D57548C /* 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 = ""; }; + E0DD8D6133E788240370D129 /* 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 = ""; }; + E76D8155852B95FAF0F7E4D6 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,50 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E212150CF9270E736AEB30A1 /* Pods_Runner.framework in Frameworks */, + 8EEF0A9544F807165D1F7C8B /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F8B4D6FBBF15B448FF8A4F5D /* Frameworks */ = { + A3D1CB478498A3758B310DA1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 743DC09EF8110BC3C4EC6214 /* Pods_RunnerTests.framework in Frameworks */, + 5C0B555305CD547F5A7448CB /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C008E3B16B558629408CE3C /* Frameworks */ = { + 1721F28173645AAF71DA61E2 /* Pods */ = { isa = PBXGroup; children = ( - 24FE1DA1E23DDD8F8D810EB0 /* Pods_Runner.framework */, - 00684F90D17F7878BA06E035 /* Pods_RunnerTests.framework */, + E76D8155852B95FAF0F7E4D6 /* Pods-Runner.debug.xcconfig */, + 811D33D4814C87311ED64ADA /* Pods-Runner.release.xcconfig */, + 70D11F1ED42701322B839CE5 /* Pods-Runner.profile.xcconfig */, + C258F9A836EFC0408D57548C /* Pods-RunnerTests.debug.xcconfig */, + 9D1610DD638BC7BE2F975FB5 /* Pods-RunnerTests.release.xcconfig */, + E0DD8D6133E788240370D129 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 2A03A636A30B2750B4B44A1C /* Frameworks */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 6B952CA82B8A1D415E0E0C38 /* Pods_Runner.framework */, + 438493175CA1ED58B80256C2 /* Pods_RunnerTests.framework */, ); - path = RunnerTests; + name = Frameworks; sourceTree = ""; }; - 7B2C9BE3BCF7024D693553F1 /* Pods */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - DE88043D3B1D2566BB0AE47D /* Pods-Runner.debug.xcconfig */, - 715600572B0799C21A08CF1F /* Pods-Runner.release.xcconfig */, - A89ED20F81F31094F4A2B410 /* Pods-Runner.profile.xcconfig */, - C00AD0FCDDDEFD0A075FB97A /* Pods-RunnerTests.debug.xcconfig */, - 292FB0E80E750CF19253DFC6 /* Pods-RunnerTests.release.xcconfig */, - B30F2187CA47DA1FC3EAAD38 /* Pods-RunnerTests.profile.xcconfig */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, ); - name = Pods; - path = Pods; + path = RunnerTests; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 7B2C9BE3BCF7024D693553F1 /* Pods */, - 1C008E3B16B558629408CE3C /* Frameworks */, + 1721F28173645AAF71DA61E2 /* Pods */, + 2A03A636A30B2750B4B44A1C /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5186E082D2558A3F5468BB34 /* [CP] Check Pods Manifest.lock */, + 92A30A1F0A1F2386D2632FA8 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - F8B4D6FBBF15B448FF8A4F5D /* Frameworks */, + A3D1CB478498A3758B310DA1 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 2E407E17B06EF7AE2FAB5440 /* [CP] Check Pods Manifest.lock */, + 3DE7406F4B98716EABB8D2AE /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - AFBE199E172030166A5A9B95 /* [CP] Embed Pods Frameworks */, + A3620F48C3023CBDDF69A856 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,45 +270,45 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 2E407E17B06EF7AE2FAB5440 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 3DE7406F4B98716EABB8D2AE /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 5186E082D2558A3F5468BB34 /* [CP] Check Pods Manifest.lock */ = { + 92A30A1F0A1F2386D2632FA8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +345,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - AFBE199E172030166A5A9B95 /* [CP] Embed Pods Frameworks */ = { + A3620F48C3023CBDDF69A856 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C00AD0FCDDDEFD0A075FB97A /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = C258F9A836EFC0408D57548C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 292FB0E80E750CF19253DFC6 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9D1610DD638BC7BE2F975FB5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B30F2187CA47DA1FC3EAAD38 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E0DD8D6133E788240370D129 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/homescreen_codelab/step_04/pubspec.yaml b/homescreen_codelab/step_04/pubspec.yaml index b272c79260..d0a6d91c86 100644 --- a/homescreen_codelab/step_04/pubspec.yaml +++ b/homescreen_codelab/step_04/pubspec.yaml @@ -4,19 +4,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.8 shared_preferences: ^2.5.3 - home_widget: ^0.7.0+1 + home_widget: ^0.8.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/homescreen_codelab/step_05/.gemini/settings.json b/homescreen_codelab/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/homescreen_codelab/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/homescreen_codelab/step_05/.gitignore b/homescreen_codelab/step_05/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/homescreen_codelab/step_05/.gitignore +++ b/homescreen_codelab/step_05/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/homescreen_codelab/step_05/android/build.gradle.kts b/homescreen_codelab/step_05/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/homescreen_codelab/step_05/android/build.gradle.kts +++ b/homescreen_codelab/step_05/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/homescreen_codelab/step_05/android/settings.gradle.kts b/homescreen_codelab/step_05/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/homescreen_codelab/step_05/android/settings.gradle.kts +++ b/homescreen_codelab/step_05/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/homescreen_codelab/step_05/ios/Flutter/AppFrameworkInfo.plist b/homescreen_codelab/step_05/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/homescreen_codelab/step_05/ios/Flutter/AppFrameworkInfo.plist +++ b/homescreen_codelab/step_05/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/homescreen_codelab/step_05/ios/Podfile b/homescreen_codelab/step_05/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/homescreen_codelab/step_05/ios/Podfile +++ b/homescreen_codelab/step_05/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/homescreen_codelab/step_05/ios/Runner.xcodeproj/project.pbxproj b/homescreen_codelab/step_05/ios/Runner.xcodeproj/project.pbxproj index 2170784b95..5e1353be12 100644 --- a/homescreen_codelab/step_05/ios/Runner.xcodeproj/project.pbxproj +++ b/homescreen_codelab/step_05/ios/Runner.xcodeproj/project.pbxproj @@ -10,12 +10,12 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 743DC09EF8110BC3C4EC6214 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00684F90D17F7878BA06E035 /* Pods_RunnerTests.framework */; }; + 5C0B555305CD547F5A7448CB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 438493175CA1ED58B80256C2 /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 8EEF0A9544F807165D1F7C8B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B952CA82B8A1D415E0E0C38 /* Pods_Runner.framework */; }; 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 */; }; - E212150CF9270E736AEB30A1 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24FE1DA1E23DDD8F8D810EB0 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,18 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 00684F90D17F7878BA06E035 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 24FE1DA1E23DDD8F8D810EB0 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 292FB0E80E750CF19253DFC6 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 715600572B0799C21A08CF1F /* 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 = ""; }; + 438493175CA1ED58B80256C2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6B952CA82B8A1D415E0E0C38 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 70D11F1ED42701322B839CE5 /* 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 = ""; }; 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 = ""; }; + 811D33D4814C87311ED64ADA /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,10 +61,10 @@ 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 = ""; }; - A89ED20F81F31094F4A2B410 /* 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 = ""; }; - B30F2187CA47DA1FC3EAAD38 /* 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 = ""; }; - C00AD0FCDDDEFD0A075FB97A /* 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 = ""; }; - DE88043D3B1D2566BB0AE47D /* 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 = ""; }; + 9D1610DD638BC7BE2F975FB5 /* 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 = ""; }; + C258F9A836EFC0408D57548C /* 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 = ""; }; + E0DD8D6133E788240370D129 /* 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 = ""; }; + E76D8155852B95FAF0F7E4D6 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,50 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E212150CF9270E736AEB30A1 /* Pods_Runner.framework in Frameworks */, + 8EEF0A9544F807165D1F7C8B /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F8B4D6FBBF15B448FF8A4F5D /* Frameworks */ = { + A3D1CB478498A3758B310DA1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 743DC09EF8110BC3C4EC6214 /* Pods_RunnerTests.framework in Frameworks */, + 5C0B555305CD547F5A7448CB /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C008E3B16B558629408CE3C /* Frameworks */ = { + 1721F28173645AAF71DA61E2 /* Pods */ = { isa = PBXGroup; children = ( - 24FE1DA1E23DDD8F8D810EB0 /* Pods_Runner.framework */, - 00684F90D17F7878BA06E035 /* Pods_RunnerTests.framework */, + E76D8155852B95FAF0F7E4D6 /* Pods-Runner.debug.xcconfig */, + 811D33D4814C87311ED64ADA /* Pods-Runner.release.xcconfig */, + 70D11F1ED42701322B839CE5 /* Pods-Runner.profile.xcconfig */, + C258F9A836EFC0408D57548C /* Pods-RunnerTests.debug.xcconfig */, + 9D1610DD638BC7BE2F975FB5 /* Pods-RunnerTests.release.xcconfig */, + E0DD8D6133E788240370D129 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 2A03A636A30B2750B4B44A1C /* Frameworks */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 6B952CA82B8A1D415E0E0C38 /* Pods_Runner.framework */, + 438493175CA1ED58B80256C2 /* Pods_RunnerTests.framework */, ); - path = RunnerTests; + name = Frameworks; sourceTree = ""; }; - 7B2C9BE3BCF7024D693553F1 /* Pods */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - DE88043D3B1D2566BB0AE47D /* Pods-Runner.debug.xcconfig */, - 715600572B0799C21A08CF1F /* Pods-Runner.release.xcconfig */, - A89ED20F81F31094F4A2B410 /* Pods-Runner.profile.xcconfig */, - C00AD0FCDDDEFD0A075FB97A /* Pods-RunnerTests.debug.xcconfig */, - 292FB0E80E750CF19253DFC6 /* Pods-RunnerTests.release.xcconfig */, - B30F2187CA47DA1FC3EAAD38 /* Pods-RunnerTests.profile.xcconfig */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, ); - name = Pods; - path = Pods; + path = RunnerTests; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 7B2C9BE3BCF7024D693553F1 /* Pods */, - 1C008E3B16B558629408CE3C /* Frameworks */, + 1721F28173645AAF71DA61E2 /* Pods */, + 2A03A636A30B2750B4B44A1C /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5186E082D2558A3F5468BB34 /* [CP] Check Pods Manifest.lock */, + 92A30A1F0A1F2386D2632FA8 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - F8B4D6FBBF15B448FF8A4F5D /* Frameworks */, + A3D1CB478498A3758B310DA1 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 2E407E17B06EF7AE2FAB5440 /* [CP] Check Pods Manifest.lock */, + 3DE7406F4B98716EABB8D2AE /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - AFBE199E172030166A5A9B95 /* [CP] Embed Pods Frameworks */, + A3620F48C3023CBDDF69A856 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,45 +270,45 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 2E407E17B06EF7AE2FAB5440 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 3DE7406F4B98716EABB8D2AE /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 5186E082D2558A3F5468BB34 /* [CP] Check Pods Manifest.lock */ = { + 92A30A1F0A1F2386D2632FA8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +345,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - AFBE199E172030166A5A9B95 /* [CP] Embed Pods Frameworks */ = { + A3620F48C3023CBDDF69A856 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C00AD0FCDDDEFD0A075FB97A /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = C258F9A836EFC0408D57548C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 292FB0E80E750CF19253DFC6 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9D1610DD638BC7BE2F975FB5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B30F2187CA47DA1FC3EAAD38 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E0DD8D6133E788240370D129 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/homescreen_codelab/step_05/pubspec.yaml b/homescreen_codelab/step_05/pubspec.yaml index b272c79260..d0a6d91c86 100644 --- a/homescreen_codelab/step_05/pubspec.yaml +++ b/homescreen_codelab/step_05/pubspec.yaml @@ -4,19 +4,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.8 shared_preferences: ^2.5.3 - home_widget: ^0.7.0+1 + home_widget: ^0.8.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/homescreen_codelab/step_06/.gemini/settings.json b/homescreen_codelab/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/homescreen_codelab/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/homescreen_codelab/step_06/.gitignore b/homescreen_codelab/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/homescreen_codelab/step_06/.gitignore +++ b/homescreen_codelab/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/homescreen_codelab/step_06/android/build.gradle.kts b/homescreen_codelab/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/homescreen_codelab/step_06/android/build.gradle.kts +++ b/homescreen_codelab/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/homescreen_codelab/step_06/android/settings.gradle.kts b/homescreen_codelab/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/homescreen_codelab/step_06/android/settings.gradle.kts +++ b/homescreen_codelab/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/homescreen_codelab/step_06/ios/Flutter/AppFrameworkInfo.plist b/homescreen_codelab/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/homescreen_codelab/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/homescreen_codelab/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/homescreen_codelab/step_06/ios/Podfile b/homescreen_codelab/step_06/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/homescreen_codelab/step_06/ios/Podfile +++ b/homescreen_codelab/step_06/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/homescreen_codelab/step_06/ios/Runner.xcodeproj/project.pbxproj b/homescreen_codelab/step_06/ios/Runner.xcodeproj/project.pbxproj index 2170784b95..5e1353be12 100644 --- a/homescreen_codelab/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/homescreen_codelab/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -10,12 +10,12 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 743DC09EF8110BC3C4EC6214 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00684F90D17F7878BA06E035 /* Pods_RunnerTests.framework */; }; + 5C0B555305CD547F5A7448CB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 438493175CA1ED58B80256C2 /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 8EEF0A9544F807165D1F7C8B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B952CA82B8A1D415E0E0C38 /* Pods_Runner.framework */; }; 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 */; }; - E212150CF9270E736AEB30A1 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24FE1DA1E23DDD8F8D810EB0 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,18 +42,18 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 00684F90D17F7878BA06E035 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; - 24FE1DA1E23DDD8F8D810EB0 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 292FB0E80E750CF19253DFC6 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 715600572B0799C21A08CF1F /* 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 = ""; }; + 438493175CA1ED58B80256C2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6B952CA82B8A1D415E0E0C38 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 70D11F1ED42701322B839CE5 /* 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 = ""; }; 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 = ""; }; + 811D33D4814C87311ED64ADA /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,10 +61,10 @@ 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 = ""; }; - A89ED20F81F31094F4A2B410 /* 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 = ""; }; - B30F2187CA47DA1FC3EAAD38 /* 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 = ""; }; - C00AD0FCDDDEFD0A075FB97A /* 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 = ""; }; - DE88043D3B1D2566BB0AE47D /* 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 = ""; }; + 9D1610DD638BC7BE2F975FB5 /* 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 = ""; }; + C258F9A836EFC0408D57548C /* 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 = ""; }; + E0DD8D6133E788240370D129 /* 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 = ""; }; + E76D8155852B95FAF0F7E4D6 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,50 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E212150CF9270E736AEB30A1 /* Pods_Runner.framework in Frameworks */, + 8EEF0A9544F807165D1F7C8B /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F8B4D6FBBF15B448FF8A4F5D /* Frameworks */ = { + A3D1CB478498A3758B310DA1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 743DC09EF8110BC3C4EC6214 /* Pods_RunnerTests.framework in Frameworks */, + 5C0B555305CD547F5A7448CB /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C008E3B16B558629408CE3C /* Frameworks */ = { + 1721F28173645AAF71DA61E2 /* Pods */ = { isa = PBXGroup; children = ( - 24FE1DA1E23DDD8F8D810EB0 /* Pods_Runner.framework */, - 00684F90D17F7878BA06E035 /* Pods_RunnerTests.framework */, + E76D8155852B95FAF0F7E4D6 /* Pods-Runner.debug.xcconfig */, + 811D33D4814C87311ED64ADA /* Pods-Runner.release.xcconfig */, + 70D11F1ED42701322B839CE5 /* Pods-Runner.profile.xcconfig */, + C258F9A836EFC0408D57548C /* Pods-RunnerTests.debug.xcconfig */, + 9D1610DD638BC7BE2F975FB5 /* Pods-RunnerTests.release.xcconfig */, + E0DD8D6133E788240370D129 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 2A03A636A30B2750B4B44A1C /* Frameworks */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 6B952CA82B8A1D415E0E0C38 /* Pods_Runner.framework */, + 438493175CA1ED58B80256C2 /* Pods_RunnerTests.framework */, ); - path = RunnerTests; + name = Frameworks; sourceTree = ""; }; - 7B2C9BE3BCF7024D693553F1 /* Pods */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - DE88043D3B1D2566BB0AE47D /* Pods-Runner.debug.xcconfig */, - 715600572B0799C21A08CF1F /* Pods-Runner.release.xcconfig */, - A89ED20F81F31094F4A2B410 /* Pods-Runner.profile.xcconfig */, - C00AD0FCDDDEFD0A075FB97A /* Pods-RunnerTests.debug.xcconfig */, - 292FB0E80E750CF19253DFC6 /* Pods-RunnerTests.release.xcconfig */, - B30F2187CA47DA1FC3EAAD38 /* Pods-RunnerTests.profile.xcconfig */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, ); - name = Pods; - path = Pods; + path = RunnerTests; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -136,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 7B2C9BE3BCF7024D693553F1 /* Pods */, - 1C008E3B16B558629408CE3C /* Frameworks */, + 1721F28173645AAF71DA61E2 /* Pods */, + 2A03A636A30B2750B4B44A1C /* Frameworks */, ); sourceTree = ""; }; @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 5186E082D2558A3F5468BB34 /* [CP] Check Pods Manifest.lock */, + 92A30A1F0A1F2386D2632FA8 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - F8B4D6FBBF15B448FF8A4F5D /* Frameworks */, + A3D1CB478498A3758B310DA1 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 2E407E17B06EF7AE2FAB5440 /* [CP] Check Pods Manifest.lock */, + 3DE7406F4B98716EABB8D2AE /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - AFBE199E172030166A5A9B95 /* [CP] Embed Pods Frameworks */, + A3620F48C3023CBDDF69A856 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -270,45 +270,45 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 2E407E17B06EF7AE2FAB5440 /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; 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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 3DE7406F4B98716EABB8D2AE /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; - 5186E082D2558A3F5468BB34 /* [CP] Check Pods Manifest.lock */ = { + 92A30A1F0A1F2386D2632FA8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +345,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - AFBE199E172030166A5A9B95 /* [CP] Embed Pods Frameworks */ = { + A3620F48C3023CBDDF69A856 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C00AD0FCDDDEFD0A075FB97A /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = C258F9A836EFC0408D57548C /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 292FB0E80E750CF19253DFC6 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 9D1610DD638BC7BE2F975FB5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B30F2187CA47DA1FC3EAAD38 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E0DD8D6133E788240370D129 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/homescreen_codelab/step_06/lib/article_screen.dart b/homescreen_codelab/step_06/lib/article_screen.dart index fd3f192a9f..b07a15985d 100644 --- a/homescreen_codelab/step_06/lib/article_screen.dart +++ b/homescreen_codelab/step_06/lib/article_screen.dart @@ -28,16 +28,14 @@ class _ArticleScreenState extends State { floatingActionButton: FloatingActionButton.extended( onPressed: () async { if (_globalKey.currentContext != null) { - var path = - await HomeWidget.renderFlutterWidget( - const LineChart(), - key: 'filename', - logicalSize: _globalKey.currentContext!.size!, - pixelRatio: MediaQuery.of( - _globalKey.currentContext!, - ).devicePixelRatio, - ) - as String; + var path = await HomeWidget.renderFlutterWidget( + const LineChart(), + key: 'filename', + logicalSize: _globalKey.currentContext!.size!, + pixelRatio: MediaQuery.of( + _globalKey.currentContext!, + ).devicePixelRatio, + ); setState(() { imagePath = path; }); diff --git a/homescreen_codelab/step_06/pubspec.yaml b/homescreen_codelab/step_06/pubspec.yaml index b272c79260..d0a6d91c86 100644 --- a/homescreen_codelab/step_06/pubspec.yaml +++ b/homescreen_codelab/step_06/pubspec.yaml @@ -4,19 +4,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.8 shared_preferences: ^2.5.3 - home_widget: ^0.7.0+1 + home_widget: ^0.8.0 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/in_app_purchases/codelab_rebuild.yaml b/in_app_purchases/codelab_rebuild.yaml index 5620df5d41..7bad681769 100644 --- a/in_app_purchases/codelab_rebuild.yaml +++ b/in_app_purchases/codelab_rebuild.yaml @@ -26,9 +26,24 @@ steps: +GoogleService-Info.plist +google-services.json +ios/firebase_app_id_file.json + - name: Add .gemini directory + mkdir: steps/app/.gemini + - name: Add .gemini/settings.json + path: steps/app/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add app dependencies path: steps/app - flutter: pub add cloud_firestore cupertino_icons firebase_auth firebase_core google_sign_in http intl provider + flutter: pub add cloud_firestore cupertino_icons firebase_auth firebase_core google_sign_in:^6.3.0 http intl provider - name: Patch app/pubspec.yaml path: steps/app/pubspec.yaml patch-u: | @@ -76,19 +91,6 @@ steps: + - - name: Patch app/ios/Podfile - path: steps/app/ios/Podfile - patch-u: | - --- b/in_app_purchases/step_00/app/ios/Podfile - +++ a/in_app_purchases/step_00/app/ios/Podfile - @@ -1,5 +1,5 @@ - -# Uncomment this line to define a global platform for your project - -# platform :ios, '12.0' - +# Per https://firebase.google.com/support/release-notes/ios cloud_firestore requires a minimum iOS version of 13.0 - +platform :ios, '13.0' - - # CocoaPods analytics sends network stats synchronously affecting flutter build latency. - ENV['COCOAPODS_DISABLE_STATS'] = 'true' - name: Patch app/android/app/build.gradle.kts path: steps/app/android/app/build.gradle.kts patch-u: | @@ -16670,6 +16672,21 @@ steps: renamedir: from: steps/firebase_backend_dart to: steps/dart-backend + - name: Add .gemini directory + mkdir: steps/dart-backend/.gemini + - name: Add .gemini/settings.json + path: steps/dart-backend/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add dependencies path: steps/dart-backend dart: pub add googleapis googleapis_auth http app_store_server_sdk diff --git a/in_app_purchases/complete/app/.gemini/settings.json b/in_app_purchases/complete/app/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/complete/app/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/complete/app/.gitignore b/in_app_purchases/complete/app/.gitignore index 9b7a64b527..7b42a7ac72 100644 --- a/in_app_purchases/complete/app/.gitignore +++ b/in_app_purchases/complete/app/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/in_app_purchases/complete/app/android/build.gradle.kts b/in_app_purchases/complete/app/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/in_app_purchases/complete/app/android/build.gradle.kts +++ b/in_app_purchases/complete/app/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/in_app_purchases/complete/app/android/settings.gradle.kts b/in_app_purchases/complete/app/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/in_app_purchases/complete/app/android/settings.gradle.kts +++ b/in_app_purchases/complete/app/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/in_app_purchases/complete/app/ios/Flutter/AppFrameworkInfo.plist b/in_app_purchases/complete/app/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/in_app_purchases/complete/app/ios/Flutter/AppFrameworkInfo.plist +++ b/in_app_purchases/complete/app/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/in_app_purchases/complete/app/ios/Podfile b/in_app_purchases/complete/app/ios/Podfile index 263294aa35..620e46eba6 100644 --- a/in_app_purchases/complete/app/ios/Podfile +++ b/in_app_purchases/complete/app/ios/Podfile @@ -1,5 +1,5 @@ -# Per https://firebase.google.com/support/release-notes/ios cloud_firestore requires a minimum iOS version of 13.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/in_app_purchases/complete/app/ios/Runner.xcodeproj/project.pbxproj b/in_app_purchases/complete/app/ios/Runner.xcodeproj/project.pbxproj index 6f2fb5b153..88e89efc42 100644 --- a/in_app_purchases/complete/app/ios/Runner.xcodeproj/project.pbxproj +++ b/in_app_purchases/complete/app/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/in_app_purchases/complete/app/pubspec.yaml b/in_app_purchases/complete/app/pubspec.yaml index 374ee65b79..dd1c31a0cd 100644 --- a/in_app_purchases/complete/app/pubspec.yaml +++ b/in_app_purchases/complete/app/pubspec.yaml @@ -4,17 +4,17 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - cloud_firestore: ^5.6.7 + cloud_firestore: ^6.0.0 cupertino_icons: ^1.0.8 - firebase_auth: ^5.5.3 - firebase_core: ^3.13.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 google_sign_in: ^6.3.0 - http: ^1.4.0 + http: ^1.5.0 intl: ^0.20.2 provider: ^6.1.5 in_app_purchase: ^3.2.3 diff --git a/in_app_purchases/complete/dart-backend/.gemini/settings.json b/in_app_purchases/complete/dart-backend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/complete/dart-backend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/complete/dart-backend/pubspec.yaml b/in_app_purchases/complete/dart-backend/pubspec.yaml index f41bbbfb23..44b89c4e2c 100644 --- a/in_app_purchases/complete/dart-backend/pubspec.yaml +++ b/in_app_purchases/complete/dart-backend/pubspec.yaml @@ -4,16 +4,16 @@ version: 1.0.0 # repository: https://github.com/my_org/my_repo environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: app_store_server_sdk: ^1.2.10 googleapis: ^14.0.0 googleapis_auth: ^2.0.0 - http: ^1.4.0 - shelf: ^1.4.0 - shelf_router: ^1.1.0 + http: ^1.5.0 + shelf: ^1.4.2 + shelf_router: ^1.1.2 dev_dependencies: - lints: ^5.0.0 - test: ^1.24.0 + lints: ^6.0.0 + test: ^1.25.6 diff --git a/in_app_purchases/step_00/app/.gemini/settings.json b/in_app_purchases/step_00/app/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/step_00/app/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/step_00/app/.gitignore b/in_app_purchases/step_00/app/.gitignore index 9b7a64b527..7b42a7ac72 100644 --- a/in_app_purchases/step_00/app/.gitignore +++ b/in_app_purchases/step_00/app/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/in_app_purchases/step_00/app/android/build.gradle.kts b/in_app_purchases/step_00/app/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/in_app_purchases/step_00/app/android/build.gradle.kts +++ b/in_app_purchases/step_00/app/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/in_app_purchases/step_00/app/android/settings.gradle.kts b/in_app_purchases/step_00/app/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/in_app_purchases/step_00/app/android/settings.gradle.kts +++ b/in_app_purchases/step_00/app/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/in_app_purchases/step_00/app/ios/Flutter/AppFrameworkInfo.plist b/in_app_purchases/step_00/app/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/in_app_purchases/step_00/app/ios/Flutter/AppFrameworkInfo.plist +++ b/in_app_purchases/step_00/app/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/in_app_purchases/step_00/app/ios/Podfile b/in_app_purchases/step_00/app/ios/Podfile index 263294aa35..620e46eba6 100644 --- a/in_app_purchases/step_00/app/ios/Podfile +++ b/in_app_purchases/step_00/app/ios/Podfile @@ -1,5 +1,5 @@ -# Per https://firebase.google.com/support/release-notes/ios cloud_firestore requires a minimum iOS version of 13.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/in_app_purchases/step_00/app/ios/Runner.xcodeproj/project.pbxproj b/in_app_purchases/step_00/app/ios/Runner.xcodeproj/project.pbxproj index 6f2fb5b153..88e89efc42 100644 --- a/in_app_purchases/step_00/app/ios/Runner.xcodeproj/project.pbxproj +++ b/in_app_purchases/step_00/app/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/in_app_purchases/step_00/app/pubspec.yaml b/in_app_purchases/step_00/app/pubspec.yaml index 84b7183b00..72a47fe459 100644 --- a/in_app_purchases/step_00/app/pubspec.yaml +++ b/in_app_purchases/step_00/app/pubspec.yaml @@ -4,17 +4,17 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - cloud_firestore: ^5.6.7 + cloud_firestore: ^6.0.0 cupertino_icons: ^1.0.8 - firebase_auth: ^5.5.3 - firebase_core: ^3.13.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 google_sign_in: ^6.3.0 - http: ^1.4.0 + http: ^1.5.0 intl: ^0.20.2 provider: ^6.1.5 diff --git a/in_app_purchases/step_00/dart-backend/.gemini/settings.json b/in_app_purchases/step_00/dart-backend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/step_00/dart-backend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/step_00/dart-backend/pubspec.yaml b/in_app_purchases/step_00/dart-backend/pubspec.yaml index f41bbbfb23..44b89c4e2c 100644 --- a/in_app_purchases/step_00/dart-backend/pubspec.yaml +++ b/in_app_purchases/step_00/dart-backend/pubspec.yaml @@ -4,16 +4,16 @@ version: 1.0.0 # repository: https://github.com/my_org/my_repo environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: app_store_server_sdk: ^1.2.10 googleapis: ^14.0.0 googleapis_auth: ^2.0.0 - http: ^1.4.0 - shelf: ^1.4.0 - shelf_router: ^1.1.0 + http: ^1.5.0 + shelf: ^1.4.2 + shelf_router: ^1.1.2 dev_dependencies: - lints: ^5.0.0 - test: ^1.24.0 + lints: ^6.0.0 + test: ^1.25.6 diff --git a/in_app_purchases/step_03/app/.gemini/settings.json b/in_app_purchases/step_03/app/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/step_03/app/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/step_03/app/.gitignore b/in_app_purchases/step_03/app/.gitignore index 9b7a64b527..7b42a7ac72 100644 --- a/in_app_purchases/step_03/app/.gitignore +++ b/in_app_purchases/step_03/app/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/in_app_purchases/step_03/app/android/build.gradle.kts b/in_app_purchases/step_03/app/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/in_app_purchases/step_03/app/android/build.gradle.kts +++ b/in_app_purchases/step_03/app/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/in_app_purchases/step_03/app/android/settings.gradle.kts b/in_app_purchases/step_03/app/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/in_app_purchases/step_03/app/android/settings.gradle.kts +++ b/in_app_purchases/step_03/app/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/in_app_purchases/step_03/app/ios/Flutter/AppFrameworkInfo.plist b/in_app_purchases/step_03/app/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/in_app_purchases/step_03/app/ios/Flutter/AppFrameworkInfo.plist +++ b/in_app_purchases/step_03/app/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/in_app_purchases/step_03/app/ios/Podfile b/in_app_purchases/step_03/app/ios/Podfile index 263294aa35..620e46eba6 100644 --- a/in_app_purchases/step_03/app/ios/Podfile +++ b/in_app_purchases/step_03/app/ios/Podfile @@ -1,5 +1,5 @@ -# Per https://firebase.google.com/support/release-notes/ios cloud_firestore requires a minimum iOS version of 13.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/in_app_purchases/step_03/app/ios/Runner.xcodeproj/project.pbxproj b/in_app_purchases/step_03/app/ios/Runner.xcodeproj/project.pbxproj index 6f2fb5b153..88e89efc42 100644 --- a/in_app_purchases/step_03/app/ios/Runner.xcodeproj/project.pbxproj +++ b/in_app_purchases/step_03/app/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/in_app_purchases/step_03/app/pubspec.yaml b/in_app_purchases/step_03/app/pubspec.yaml index 374ee65b79..dd1c31a0cd 100644 --- a/in_app_purchases/step_03/app/pubspec.yaml +++ b/in_app_purchases/step_03/app/pubspec.yaml @@ -4,17 +4,17 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - cloud_firestore: ^5.6.7 + cloud_firestore: ^6.0.0 cupertino_icons: ^1.0.8 - firebase_auth: ^5.5.3 - firebase_core: ^3.13.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 google_sign_in: ^6.3.0 - http: ^1.4.0 + http: ^1.5.0 intl: ^0.20.2 provider: ^6.1.5 in_app_purchase: ^3.2.3 diff --git a/in_app_purchases/step_03/dart-backend/.gemini/settings.json b/in_app_purchases/step_03/dart-backend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/step_03/dart-backend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/step_03/dart-backend/pubspec.yaml b/in_app_purchases/step_03/dart-backend/pubspec.yaml index f41bbbfb23..44b89c4e2c 100644 --- a/in_app_purchases/step_03/dart-backend/pubspec.yaml +++ b/in_app_purchases/step_03/dart-backend/pubspec.yaml @@ -4,16 +4,16 @@ version: 1.0.0 # repository: https://github.com/my_org/my_repo environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: app_store_server_sdk: ^1.2.10 googleapis: ^14.0.0 googleapis_auth: ^2.0.0 - http: ^1.4.0 - shelf: ^1.4.0 - shelf_router: ^1.1.0 + http: ^1.5.0 + shelf: ^1.4.2 + shelf_router: ^1.1.2 dev_dependencies: - lints: ^5.0.0 - test: ^1.24.0 + lints: ^6.0.0 + test: ^1.25.6 diff --git a/in_app_purchases/step_07/app/.gemini/settings.json b/in_app_purchases/step_07/app/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/step_07/app/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/step_07/app/.gitignore b/in_app_purchases/step_07/app/.gitignore index 9b7a64b527..7b42a7ac72 100644 --- a/in_app_purchases/step_07/app/.gitignore +++ b/in_app_purchases/step_07/app/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/in_app_purchases/step_07/app/android/build.gradle.kts b/in_app_purchases/step_07/app/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/in_app_purchases/step_07/app/android/build.gradle.kts +++ b/in_app_purchases/step_07/app/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/in_app_purchases/step_07/app/android/settings.gradle.kts b/in_app_purchases/step_07/app/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/in_app_purchases/step_07/app/android/settings.gradle.kts +++ b/in_app_purchases/step_07/app/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/in_app_purchases/step_07/app/ios/Flutter/AppFrameworkInfo.plist b/in_app_purchases/step_07/app/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/in_app_purchases/step_07/app/ios/Flutter/AppFrameworkInfo.plist +++ b/in_app_purchases/step_07/app/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/in_app_purchases/step_07/app/ios/Podfile b/in_app_purchases/step_07/app/ios/Podfile index 263294aa35..620e46eba6 100644 --- a/in_app_purchases/step_07/app/ios/Podfile +++ b/in_app_purchases/step_07/app/ios/Podfile @@ -1,5 +1,5 @@ -# Per https://firebase.google.com/support/release-notes/ios cloud_firestore requires a minimum iOS version of 13.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/in_app_purchases/step_07/app/ios/Runner.xcodeproj/project.pbxproj b/in_app_purchases/step_07/app/ios/Runner.xcodeproj/project.pbxproj index 6f2fb5b153..88e89efc42 100644 --- a/in_app_purchases/step_07/app/ios/Runner.xcodeproj/project.pbxproj +++ b/in_app_purchases/step_07/app/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/in_app_purchases/step_07/app/pubspec.yaml b/in_app_purchases/step_07/app/pubspec.yaml index 374ee65b79..dd1c31a0cd 100644 --- a/in_app_purchases/step_07/app/pubspec.yaml +++ b/in_app_purchases/step_07/app/pubspec.yaml @@ -4,17 +4,17 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - cloud_firestore: ^5.6.7 + cloud_firestore: ^6.0.0 cupertino_icons: ^1.0.8 - firebase_auth: ^5.5.3 - firebase_core: ^3.13.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 google_sign_in: ^6.3.0 - http: ^1.4.0 + http: ^1.5.0 intl: ^0.20.2 provider: ^6.1.5 in_app_purchase: ^3.2.3 diff --git a/in_app_purchases/step_07/dart-backend/.gemini/settings.json b/in_app_purchases/step_07/dart-backend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/step_07/dart-backend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/step_07/dart-backend/pubspec.yaml b/in_app_purchases/step_07/dart-backend/pubspec.yaml index f41bbbfb23..44b89c4e2c 100644 --- a/in_app_purchases/step_07/dart-backend/pubspec.yaml +++ b/in_app_purchases/step_07/dart-backend/pubspec.yaml @@ -4,16 +4,16 @@ version: 1.0.0 # repository: https://github.com/my_org/my_repo environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: app_store_server_sdk: ^1.2.10 googleapis: ^14.0.0 googleapis_auth: ^2.0.0 - http: ^1.4.0 - shelf: ^1.4.0 - shelf_router: ^1.1.0 + http: ^1.5.0 + shelf: ^1.4.2 + shelf_router: ^1.1.2 dev_dependencies: - lints: ^5.0.0 - test: ^1.24.0 + lints: ^6.0.0 + test: ^1.25.6 diff --git a/in_app_purchases/step_08/app/.gemini/settings.json b/in_app_purchases/step_08/app/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/step_08/app/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/step_08/app/.gitignore b/in_app_purchases/step_08/app/.gitignore index 9b7a64b527..7b42a7ac72 100644 --- a/in_app_purchases/step_08/app/.gitignore +++ b/in_app_purchases/step_08/app/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/in_app_purchases/step_08/app/android/build.gradle.kts b/in_app_purchases/step_08/app/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/in_app_purchases/step_08/app/android/build.gradle.kts +++ b/in_app_purchases/step_08/app/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/in_app_purchases/step_08/app/android/settings.gradle.kts b/in_app_purchases/step_08/app/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/in_app_purchases/step_08/app/android/settings.gradle.kts +++ b/in_app_purchases/step_08/app/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/in_app_purchases/step_08/app/ios/Flutter/AppFrameworkInfo.plist b/in_app_purchases/step_08/app/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/in_app_purchases/step_08/app/ios/Flutter/AppFrameworkInfo.plist +++ b/in_app_purchases/step_08/app/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/in_app_purchases/step_08/app/ios/Podfile b/in_app_purchases/step_08/app/ios/Podfile index 263294aa35..620e46eba6 100644 --- a/in_app_purchases/step_08/app/ios/Podfile +++ b/in_app_purchases/step_08/app/ios/Podfile @@ -1,5 +1,5 @@ -# Per https://firebase.google.com/support/release-notes/ios cloud_firestore requires a minimum iOS version of 13.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/in_app_purchases/step_08/app/ios/Runner.xcodeproj/project.pbxproj b/in_app_purchases/step_08/app/ios/Runner.xcodeproj/project.pbxproj index 6f2fb5b153..88e89efc42 100644 --- a/in_app_purchases/step_08/app/ios/Runner.xcodeproj/project.pbxproj +++ b/in_app_purchases/step_08/app/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/in_app_purchases/step_08/app/pubspec.yaml b/in_app_purchases/step_08/app/pubspec.yaml index 374ee65b79..dd1c31a0cd 100644 --- a/in_app_purchases/step_08/app/pubspec.yaml +++ b/in_app_purchases/step_08/app/pubspec.yaml @@ -4,17 +4,17 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - cloud_firestore: ^5.6.7 + cloud_firestore: ^6.0.0 cupertino_icons: ^1.0.8 - firebase_auth: ^5.5.3 - firebase_core: ^3.13.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 google_sign_in: ^6.3.0 - http: ^1.4.0 + http: ^1.5.0 intl: ^0.20.2 provider: ^6.1.5 in_app_purchase: ^3.2.3 diff --git a/in_app_purchases/step_08/dart-backend/.gemini/settings.json b/in_app_purchases/step_08/dart-backend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/step_08/dart-backend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/step_08/dart-backend/pubspec.yaml b/in_app_purchases/step_08/dart-backend/pubspec.yaml index f41bbbfb23..44b89c4e2c 100644 --- a/in_app_purchases/step_08/dart-backend/pubspec.yaml +++ b/in_app_purchases/step_08/dart-backend/pubspec.yaml @@ -4,16 +4,16 @@ version: 1.0.0 # repository: https://github.com/my_org/my_repo environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: app_store_server_sdk: ^1.2.10 googleapis: ^14.0.0 googleapis_auth: ^2.0.0 - http: ^1.4.0 - shelf: ^1.4.0 - shelf_router: ^1.1.0 + http: ^1.5.0 + shelf: ^1.4.2 + shelf_router: ^1.1.2 dev_dependencies: - lints: ^5.0.0 - test: ^1.24.0 + lints: ^6.0.0 + test: ^1.25.6 diff --git a/in_app_purchases/step_10/app/.gemini/settings.json b/in_app_purchases/step_10/app/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/step_10/app/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/step_10/app/.gitignore b/in_app_purchases/step_10/app/.gitignore index 9b7a64b527..7b42a7ac72 100644 --- a/in_app_purchases/step_10/app/.gitignore +++ b/in_app_purchases/step_10/app/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/in_app_purchases/step_10/app/android/build.gradle.kts b/in_app_purchases/step_10/app/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/in_app_purchases/step_10/app/android/build.gradle.kts +++ b/in_app_purchases/step_10/app/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/in_app_purchases/step_10/app/android/settings.gradle.kts b/in_app_purchases/step_10/app/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/in_app_purchases/step_10/app/android/settings.gradle.kts +++ b/in_app_purchases/step_10/app/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/in_app_purchases/step_10/app/ios/Flutter/AppFrameworkInfo.plist b/in_app_purchases/step_10/app/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/in_app_purchases/step_10/app/ios/Flutter/AppFrameworkInfo.plist +++ b/in_app_purchases/step_10/app/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/in_app_purchases/step_10/app/ios/Podfile b/in_app_purchases/step_10/app/ios/Podfile index 263294aa35..620e46eba6 100644 --- a/in_app_purchases/step_10/app/ios/Podfile +++ b/in_app_purchases/step_10/app/ios/Podfile @@ -1,5 +1,5 @@ -# Per https://firebase.google.com/support/release-notes/ios cloud_firestore requires a minimum iOS version of 13.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/in_app_purchases/step_10/app/ios/Runner.xcodeproj/project.pbxproj b/in_app_purchases/step_10/app/ios/Runner.xcodeproj/project.pbxproj index 6f2fb5b153..88e89efc42 100644 --- a/in_app_purchases/step_10/app/ios/Runner.xcodeproj/project.pbxproj +++ b/in_app_purchases/step_10/app/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/in_app_purchases/step_10/app/pubspec.yaml b/in_app_purchases/step_10/app/pubspec.yaml index 374ee65b79..dd1c31a0cd 100644 --- a/in_app_purchases/step_10/app/pubspec.yaml +++ b/in_app_purchases/step_10/app/pubspec.yaml @@ -4,17 +4,17 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - cloud_firestore: ^5.6.7 + cloud_firestore: ^6.0.0 cupertino_icons: ^1.0.8 - firebase_auth: ^5.5.3 - firebase_core: ^3.13.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 google_sign_in: ^6.3.0 - http: ^1.4.0 + http: ^1.5.0 intl: ^0.20.2 provider: ^6.1.5 in_app_purchase: ^3.2.3 diff --git a/in_app_purchases/step_10/dart-backend/.gemini/settings.json b/in_app_purchases/step_10/dart-backend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/step_10/dart-backend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/step_10/dart-backend/pubspec.yaml b/in_app_purchases/step_10/dart-backend/pubspec.yaml index f41bbbfb23..44b89c4e2c 100644 --- a/in_app_purchases/step_10/dart-backend/pubspec.yaml +++ b/in_app_purchases/step_10/dart-backend/pubspec.yaml @@ -4,16 +4,16 @@ version: 1.0.0 # repository: https://github.com/my_org/my_repo environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: app_store_server_sdk: ^1.2.10 googleapis: ^14.0.0 googleapis_auth: ^2.0.0 - http: ^1.4.0 - shelf: ^1.4.0 - shelf_router: ^1.1.0 + http: ^1.5.0 + shelf: ^1.4.2 + shelf_router: ^1.1.2 dev_dependencies: - lints: ^5.0.0 - test: ^1.24.0 + lints: ^6.0.0 + test: ^1.25.6 diff --git a/in_app_purchases/step_11/app/.gemini/settings.json b/in_app_purchases/step_11/app/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/step_11/app/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/step_11/app/.gitignore b/in_app_purchases/step_11/app/.gitignore index 9b7a64b527..7b42a7ac72 100644 --- a/in_app_purchases/step_11/app/.gitignore +++ b/in_app_purchases/step_11/app/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/in_app_purchases/step_11/app/android/build.gradle.kts b/in_app_purchases/step_11/app/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/in_app_purchases/step_11/app/android/build.gradle.kts +++ b/in_app_purchases/step_11/app/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/in_app_purchases/step_11/app/android/settings.gradle.kts b/in_app_purchases/step_11/app/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/in_app_purchases/step_11/app/android/settings.gradle.kts +++ b/in_app_purchases/step_11/app/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/in_app_purchases/step_11/app/ios/Flutter/AppFrameworkInfo.plist b/in_app_purchases/step_11/app/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/in_app_purchases/step_11/app/ios/Flutter/AppFrameworkInfo.plist +++ b/in_app_purchases/step_11/app/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/in_app_purchases/step_11/app/ios/Podfile b/in_app_purchases/step_11/app/ios/Podfile index 263294aa35..620e46eba6 100644 --- a/in_app_purchases/step_11/app/ios/Podfile +++ b/in_app_purchases/step_11/app/ios/Podfile @@ -1,5 +1,5 @@ -# Per https://firebase.google.com/support/release-notes/ios cloud_firestore requires a minimum iOS version of 13.0 -platform :ios, '13.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/in_app_purchases/step_11/app/ios/Runner.xcodeproj/project.pbxproj b/in_app_purchases/step_11/app/ios/Runner.xcodeproj/project.pbxproj index 6f2fb5b153..88e89efc42 100644 --- a/in_app_purchases/step_11/app/ios/Runner.xcodeproj/project.pbxproj +++ b/in_app_purchases/step_11/app/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/in_app_purchases/step_11/app/pubspec.yaml b/in_app_purchases/step_11/app/pubspec.yaml index 374ee65b79..dd1c31a0cd 100644 --- a/in_app_purchases/step_11/app/pubspec.yaml +++ b/in_app_purchases/step_11/app/pubspec.yaml @@ -4,17 +4,17 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - cloud_firestore: ^5.6.7 + cloud_firestore: ^6.0.0 cupertino_icons: ^1.0.8 - firebase_auth: ^5.5.3 - firebase_core: ^3.13.0 + firebase_auth: ^6.0.1 + firebase_core: ^4.0.0 google_sign_in: ^6.3.0 - http: ^1.4.0 + http: ^1.5.0 intl: ^0.20.2 provider: ^6.1.5 in_app_purchase: ^3.2.3 diff --git a/in_app_purchases/step_11/dart-backend/.gemini/settings.json b/in_app_purchases/step_11/dart-backend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/in_app_purchases/step_11/dart-backend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/in_app_purchases/step_11/dart-backend/pubspec.yaml b/in_app_purchases/step_11/dart-backend/pubspec.yaml index f41bbbfb23..44b89c4e2c 100644 --- a/in_app_purchases/step_11/dart-backend/pubspec.yaml +++ b/in_app_purchases/step_11/dart-backend/pubspec.yaml @@ -4,16 +4,16 @@ version: 1.0.0 # repository: https://github.com/my_org/my_repo environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: app_store_server_sdk: ^1.2.10 googleapis: ^14.0.0 googleapis_auth: ^2.0.0 - http: ^1.4.0 - shelf: ^1.4.0 - shelf_router: ^1.1.0 + http: ^1.5.0 + shelf: ^1.4.2 + shelf_router: ^1.1.2 dev_dependencies: - lints: ^5.0.0 - test: ^1.24.0 + lints: ^6.0.0 + test: ^1.25.6 diff --git a/intro_flutter_gpu/codelab_rebuild.yaml b/intro_flutter_gpu/codelab_rebuild.yaml index ea1c18adb1..8c4e02cdc8 100644 --- a/intro_flutter_gpu/codelab_rebuild.yaml +++ b/intro_flutter_gpu/codelab_rebuild.yaml @@ -15,6 +15,21 @@ steps: include: ../../analysis_options.yaml - name: Remove README rm: intro_flutter_gpu/README.md + - name: Add .gemini directory + mkdir: intro_flutter_gpu/.gemini + - name: Add .gemini/settings.json + path: intro_flutter_gpu/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add .vscode directory mkdir: intro_flutter_gpu/.vscode - name: Add .vscode/launch.json @@ -274,7 +289,7 @@ steps: testWidgets('smoke test', (tester) async { // Build our app and trigger a frame. await tester.pumpWidget(const MainApp()); - }, skip: true); + }, skip: true); // See https://github.com/flutter/flutter/issues/171361 } - name: Patch macos/Runner/Info.plist path: intro_flutter_gpu/macos/Runner/Info.plist @@ -2218,7 +2233,7 @@ steps: + await tester.pumpWidget( + MainApp(staticResourcesInitialized: Scene.initializeStaticResources()), + ); - }, skip: true); + }, skip: true); // See https://github.com/flutter/flutter/issues/171361 } - name: Copy step_12 copydir: diff --git a/intro_flutter_gpu/step_01/.gemini/settings.json b/intro_flutter_gpu/step_01/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/intro_flutter_gpu/step_01/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/intro_flutter_gpu/step_01/.gitignore b/intro_flutter_gpu/step_01/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/intro_flutter_gpu/step_01/.gitignore +++ b/intro_flutter_gpu/step_01/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/intro_flutter_gpu/step_01/android/build.gradle.kts b/intro_flutter_gpu/step_01/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/intro_flutter_gpu/step_01/android/build.gradle.kts +++ b/intro_flutter_gpu/step_01/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/intro_flutter_gpu/step_01/android/settings.gradle.kts b/intro_flutter_gpu/step_01/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/intro_flutter_gpu/step_01/android/settings.gradle.kts +++ b/intro_flutter_gpu/step_01/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/intro_flutter_gpu/step_01/ios/Flutter/AppFrameworkInfo.plist b/intro_flutter_gpu/step_01/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/intro_flutter_gpu/step_01/ios/Flutter/AppFrameworkInfo.plist +++ b/intro_flutter_gpu/step_01/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/intro_flutter_gpu/step_01/ios/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_01/ios/Runner.xcodeproj/project.pbxproj index ad32bb23d8..551258a9bb 100644 --- a/intro_flutter_gpu/step_01/ios/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_01/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/intro_flutter_gpu/step_01/linux/runner/my_application.cc b/intro_flutter_gpu/step_01/linux/runner/my_application.cc index 6c04c01067..b274b10a03 100644 --- a/intro_flutter_gpu/step_01/linux/runner/my_application.cc +++ b/intro_flutter_gpu/step_01/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/intro_flutter_gpu/step_01/macos/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_01/macos/Runner.xcodeproj/project.pbxproj index 020e14fe6c..330cf16128 100644 --- a/intro_flutter_gpu/step_01/macos/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_01/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/intro_flutter_gpu/step_01/pubspec.yaml b/intro_flutter_gpu/step_01/pubspec.yaml index 589fb2b886..29b9fa9ac0 100644 --- a/intro_flutter_gpu/step_01/pubspec.yaml +++ b/intro_flutter_gpu/step_01/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: sdk: flutter flutter_gpu_shaders: ^0.3.0 native_assets_cli: ^0.13.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 dev_dependencies: flutter_test: diff --git a/intro_flutter_gpu/step_02/.gemini/settings.json b/intro_flutter_gpu/step_02/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/intro_flutter_gpu/step_02/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/intro_flutter_gpu/step_02/.gitignore b/intro_flutter_gpu/step_02/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/intro_flutter_gpu/step_02/.gitignore +++ b/intro_flutter_gpu/step_02/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/intro_flutter_gpu/step_02/android/build.gradle.kts b/intro_flutter_gpu/step_02/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/intro_flutter_gpu/step_02/android/build.gradle.kts +++ b/intro_flutter_gpu/step_02/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/intro_flutter_gpu/step_02/android/settings.gradle.kts b/intro_flutter_gpu/step_02/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/intro_flutter_gpu/step_02/android/settings.gradle.kts +++ b/intro_flutter_gpu/step_02/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/intro_flutter_gpu/step_02/ios/Flutter/AppFrameworkInfo.plist b/intro_flutter_gpu/step_02/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/intro_flutter_gpu/step_02/ios/Flutter/AppFrameworkInfo.plist +++ b/intro_flutter_gpu/step_02/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/intro_flutter_gpu/step_02/ios/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_02/ios/Runner.xcodeproj/project.pbxproj index ad32bb23d8..551258a9bb 100644 --- a/intro_flutter_gpu/step_02/ios/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_02/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/intro_flutter_gpu/step_02/linux/runner/my_application.cc b/intro_flutter_gpu/step_02/linux/runner/my_application.cc index 6c04c01067..b274b10a03 100644 --- a/intro_flutter_gpu/step_02/linux/runner/my_application.cc +++ b/intro_flutter_gpu/step_02/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/intro_flutter_gpu/step_02/macos/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_02/macos/Runner.xcodeproj/project.pbxproj index 020e14fe6c..330cf16128 100644 --- a/intro_flutter_gpu/step_02/macos/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_02/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/intro_flutter_gpu/step_02/pubspec.yaml b/intro_flutter_gpu/step_02/pubspec.yaml index 589fb2b886..29b9fa9ac0 100644 --- a/intro_flutter_gpu/step_02/pubspec.yaml +++ b/intro_flutter_gpu/step_02/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: sdk: flutter flutter_gpu_shaders: ^0.3.0 native_assets_cli: ^0.13.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 dev_dependencies: flutter_test: diff --git a/intro_flutter_gpu/step_03/.gemini/settings.json b/intro_flutter_gpu/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/intro_flutter_gpu/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/intro_flutter_gpu/step_03/.gitignore b/intro_flutter_gpu/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/intro_flutter_gpu/step_03/.gitignore +++ b/intro_flutter_gpu/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/intro_flutter_gpu/step_03/android/build.gradle.kts b/intro_flutter_gpu/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/intro_flutter_gpu/step_03/android/build.gradle.kts +++ b/intro_flutter_gpu/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/intro_flutter_gpu/step_03/android/settings.gradle.kts b/intro_flutter_gpu/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/intro_flutter_gpu/step_03/android/settings.gradle.kts +++ b/intro_flutter_gpu/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/intro_flutter_gpu/step_03/ios/Flutter/AppFrameworkInfo.plist b/intro_flutter_gpu/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/intro_flutter_gpu/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/intro_flutter_gpu/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/intro_flutter_gpu/step_03/ios/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_03/ios/Runner.xcodeproj/project.pbxproj index ad32bb23d8..551258a9bb 100644 --- a/intro_flutter_gpu/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/intro_flutter_gpu/step_03/linux/runner/my_application.cc b/intro_flutter_gpu/step_03/linux/runner/my_application.cc index 6c04c01067..b274b10a03 100644 --- a/intro_flutter_gpu/step_03/linux/runner/my_application.cc +++ b/intro_flutter_gpu/step_03/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/intro_flutter_gpu/step_03/macos/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_03/macos/Runner.xcodeproj/project.pbxproj index 020e14fe6c..330cf16128 100644 --- a/intro_flutter_gpu/step_03/macos/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_03/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/intro_flutter_gpu/step_03/pubspec.yaml b/intro_flutter_gpu/step_03/pubspec.yaml index 589fb2b886..29b9fa9ac0 100644 --- a/intro_flutter_gpu/step_03/pubspec.yaml +++ b/intro_flutter_gpu/step_03/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: sdk: flutter flutter_gpu_shaders: ^0.3.0 native_assets_cli: ^0.13.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 dev_dependencies: flutter_test: diff --git a/intro_flutter_gpu/step_04/.gemini/settings.json b/intro_flutter_gpu/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/intro_flutter_gpu/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/intro_flutter_gpu/step_04/.gitignore b/intro_flutter_gpu/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/intro_flutter_gpu/step_04/.gitignore +++ b/intro_flutter_gpu/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/intro_flutter_gpu/step_04/android/build.gradle.kts b/intro_flutter_gpu/step_04/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/intro_flutter_gpu/step_04/android/build.gradle.kts +++ b/intro_flutter_gpu/step_04/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/intro_flutter_gpu/step_04/android/settings.gradle.kts b/intro_flutter_gpu/step_04/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/intro_flutter_gpu/step_04/android/settings.gradle.kts +++ b/intro_flutter_gpu/step_04/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/intro_flutter_gpu/step_04/ios/Flutter/AppFrameworkInfo.plist b/intro_flutter_gpu/step_04/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/intro_flutter_gpu/step_04/ios/Flutter/AppFrameworkInfo.plist +++ b/intro_flutter_gpu/step_04/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/intro_flutter_gpu/step_04/ios/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_04/ios/Runner.xcodeproj/project.pbxproj index ad32bb23d8..551258a9bb 100644 --- a/intro_flutter_gpu/step_04/ios/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_04/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/intro_flutter_gpu/step_04/linux/runner/my_application.cc b/intro_flutter_gpu/step_04/linux/runner/my_application.cc index 6c04c01067..b274b10a03 100644 --- a/intro_flutter_gpu/step_04/linux/runner/my_application.cc +++ b/intro_flutter_gpu/step_04/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/intro_flutter_gpu/step_04/macos/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_04/macos/Runner.xcodeproj/project.pbxproj index 020e14fe6c..330cf16128 100644 --- a/intro_flutter_gpu/step_04/macos/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_04/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/intro_flutter_gpu/step_04/pubspec.yaml b/intro_flutter_gpu/step_04/pubspec.yaml index 589fb2b886..29b9fa9ac0 100644 --- a/intro_flutter_gpu/step_04/pubspec.yaml +++ b/intro_flutter_gpu/step_04/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: sdk: flutter flutter_gpu_shaders: ^0.3.0 native_assets_cli: ^0.13.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 dev_dependencies: flutter_test: diff --git a/intro_flutter_gpu/step_05/.gemini/settings.json b/intro_flutter_gpu/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/intro_flutter_gpu/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/intro_flutter_gpu/step_05/.gitignore b/intro_flutter_gpu/step_05/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/intro_flutter_gpu/step_05/.gitignore +++ b/intro_flutter_gpu/step_05/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/intro_flutter_gpu/step_05/android/build.gradle.kts b/intro_flutter_gpu/step_05/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/intro_flutter_gpu/step_05/android/build.gradle.kts +++ b/intro_flutter_gpu/step_05/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/intro_flutter_gpu/step_05/android/settings.gradle.kts b/intro_flutter_gpu/step_05/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/intro_flutter_gpu/step_05/android/settings.gradle.kts +++ b/intro_flutter_gpu/step_05/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/intro_flutter_gpu/step_05/ios/Flutter/AppFrameworkInfo.plist b/intro_flutter_gpu/step_05/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/intro_flutter_gpu/step_05/ios/Flutter/AppFrameworkInfo.plist +++ b/intro_flutter_gpu/step_05/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/intro_flutter_gpu/step_05/ios/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_05/ios/Runner.xcodeproj/project.pbxproj index ad32bb23d8..551258a9bb 100644 --- a/intro_flutter_gpu/step_05/ios/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_05/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/intro_flutter_gpu/step_05/linux/runner/my_application.cc b/intro_flutter_gpu/step_05/linux/runner/my_application.cc index 6c04c01067..b274b10a03 100644 --- a/intro_flutter_gpu/step_05/linux/runner/my_application.cc +++ b/intro_flutter_gpu/step_05/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/intro_flutter_gpu/step_05/macos/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_05/macos/Runner.xcodeproj/project.pbxproj index 020e14fe6c..330cf16128 100644 --- a/intro_flutter_gpu/step_05/macos/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_05/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/intro_flutter_gpu/step_05/pubspec.yaml b/intro_flutter_gpu/step_05/pubspec.yaml index 589fb2b886..29b9fa9ac0 100644 --- a/intro_flutter_gpu/step_05/pubspec.yaml +++ b/intro_flutter_gpu/step_05/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: sdk: flutter flutter_gpu_shaders: ^0.3.0 native_assets_cli: ^0.13.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 dev_dependencies: flutter_test: diff --git a/intro_flutter_gpu/step_06/.gemini/settings.json b/intro_flutter_gpu/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/intro_flutter_gpu/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/intro_flutter_gpu/step_06/.gitignore b/intro_flutter_gpu/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/intro_flutter_gpu/step_06/.gitignore +++ b/intro_flutter_gpu/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/intro_flutter_gpu/step_06/android/build.gradle.kts b/intro_flutter_gpu/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/intro_flutter_gpu/step_06/android/build.gradle.kts +++ b/intro_flutter_gpu/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/intro_flutter_gpu/step_06/android/settings.gradle.kts b/intro_flutter_gpu/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/intro_flutter_gpu/step_06/android/settings.gradle.kts +++ b/intro_flutter_gpu/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/intro_flutter_gpu/step_06/ios/Flutter/AppFrameworkInfo.plist b/intro_flutter_gpu/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/intro_flutter_gpu/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/intro_flutter_gpu/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/intro_flutter_gpu/step_06/ios/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_06/ios/Runner.xcodeproj/project.pbxproj index ad32bb23d8..551258a9bb 100644 --- a/intro_flutter_gpu/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/intro_flutter_gpu/step_06/linux/runner/my_application.cc b/intro_flutter_gpu/step_06/linux/runner/my_application.cc index 6c04c01067..b274b10a03 100644 --- a/intro_flutter_gpu/step_06/linux/runner/my_application.cc +++ b/intro_flutter_gpu/step_06/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/intro_flutter_gpu/step_06/macos/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_06/macos/Runner.xcodeproj/project.pbxproj index 020e14fe6c..330cf16128 100644 --- a/intro_flutter_gpu/step_06/macos/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_06/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/intro_flutter_gpu/step_06/pubspec.yaml b/intro_flutter_gpu/step_06/pubspec.yaml index 589fb2b886..29b9fa9ac0 100644 --- a/intro_flutter_gpu/step_06/pubspec.yaml +++ b/intro_flutter_gpu/step_06/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: sdk: flutter flutter_gpu_shaders: ^0.3.0 native_assets_cli: ^0.13.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 dev_dependencies: flutter_test: diff --git a/intro_flutter_gpu/step_07/.gemini/settings.json b/intro_flutter_gpu/step_07/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/intro_flutter_gpu/step_07/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/intro_flutter_gpu/step_07/.gitignore b/intro_flutter_gpu/step_07/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/intro_flutter_gpu/step_07/.gitignore +++ b/intro_flutter_gpu/step_07/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/intro_flutter_gpu/step_07/android/build.gradle.kts b/intro_flutter_gpu/step_07/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/intro_flutter_gpu/step_07/android/build.gradle.kts +++ b/intro_flutter_gpu/step_07/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/intro_flutter_gpu/step_07/android/settings.gradle.kts b/intro_flutter_gpu/step_07/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/intro_flutter_gpu/step_07/android/settings.gradle.kts +++ b/intro_flutter_gpu/step_07/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/intro_flutter_gpu/step_07/ios/Flutter/AppFrameworkInfo.plist b/intro_flutter_gpu/step_07/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/intro_flutter_gpu/step_07/ios/Flutter/AppFrameworkInfo.plist +++ b/intro_flutter_gpu/step_07/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/intro_flutter_gpu/step_07/ios/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_07/ios/Runner.xcodeproj/project.pbxproj index ad32bb23d8..551258a9bb 100644 --- a/intro_flutter_gpu/step_07/ios/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_07/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/intro_flutter_gpu/step_07/linux/runner/my_application.cc b/intro_flutter_gpu/step_07/linux/runner/my_application.cc index 6c04c01067..b274b10a03 100644 --- a/intro_flutter_gpu/step_07/linux/runner/my_application.cc +++ b/intro_flutter_gpu/step_07/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/intro_flutter_gpu/step_07/macos/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_07/macos/Runner.xcodeproj/project.pbxproj index 020e14fe6c..330cf16128 100644 --- a/intro_flutter_gpu/step_07/macos/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_07/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/intro_flutter_gpu/step_07/pubspec.yaml b/intro_flutter_gpu/step_07/pubspec.yaml index 589fb2b886..29b9fa9ac0 100644 --- a/intro_flutter_gpu/step_07/pubspec.yaml +++ b/intro_flutter_gpu/step_07/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: sdk: flutter flutter_gpu_shaders: ^0.3.0 native_assets_cli: ^0.13.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 dev_dependencies: flutter_test: diff --git a/intro_flutter_gpu/step_08/.gemini/settings.json b/intro_flutter_gpu/step_08/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/intro_flutter_gpu/step_08/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/intro_flutter_gpu/step_08/.gitignore b/intro_flutter_gpu/step_08/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/intro_flutter_gpu/step_08/.gitignore +++ b/intro_flutter_gpu/step_08/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/intro_flutter_gpu/step_08/android/build.gradle.kts b/intro_flutter_gpu/step_08/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/intro_flutter_gpu/step_08/android/build.gradle.kts +++ b/intro_flutter_gpu/step_08/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/intro_flutter_gpu/step_08/android/settings.gradle.kts b/intro_flutter_gpu/step_08/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/intro_flutter_gpu/step_08/android/settings.gradle.kts +++ b/intro_flutter_gpu/step_08/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/intro_flutter_gpu/step_08/ios/Flutter/AppFrameworkInfo.plist b/intro_flutter_gpu/step_08/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/intro_flutter_gpu/step_08/ios/Flutter/AppFrameworkInfo.plist +++ b/intro_flutter_gpu/step_08/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/intro_flutter_gpu/step_08/ios/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_08/ios/Runner.xcodeproj/project.pbxproj index ad32bb23d8..551258a9bb 100644 --- a/intro_flutter_gpu/step_08/ios/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_08/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/intro_flutter_gpu/step_08/linux/runner/my_application.cc b/intro_flutter_gpu/step_08/linux/runner/my_application.cc index 6c04c01067..b274b10a03 100644 --- a/intro_flutter_gpu/step_08/linux/runner/my_application.cc +++ b/intro_flutter_gpu/step_08/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/intro_flutter_gpu/step_08/macos/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_08/macos/Runner.xcodeproj/project.pbxproj index 020e14fe6c..330cf16128 100644 --- a/intro_flutter_gpu/step_08/macos/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_08/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/intro_flutter_gpu/step_08/pubspec.yaml b/intro_flutter_gpu/step_08/pubspec.yaml index 589fb2b886..29b9fa9ac0 100644 --- a/intro_flutter_gpu/step_08/pubspec.yaml +++ b/intro_flutter_gpu/step_08/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: sdk: flutter flutter_gpu_shaders: ^0.3.0 native_assets_cli: ^0.13.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 dev_dependencies: flutter_test: diff --git a/intro_flutter_gpu/step_09/.gemini/settings.json b/intro_flutter_gpu/step_09/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/intro_flutter_gpu/step_09/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/intro_flutter_gpu/step_09/.gitignore b/intro_flutter_gpu/step_09/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/intro_flutter_gpu/step_09/.gitignore +++ b/intro_flutter_gpu/step_09/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/intro_flutter_gpu/step_09/android/build.gradle.kts b/intro_flutter_gpu/step_09/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/intro_flutter_gpu/step_09/android/build.gradle.kts +++ b/intro_flutter_gpu/step_09/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/intro_flutter_gpu/step_09/android/settings.gradle.kts b/intro_flutter_gpu/step_09/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/intro_flutter_gpu/step_09/android/settings.gradle.kts +++ b/intro_flutter_gpu/step_09/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/intro_flutter_gpu/step_09/ios/Flutter/AppFrameworkInfo.plist b/intro_flutter_gpu/step_09/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/intro_flutter_gpu/step_09/ios/Flutter/AppFrameworkInfo.plist +++ b/intro_flutter_gpu/step_09/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/intro_flutter_gpu/step_09/ios/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_09/ios/Runner.xcodeproj/project.pbxproj index ad32bb23d8..551258a9bb 100644 --- a/intro_flutter_gpu/step_09/ios/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_09/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/intro_flutter_gpu/step_09/linux/runner/my_application.cc b/intro_flutter_gpu/step_09/linux/runner/my_application.cc index 6c04c01067..b274b10a03 100644 --- a/intro_flutter_gpu/step_09/linux/runner/my_application.cc +++ b/intro_flutter_gpu/step_09/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/intro_flutter_gpu/step_09/macos/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_09/macos/Runner.xcodeproj/project.pbxproj index 020e14fe6c..330cf16128 100644 --- a/intro_flutter_gpu/step_09/macos/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_09/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/intro_flutter_gpu/step_09/pubspec.yaml b/intro_flutter_gpu/step_09/pubspec.yaml index 589fb2b886..29b9fa9ac0 100644 --- a/intro_flutter_gpu/step_09/pubspec.yaml +++ b/intro_flutter_gpu/step_09/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: sdk: flutter flutter_gpu_shaders: ^0.3.0 native_assets_cli: ^0.13.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 dev_dependencies: flutter_test: diff --git a/intro_flutter_gpu/step_10/.gemini/settings.json b/intro_flutter_gpu/step_10/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/intro_flutter_gpu/step_10/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/intro_flutter_gpu/step_10/.gitignore b/intro_flutter_gpu/step_10/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/intro_flutter_gpu/step_10/.gitignore +++ b/intro_flutter_gpu/step_10/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/intro_flutter_gpu/step_10/android/build.gradle.kts b/intro_flutter_gpu/step_10/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/intro_flutter_gpu/step_10/android/build.gradle.kts +++ b/intro_flutter_gpu/step_10/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/intro_flutter_gpu/step_10/android/settings.gradle.kts b/intro_flutter_gpu/step_10/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/intro_flutter_gpu/step_10/android/settings.gradle.kts +++ b/intro_flutter_gpu/step_10/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/intro_flutter_gpu/step_10/ios/Flutter/AppFrameworkInfo.plist b/intro_flutter_gpu/step_10/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/intro_flutter_gpu/step_10/ios/Flutter/AppFrameworkInfo.plist +++ b/intro_flutter_gpu/step_10/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/intro_flutter_gpu/step_10/ios/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_10/ios/Runner.xcodeproj/project.pbxproj index ad32bb23d8..551258a9bb 100644 --- a/intro_flutter_gpu/step_10/ios/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_10/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/intro_flutter_gpu/step_10/linux/runner/my_application.cc b/intro_flutter_gpu/step_10/linux/runner/my_application.cc index 6c04c01067..b274b10a03 100644 --- a/intro_flutter_gpu/step_10/linux/runner/my_application.cc +++ b/intro_flutter_gpu/step_10/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/intro_flutter_gpu/step_10/macos/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_10/macos/Runner.xcodeproj/project.pbxproj index 020e14fe6c..330cf16128 100644 --- a/intro_flutter_gpu/step_10/macos/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_10/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/intro_flutter_gpu/step_10/pubspec.yaml b/intro_flutter_gpu/step_10/pubspec.yaml index 589fb2b886..29b9fa9ac0 100644 --- a/intro_flutter_gpu/step_10/pubspec.yaml +++ b/intro_flutter_gpu/step_10/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: sdk: flutter flutter_gpu_shaders: ^0.3.0 native_assets_cli: ^0.13.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 dev_dependencies: flutter_test: diff --git a/intro_flutter_gpu/step_11/.gemini/settings.json b/intro_flutter_gpu/step_11/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/intro_flutter_gpu/step_11/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/intro_flutter_gpu/step_11/.gitignore b/intro_flutter_gpu/step_11/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/intro_flutter_gpu/step_11/.gitignore +++ b/intro_flutter_gpu/step_11/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/intro_flutter_gpu/step_11/android/build.gradle.kts b/intro_flutter_gpu/step_11/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/intro_flutter_gpu/step_11/android/build.gradle.kts +++ b/intro_flutter_gpu/step_11/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/intro_flutter_gpu/step_11/android/settings.gradle.kts b/intro_flutter_gpu/step_11/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/intro_flutter_gpu/step_11/android/settings.gradle.kts +++ b/intro_flutter_gpu/step_11/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/intro_flutter_gpu/step_11/ios/Flutter/AppFrameworkInfo.plist b/intro_flutter_gpu/step_11/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/intro_flutter_gpu/step_11/ios/Flutter/AppFrameworkInfo.plist +++ b/intro_flutter_gpu/step_11/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/intro_flutter_gpu/step_11/ios/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_11/ios/Runner.xcodeproj/project.pbxproj index ad32bb23d8..551258a9bb 100644 --- a/intro_flutter_gpu/step_11/ios/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_11/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/intro_flutter_gpu/step_11/linux/runner/my_application.cc b/intro_flutter_gpu/step_11/linux/runner/my_application.cc index 6c04c01067..b274b10a03 100644 --- a/intro_flutter_gpu/step_11/linux/runner/my_application.cc +++ b/intro_flutter_gpu/step_11/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/intro_flutter_gpu/step_11/macos/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_11/macos/Runner.xcodeproj/project.pbxproj index 020e14fe6c..330cf16128 100644 --- a/intro_flutter_gpu/step_11/macos/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_11/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/intro_flutter_gpu/step_11/pubspec.yaml b/intro_flutter_gpu/step_11/pubspec.yaml index 589fb2b886..29b9fa9ac0 100644 --- a/intro_flutter_gpu/step_11/pubspec.yaml +++ b/intro_flutter_gpu/step_11/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -13,7 +13,7 @@ dependencies: sdk: flutter flutter_gpu_shaders: ^0.3.0 native_assets_cli: ^0.13.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 dev_dependencies: flutter_test: diff --git a/intro_flutter_gpu/step_12/.gemini/settings.json b/intro_flutter_gpu/step_12/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/intro_flutter_gpu/step_12/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/intro_flutter_gpu/step_12/.gitignore b/intro_flutter_gpu/step_12/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/intro_flutter_gpu/step_12/.gitignore +++ b/intro_flutter_gpu/step_12/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/intro_flutter_gpu/step_12/android/build.gradle.kts b/intro_flutter_gpu/step_12/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/intro_flutter_gpu/step_12/android/build.gradle.kts +++ b/intro_flutter_gpu/step_12/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/intro_flutter_gpu/step_12/android/settings.gradle.kts b/intro_flutter_gpu/step_12/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/intro_flutter_gpu/step_12/android/settings.gradle.kts +++ b/intro_flutter_gpu/step_12/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/intro_flutter_gpu/step_12/ios/Flutter/AppFrameworkInfo.plist b/intro_flutter_gpu/step_12/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/intro_flutter_gpu/step_12/ios/Flutter/AppFrameworkInfo.plist +++ b/intro_flutter_gpu/step_12/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/intro_flutter_gpu/step_12/ios/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_12/ios/Runner.xcodeproj/project.pbxproj index ad32bb23d8..551258a9bb 100644 --- a/intro_flutter_gpu/step_12/ios/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_12/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/intro_flutter_gpu/step_12/linux/runner/my_application.cc b/intro_flutter_gpu/step_12/linux/runner/my_application.cc index 6c04c01067..b274b10a03 100644 --- a/intro_flutter_gpu/step_12/linux/runner/my_application.cc +++ b/intro_flutter_gpu/step_12/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/intro_flutter_gpu/step_12/macos/Runner.xcodeproj/project.pbxproj b/intro_flutter_gpu/step_12/macos/Runner.xcodeproj/project.pbxproj index 020e14fe6c..330cf16128 100644 --- a/intro_flutter_gpu/step_12/macos/Runner.xcodeproj/project.pbxproj +++ b/intro_flutter_gpu/step_12/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/intro_flutter_gpu/step_12/pubspec.yaml b/intro_flutter_gpu/step_12/pubspec.yaml index ecf33ef0e1..626733bfe1 100644 --- a/intro_flutter_gpu/step_12/pubspec.yaml +++ b/intro_flutter_gpu/step_12/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.1 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,7 +12,7 @@ dependencies: flutter_scene: ^0.9.2-0 flutter_scene_importer: ^0.9.0-0 native_assets_cli: ^0.13.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 dev_dependencies: flutter_test: diff --git a/namer/codelab_rebuild.yaml b/namer/codelab_rebuild.yaml index 9a9864c1ce..0188e64b79 100644 --- a/namer/codelab_rebuild.yaml +++ b/namer/codelab_rebuild.yaml @@ -9,6 +9,21 @@ steps: - name: Strip DEVELOPMENT_TEAM strip-lines-containing: DEVELOPMENT_TEAM = path: namer_app/ios/Runner.xcodeproj/project.pbxproj + - name: Add .gemini directory + mkdir: namer_app/.gemini + - name: Add .gemini/settings.json + path: namer_app/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add deps path: namer_app flutter: pub add english_words provider diff --git a/namer/step_03/.gemini/settings.json b/namer/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_03/.gitignore b/namer/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_03/.gitignore +++ b/namer/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_03/android/build.gradle.kts b/namer/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_03/android/build.gradle.kts +++ b/namer/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_03/android/settings.gradle.kts b/namer/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_03/android/settings.gradle.kts +++ b/namer/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_03/ios/Flutter/AppFrameworkInfo.plist b/namer/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_03/ios/Runner.xcodeproj/project.pbxproj b/namer/step_03/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_03/linux/runner/my_application.cc b/namer/step_03/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_03/linux/runner/my_application.cc +++ b/namer/step_03/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_03/macos/Runner.xcodeproj/project.pbxproj b/namer/step_03/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_03/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_03/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_03/pubspec.yaml b/namer/step_03/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_03/pubspec.yaml +++ b/namer/step_03/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_04_a_widget/.gemini/settings.json b/namer/step_04_a_widget/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_04_a_widget/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_04_a_widget/.gitignore b/namer/step_04_a_widget/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_04_a_widget/.gitignore +++ b/namer/step_04_a_widget/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_04_a_widget/android/build.gradle.kts b/namer/step_04_a_widget/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_04_a_widget/android/build.gradle.kts +++ b/namer/step_04_a_widget/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_04_a_widget/android/settings.gradle.kts b/namer/step_04_a_widget/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_04_a_widget/android/settings.gradle.kts +++ b/namer/step_04_a_widget/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_04_a_widget/ios/Flutter/AppFrameworkInfo.plist b/namer/step_04_a_widget/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_04_a_widget/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_04_a_widget/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_04_a_widget/ios/Runner.xcodeproj/project.pbxproj b/namer/step_04_a_widget/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_04_a_widget/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_04_a_widget/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_04_a_widget/linux/runner/my_application.cc b/namer/step_04_a_widget/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_04_a_widget/linux/runner/my_application.cc +++ b/namer/step_04_a_widget/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_04_a_widget/macos/Runner.xcodeproj/project.pbxproj b/namer/step_04_a_widget/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_04_a_widget/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_04_a_widget/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_04_a_widget/pubspec.yaml b/namer/step_04_a_widget/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_04_a_widget/pubspec.yaml +++ b/namer/step_04_a_widget/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_04_b_behavior/.gemini/settings.json b/namer/step_04_b_behavior/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_04_b_behavior/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_04_b_behavior/.gitignore b/namer/step_04_b_behavior/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_04_b_behavior/.gitignore +++ b/namer/step_04_b_behavior/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_04_b_behavior/android/build.gradle.kts b/namer/step_04_b_behavior/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_04_b_behavior/android/build.gradle.kts +++ b/namer/step_04_b_behavior/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_04_b_behavior/android/settings.gradle.kts b/namer/step_04_b_behavior/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_04_b_behavior/android/settings.gradle.kts +++ b/namer/step_04_b_behavior/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_04_b_behavior/ios/Flutter/AppFrameworkInfo.plist b/namer/step_04_b_behavior/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_04_b_behavior/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_04_b_behavior/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_04_b_behavior/ios/Runner.xcodeproj/project.pbxproj b/namer/step_04_b_behavior/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_04_b_behavior/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_04_b_behavior/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_04_b_behavior/linux/runner/my_application.cc b/namer/step_04_b_behavior/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_04_b_behavior/linux/runner/my_application.cc +++ b/namer/step_04_b_behavior/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_04_b_behavior/macos/Runner.xcodeproj/project.pbxproj b/namer/step_04_b_behavior/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_04_b_behavior/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_04_b_behavior/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_04_b_behavior/pubspec.yaml b/namer/step_04_b_behavior/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_04_b_behavior/pubspec.yaml +++ b/namer/step_04_b_behavior/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_05_a_pair/.gemini/settings.json b/namer/step_05_a_pair/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_05_a_pair/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_05_a_pair/.gitignore b/namer/step_05_a_pair/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_05_a_pair/.gitignore +++ b/namer/step_05_a_pair/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_05_a_pair/android/build.gradle.kts b/namer/step_05_a_pair/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_05_a_pair/android/build.gradle.kts +++ b/namer/step_05_a_pair/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_05_a_pair/android/settings.gradle.kts b/namer/step_05_a_pair/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_05_a_pair/android/settings.gradle.kts +++ b/namer/step_05_a_pair/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_05_a_pair/ios/Flutter/AppFrameworkInfo.plist b/namer/step_05_a_pair/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_05_a_pair/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_05_a_pair/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_05_a_pair/ios/Runner.xcodeproj/project.pbxproj b/namer/step_05_a_pair/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_05_a_pair/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_a_pair/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_05_a_pair/linux/runner/my_application.cc b/namer/step_05_a_pair/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_05_a_pair/linux/runner/my_application.cc +++ b/namer/step_05_a_pair/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_05_a_pair/macos/Runner.xcodeproj/project.pbxproj b/namer/step_05_a_pair/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_05_a_pair/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_a_pair/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_05_a_pair/pubspec.yaml b/namer/step_05_a_pair/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_05_a_pair/pubspec.yaml +++ b/namer/step_05_a_pair/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_05_b_extract/.gemini/settings.json b/namer/step_05_b_extract/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_05_b_extract/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_05_b_extract/.gitignore b/namer/step_05_b_extract/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_05_b_extract/.gitignore +++ b/namer/step_05_b_extract/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_05_b_extract/android/build.gradle.kts b/namer/step_05_b_extract/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_05_b_extract/android/build.gradle.kts +++ b/namer/step_05_b_extract/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_05_b_extract/android/settings.gradle.kts b/namer/step_05_b_extract/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_05_b_extract/android/settings.gradle.kts +++ b/namer/step_05_b_extract/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_05_b_extract/ios/Flutter/AppFrameworkInfo.plist b/namer/step_05_b_extract/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_05_b_extract/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_05_b_extract/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_05_b_extract/ios/Runner.xcodeproj/project.pbxproj b/namer/step_05_b_extract/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_05_b_extract/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_b_extract/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_05_b_extract/linux/runner/my_application.cc b/namer/step_05_b_extract/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_05_b_extract/linux/runner/my_application.cc +++ b/namer/step_05_b_extract/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_05_b_extract/macos/Runner.xcodeproj/project.pbxproj b/namer/step_05_b_extract/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_05_b_extract/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_b_extract/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_05_b_extract/pubspec.yaml b/namer/step_05_b_extract/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_05_b_extract/pubspec.yaml +++ b/namer/step_05_b_extract/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_05_c_card_padding/.gemini/settings.json b/namer/step_05_c_card_padding/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_05_c_card_padding/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_05_c_card_padding/.gitignore b/namer/step_05_c_card_padding/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_05_c_card_padding/.gitignore +++ b/namer/step_05_c_card_padding/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_05_c_card_padding/android/build.gradle.kts b/namer/step_05_c_card_padding/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_05_c_card_padding/android/build.gradle.kts +++ b/namer/step_05_c_card_padding/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_05_c_card_padding/android/settings.gradle.kts b/namer/step_05_c_card_padding/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_05_c_card_padding/android/settings.gradle.kts +++ b/namer/step_05_c_card_padding/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_05_c_card_padding/ios/Flutter/AppFrameworkInfo.plist b/namer/step_05_c_card_padding/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_05_c_card_padding/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_05_c_card_padding/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_05_c_card_padding/ios/Runner.xcodeproj/project.pbxproj b/namer/step_05_c_card_padding/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_05_c_card_padding/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_c_card_padding/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_05_c_card_padding/linux/runner/my_application.cc b/namer/step_05_c_card_padding/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_05_c_card_padding/linux/runner/my_application.cc +++ b/namer/step_05_c_card_padding/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_05_c_card_padding/macos/Runner.xcodeproj/project.pbxproj b/namer/step_05_c_card_padding/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_05_c_card_padding/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_c_card_padding/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_05_c_card_padding/pubspec.yaml b/namer/step_05_c_card_padding/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_05_c_card_padding/pubspec.yaml +++ b/namer/step_05_c_card_padding/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_05_d_theme/.gemini/settings.json b/namer/step_05_d_theme/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_05_d_theme/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_05_d_theme/.gitignore b/namer/step_05_d_theme/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_05_d_theme/.gitignore +++ b/namer/step_05_d_theme/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_05_d_theme/android/build.gradle.kts b/namer/step_05_d_theme/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_05_d_theme/android/build.gradle.kts +++ b/namer/step_05_d_theme/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_05_d_theme/android/settings.gradle.kts b/namer/step_05_d_theme/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_05_d_theme/android/settings.gradle.kts +++ b/namer/step_05_d_theme/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_05_d_theme/ios/Flutter/AppFrameworkInfo.plist b/namer/step_05_d_theme/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_05_d_theme/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_05_d_theme/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_05_d_theme/ios/Runner.xcodeproj/project.pbxproj b/namer/step_05_d_theme/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_05_d_theme/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_d_theme/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_05_d_theme/linux/runner/my_application.cc b/namer/step_05_d_theme/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_05_d_theme/linux/runner/my_application.cc +++ b/namer/step_05_d_theme/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_05_d_theme/macos/Runner.xcodeproj/project.pbxproj b/namer/step_05_d_theme/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_05_d_theme/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_d_theme/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_05_d_theme/pubspec.yaml b/namer/step_05_d_theme/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_05_d_theme/pubspec.yaml +++ b/namer/step_05_d_theme/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_05_e_text_style/.gemini/settings.json b/namer/step_05_e_text_style/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_05_e_text_style/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_05_e_text_style/.gitignore b/namer/step_05_e_text_style/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_05_e_text_style/.gitignore +++ b/namer/step_05_e_text_style/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_05_e_text_style/android/build.gradle.kts b/namer/step_05_e_text_style/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_05_e_text_style/android/build.gradle.kts +++ b/namer/step_05_e_text_style/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_05_e_text_style/android/settings.gradle.kts b/namer/step_05_e_text_style/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_05_e_text_style/android/settings.gradle.kts +++ b/namer/step_05_e_text_style/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_05_e_text_style/ios/Flutter/AppFrameworkInfo.plist b/namer/step_05_e_text_style/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_05_e_text_style/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_05_e_text_style/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_05_e_text_style/ios/Runner.xcodeproj/project.pbxproj b/namer/step_05_e_text_style/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_05_e_text_style/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_e_text_style/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_05_e_text_style/linux/runner/my_application.cc b/namer/step_05_e_text_style/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_05_e_text_style/linux/runner/my_application.cc +++ b/namer/step_05_e_text_style/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_05_e_text_style/macos/Runner.xcodeproj/project.pbxproj b/namer/step_05_e_text_style/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_05_e_text_style/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_e_text_style/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_05_e_text_style/pubspec.yaml b/namer/step_05_e_text_style/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_05_e_text_style/pubspec.yaml +++ b/namer/step_05_e_text_style/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_05_f_accessibility/.gemini/settings.json b/namer/step_05_f_accessibility/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_05_f_accessibility/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_05_f_accessibility/.gitignore b/namer/step_05_f_accessibility/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_05_f_accessibility/.gitignore +++ b/namer/step_05_f_accessibility/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_05_f_accessibility/android/build.gradle.kts b/namer/step_05_f_accessibility/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_05_f_accessibility/android/build.gradle.kts +++ b/namer/step_05_f_accessibility/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_05_f_accessibility/android/settings.gradle.kts b/namer/step_05_f_accessibility/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_05_f_accessibility/android/settings.gradle.kts +++ b/namer/step_05_f_accessibility/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_05_f_accessibility/ios/Flutter/AppFrameworkInfo.plist b/namer/step_05_f_accessibility/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_05_f_accessibility/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_05_f_accessibility/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_05_f_accessibility/ios/Runner.xcodeproj/project.pbxproj b/namer/step_05_f_accessibility/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_05_f_accessibility/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_f_accessibility/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_05_f_accessibility/linux/runner/my_application.cc b/namer/step_05_f_accessibility/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_05_f_accessibility/linux/runner/my_application.cc +++ b/namer/step_05_f_accessibility/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_05_f_accessibility/macos/Runner.xcodeproj/project.pbxproj b/namer/step_05_f_accessibility/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_05_f_accessibility/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_f_accessibility/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_05_f_accessibility/pubspec.yaml b/namer/step_05_f_accessibility/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_05_f_accessibility/pubspec.yaml +++ b/namer/step_05_f_accessibility/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_05_g_center_vertical/.gemini/settings.json b/namer/step_05_g_center_vertical/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_05_g_center_vertical/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_05_g_center_vertical/.gitignore b/namer/step_05_g_center_vertical/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_05_g_center_vertical/.gitignore +++ b/namer/step_05_g_center_vertical/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_05_g_center_vertical/android/build.gradle.kts b/namer/step_05_g_center_vertical/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_05_g_center_vertical/android/build.gradle.kts +++ b/namer/step_05_g_center_vertical/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_05_g_center_vertical/android/settings.gradle.kts b/namer/step_05_g_center_vertical/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_05_g_center_vertical/android/settings.gradle.kts +++ b/namer/step_05_g_center_vertical/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_05_g_center_vertical/ios/Flutter/AppFrameworkInfo.plist b/namer/step_05_g_center_vertical/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_05_g_center_vertical/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_05_g_center_vertical/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_05_g_center_vertical/ios/Runner.xcodeproj/project.pbxproj b/namer/step_05_g_center_vertical/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_05_g_center_vertical/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_g_center_vertical/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_05_g_center_vertical/linux/runner/my_application.cc b/namer/step_05_g_center_vertical/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_05_g_center_vertical/linux/runner/my_application.cc +++ b/namer/step_05_g_center_vertical/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_05_g_center_vertical/macos/Runner.xcodeproj/project.pbxproj b/namer/step_05_g_center_vertical/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_05_g_center_vertical/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_g_center_vertical/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_05_g_center_vertical/pubspec.yaml b/namer/step_05_g_center_vertical/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_05_g_center_vertical/pubspec.yaml +++ b/namer/step_05_g_center_vertical/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_05_h_center_horizontal/.gemini/settings.json b/namer/step_05_h_center_horizontal/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_05_h_center_horizontal/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_05_h_center_horizontal/.gitignore b/namer/step_05_h_center_horizontal/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_05_h_center_horizontal/.gitignore +++ b/namer/step_05_h_center_horizontal/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_05_h_center_horizontal/android/build.gradle.kts b/namer/step_05_h_center_horizontal/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_05_h_center_horizontal/android/build.gradle.kts +++ b/namer/step_05_h_center_horizontal/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_05_h_center_horizontal/android/settings.gradle.kts b/namer/step_05_h_center_horizontal/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_05_h_center_horizontal/android/settings.gradle.kts +++ b/namer/step_05_h_center_horizontal/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_05_h_center_horizontal/ios/Flutter/AppFrameworkInfo.plist b/namer/step_05_h_center_horizontal/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_05_h_center_horizontal/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_05_h_center_horizontal/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_05_h_center_horizontal/ios/Runner.xcodeproj/project.pbxproj b/namer/step_05_h_center_horizontal/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_05_h_center_horizontal/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_h_center_horizontal/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_05_h_center_horizontal/linux/runner/my_application.cc b/namer/step_05_h_center_horizontal/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_05_h_center_horizontal/linux/runner/my_application.cc +++ b/namer/step_05_h_center_horizontal/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_05_h_center_horizontal/macos/Runner.xcodeproj/project.pbxproj b/namer/step_05_h_center_horizontal/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_05_h_center_horizontal/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_h_center_horizontal/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_05_h_center_horizontal/pubspec.yaml b/namer/step_05_h_center_horizontal/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_05_h_center_horizontal/pubspec.yaml +++ b/namer/step_05_h_center_horizontal/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_05_i_optional_changes/.gemini/settings.json b/namer/step_05_i_optional_changes/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_05_i_optional_changes/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_05_i_optional_changes/.gitignore b/namer/step_05_i_optional_changes/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_05_i_optional_changes/.gitignore +++ b/namer/step_05_i_optional_changes/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_05_i_optional_changes/android/build.gradle.kts b/namer/step_05_i_optional_changes/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_05_i_optional_changes/android/build.gradle.kts +++ b/namer/step_05_i_optional_changes/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_05_i_optional_changes/android/settings.gradle.kts b/namer/step_05_i_optional_changes/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_05_i_optional_changes/android/settings.gradle.kts +++ b/namer/step_05_i_optional_changes/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_05_i_optional_changes/ios/Flutter/AppFrameworkInfo.plist b/namer/step_05_i_optional_changes/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_05_i_optional_changes/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_05_i_optional_changes/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_05_i_optional_changes/ios/Runner.xcodeproj/project.pbxproj b/namer/step_05_i_optional_changes/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_05_i_optional_changes/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_i_optional_changes/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_05_i_optional_changes/linux/runner/my_application.cc b/namer/step_05_i_optional_changes/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_05_i_optional_changes/linux/runner/my_application.cc +++ b/namer/step_05_i_optional_changes/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_05_i_optional_changes/macos/Runner.xcodeproj/project.pbxproj b/namer/step_05_i_optional_changes/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_05_i_optional_changes/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_05_i_optional_changes/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_05_i_optional_changes/pubspec.yaml b/namer/step_05_i_optional_changes/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_05_i_optional_changes/pubspec.yaml +++ b/namer/step_05_i_optional_changes/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_06_a_business_logic/.gemini/settings.json b/namer/step_06_a_business_logic/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_06_a_business_logic/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_06_a_business_logic/.gitignore b/namer/step_06_a_business_logic/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_06_a_business_logic/.gitignore +++ b/namer/step_06_a_business_logic/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_06_a_business_logic/android/build.gradle.kts b/namer/step_06_a_business_logic/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_06_a_business_logic/android/build.gradle.kts +++ b/namer/step_06_a_business_logic/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_06_a_business_logic/android/settings.gradle.kts b/namer/step_06_a_business_logic/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_06_a_business_logic/android/settings.gradle.kts +++ b/namer/step_06_a_business_logic/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_06_a_business_logic/ios/Flutter/AppFrameworkInfo.plist b/namer/step_06_a_business_logic/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_06_a_business_logic/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_06_a_business_logic/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_06_a_business_logic/ios/Runner.xcodeproj/project.pbxproj b/namer/step_06_a_business_logic/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_06_a_business_logic/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_06_a_business_logic/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_06_a_business_logic/linux/runner/my_application.cc b/namer/step_06_a_business_logic/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_06_a_business_logic/linux/runner/my_application.cc +++ b/namer/step_06_a_business_logic/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_06_a_business_logic/macos/Runner.xcodeproj/project.pbxproj b/namer/step_06_a_business_logic/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_06_a_business_logic/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_06_a_business_logic/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_06_a_business_logic/pubspec.yaml b/namer/step_06_a_business_logic/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_06_a_business_logic/pubspec.yaml +++ b/namer/step_06_a_business_logic/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_06_b_add_row/.gemini/settings.json b/namer/step_06_b_add_row/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_06_b_add_row/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_06_b_add_row/.gitignore b/namer/step_06_b_add_row/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_06_b_add_row/.gitignore +++ b/namer/step_06_b_add_row/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_06_b_add_row/android/build.gradle.kts b/namer/step_06_b_add_row/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_06_b_add_row/android/build.gradle.kts +++ b/namer/step_06_b_add_row/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_06_b_add_row/android/settings.gradle.kts b/namer/step_06_b_add_row/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_06_b_add_row/android/settings.gradle.kts +++ b/namer/step_06_b_add_row/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_06_b_add_row/ios/Flutter/AppFrameworkInfo.plist b/namer/step_06_b_add_row/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_06_b_add_row/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_06_b_add_row/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_06_b_add_row/ios/Runner.xcodeproj/project.pbxproj b/namer/step_06_b_add_row/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_06_b_add_row/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_06_b_add_row/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_06_b_add_row/linux/runner/my_application.cc b/namer/step_06_b_add_row/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_06_b_add_row/linux/runner/my_application.cc +++ b/namer/step_06_b_add_row/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_06_b_add_row/macos/Runner.xcodeproj/project.pbxproj b/namer/step_06_b_add_row/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_06_b_add_row/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_06_b_add_row/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_06_b_add_row/pubspec.yaml b/namer/step_06_b_add_row/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_06_b_add_row/pubspec.yaml +++ b/namer/step_06_b_add_row/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_06_c_add_like_button/.gemini/settings.json b/namer/step_06_c_add_like_button/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_06_c_add_like_button/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_06_c_add_like_button/.gitignore b/namer/step_06_c_add_like_button/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_06_c_add_like_button/.gitignore +++ b/namer/step_06_c_add_like_button/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_06_c_add_like_button/android/build.gradle.kts b/namer/step_06_c_add_like_button/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_06_c_add_like_button/android/build.gradle.kts +++ b/namer/step_06_c_add_like_button/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_06_c_add_like_button/android/settings.gradle.kts b/namer/step_06_c_add_like_button/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_06_c_add_like_button/android/settings.gradle.kts +++ b/namer/step_06_c_add_like_button/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_06_c_add_like_button/ios/Flutter/AppFrameworkInfo.plist b/namer/step_06_c_add_like_button/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_06_c_add_like_button/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_06_c_add_like_button/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_06_c_add_like_button/ios/Runner.xcodeproj/project.pbxproj b/namer/step_06_c_add_like_button/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_06_c_add_like_button/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_06_c_add_like_button/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_06_c_add_like_button/linux/runner/my_application.cc b/namer/step_06_c_add_like_button/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_06_c_add_like_button/linux/runner/my_application.cc +++ b/namer/step_06_c_add_like_button/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_06_c_add_like_button/macos/Runner.xcodeproj/project.pbxproj b/namer/step_06_c_add_like_button/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_06_c_add_like_button/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_06_c_add_like_button/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_06_c_add_like_button/pubspec.yaml b/namer/step_06_c_add_like_button/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_06_c_add_like_button/pubspec.yaml +++ b/namer/step_06_c_add_like_button/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_07_a_split_my_home_page/.gemini/settings.json b/namer/step_07_a_split_my_home_page/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_07_a_split_my_home_page/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_07_a_split_my_home_page/.gitignore b/namer/step_07_a_split_my_home_page/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_07_a_split_my_home_page/.gitignore +++ b/namer/step_07_a_split_my_home_page/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_07_a_split_my_home_page/android/build.gradle.kts b/namer/step_07_a_split_my_home_page/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_07_a_split_my_home_page/android/build.gradle.kts +++ b/namer/step_07_a_split_my_home_page/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_07_a_split_my_home_page/android/settings.gradle.kts b/namer/step_07_a_split_my_home_page/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_07_a_split_my_home_page/android/settings.gradle.kts +++ b/namer/step_07_a_split_my_home_page/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_07_a_split_my_home_page/ios/Flutter/AppFrameworkInfo.plist b/namer/step_07_a_split_my_home_page/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_07_a_split_my_home_page/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_07_a_split_my_home_page/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_07_a_split_my_home_page/ios/Runner.xcodeproj/project.pbxproj b/namer/step_07_a_split_my_home_page/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_07_a_split_my_home_page/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_07_a_split_my_home_page/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_07_a_split_my_home_page/linux/runner/my_application.cc b/namer/step_07_a_split_my_home_page/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_07_a_split_my_home_page/linux/runner/my_application.cc +++ b/namer/step_07_a_split_my_home_page/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_07_a_split_my_home_page/macos/Runner.xcodeproj/project.pbxproj b/namer/step_07_a_split_my_home_page/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_07_a_split_my_home_page/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_07_a_split_my_home_page/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_07_a_split_my_home_page/pubspec.yaml b/namer/step_07_a_split_my_home_page/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_07_a_split_my_home_page/pubspec.yaml +++ b/namer/step_07_a_split_my_home_page/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_07_b_convert_to_stateful/.gemini/settings.json b/namer/step_07_b_convert_to_stateful/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_07_b_convert_to_stateful/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_07_b_convert_to_stateful/.gitignore b/namer/step_07_b_convert_to_stateful/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_07_b_convert_to_stateful/.gitignore +++ b/namer/step_07_b_convert_to_stateful/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_07_b_convert_to_stateful/android/build.gradle.kts b/namer/step_07_b_convert_to_stateful/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_07_b_convert_to_stateful/android/build.gradle.kts +++ b/namer/step_07_b_convert_to_stateful/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_07_b_convert_to_stateful/android/settings.gradle.kts b/namer/step_07_b_convert_to_stateful/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_07_b_convert_to_stateful/android/settings.gradle.kts +++ b/namer/step_07_b_convert_to_stateful/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_07_b_convert_to_stateful/ios/Flutter/AppFrameworkInfo.plist b/namer/step_07_b_convert_to_stateful/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_07_b_convert_to_stateful/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_07_b_convert_to_stateful/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_07_b_convert_to_stateful/ios/Runner.xcodeproj/project.pbxproj b/namer/step_07_b_convert_to_stateful/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_07_b_convert_to_stateful/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_07_b_convert_to_stateful/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_07_b_convert_to_stateful/linux/runner/my_application.cc b/namer/step_07_b_convert_to_stateful/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_07_b_convert_to_stateful/linux/runner/my_application.cc +++ b/namer/step_07_b_convert_to_stateful/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_07_b_convert_to_stateful/macos/Runner.xcodeproj/project.pbxproj b/namer/step_07_b_convert_to_stateful/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_07_b_convert_to_stateful/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_07_b_convert_to_stateful/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_07_b_convert_to_stateful/pubspec.yaml b/namer/step_07_b_convert_to_stateful/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_07_b_convert_to_stateful/pubspec.yaml +++ b/namer/step_07_b_convert_to_stateful/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_07_c_add_selectedindex/.gemini/settings.json b/namer/step_07_c_add_selectedindex/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_07_c_add_selectedindex/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_07_c_add_selectedindex/.gitignore b/namer/step_07_c_add_selectedindex/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_07_c_add_selectedindex/.gitignore +++ b/namer/step_07_c_add_selectedindex/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_07_c_add_selectedindex/android/build.gradle.kts b/namer/step_07_c_add_selectedindex/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_07_c_add_selectedindex/android/build.gradle.kts +++ b/namer/step_07_c_add_selectedindex/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_07_c_add_selectedindex/android/settings.gradle.kts b/namer/step_07_c_add_selectedindex/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_07_c_add_selectedindex/android/settings.gradle.kts +++ b/namer/step_07_c_add_selectedindex/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_07_c_add_selectedindex/ios/Flutter/AppFrameworkInfo.plist b/namer/step_07_c_add_selectedindex/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_07_c_add_selectedindex/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_07_c_add_selectedindex/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_07_c_add_selectedindex/ios/Runner.xcodeproj/project.pbxproj b/namer/step_07_c_add_selectedindex/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_07_c_add_selectedindex/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_07_c_add_selectedindex/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_07_c_add_selectedindex/linux/runner/my_application.cc b/namer/step_07_c_add_selectedindex/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_07_c_add_selectedindex/linux/runner/my_application.cc +++ b/namer/step_07_c_add_selectedindex/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_07_c_add_selectedindex/macos/Runner.xcodeproj/project.pbxproj b/namer/step_07_c_add_selectedindex/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_07_c_add_selectedindex/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_07_c_add_selectedindex/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_07_c_add_selectedindex/pubspec.yaml b/namer/step_07_c_add_selectedindex/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_07_c_add_selectedindex/pubspec.yaml +++ b/namer/step_07_c_add_selectedindex/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_07_d_use_selectedindex/.gemini/settings.json b/namer/step_07_d_use_selectedindex/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_07_d_use_selectedindex/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_07_d_use_selectedindex/.gitignore b/namer/step_07_d_use_selectedindex/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_07_d_use_selectedindex/.gitignore +++ b/namer/step_07_d_use_selectedindex/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_07_d_use_selectedindex/android/build.gradle.kts b/namer/step_07_d_use_selectedindex/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_07_d_use_selectedindex/android/build.gradle.kts +++ b/namer/step_07_d_use_selectedindex/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_07_d_use_selectedindex/android/settings.gradle.kts b/namer/step_07_d_use_selectedindex/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_07_d_use_selectedindex/android/settings.gradle.kts +++ b/namer/step_07_d_use_selectedindex/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_07_d_use_selectedindex/ios/Flutter/AppFrameworkInfo.plist b/namer/step_07_d_use_selectedindex/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_07_d_use_selectedindex/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_07_d_use_selectedindex/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_07_d_use_selectedindex/ios/Runner.xcodeproj/project.pbxproj b/namer/step_07_d_use_selectedindex/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_07_d_use_selectedindex/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_07_d_use_selectedindex/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_07_d_use_selectedindex/linux/runner/my_application.cc b/namer/step_07_d_use_selectedindex/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_07_d_use_selectedindex/linux/runner/my_application.cc +++ b/namer/step_07_d_use_selectedindex/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_07_d_use_selectedindex/macos/Runner.xcodeproj/project.pbxproj b/namer/step_07_d_use_selectedindex/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_07_d_use_selectedindex/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_07_d_use_selectedindex/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_07_d_use_selectedindex/pubspec.yaml b/namer/step_07_d_use_selectedindex/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_07_d_use_selectedindex/pubspec.yaml +++ b/namer/step_07_d_use_selectedindex/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_07_e_add_layout_builder/.gemini/settings.json b/namer/step_07_e_add_layout_builder/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_07_e_add_layout_builder/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_07_e_add_layout_builder/.gitignore b/namer/step_07_e_add_layout_builder/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_07_e_add_layout_builder/.gitignore +++ b/namer/step_07_e_add_layout_builder/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_07_e_add_layout_builder/android/build.gradle.kts b/namer/step_07_e_add_layout_builder/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_07_e_add_layout_builder/android/build.gradle.kts +++ b/namer/step_07_e_add_layout_builder/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_07_e_add_layout_builder/android/settings.gradle.kts b/namer/step_07_e_add_layout_builder/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_07_e_add_layout_builder/android/settings.gradle.kts +++ b/namer/step_07_e_add_layout_builder/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_07_e_add_layout_builder/ios/Flutter/AppFrameworkInfo.plist b/namer/step_07_e_add_layout_builder/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_07_e_add_layout_builder/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_07_e_add_layout_builder/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_07_e_add_layout_builder/ios/Runner.xcodeproj/project.pbxproj b/namer/step_07_e_add_layout_builder/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_07_e_add_layout_builder/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_07_e_add_layout_builder/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_07_e_add_layout_builder/linux/runner/my_application.cc b/namer/step_07_e_add_layout_builder/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_07_e_add_layout_builder/linux/runner/my_application.cc +++ b/namer/step_07_e_add_layout_builder/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_07_e_add_layout_builder/macos/Runner.xcodeproj/project.pbxproj b/namer/step_07_e_add_layout_builder/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_07_e_add_layout_builder/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_07_e_add_layout_builder/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_07_e_add_layout_builder/pubspec.yaml b/namer/step_07_e_add_layout_builder/pubspec.yaml index 33ae2e2b07..e963eae4f2 100644 --- a/namer/step_07_e_add_layout_builder/pubspec.yaml +++ b/namer/step_07_e_add_layout_builder/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -15,7 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/namer/step_08/.gemini/settings.json b/namer/step_08/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/namer/step_08/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/namer/step_08/.gitignore b/namer/step_08/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/namer/step_08/.gitignore +++ b/namer/step_08/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/namer/step_08/android/build.gradle.kts b/namer/step_08/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/namer/step_08/android/build.gradle.kts +++ b/namer/step_08/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/namer/step_08/android/settings.gradle.kts b/namer/step_08/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/namer/step_08/android/settings.gradle.kts +++ b/namer/step_08/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/namer/step_08/ios/Flutter/AppFrameworkInfo.plist b/namer/step_08/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/namer/step_08/ios/Flutter/AppFrameworkInfo.plist +++ b/namer/step_08/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/namer/step_08/ios/Runner.xcodeproj/project.pbxproj b/namer/step_08/ios/Runner.xcodeproj/project.pbxproj index f3e385b525..57c19f0d5d 100644 --- a/namer/step_08/ios/Runner.xcodeproj/project.pbxproj +++ b/namer/step_08/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/namer/step_08/linux/runner/my_application.cc b/namer/step_08/linux/runner/my_application.cc index 406b304680..bf4d3974a1 100644 --- a/namer/step_08/linux/runner/my_application.cc +++ b/namer/step_08/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/namer/step_08/macos/Runner.xcodeproj/project.pbxproj b/namer/step_08/macos/Runner.xcodeproj/project.pbxproj index 0934ad2d9f..60900b1bd4 100644 --- a/namer/step_08/macos/Runner.xcodeproj/project.pbxproj +++ b/namer/step_08/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/namer/step_08/pubspec.yaml b/namer/step_08/pubspec.yaml index 303c24c1b5..2322f47505 100644 --- a/namer/step_08/pubspec.yaml +++ b/namer/step_08/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -16,7 +16,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/codelab_rebuild.yaml b/next-gen-ui/codelab_rebuild.yaml index 7c273601ff..80fc65b301 100644 --- a/next-gen-ui/codelab_rebuild.yaml +++ b/next-gen-ui/codelab_rebuild.yaml @@ -23,6 +23,21 @@ steps: unused_element: ignore - name: Remove README rm: next_gen_ui/README.md + - name: Add .gemini directory + mkdir: next_gen_ui/.gemini + - name: Add .gemini/settings.json + path: next_gen_ui/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add .vscode directory mkdir: next_gen_ui/.vscode - name: Add .vscode/launch.json @@ -869,7 +884,7 @@ steps: Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; @@ -1581,7 +1596,7 @@ steps: if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; @@ -2863,11 +2878,11 @@ steps: + return TweenAnimationBuilder( + tween: ColorTween(begin: emitColor, end: emitColor), + duration: duration, - + builder: (_, emitColor, __) { + + builder: (_, emitColor, _) { + return TweenAnimationBuilder( + tween: ColorTween(begin: orbColor, end: orbColor), + duration: duration, - + builder: (context, orbColor, __) { + + builder: (context, orbColor, _) { + return builder(context, orbColor!, emitColor!); + }, + ); diff --git a/next-gen-ui/step_01/.gemini/settings.json b/next-gen-ui/step_01/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_01/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_01/.gitignore b/next-gen-ui/step_01/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_01/.gitignore +++ b/next-gen-ui/step_01/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_01/android/build.gradle.kts b/next-gen-ui/step_01/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_01/android/build.gradle.kts +++ b/next-gen-ui/step_01/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_01/android/settings.gradle.kts b/next-gen-ui/step_01/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_01/android/settings.gradle.kts +++ b/next-gen-ui/step_01/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_01/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_01/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_01/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_01/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_01/ios/Podfile b/next-gen-ui/step_01/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_01/ios/Podfile +++ b/next-gen-ui/step_01/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_01/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_01/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_01/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_01/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_01/lib/common/shader_effect.dart b/next-gen-ui/step_01/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_01/lib/common/shader_effect.dart +++ b/next-gen-ui/step_01/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_01/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_01/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_01/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_01/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_01/linux/runner/my_application.cc b/next-gen-ui/step_01/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_01/linux/runner/my_application.cc +++ b/next-gen-ui/step_01/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_01/macos/Podfile b/next-gen-ui/step_01/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_01/macos/Podfile +++ b/next-gen-ui/step_01/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_01/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_01/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_01/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_01/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_01/pubspec.yaml b/next-gen-ui/step_01/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_01/pubspec.yaml +++ b/next-gen-ui/step_01/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_02_a/.gemini/settings.json b/next-gen-ui/step_02_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_02_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_02_a/.gitignore b/next-gen-ui/step_02_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_02_a/.gitignore +++ b/next-gen-ui/step_02_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_02_a/android/build.gradle.kts b/next-gen-ui/step_02_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_02_a/android/build.gradle.kts +++ b/next-gen-ui/step_02_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_02_a/android/settings.gradle.kts b/next-gen-ui/step_02_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_02_a/android/settings.gradle.kts +++ b/next-gen-ui/step_02_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_02_a/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_02_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_02_a/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_02_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_02_a/ios/Podfile b/next-gen-ui/step_02_a/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_02_a/ios/Podfile +++ b/next-gen-ui/step_02_a/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_02_a/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_02_a/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_02_a/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_02_a/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_02_a/lib/common/shader_effect.dart b/next-gen-ui/step_02_a/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_02_a/lib/common/shader_effect.dart +++ b/next-gen-ui/step_02_a/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_02_a/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_02_a/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_02_a/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_02_a/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_02_a/linux/runner/my_application.cc b/next-gen-ui/step_02_a/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_02_a/linux/runner/my_application.cc +++ b/next-gen-ui/step_02_a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_02_a/macos/Podfile b/next-gen-ui/step_02_a/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_02_a/macos/Podfile +++ b/next-gen-ui/step_02_a/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_02_a/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_02_a/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_02_a/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_02_a/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_02_a/pubspec.yaml b/next-gen-ui/step_02_a/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_02_a/pubspec.yaml +++ b/next-gen-ui/step_02_a/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_02_b/.gemini/settings.json b/next-gen-ui/step_02_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_02_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_02_b/.gitignore b/next-gen-ui/step_02_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_02_b/.gitignore +++ b/next-gen-ui/step_02_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_02_b/android/build.gradle.kts b/next-gen-ui/step_02_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_02_b/android/build.gradle.kts +++ b/next-gen-ui/step_02_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_02_b/android/settings.gradle.kts b/next-gen-ui/step_02_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_02_b/android/settings.gradle.kts +++ b/next-gen-ui/step_02_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_02_b/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_02_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_02_b/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_02_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_02_b/ios/Podfile b/next-gen-ui/step_02_b/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_02_b/ios/Podfile +++ b/next-gen-ui/step_02_b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_02_b/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_02_b/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_02_b/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_02_b/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_02_b/lib/common/shader_effect.dart b/next-gen-ui/step_02_b/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_02_b/lib/common/shader_effect.dart +++ b/next-gen-ui/step_02_b/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_02_b/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_02_b/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_02_b/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_02_b/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_02_b/linux/runner/my_application.cc b/next-gen-ui/step_02_b/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_02_b/linux/runner/my_application.cc +++ b/next-gen-ui/step_02_b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_02_b/macos/Podfile b/next-gen-ui/step_02_b/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_02_b/macos/Podfile +++ b/next-gen-ui/step_02_b/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_02_b/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_02_b/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_02_b/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_02_b/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_02_b/pubspec.yaml b/next-gen-ui/step_02_b/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_02_b/pubspec.yaml +++ b/next-gen-ui/step_02_b/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_02_c/.gemini/settings.json b/next-gen-ui/step_02_c/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_02_c/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_02_c/.gitignore b/next-gen-ui/step_02_c/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_02_c/.gitignore +++ b/next-gen-ui/step_02_c/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_02_c/android/build.gradle.kts b/next-gen-ui/step_02_c/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_02_c/android/build.gradle.kts +++ b/next-gen-ui/step_02_c/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_02_c/android/settings.gradle.kts b/next-gen-ui/step_02_c/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_02_c/android/settings.gradle.kts +++ b/next-gen-ui/step_02_c/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_02_c/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_02_c/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_02_c/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_02_c/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_02_c/ios/Podfile b/next-gen-ui/step_02_c/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_02_c/ios/Podfile +++ b/next-gen-ui/step_02_c/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_02_c/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_02_c/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_02_c/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_02_c/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_02_c/lib/common/shader_effect.dart b/next-gen-ui/step_02_c/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_02_c/lib/common/shader_effect.dart +++ b/next-gen-ui/step_02_c/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_02_c/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_02_c/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_02_c/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_02_c/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_02_c/linux/runner/my_application.cc b/next-gen-ui/step_02_c/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_02_c/linux/runner/my_application.cc +++ b/next-gen-ui/step_02_c/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_02_c/macos/Podfile b/next-gen-ui/step_02_c/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_02_c/macos/Podfile +++ b/next-gen-ui/step_02_c/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_02_c/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_02_c/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_02_c/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_02_c/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_02_c/pubspec.yaml b/next-gen-ui/step_02_c/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_02_c/pubspec.yaml +++ b/next-gen-ui/step_02_c/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_03_a/.gemini/settings.json b/next-gen-ui/step_03_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_03_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_03_a/.gitignore b/next-gen-ui/step_03_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_03_a/.gitignore +++ b/next-gen-ui/step_03_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_03_a/android/build.gradle.kts b/next-gen-ui/step_03_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_03_a/android/build.gradle.kts +++ b/next-gen-ui/step_03_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_03_a/android/settings.gradle.kts b/next-gen-ui/step_03_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_03_a/android/settings.gradle.kts +++ b/next-gen-ui/step_03_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_03_a/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_03_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_03_a/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_03_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_03_a/ios/Podfile b/next-gen-ui/step_03_a/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_03_a/ios/Podfile +++ b/next-gen-ui/step_03_a/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_03_a/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_03_a/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_03_a/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_03_a/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_03_a/lib/common/shader_effect.dart b/next-gen-ui/step_03_a/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_03_a/lib/common/shader_effect.dart +++ b/next-gen-ui/step_03_a/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_03_a/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_03_a/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_03_a/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_03_a/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_03_a/linux/runner/my_application.cc b/next-gen-ui/step_03_a/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_03_a/linux/runner/my_application.cc +++ b/next-gen-ui/step_03_a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_03_a/macos/Podfile b/next-gen-ui/step_03_a/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_03_a/macos/Podfile +++ b/next-gen-ui/step_03_a/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_03_a/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_03_a/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_03_a/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_03_a/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_03_a/pubspec.yaml b/next-gen-ui/step_03_a/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_03_a/pubspec.yaml +++ b/next-gen-ui/step_03_a/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_03_b/.gemini/settings.json b/next-gen-ui/step_03_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_03_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_03_b/.gitignore b/next-gen-ui/step_03_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_03_b/.gitignore +++ b/next-gen-ui/step_03_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_03_b/android/build.gradle.kts b/next-gen-ui/step_03_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_03_b/android/build.gradle.kts +++ b/next-gen-ui/step_03_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_03_b/android/settings.gradle.kts b/next-gen-ui/step_03_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_03_b/android/settings.gradle.kts +++ b/next-gen-ui/step_03_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_03_b/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_03_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_03_b/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_03_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_03_b/ios/Podfile b/next-gen-ui/step_03_b/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_03_b/ios/Podfile +++ b/next-gen-ui/step_03_b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_03_b/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_03_b/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_03_b/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_03_b/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_03_b/lib/common/shader_effect.dart b/next-gen-ui/step_03_b/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_03_b/lib/common/shader_effect.dart +++ b/next-gen-ui/step_03_b/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_03_b/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_03_b/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_03_b/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_03_b/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_03_b/linux/runner/my_application.cc b/next-gen-ui/step_03_b/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_03_b/linux/runner/my_application.cc +++ b/next-gen-ui/step_03_b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_03_b/macos/Podfile b/next-gen-ui/step_03_b/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_03_b/macos/Podfile +++ b/next-gen-ui/step_03_b/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_03_b/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_03_b/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_03_b/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_03_b/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_03_b/pubspec.yaml b/next-gen-ui/step_03_b/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_03_b/pubspec.yaml +++ b/next-gen-ui/step_03_b/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_03_c/.gemini/settings.json b/next-gen-ui/step_03_c/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_03_c/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_03_c/.gitignore b/next-gen-ui/step_03_c/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_03_c/.gitignore +++ b/next-gen-ui/step_03_c/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_03_c/android/build.gradle.kts b/next-gen-ui/step_03_c/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_03_c/android/build.gradle.kts +++ b/next-gen-ui/step_03_c/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_03_c/android/settings.gradle.kts b/next-gen-ui/step_03_c/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_03_c/android/settings.gradle.kts +++ b/next-gen-ui/step_03_c/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_03_c/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_03_c/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_03_c/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_03_c/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_03_c/ios/Podfile b/next-gen-ui/step_03_c/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_03_c/ios/Podfile +++ b/next-gen-ui/step_03_c/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_03_c/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_03_c/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_03_c/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_03_c/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_03_c/lib/common/shader_effect.dart b/next-gen-ui/step_03_c/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_03_c/lib/common/shader_effect.dart +++ b/next-gen-ui/step_03_c/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_03_c/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_03_c/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_03_c/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_03_c/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_03_c/linux/runner/my_application.cc b/next-gen-ui/step_03_c/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_03_c/linux/runner/my_application.cc +++ b/next-gen-ui/step_03_c/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_03_c/macos/Podfile b/next-gen-ui/step_03_c/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_03_c/macos/Podfile +++ b/next-gen-ui/step_03_c/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_03_c/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_03_c/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_03_c/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_03_c/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_03_c/pubspec.yaml b/next-gen-ui/step_03_c/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_03_c/pubspec.yaml +++ b/next-gen-ui/step_03_c/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_04_a/.gemini/settings.json b/next-gen-ui/step_04_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_04_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_04_a/.gitignore b/next-gen-ui/step_04_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_04_a/.gitignore +++ b/next-gen-ui/step_04_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_04_a/android/build.gradle.kts b/next-gen-ui/step_04_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_04_a/android/build.gradle.kts +++ b/next-gen-ui/step_04_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_04_a/android/settings.gradle.kts b/next-gen-ui/step_04_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_04_a/android/settings.gradle.kts +++ b/next-gen-ui/step_04_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_04_a/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_04_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_04_a/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_04_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_04_a/ios/Podfile b/next-gen-ui/step_04_a/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_04_a/ios/Podfile +++ b/next-gen-ui/step_04_a/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_04_a/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_04_a/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_04_a/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_04_a/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_04_a/lib/common/shader_effect.dart b/next-gen-ui/step_04_a/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_04_a/lib/common/shader_effect.dart +++ b/next-gen-ui/step_04_a/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_04_a/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_04_a/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_04_a/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_04_a/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_04_a/linux/runner/my_application.cc b/next-gen-ui/step_04_a/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_04_a/linux/runner/my_application.cc +++ b/next-gen-ui/step_04_a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_04_a/macos/Podfile b/next-gen-ui/step_04_a/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_04_a/macos/Podfile +++ b/next-gen-ui/step_04_a/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_04_a/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_04_a/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_04_a/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_04_a/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_04_a/pubspec.yaml b/next-gen-ui/step_04_a/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_04_a/pubspec.yaml +++ b/next-gen-ui/step_04_a/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_04_b/.gemini/settings.json b/next-gen-ui/step_04_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_04_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_04_b/.gitignore b/next-gen-ui/step_04_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_04_b/.gitignore +++ b/next-gen-ui/step_04_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_04_b/android/build.gradle.kts b/next-gen-ui/step_04_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_04_b/android/build.gradle.kts +++ b/next-gen-ui/step_04_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_04_b/android/settings.gradle.kts b/next-gen-ui/step_04_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_04_b/android/settings.gradle.kts +++ b/next-gen-ui/step_04_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_04_b/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_04_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_04_b/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_04_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_04_b/ios/Podfile b/next-gen-ui/step_04_b/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_04_b/ios/Podfile +++ b/next-gen-ui/step_04_b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_04_b/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_04_b/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_04_b/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_04_b/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_04_b/lib/common/shader_effect.dart b/next-gen-ui/step_04_b/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_04_b/lib/common/shader_effect.dart +++ b/next-gen-ui/step_04_b/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_04_b/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_04_b/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_04_b/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_04_b/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_04_b/linux/runner/my_application.cc b/next-gen-ui/step_04_b/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_04_b/linux/runner/my_application.cc +++ b/next-gen-ui/step_04_b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_04_b/macos/Podfile b/next-gen-ui/step_04_b/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_04_b/macos/Podfile +++ b/next-gen-ui/step_04_b/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_04_b/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_04_b/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_04_b/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_04_b/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_04_b/pubspec.yaml b/next-gen-ui/step_04_b/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_04_b/pubspec.yaml +++ b/next-gen-ui/step_04_b/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_04_c/.gemini/settings.json b/next-gen-ui/step_04_c/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_04_c/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_04_c/.gitignore b/next-gen-ui/step_04_c/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_04_c/.gitignore +++ b/next-gen-ui/step_04_c/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_04_c/android/build.gradle.kts b/next-gen-ui/step_04_c/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_04_c/android/build.gradle.kts +++ b/next-gen-ui/step_04_c/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_04_c/android/settings.gradle.kts b/next-gen-ui/step_04_c/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_04_c/android/settings.gradle.kts +++ b/next-gen-ui/step_04_c/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_04_c/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_04_c/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_04_c/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_04_c/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_04_c/ios/Podfile b/next-gen-ui/step_04_c/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_04_c/ios/Podfile +++ b/next-gen-ui/step_04_c/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_04_c/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_04_c/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_04_c/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_04_c/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_04_c/lib/common/shader_effect.dart b/next-gen-ui/step_04_c/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_04_c/lib/common/shader_effect.dart +++ b/next-gen-ui/step_04_c/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_04_c/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_04_c/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_04_c/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_04_c/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_04_c/linux/runner/my_application.cc b/next-gen-ui/step_04_c/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_04_c/linux/runner/my_application.cc +++ b/next-gen-ui/step_04_c/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_04_c/macos/Podfile b/next-gen-ui/step_04_c/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_04_c/macos/Podfile +++ b/next-gen-ui/step_04_c/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_04_c/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_04_c/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_04_c/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_04_c/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_04_c/pubspec.yaml b/next-gen-ui/step_04_c/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_04_c/pubspec.yaml +++ b/next-gen-ui/step_04_c/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_04_d/.gemini/settings.json b/next-gen-ui/step_04_d/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_04_d/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_04_d/.gitignore b/next-gen-ui/step_04_d/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_04_d/.gitignore +++ b/next-gen-ui/step_04_d/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_04_d/android/build.gradle.kts b/next-gen-ui/step_04_d/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_04_d/android/build.gradle.kts +++ b/next-gen-ui/step_04_d/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_04_d/android/settings.gradle.kts b/next-gen-ui/step_04_d/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_04_d/android/settings.gradle.kts +++ b/next-gen-ui/step_04_d/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_04_d/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_04_d/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_04_d/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_04_d/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_04_d/ios/Podfile b/next-gen-ui/step_04_d/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_04_d/ios/Podfile +++ b/next-gen-ui/step_04_d/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_04_d/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_04_d/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_04_d/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_04_d/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_04_d/lib/common/shader_effect.dart b/next-gen-ui/step_04_d/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_04_d/lib/common/shader_effect.dart +++ b/next-gen-ui/step_04_d/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_04_d/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_04_d/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_04_d/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_04_d/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_04_d/linux/runner/my_application.cc b/next-gen-ui/step_04_d/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_04_d/linux/runner/my_application.cc +++ b/next-gen-ui/step_04_d/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_04_d/macos/Podfile b/next-gen-ui/step_04_d/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_04_d/macos/Podfile +++ b/next-gen-ui/step_04_d/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_04_d/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_04_d/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_04_d/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_04_d/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_04_d/pubspec.yaml b/next-gen-ui/step_04_d/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_04_d/pubspec.yaml +++ b/next-gen-ui/step_04_d/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_04_e/.gemini/settings.json b/next-gen-ui/step_04_e/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_04_e/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_04_e/.gitignore b/next-gen-ui/step_04_e/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_04_e/.gitignore +++ b/next-gen-ui/step_04_e/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_04_e/android/build.gradle.kts b/next-gen-ui/step_04_e/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_04_e/android/build.gradle.kts +++ b/next-gen-ui/step_04_e/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_04_e/android/settings.gradle.kts b/next-gen-ui/step_04_e/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_04_e/android/settings.gradle.kts +++ b/next-gen-ui/step_04_e/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_04_e/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_04_e/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_04_e/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_04_e/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_04_e/ios/Podfile b/next-gen-ui/step_04_e/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_04_e/ios/Podfile +++ b/next-gen-ui/step_04_e/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_04_e/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_04_e/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_04_e/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_04_e/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_04_e/lib/common/shader_effect.dart b/next-gen-ui/step_04_e/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_04_e/lib/common/shader_effect.dart +++ b/next-gen-ui/step_04_e/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_04_e/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_04_e/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_04_e/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_04_e/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_04_e/lib/title_screen/title_screen.dart b/next-gen-ui/step_04_e/lib/title_screen/title_screen.dart index aad83b04cb..2bdb6ac147 100644 --- a/next-gen-ui/step_04_e/lib/title_screen/title_screen.dart +++ b/next-gen-ui/step_04_e/lib/title_screen/title_screen.dart @@ -155,11 +155,11 @@ class _AnimatedColors extends StatelessWidget { return TweenAnimationBuilder( tween: ColorTween(begin: emitColor, end: emitColor), duration: duration, - builder: (_, emitColor, __) { + builder: (_, emitColor, _) { return TweenAnimationBuilder( tween: ColorTween(begin: orbColor, end: orbColor), duration: duration, - builder: (context, orbColor, __) { + builder: (context, orbColor, _) { return builder(context, orbColor!, emitColor!); }, ); diff --git a/next-gen-ui/step_04_e/linux/runner/my_application.cc b/next-gen-ui/step_04_e/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_04_e/linux/runner/my_application.cc +++ b/next-gen-ui/step_04_e/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_04_e/macos/Podfile b/next-gen-ui/step_04_e/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_04_e/macos/Podfile +++ b/next-gen-ui/step_04_e/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_04_e/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_04_e/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_04_e/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_04_e/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_04_e/pubspec.yaml b/next-gen-ui/step_04_e/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_04_e/pubspec.yaml +++ b/next-gen-ui/step_04_e/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_05_a/.gemini/settings.json b/next-gen-ui/step_05_a/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_05_a/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_05_a/.gitignore b/next-gen-ui/step_05_a/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_05_a/.gitignore +++ b/next-gen-ui/step_05_a/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_05_a/android/build.gradle.kts b/next-gen-ui/step_05_a/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_05_a/android/build.gradle.kts +++ b/next-gen-ui/step_05_a/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_05_a/android/settings.gradle.kts b/next-gen-ui/step_05_a/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_05_a/android/settings.gradle.kts +++ b/next-gen-ui/step_05_a/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_05_a/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_05_a/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_05_a/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_05_a/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_05_a/ios/Podfile b/next-gen-ui/step_05_a/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_05_a/ios/Podfile +++ b/next-gen-ui/step_05_a/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_05_a/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_05_a/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_05_a/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_05_a/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_05_a/lib/common/shader_effect.dart b/next-gen-ui/step_05_a/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_05_a/lib/common/shader_effect.dart +++ b/next-gen-ui/step_05_a/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_05_a/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_05_a/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_05_a/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_05_a/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_05_a/lib/title_screen/title_screen.dart b/next-gen-ui/step_05_a/lib/title_screen/title_screen.dart index aad83b04cb..2bdb6ac147 100644 --- a/next-gen-ui/step_05_a/lib/title_screen/title_screen.dart +++ b/next-gen-ui/step_05_a/lib/title_screen/title_screen.dart @@ -155,11 +155,11 @@ class _AnimatedColors extends StatelessWidget { return TweenAnimationBuilder( tween: ColorTween(begin: emitColor, end: emitColor), duration: duration, - builder: (_, emitColor, __) { + builder: (_, emitColor, _) { return TweenAnimationBuilder( tween: ColorTween(begin: orbColor, end: orbColor), duration: duration, - builder: (context, orbColor, __) { + builder: (context, orbColor, _) { return builder(context, orbColor!, emitColor!); }, ); diff --git a/next-gen-ui/step_05_a/linux/runner/my_application.cc b/next-gen-ui/step_05_a/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_05_a/linux/runner/my_application.cc +++ b/next-gen-ui/step_05_a/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_05_a/macos/Podfile b/next-gen-ui/step_05_a/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_05_a/macos/Podfile +++ b/next-gen-ui/step_05_a/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_05_a/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_05_a/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_05_a/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_05_a/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_05_a/pubspec.yaml b/next-gen-ui/step_05_a/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_05_a/pubspec.yaml +++ b/next-gen-ui/step_05_a/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_05_b/.gemini/settings.json b/next-gen-ui/step_05_b/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_05_b/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_05_b/.gitignore b/next-gen-ui/step_05_b/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_05_b/.gitignore +++ b/next-gen-ui/step_05_b/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_05_b/android/build.gradle.kts b/next-gen-ui/step_05_b/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_05_b/android/build.gradle.kts +++ b/next-gen-ui/step_05_b/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_05_b/android/settings.gradle.kts b/next-gen-ui/step_05_b/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_05_b/android/settings.gradle.kts +++ b/next-gen-ui/step_05_b/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_05_b/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_05_b/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_05_b/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_05_b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_05_b/ios/Podfile b/next-gen-ui/step_05_b/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_05_b/ios/Podfile +++ b/next-gen-ui/step_05_b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_05_b/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_05_b/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_05_b/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_05_b/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_05_b/lib/common/shader_effect.dart b/next-gen-ui/step_05_b/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_05_b/lib/common/shader_effect.dart +++ b/next-gen-ui/step_05_b/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_05_b/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_05_b/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_05_b/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_05_b/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_05_b/lib/title_screen/title_screen.dart b/next-gen-ui/step_05_b/lib/title_screen/title_screen.dart index e5802303fc..4e3be6b839 100644 --- a/next-gen-ui/step_05_b/lib/title_screen/title_screen.dart +++ b/next-gen-ui/step_05_b/lib/title_screen/title_screen.dart @@ -284,11 +284,11 @@ class _AnimatedColors extends StatelessWidget { return TweenAnimationBuilder( tween: ColorTween(begin: emitColor, end: emitColor), duration: duration, - builder: (_, emitColor, __) { + builder: (_, emitColor, _) { return TweenAnimationBuilder( tween: ColorTween(begin: orbColor, end: orbColor), duration: duration, - builder: (context, orbColor, __) { + builder: (context, orbColor, _) { return builder(context, orbColor!, emitColor!); }, ); diff --git a/next-gen-ui/step_05_b/linux/runner/my_application.cc b/next-gen-ui/step_05_b/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_05_b/linux/runner/my_application.cc +++ b/next-gen-ui/step_05_b/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_05_b/macos/Podfile b/next-gen-ui/step_05_b/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_05_b/macos/Podfile +++ b/next-gen-ui/step_05_b/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_05_b/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_05_b/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_05_b/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_05_b/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_05_b/pubspec.yaml b/next-gen-ui/step_05_b/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_05_b/pubspec.yaml +++ b/next-gen-ui/step_05_b/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/next-gen-ui/step_06/.gemini/settings.json b/next-gen-ui/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/next-gen-ui/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/next-gen-ui/step_06/.gitignore b/next-gen-ui/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/next-gen-ui/step_06/.gitignore +++ b/next-gen-ui/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/next-gen-ui/step_06/android/build.gradle.kts b/next-gen-ui/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/next-gen-ui/step_06/android/build.gradle.kts +++ b/next-gen-ui/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/next-gen-ui/step_06/android/settings.gradle.kts b/next-gen-ui/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/next-gen-ui/step_06/android/settings.gradle.kts +++ b/next-gen-ui/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/next-gen-ui/step_06/ios/Flutter/AppFrameworkInfo.plist b/next-gen-ui/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/next-gen-ui/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/next-gen-ui/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/next-gen-ui/step_06/ios/Podfile b/next-gen-ui/step_06/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/next-gen-ui/step_06/ios/Podfile +++ b/next-gen-ui/step_06/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_06/ios/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_06/ios/Runner.xcodeproj/project.pbxproj index 2abc3445de..8a0d62784e 100644 --- a/next-gen-ui/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,14 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B969FF8074ADA9DF19113CA9 /* 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 */; }; - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94355C8134E8F779773F549F /* Pods_Runner.framework */; }; 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 */; }; - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */; }; + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,21 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0812DF277EA87C03A22CB398 /* 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 = ""; }; + 0A575F7EDF5F1AB7848BD540 /* 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 = ""; }; 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 = ""; }; + 2BB027F72BD3AB1CEB4A3ACC /* 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 = ""; }; + 2FDDEC89F3290BC532725F19 /* 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 = ""; }; 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; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 512E7941AD72BC30C1A8E2CD /* 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 = ""; }; - 6CED49712E466FE5E84D8D13 /* 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 = ""; }; + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 67193483DD5AE88B9843E70B /* 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 = ""; }; 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 = ""; }; - 85ABE53E8A852ED218C19A02 /* 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 = ""; }; - 867C3655B77A606C47014B54 /* 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 = ""; }; - 94355C8134E8F779773F549F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 857AF7E114BF3ED4D82AB828 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,8 +64,7 @@ 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 = ""; }; - BC7D2AB46FECEF6C8C9569C6 /* 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 = ""; }; - F4623573B6DFA500B679E52B /* 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 = ""; }; + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -72,36 +72,50 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7D45771785AE2CC510EAACAF /* Pods_Runner.framework in Frameworks */, + AB5AECDD05EE2ED9303A5873 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BCD9298D5612125A3B32EB33 /* Frameworks */ = { + B2408C6334D92339F1610074 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFF691C315A35BBC77C1E371 /* Pods_RunnerTests.framework in Frameworks */, + 28B4A3E4750C374F2138CCF4 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 1C38B603438AC401D1BE75C2 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 94355C8134E8F779773F549F /* Pods_Runner.framework */, - 482FED73309E808804E73FEE /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 3B428676CBDA99306D9C83DA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B992FF1FD325B3E9AF49027 /* Pods_Runner.framework */, + B969FF8074ADA9DF19113CA9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 8A41759C82AB3A607E1DCA99 /* Pods */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 2FDDEC89F3290BC532725F19 /* Pods-Runner.debug.xcconfig */, + 0812DF277EA87C03A22CB398 /* Pods-Runner.release.xcconfig */, + 0A575F7EDF5F1AB7848BD540 /* Pods-Runner.profile.xcconfig */, + 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */, + 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */, + 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */, ); - path = RunnerTests; + name = Pods; + path = Pods; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -122,8 +136,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - A8D5DE18DB044583B5034036 /* Pods */, - 1C38B603438AC401D1BE75C2 /* Frameworks */, + 8A41759C82AB3A607E1DCA99 /* Pods */, + 3B428676CBDA99306D9C83DA /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +165,6 @@ path = Runner; sourceTree = ""; }; - A8D5DE18DB044583B5034036 /* Pods */ = { - isa = PBXGroup; - children = ( - 6CED49712E466FE5E84D8D13 /* Pods-Runner.debug.xcconfig */, - F4623573B6DFA500B679E52B /* Pods-Runner.release.xcconfig */, - 85ABE53E8A852ED218C19A02 /* Pods-Runner.profile.xcconfig */, - 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */, - 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */, - BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */, + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - BCD9298D5612125A3B32EB33 /* Frameworks */, + B2408C6334D92339F1610074 /* Frameworks */, ); buildRules = ( ); @@ -191,7 +191,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */, + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -269,43 +269,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0478890CCDF831364389D62C /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 50B08A3AC9A0821644EAA6CC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + 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; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -322,7 +322,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD198E696C2B608ECBB190F3 /* [CP] Check Pods Manifest.lock */ = { + 9AB162BE6059C8DD529DF16C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -337,7 +337,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -437,7 +437,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -469,7 +469,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 867C3655B77A606C47014B54 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 857AF7E114BF3ED4D82AB828 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -487,7 +487,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 512E7941AD72BC30C1A8E2CD /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 2BB027F72BD3AB1CEB4A3ACC /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +503,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC7D2AB46FECEF6C8C9569C6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 67193483DD5AE88B9843E70B /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -566,7 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -617,7 +617,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/next-gen-ui/step_06/lib/common/shader_effect.dart b/next-gen-ui/step_06/lib/common/shader_effect.dart index 7e6ebe8bdf..25026cacec 100644 --- a/next-gen-ui/step_06/lib/common/shader_effect.dart +++ b/next-gen-ui/step_06/lib/common/shader_effect.dart @@ -50,7 +50,7 @@ class ShaderEffect extends Effect { Animation animation = buildAnimation(controller, entry); return getOptimizedBuilder( animation: animation, - builder: (_, __) { + builder: (_, _) { return AnimatedSampler( (image, size, canvas) { EdgeInsets? insets; diff --git a/next-gen-ui/step_06/lib/orb_shader/orb_shader_widget.dart b/next-gen-ui/step_06/lib/orb_shader/orb_shader_widget.dart index ae76dc9fdd..ecb1be1a0b 100644 --- a/next-gen-ui/step_06/lib/orb_shader/orb_shader_widget.dart +++ b/next-gen-ui/step_06/lib/orb_shader/orb_shader_widget.dart @@ -78,7 +78,7 @@ class OrbShaderWidgetState extends State if (fragmentPrograms == null) return const SizedBox.expand(); return ListenableBuilder( listenable: _heartbeatAnim, - builder: (_, __) { + builder: (_, _) { final heartbeatEnergy = _heartbeatAnim .drive(_heartbeatSequence) .value; diff --git a/next-gen-ui/step_06/lib/title_screen/title_screen.dart b/next-gen-ui/step_06/lib/title_screen/title_screen.dart index 7557b36ac5..816d4c53e0 100644 --- a/next-gen-ui/step_06/lib/title_screen/title_screen.dart +++ b/next-gen-ui/step_06/lib/title_screen/title_screen.dart @@ -295,11 +295,11 @@ class _AnimatedColors extends StatelessWidget { return TweenAnimationBuilder( tween: ColorTween(begin: emitColor, end: emitColor), duration: duration, - builder: (_, emitColor, __) { + builder: (_, emitColor, _) { return TweenAnimationBuilder( tween: ColorTween(begin: orbColor, end: orbColor), duration: duration, - builder: (context, orbColor, __) { + builder: (context, orbColor, _) { return builder(context, orbColor!, emitColor!); }, ); diff --git a/next-gen-ui/step_06/linux/runner/my_application.cc b/next-gen-ui/step_06/linux/runner/my_application.cc index 6fa9821b9c..cec907c8be 100644 --- a/next-gen-ui/step_06/linux/runner/my_application.cc +++ b/next-gen-ui/step_06/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/next-gen-ui/step_06/macos/Podfile b/next-gen-ui/step_06/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/next-gen-ui/step_06/macos/Podfile +++ b/next-gen-ui/step_06/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/next-gen-ui/step_06/macos/Runner.xcodeproj/project.pbxproj b/next-gen-ui/step_06/macos/Runner.xcodeproj/project.pbxproj index cb3182e6fc..5f40740464 100644 --- a/next-gen-ui/step_06/macos/Runner.xcodeproj/project.pbxproj +++ b/next-gen-ui/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 */; }; - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */; }; - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */; }; + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */; }; + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,8 +62,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 17006BD36B8B7FB923BD559E /* 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 = ""; }; - 31227BFF522EF95526F0AA15 /* 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 = ""; }; + 2BF573350DE7B6C6A445099A /* 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 = ""; }; 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 = ""; }; @@ -80,14 +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 = ""; }; + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 69A2B0267A0CD34EB0108210 /* 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 = ""; }; - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 950EFCF88B69CB512EC31EA6 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A55E731C05A7D0662CE4C9C7 /* 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 = ""; }; - AD332B96FA7BE7B29C799DD5 /* 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 = ""; }; - B90AACA9918EB24AB67BBE45 /* 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 = ""; }; + C909B3E49CA4BE973193D1D6 /* 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 = ""; }; + CC8AB7ADEDBEDEE9B86717CA /* 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 = ""; }; + E3B7A566471ABC98EA240BF9 /* 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 = ""; }; + EC89D90D363135EC44A8A295 /* 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 = ""; }; + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AC2F65DF093A1C7F6F39ECAC /* Pods_RunnerTests.framework in Frameworks */, + 4F9260D53C420FD599C40A2D /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C24195F0E5EA739FEBA13BB8 /* Pods_Runner.framework in Frameworks */, + 407417E464E4C409FA56180A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 6FEBE079B5D797B6DBD94FE5 /* Pods */, + 9FD4E6F0E61E5884A9FA0706 /* Pods */, ); sourceTree = ""; }; @@ -185,15 +185,15 @@ path = Runner; sourceTree = ""; }; - 6FEBE079B5D797B6DBD94FE5 /* Pods */ = { + 9FD4E6F0E61E5884A9FA0706 /* Pods */ = { isa = PBXGroup; children = ( - 17006BD36B8B7FB923BD559E /* Pods-Runner.debug.xcconfig */, - A55E731C05A7D0662CE4C9C7 /* Pods-Runner.release.xcconfig */, - B90AACA9918EB24AB67BBE45 /* Pods-Runner.profile.xcconfig */, - AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */, - 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */, - 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */, + EC89D90D363135EC44A8A295 /* Pods-Runner.debug.xcconfig */, + CC8AB7ADEDBEDEE9B86717CA /* Pods-Runner.release.xcconfig */, + 69A2B0267A0CD34EB0108210 /* Pods-Runner.profile.xcconfig */, + 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */, + C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */, + E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; @@ -202,8 +202,8 @@ D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 806E5F0865AF15E0540DDEA2 /* Pods_Runner.framework */, - 90E613C468E7C49ECC7480D9 /* Pods_RunnerTests.framework */, + F3B2A0A5F23BDE4166773699 /* Pods_Runner.framework */, + 3C37E3C30E0D2F505209D3F8 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */, + FA720A0188E49EEFC792A723 /* [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 = ( - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */, + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */, + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -361,7 +361,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 8FBAEA9EC55DC24435D75E78 /* [CP] Check Pods Manifest.lock */ = { + F17206E6DDF32CDA0D8B9BD1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -376,50 +376,50 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(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; }; - 9EFF94981538214223823EB0 /* [CP] Check Pods Manifest.lock */ = { + F62523D31020F660EE8D9A11 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); 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"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CFCC307435C253F093606B42 /* [CP] Embed Pods Frameworks */ = { + FA720A0188E49EEFC792A723 /* [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; }; /* End PBXShellScriptBuildPhase section */ @@ -473,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AD332B96FA7BE7B29C799DD5 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 2BF573350DE7B6C6A445099A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -488,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 31227BFF522EF95526F0AA15 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = C909B3E49CA4BE973193D1D6 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -503,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 950EFCF88B69CB512EC31EA6 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = E3B7A566471ABC98EA240BF9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -557,7 +557,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -639,7 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -689,7 +689,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/next-gen-ui/step_06/pubspec.yaml b/next-gen-ui/step_06/pubspec.yaml index e7619a1350..581e2b1c91 100644 --- a/next-gen-ui/step_06/pubspec.yaml +++ b/next-gen-ui/step_06/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: @@ -12,11 +12,11 @@ dependencies: extra_alignments: ^1.0.0+1 flextras: ^1.0.0 flutter_animate: ^4.5.2 - focusable_control_builder: ^1.0.2+1 + focusable_control_builder: ^1.1.0 gap: ^3.0.1 particle_field: ^1.0.0 rnd: ^0.2.0 - vector_math: ^2.1.4 + vector_math: ^2.2.0 cupertino_icons: ^1.0.8 provider: ^6.1.5 window_size: @@ -27,7 +27,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 flutter: uses-material-design: true diff --git a/testing_codelab/codelab_rebuild.yaml b/testing_codelab/codelab_rebuild.yaml index 5e29840fb6..50dd674d4a 100644 --- a/testing_codelab/codelab_rebuild.yaml +++ b/testing_codelab/codelab_rebuild.yaml @@ -15,6 +15,21 @@ steps: include: ../../analysis_options.yaml - name: Remove README rm: testing_app/README.md + - name: Add .gemini directory + mkdir: testing_app/.gemini + - name: Add .gemini/settings.json + path: testing_app/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add .vscode directory mkdir: testing_app/.vscode - name: Add .vscode/launch.json diff --git a/testing_codelab/step_03/.gemini/settings.json b/testing_codelab/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/testing_codelab/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/testing_codelab/step_03/.gitignore b/testing_codelab/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/testing_codelab/step_03/.gitignore +++ b/testing_codelab/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/testing_codelab/step_03/android/build.gradle.kts b/testing_codelab/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/testing_codelab/step_03/android/build.gradle.kts +++ b/testing_codelab/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/testing_codelab/step_03/android/settings.gradle.kts b/testing_codelab/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/testing_codelab/step_03/android/settings.gradle.kts +++ b/testing_codelab/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/testing_codelab/step_03/ios/Flutter/AppFrameworkInfo.plist b/testing_codelab/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/testing_codelab/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/testing_codelab/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/testing_codelab/step_03/ios/Podfile b/testing_codelab/step_03/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/testing_codelab/step_03/ios/Podfile +++ b/testing_codelab/step_03/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/testing_codelab/step_03/ios/Runner.xcodeproj/project.pbxproj b/testing_codelab/step_03/ios/Runner.xcodeproj/project.pbxproj index 6a3fe02ba6..546c63f8a3 100644 --- a/testing_codelab/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/testing_codelab/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/testing_codelab/step_03/linux/runner/my_application.cc b/testing_codelab/step_03/linux/runner/my_application.cc index 6fd54c3a4a..a5b3b17e86 100644 --- a/testing_codelab/step_03/linux/runner/my_application.cc +++ b/testing_codelab/step_03/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/testing_codelab/step_03/macos/Podfile b/testing_codelab/step_03/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/testing_codelab/step_03/macos/Podfile +++ b/testing_codelab/step_03/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/testing_codelab/step_03/macos/Runner.xcodeproj/project.pbxproj b/testing_codelab/step_03/macos/Runner.xcodeproj/project.pbxproj index c30ecacb84..ce03153ac6 100644 --- a/testing_codelab/step_03/macos/Runner.xcodeproj/project.pbxproj +++ b/testing_codelab/step_03/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/testing_codelab/step_03/pubspec.yaml b/testing_codelab/step_03/pubspec.yaml index 191c54f3ae..625b378d4f 100644 --- a/testing_codelab/step_03/pubspec.yaml +++ b/testing_codelab/step_03/pubspec.yaml @@ -8,19 +8,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - go_router: ^15.1.2 + go_router: ^16.1.0 provider: ^6.1.5 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - test: ^1.25.15 + test: ^1.26.2 flutter_driver: sdk: flutter integration_test: diff --git a/testing_codelab/step_04/.gemini/settings.json b/testing_codelab/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/testing_codelab/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/testing_codelab/step_04/.gitignore b/testing_codelab/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/testing_codelab/step_04/.gitignore +++ b/testing_codelab/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/testing_codelab/step_04/android/build.gradle.kts b/testing_codelab/step_04/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/testing_codelab/step_04/android/build.gradle.kts +++ b/testing_codelab/step_04/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/testing_codelab/step_04/android/settings.gradle.kts b/testing_codelab/step_04/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/testing_codelab/step_04/android/settings.gradle.kts +++ b/testing_codelab/step_04/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/testing_codelab/step_04/ios/Flutter/AppFrameworkInfo.plist b/testing_codelab/step_04/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/testing_codelab/step_04/ios/Flutter/AppFrameworkInfo.plist +++ b/testing_codelab/step_04/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/testing_codelab/step_04/ios/Podfile b/testing_codelab/step_04/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/testing_codelab/step_04/ios/Podfile +++ b/testing_codelab/step_04/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/testing_codelab/step_04/ios/Runner.xcodeproj/project.pbxproj b/testing_codelab/step_04/ios/Runner.xcodeproj/project.pbxproj index 6a3fe02ba6..546c63f8a3 100644 --- a/testing_codelab/step_04/ios/Runner.xcodeproj/project.pbxproj +++ b/testing_codelab/step_04/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/testing_codelab/step_04/linux/runner/my_application.cc b/testing_codelab/step_04/linux/runner/my_application.cc index 6fd54c3a4a..a5b3b17e86 100644 --- a/testing_codelab/step_04/linux/runner/my_application.cc +++ b/testing_codelab/step_04/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/testing_codelab/step_04/macos/Podfile b/testing_codelab/step_04/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/testing_codelab/step_04/macos/Podfile +++ b/testing_codelab/step_04/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/testing_codelab/step_04/macos/Runner.xcodeproj/project.pbxproj b/testing_codelab/step_04/macos/Runner.xcodeproj/project.pbxproj index c30ecacb84..ce03153ac6 100644 --- a/testing_codelab/step_04/macos/Runner.xcodeproj/project.pbxproj +++ b/testing_codelab/step_04/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/testing_codelab/step_04/pubspec.yaml b/testing_codelab/step_04/pubspec.yaml index 191c54f3ae..625b378d4f 100644 --- a/testing_codelab/step_04/pubspec.yaml +++ b/testing_codelab/step_04/pubspec.yaml @@ -8,19 +8,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - go_router: ^15.1.2 + go_router: ^16.1.0 provider: ^6.1.5 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - test: ^1.25.15 + test: ^1.26.2 flutter_driver: sdk: flutter integration_test: diff --git a/testing_codelab/step_05/.gemini/settings.json b/testing_codelab/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/testing_codelab/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/testing_codelab/step_05/.gitignore b/testing_codelab/step_05/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/testing_codelab/step_05/.gitignore +++ b/testing_codelab/step_05/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/testing_codelab/step_05/android/build.gradle.kts b/testing_codelab/step_05/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/testing_codelab/step_05/android/build.gradle.kts +++ b/testing_codelab/step_05/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/testing_codelab/step_05/android/settings.gradle.kts b/testing_codelab/step_05/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/testing_codelab/step_05/android/settings.gradle.kts +++ b/testing_codelab/step_05/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/testing_codelab/step_05/ios/Flutter/AppFrameworkInfo.plist b/testing_codelab/step_05/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/testing_codelab/step_05/ios/Flutter/AppFrameworkInfo.plist +++ b/testing_codelab/step_05/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/testing_codelab/step_05/ios/Podfile b/testing_codelab/step_05/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/testing_codelab/step_05/ios/Podfile +++ b/testing_codelab/step_05/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/testing_codelab/step_05/ios/Runner.xcodeproj/project.pbxproj b/testing_codelab/step_05/ios/Runner.xcodeproj/project.pbxproj index 6a3fe02ba6..546c63f8a3 100644 --- a/testing_codelab/step_05/ios/Runner.xcodeproj/project.pbxproj +++ b/testing_codelab/step_05/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/testing_codelab/step_05/linux/runner/my_application.cc b/testing_codelab/step_05/linux/runner/my_application.cc index 6fd54c3a4a..a5b3b17e86 100644 --- a/testing_codelab/step_05/linux/runner/my_application.cc +++ b/testing_codelab/step_05/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/testing_codelab/step_05/macos/Podfile b/testing_codelab/step_05/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/testing_codelab/step_05/macos/Podfile +++ b/testing_codelab/step_05/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/testing_codelab/step_05/macos/Runner.xcodeproj/project.pbxproj b/testing_codelab/step_05/macos/Runner.xcodeproj/project.pbxproj index c30ecacb84..ce03153ac6 100644 --- a/testing_codelab/step_05/macos/Runner.xcodeproj/project.pbxproj +++ b/testing_codelab/step_05/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/testing_codelab/step_05/pubspec.yaml b/testing_codelab/step_05/pubspec.yaml index 191c54f3ae..625b378d4f 100644 --- a/testing_codelab/step_05/pubspec.yaml +++ b/testing_codelab/step_05/pubspec.yaml @@ -8,19 +8,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - go_router: ^15.1.2 + go_router: ^16.1.0 provider: ^6.1.5 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - test: ^1.25.15 + test: ^1.26.2 flutter_driver: sdk: flutter integration_test: diff --git a/testing_codelab/step_06/.gemini/settings.json b/testing_codelab/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/testing_codelab/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/testing_codelab/step_06/.gitignore b/testing_codelab/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/testing_codelab/step_06/.gitignore +++ b/testing_codelab/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/testing_codelab/step_06/android/build.gradle.kts b/testing_codelab/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/testing_codelab/step_06/android/build.gradle.kts +++ b/testing_codelab/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/testing_codelab/step_06/android/settings.gradle.kts b/testing_codelab/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/testing_codelab/step_06/android/settings.gradle.kts +++ b/testing_codelab/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/testing_codelab/step_06/ios/Flutter/AppFrameworkInfo.plist b/testing_codelab/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/testing_codelab/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/testing_codelab/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/testing_codelab/step_06/ios/Podfile b/testing_codelab/step_06/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/testing_codelab/step_06/ios/Podfile +++ b/testing_codelab/step_06/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/testing_codelab/step_06/ios/Runner.xcodeproj/project.pbxproj b/testing_codelab/step_06/ios/Runner.xcodeproj/project.pbxproj index 6a3fe02ba6..546c63f8a3 100644 --- a/testing_codelab/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/testing_codelab/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/testing_codelab/step_06/linux/runner/my_application.cc b/testing_codelab/step_06/linux/runner/my_application.cc index 6fd54c3a4a..a5b3b17e86 100644 --- a/testing_codelab/step_06/linux/runner/my_application.cc +++ b/testing_codelab/step_06/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/testing_codelab/step_06/macos/Podfile b/testing_codelab/step_06/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/testing_codelab/step_06/macos/Podfile +++ b/testing_codelab/step_06/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/testing_codelab/step_06/macos/Runner.xcodeproj/project.pbxproj b/testing_codelab/step_06/macos/Runner.xcodeproj/project.pbxproj index c30ecacb84..ce03153ac6 100644 --- a/testing_codelab/step_06/macos/Runner.xcodeproj/project.pbxproj +++ b/testing_codelab/step_06/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/testing_codelab/step_06/pubspec.yaml b/testing_codelab/step_06/pubspec.yaml index 191c54f3ae..625b378d4f 100644 --- a/testing_codelab/step_06/pubspec.yaml +++ b/testing_codelab/step_06/pubspec.yaml @@ -8,19 +8,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - go_router: ^15.1.2 + go_router: ^16.1.0 provider: ^6.1.5 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - test: ^1.25.15 + test: ^1.26.2 flutter_driver: sdk: flutter integration_test: diff --git a/testing_codelab/step_07/.gemini/settings.json b/testing_codelab/step_07/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/testing_codelab/step_07/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/testing_codelab/step_07/.gitignore b/testing_codelab/step_07/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/testing_codelab/step_07/.gitignore +++ b/testing_codelab/step_07/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/testing_codelab/step_07/android/build.gradle.kts b/testing_codelab/step_07/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/testing_codelab/step_07/android/build.gradle.kts +++ b/testing_codelab/step_07/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/testing_codelab/step_07/android/settings.gradle.kts b/testing_codelab/step_07/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/testing_codelab/step_07/android/settings.gradle.kts +++ b/testing_codelab/step_07/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/testing_codelab/step_07/ios/Flutter/AppFrameworkInfo.plist b/testing_codelab/step_07/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/testing_codelab/step_07/ios/Flutter/AppFrameworkInfo.plist +++ b/testing_codelab/step_07/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/testing_codelab/step_07/ios/Podfile b/testing_codelab/step_07/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/testing_codelab/step_07/ios/Podfile +++ b/testing_codelab/step_07/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/testing_codelab/step_07/ios/Runner.xcodeproj/project.pbxproj b/testing_codelab/step_07/ios/Runner.xcodeproj/project.pbxproj index 6a3fe02ba6..546c63f8a3 100644 --- a/testing_codelab/step_07/ios/Runner.xcodeproj/project.pbxproj +++ b/testing_codelab/step_07/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/testing_codelab/step_07/linux/runner/my_application.cc b/testing_codelab/step_07/linux/runner/my_application.cc index 6fd54c3a4a..a5b3b17e86 100644 --- a/testing_codelab/step_07/linux/runner/my_application.cc +++ b/testing_codelab/step_07/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/testing_codelab/step_07/macos/Podfile b/testing_codelab/step_07/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/testing_codelab/step_07/macos/Podfile +++ b/testing_codelab/step_07/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/testing_codelab/step_07/macos/Runner.xcodeproj/project.pbxproj b/testing_codelab/step_07/macos/Runner.xcodeproj/project.pbxproj index 76952e9805..78fe0b5b1f 100644 --- a/testing_codelab/step_07/macos/Runner.xcodeproj/project.pbxproj +++ b/testing_codelab/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 */; }; - 47EAFE697ECB049152BED9ED /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2019B6088A6A05970A4BC674 /* Pods_Runner.framework */; }; - B3D21FF3FD7DCCAB8A9758C9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CEA17D74F16575B7F445E8B /* Pods_RunnerTests.framework */; }; + 74774065F03FFB2F8E8593ED /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67A85853B63545D9D3D69C3A /* Pods_RunnerTests.framework */; }; + D189E29E8ED82A1E4C95AA9F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C33064D56157A27345AD54 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,10 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 15B6153C9D027DFC6E02FDE0 /* 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 = ""; }; - 1A3524F32CF03F0A5357AB8B /* 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 = ""; }; - 2019B6088A6A05970A4BC674 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 328675F377C20126D06B176E /* 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 = ""; }; + 08CC341580A77A6FA403362D /* 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 = ""; }; + 32CDD831C8088D573F1E21F7 /* 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 = ""; }; 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 = ""; }; @@ -82,12 +80,14 @@ 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 = ""; }; - 4EC0456A2C3D8000314B32FA /* 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 = ""; }; - 6CEA17D74F16575B7F445E8B /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 43966E9C14E7F7ED5F2BD4C8 /* 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 = ""; }; + 67A85853B63545D9D3D69C3A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 7D82DBA8A62BE4ACB105BAD6 /* 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 = ""; }; + 8B3C5DC9AE86BE71FC23FD85 /* 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 = ""; }; - B874FF50EC8F7F6F2CC764BA /* 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 = ""; }; + A349BCB472B31E494B4E994A /* 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 = ""; }; + AE3A72D17B218C0CF5EA6627 /* 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 = ""; }; + C3C33064D56157A27345AD54 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B3D21FF3FD7DCCAB8A9758C9 /* Pods_RunnerTests.framework in Frameworks */, + 74774065F03FFB2F8E8593ED /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 47EAFE697ECB049152BED9ED /* Pods_Runner.framework in Frameworks */, + D189E29E8ED82A1E4C95AA9F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 89C851285C5F734ED3193389 /* Pods */, + FB2EFB3214E5D346FBC2D25A /* Pods */, ); sourceTree = ""; }; @@ -185,27 +185,27 @@ path = Runner; sourceTree = ""; }; - 89C851285C5F734ED3193389 /* Pods */ = { + D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 1A3524F32CF03F0A5357AB8B /* Pods-Runner.debug.xcconfig */, - 328675F377C20126D06B176E /* Pods-Runner.release.xcconfig */, - 4EC0456A2C3D8000314B32FA /* Pods-Runner.profile.xcconfig */, - 15B6153C9D027DFC6E02FDE0 /* Pods-RunnerTests.debug.xcconfig */, - 7D82DBA8A62BE4ACB105BAD6 /* Pods-RunnerTests.release.xcconfig */, - B874FF50EC8F7F6F2CC764BA /* Pods-RunnerTests.profile.xcconfig */, + C3C33064D56157A27345AD54 /* Pods_Runner.framework */, + 67A85853B63545D9D3D69C3A /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { + FB2EFB3214E5D346FBC2D25A /* Pods */ = { isa = PBXGroup; children = ( - 2019B6088A6A05970A4BC674 /* Pods_Runner.framework */, - 6CEA17D74F16575B7F445E8B /* Pods_RunnerTests.framework */, + 8B3C5DC9AE86BE71FC23FD85 /* Pods-Runner.debug.xcconfig */, + 43966E9C14E7F7ED5F2BD4C8 /* Pods-Runner.release.xcconfig */, + 32CDD831C8088D573F1E21F7 /* Pods-Runner.profile.xcconfig */, + A349BCB472B31E494B4E994A /* Pods-RunnerTests.debug.xcconfig */, + AE3A72D17B218C0CF5EA6627 /* Pods-RunnerTests.release.xcconfig */, + 08CC341580A77A6FA403362D /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; /* End PBXGroup section */ @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - A7E8DB18F0FE3A2BEC2A9C69 /* [CP] Check Pods Manifest.lock */, + 237FE1159A6849235BE23F04 /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -234,7 +234,7 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - EF890AEE25EB268752EBBB48 /* [CP] Check Pods Manifest.lock */, + 7085AABA004A58239B6CA3A1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, @@ -322,67 +322,67 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { + 237FE1159A6849235BE23F04 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; 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-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\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; }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { + 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - Flutter/ephemeral/tripwire, ); outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; }; - A7E8DB18F0FE3A2BEC2A9C69 /* [CP] Check Pods Manifest.lock */ = { + 33CC111E2044C6BF0003C045 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", + Flutter/ephemeral/tripwire, ); - name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - EF890AEE25EB268752EBBB48 /* [CP] Check Pods Manifest.lock */ = { + 7085AABA004A58239B6CA3A1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 15B6153C9D027DFC6E02FDE0 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = A349BCB472B31E494B4E994A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -470,7 +470,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7D82DBA8A62BE4ACB105BAD6 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = AE3A72D17B218C0CF5EA6627 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -485,7 +485,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B874FF50EC8F7F6F2CC764BA /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 08CC341580A77A6FA403362D /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -539,7 +539,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -621,7 +621,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -671,7 +671,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/testing_codelab/step_07/pubspec.yaml b/testing_codelab/step_07/pubspec.yaml index 191c54f3ae..625b378d4f 100644 --- a/testing_codelab/step_07/pubspec.yaml +++ b/testing_codelab/step_07/pubspec.yaml @@ -8,19 +8,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - go_router: ^15.1.2 + go_router: ^16.1.0 provider: ^6.1.5 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - test: ^1.25.15 + test: ^1.26.2 flutter_driver: sdk: flutter integration_test: diff --git a/testing_codelab/step_08/.gemini/settings.json b/testing_codelab/step_08/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/testing_codelab/step_08/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/testing_codelab/step_08/.gitignore b/testing_codelab/step_08/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/testing_codelab/step_08/.gitignore +++ b/testing_codelab/step_08/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/testing_codelab/step_08/android/build.gradle.kts b/testing_codelab/step_08/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/testing_codelab/step_08/android/build.gradle.kts +++ b/testing_codelab/step_08/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/testing_codelab/step_08/android/settings.gradle.kts b/testing_codelab/step_08/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/testing_codelab/step_08/android/settings.gradle.kts +++ b/testing_codelab/step_08/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/testing_codelab/step_08/ios/Flutter/AppFrameworkInfo.plist b/testing_codelab/step_08/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/testing_codelab/step_08/ios/Flutter/AppFrameworkInfo.plist +++ b/testing_codelab/step_08/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/testing_codelab/step_08/ios/Podfile b/testing_codelab/step_08/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/testing_codelab/step_08/ios/Podfile +++ b/testing_codelab/step_08/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/testing_codelab/step_08/ios/Runner.xcodeproj/project.pbxproj b/testing_codelab/step_08/ios/Runner.xcodeproj/project.pbxproj index 6a3fe02ba6..546c63f8a3 100644 --- a/testing_codelab/step_08/ios/Runner.xcodeproj/project.pbxproj +++ b/testing_codelab/step_08/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/testing_codelab/step_08/linux/runner/my_application.cc b/testing_codelab/step_08/linux/runner/my_application.cc index 6fd54c3a4a..a5b3b17e86 100644 --- a/testing_codelab/step_08/linux/runner/my_application.cc +++ b/testing_codelab/step_08/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/testing_codelab/step_08/macos/Podfile b/testing_codelab/step_08/macos/Podfile index 29c8eb3294..ff5ddb3b8b 100644 --- a/testing_codelab/step_08/macos/Podfile +++ b/testing_codelab/step_08/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.14' +platform :osx, '10.15' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/testing_codelab/step_08/macos/Runner.xcodeproj/project.pbxproj b/testing_codelab/step_08/macos/Runner.xcodeproj/project.pbxproj index 76952e9805..78fe0b5b1f 100644 --- a/testing_codelab/step_08/macos/Runner.xcodeproj/project.pbxproj +++ b/testing_codelab/step_08/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 */; }; - 47EAFE697ECB049152BED9ED /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2019B6088A6A05970A4BC674 /* Pods_Runner.framework */; }; - B3D21FF3FD7DCCAB8A9758C9 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CEA17D74F16575B7F445E8B /* Pods_RunnerTests.framework */; }; + 74774065F03FFB2F8E8593ED /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67A85853B63545D9D3D69C3A /* Pods_RunnerTests.framework */; }; + D189E29E8ED82A1E4C95AA9F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3C33064D56157A27345AD54 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,10 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 15B6153C9D027DFC6E02FDE0 /* 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 = ""; }; - 1A3524F32CF03F0A5357AB8B /* 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 = ""; }; - 2019B6088A6A05970A4BC674 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 328675F377C20126D06B176E /* 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 = ""; }; + 08CC341580A77A6FA403362D /* 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 = ""; }; + 32CDD831C8088D573F1E21F7 /* 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 = ""; }; 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 = ""; }; @@ -82,12 +80,14 @@ 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 = ""; }; - 4EC0456A2C3D8000314B32FA /* 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 = ""; }; - 6CEA17D74F16575B7F445E8B /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 43966E9C14E7F7ED5F2BD4C8 /* 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 = ""; }; + 67A85853B63545D9D3D69C3A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 7D82DBA8A62BE4ACB105BAD6 /* 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 = ""; }; + 8B3C5DC9AE86BE71FC23FD85 /* 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 = ""; }; - B874FF50EC8F7F6F2CC764BA /* 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 = ""; }; + A349BCB472B31E494B4E994A /* 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 = ""; }; + AE3A72D17B218C0CF5EA6627 /* 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 = ""; }; + C3C33064D56157A27345AD54 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B3D21FF3FD7DCCAB8A9758C9 /* Pods_RunnerTests.framework in Frameworks */, + 74774065F03FFB2F8E8593ED /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 47EAFE697ECB049152BED9ED /* Pods_Runner.framework in Frameworks */, + D189E29E8ED82A1E4C95AA9F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 89C851285C5F734ED3193389 /* Pods */, + FB2EFB3214E5D346FBC2D25A /* Pods */, ); sourceTree = ""; }; @@ -185,27 +185,27 @@ path = Runner; sourceTree = ""; }; - 89C851285C5F734ED3193389 /* Pods */ = { + D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 1A3524F32CF03F0A5357AB8B /* Pods-Runner.debug.xcconfig */, - 328675F377C20126D06B176E /* Pods-Runner.release.xcconfig */, - 4EC0456A2C3D8000314B32FA /* Pods-Runner.profile.xcconfig */, - 15B6153C9D027DFC6E02FDE0 /* Pods-RunnerTests.debug.xcconfig */, - 7D82DBA8A62BE4ACB105BAD6 /* Pods-RunnerTests.release.xcconfig */, - B874FF50EC8F7F6F2CC764BA /* Pods-RunnerTests.profile.xcconfig */, + C3C33064D56157A27345AD54 /* Pods_Runner.framework */, + 67A85853B63545D9D3D69C3A /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { + FB2EFB3214E5D346FBC2D25A /* Pods */ = { isa = PBXGroup; children = ( - 2019B6088A6A05970A4BC674 /* Pods_Runner.framework */, - 6CEA17D74F16575B7F445E8B /* Pods_RunnerTests.framework */, + 8B3C5DC9AE86BE71FC23FD85 /* Pods-Runner.debug.xcconfig */, + 43966E9C14E7F7ED5F2BD4C8 /* Pods-Runner.release.xcconfig */, + 32CDD831C8088D573F1E21F7 /* Pods-Runner.profile.xcconfig */, + A349BCB472B31E494B4E994A /* Pods-RunnerTests.debug.xcconfig */, + AE3A72D17B218C0CF5EA6627 /* Pods-RunnerTests.release.xcconfig */, + 08CC341580A77A6FA403362D /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; /* End PBXGroup section */ @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - A7E8DB18F0FE3A2BEC2A9C69 /* [CP] Check Pods Manifest.lock */, + 237FE1159A6849235BE23F04 /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -234,7 +234,7 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - EF890AEE25EB268752EBBB48 /* [CP] Check Pods Manifest.lock */, + 7085AABA004A58239B6CA3A1 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, @@ -322,67 +322,67 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { + 237FE1159A6849235BE23F04 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; 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-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\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; }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { + 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - Flutter/ephemeral/tripwire, ); outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; }; - A7E8DB18F0FE3A2BEC2A9C69 /* [CP] Check Pods Manifest.lock */ = { + 33CC111E2044C6BF0003C045 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", + Flutter/ephemeral/tripwire, ); - name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-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; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - EF890AEE25EB268752EBBB48 /* [CP] Check Pods Manifest.lock */ = { + 7085AABA004A58239B6CA3A1 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -455,7 +455,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 15B6153C9D027DFC6E02FDE0 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = A349BCB472B31E494B4E994A /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -470,7 +470,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7D82DBA8A62BE4ACB105BAD6 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = AE3A72D17B218C0CF5EA6627 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -485,7 +485,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B874FF50EC8F7F6F2CC764BA /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 08CC341580A77A6FA403362D /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -539,7 +539,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -621,7 +621,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -671,7 +671,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/testing_codelab/step_08/pubspec.yaml b/testing_codelab/step_08/pubspec.yaml index 191c54f3ae..625b378d4f 100644 --- a/testing_codelab/step_08/pubspec.yaml +++ b/testing_codelab/step_08/pubspec.yaml @@ -8,19 +8,19 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 dependencies: flutter: sdk: flutter - go_router: ^15.1.2 + go_router: ^16.1.0 provider: ^6.1.5 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 - test: ^1.25.15 + test: ^1.26.2 flutter_driver: sdk: flutter integration_test: diff --git a/tfagents-flutter/codelab_rebuild.yaml b/tfagents-flutter/codelab_rebuild.yaml index ff129e83c9..6622ba94a6 100644 --- a/tfagents-flutter/codelab_rebuild.yaml +++ b/tfagents-flutter/codelab_rebuild.yaml @@ -9,6 +9,21 @@ steps: - name: Add deps path: frontend flutter: pub add http + - name: Add .gemini directory + mkdir: frontend/.gemini + - name: Add .gemini/settings.json + path: frontend/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Strip DEVELOPMENT_TEAM strip-lines-containing: DEVELOPMENT_TEAM = path: frontend/ios/Runner.xcodeproj/project.pbxproj diff --git a/tfagents-flutter/finished/frontend/.gemini/settings.json b/tfagents-flutter/finished/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfagents-flutter/finished/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfagents-flutter/finished/frontend/.gitignore b/tfagents-flutter/finished/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfagents-flutter/finished/frontend/.gitignore +++ b/tfagents-flutter/finished/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfagents-flutter/finished/frontend/android/build.gradle.kts b/tfagents-flutter/finished/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfagents-flutter/finished/frontend/android/build.gradle.kts +++ b/tfagents-flutter/finished/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfagents-flutter/finished/frontend/android/settings.gradle.kts b/tfagents-flutter/finished/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfagents-flutter/finished/frontend/android/settings.gradle.kts +++ b/tfagents-flutter/finished/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfagents-flutter/finished/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfagents-flutter/finished/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfagents-flutter/finished/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfagents-flutter/finished/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfagents-flutter/finished/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/finished/frontend/ios/Runner.xcodeproj/project.pbxproj index 740ca93b61..dc26eb938f 100644 --- a/tfagents-flutter/finished/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/finished/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfagents-flutter/finished/frontend/linux/runner/my_application.cc b/tfagents-flutter/finished/frontend/linux/runner/my_application.cc index 89bc259bbc..3204c1fe86 100644 --- a/tfagents-flutter/finished/frontend/linux/runner/my_application.cc +++ b/tfagents-flutter/finished/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfagents-flutter/finished/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/finished/frontend/macos/Runner.xcodeproj/project.pbxproj index 9891f1fc79..f8fc275db5 100644 --- a/tfagents-flutter/finished/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/finished/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfagents-flutter/finished/frontend/pubspec.yaml b/tfagents-flutter/finished/frontend/pubspec.yaml index a6737d621b..fabcd69143 100644 --- a/tfagents-flutter/finished/frontend/pubspec.yaml +++ b/tfagents-flutter/finished/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfagents-flutter/step0/frontend/.gemini/settings.json b/tfagents-flutter/step0/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfagents-flutter/step0/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfagents-flutter/step0/frontend/.gitignore b/tfagents-flutter/step0/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfagents-flutter/step0/frontend/.gitignore +++ b/tfagents-flutter/step0/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfagents-flutter/step0/frontend/android/build.gradle.kts b/tfagents-flutter/step0/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfagents-flutter/step0/frontend/android/build.gradle.kts +++ b/tfagents-flutter/step0/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfagents-flutter/step0/frontend/android/settings.gradle.kts b/tfagents-flutter/step0/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfagents-flutter/step0/frontend/android/settings.gradle.kts +++ b/tfagents-flutter/step0/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfagents-flutter/step0/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfagents-flutter/step0/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfagents-flutter/step0/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfagents-flutter/step0/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfagents-flutter/step0/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step0/frontend/ios/Runner.xcodeproj/project.pbxproj index 740ca93b61..dc26eb938f 100644 --- a/tfagents-flutter/step0/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step0/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfagents-flutter/step0/frontend/linux/runner/my_application.cc b/tfagents-flutter/step0/frontend/linux/runner/my_application.cc index 89bc259bbc..3204c1fe86 100644 --- a/tfagents-flutter/step0/frontend/linux/runner/my_application.cc +++ b/tfagents-flutter/step0/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfagents-flutter/step0/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step0/frontend/macos/Runner.xcodeproj/project.pbxproj index 9891f1fc79..f8fc275db5 100644 --- a/tfagents-flutter/step0/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step0/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfagents-flutter/step0/frontend/pubspec.yaml b/tfagents-flutter/step0/frontend/pubspec.yaml index a6737d621b..fabcd69143 100644 --- a/tfagents-flutter/step0/frontend/pubspec.yaml +++ b/tfagents-flutter/step0/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfagents-flutter/step1/frontend/.gemini/settings.json b/tfagents-flutter/step1/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfagents-flutter/step1/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfagents-flutter/step1/frontend/.gitignore b/tfagents-flutter/step1/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfagents-flutter/step1/frontend/.gitignore +++ b/tfagents-flutter/step1/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfagents-flutter/step1/frontend/android/build.gradle.kts b/tfagents-flutter/step1/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfagents-flutter/step1/frontend/android/build.gradle.kts +++ b/tfagents-flutter/step1/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfagents-flutter/step1/frontend/android/settings.gradle.kts b/tfagents-flutter/step1/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfagents-flutter/step1/frontend/android/settings.gradle.kts +++ b/tfagents-flutter/step1/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfagents-flutter/step1/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfagents-flutter/step1/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfagents-flutter/step1/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfagents-flutter/step1/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfagents-flutter/step1/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step1/frontend/ios/Runner.xcodeproj/project.pbxproj index 740ca93b61..dc26eb938f 100644 --- a/tfagents-flutter/step1/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step1/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfagents-flutter/step1/frontend/linux/runner/my_application.cc b/tfagents-flutter/step1/frontend/linux/runner/my_application.cc index 89bc259bbc..3204c1fe86 100644 --- a/tfagents-flutter/step1/frontend/linux/runner/my_application.cc +++ b/tfagents-flutter/step1/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfagents-flutter/step1/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step1/frontend/macos/Runner.xcodeproj/project.pbxproj index 9891f1fc79..f8fc275db5 100644 --- a/tfagents-flutter/step1/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step1/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfagents-flutter/step1/frontend/pubspec.yaml b/tfagents-flutter/step1/frontend/pubspec.yaml index a6737d621b..fabcd69143 100644 --- a/tfagents-flutter/step1/frontend/pubspec.yaml +++ b/tfagents-flutter/step1/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfagents-flutter/step2/frontend/.gemini/settings.json b/tfagents-flutter/step2/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfagents-flutter/step2/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfagents-flutter/step2/frontend/.gitignore b/tfagents-flutter/step2/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfagents-flutter/step2/frontend/.gitignore +++ b/tfagents-flutter/step2/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfagents-flutter/step2/frontend/android/build.gradle.kts b/tfagents-flutter/step2/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfagents-flutter/step2/frontend/android/build.gradle.kts +++ b/tfagents-flutter/step2/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfagents-flutter/step2/frontend/android/settings.gradle.kts b/tfagents-flutter/step2/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfagents-flutter/step2/frontend/android/settings.gradle.kts +++ b/tfagents-flutter/step2/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfagents-flutter/step2/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfagents-flutter/step2/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfagents-flutter/step2/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfagents-flutter/step2/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfagents-flutter/step2/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step2/frontend/ios/Runner.xcodeproj/project.pbxproj index 740ca93b61..dc26eb938f 100644 --- a/tfagents-flutter/step2/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step2/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfagents-flutter/step2/frontend/linux/runner/my_application.cc b/tfagents-flutter/step2/frontend/linux/runner/my_application.cc index 89bc259bbc..3204c1fe86 100644 --- a/tfagents-flutter/step2/frontend/linux/runner/my_application.cc +++ b/tfagents-flutter/step2/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfagents-flutter/step2/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step2/frontend/macos/Runner.xcodeproj/project.pbxproj index 9891f1fc79..f8fc275db5 100644 --- a/tfagents-flutter/step2/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step2/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfagents-flutter/step2/frontend/pubspec.yaml b/tfagents-flutter/step2/frontend/pubspec.yaml index a6737d621b..fabcd69143 100644 --- a/tfagents-flutter/step2/frontend/pubspec.yaml +++ b/tfagents-flutter/step2/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfagents-flutter/step3/frontend/.gemini/settings.json b/tfagents-flutter/step3/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfagents-flutter/step3/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfagents-flutter/step3/frontend/.gitignore b/tfagents-flutter/step3/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfagents-flutter/step3/frontend/.gitignore +++ b/tfagents-flutter/step3/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfagents-flutter/step3/frontend/android/build.gradle.kts b/tfagents-flutter/step3/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfagents-flutter/step3/frontend/android/build.gradle.kts +++ b/tfagents-flutter/step3/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfagents-flutter/step3/frontend/android/settings.gradle.kts b/tfagents-flutter/step3/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfagents-flutter/step3/frontend/android/settings.gradle.kts +++ b/tfagents-flutter/step3/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfagents-flutter/step3/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfagents-flutter/step3/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfagents-flutter/step3/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfagents-flutter/step3/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfagents-flutter/step3/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step3/frontend/ios/Runner.xcodeproj/project.pbxproj index 740ca93b61..dc26eb938f 100644 --- a/tfagents-flutter/step3/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step3/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfagents-flutter/step3/frontend/linux/runner/my_application.cc b/tfagents-flutter/step3/frontend/linux/runner/my_application.cc index 89bc259bbc..3204c1fe86 100644 --- a/tfagents-flutter/step3/frontend/linux/runner/my_application.cc +++ b/tfagents-flutter/step3/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfagents-flutter/step3/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step3/frontend/macos/Runner.xcodeproj/project.pbxproj index 9891f1fc79..f8fc275db5 100644 --- a/tfagents-flutter/step3/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step3/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfagents-flutter/step3/frontend/pubspec.yaml b/tfagents-flutter/step3/frontend/pubspec.yaml index a6737d621b..fabcd69143 100644 --- a/tfagents-flutter/step3/frontend/pubspec.yaml +++ b/tfagents-flutter/step3/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfagents-flutter/step4/frontend/.gemini/settings.json b/tfagents-flutter/step4/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfagents-flutter/step4/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfagents-flutter/step4/frontend/.gitignore b/tfagents-flutter/step4/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfagents-flutter/step4/frontend/.gitignore +++ b/tfagents-flutter/step4/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfagents-flutter/step4/frontend/android/build.gradle.kts b/tfagents-flutter/step4/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfagents-flutter/step4/frontend/android/build.gradle.kts +++ b/tfagents-flutter/step4/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfagents-flutter/step4/frontend/android/settings.gradle.kts b/tfagents-flutter/step4/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfagents-flutter/step4/frontend/android/settings.gradle.kts +++ b/tfagents-flutter/step4/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfagents-flutter/step4/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfagents-flutter/step4/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfagents-flutter/step4/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfagents-flutter/step4/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfagents-flutter/step4/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step4/frontend/ios/Runner.xcodeproj/project.pbxproj index 740ca93b61..dc26eb938f 100644 --- a/tfagents-flutter/step4/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step4/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfagents-flutter/step4/frontend/linux/runner/my_application.cc b/tfagents-flutter/step4/frontend/linux/runner/my_application.cc index 89bc259bbc..3204c1fe86 100644 --- a/tfagents-flutter/step4/frontend/linux/runner/my_application.cc +++ b/tfagents-flutter/step4/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfagents-flutter/step4/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step4/frontend/macos/Runner.xcodeproj/project.pbxproj index 9891f1fc79..f8fc275db5 100644 --- a/tfagents-flutter/step4/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step4/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfagents-flutter/step4/frontend/pubspec.yaml b/tfagents-flutter/step4/frontend/pubspec.yaml index a6737d621b..fabcd69143 100644 --- a/tfagents-flutter/step4/frontend/pubspec.yaml +++ b/tfagents-flutter/step4/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfagents-flutter/step5/frontend/.gemini/settings.json b/tfagents-flutter/step5/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfagents-flutter/step5/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfagents-flutter/step5/frontend/.gitignore b/tfagents-flutter/step5/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfagents-flutter/step5/frontend/.gitignore +++ b/tfagents-flutter/step5/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfagents-flutter/step5/frontend/android/build.gradle.kts b/tfagents-flutter/step5/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfagents-flutter/step5/frontend/android/build.gradle.kts +++ b/tfagents-flutter/step5/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfagents-flutter/step5/frontend/android/settings.gradle.kts b/tfagents-flutter/step5/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfagents-flutter/step5/frontend/android/settings.gradle.kts +++ b/tfagents-flutter/step5/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfagents-flutter/step5/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfagents-flutter/step5/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfagents-flutter/step5/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfagents-flutter/step5/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfagents-flutter/step5/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step5/frontend/ios/Runner.xcodeproj/project.pbxproj index 740ca93b61..dc26eb938f 100644 --- a/tfagents-flutter/step5/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step5/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfagents-flutter/step5/frontend/linux/runner/my_application.cc b/tfagents-flutter/step5/frontend/linux/runner/my_application.cc index 89bc259bbc..3204c1fe86 100644 --- a/tfagents-flutter/step5/frontend/linux/runner/my_application.cc +++ b/tfagents-flutter/step5/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfagents-flutter/step5/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step5/frontend/macos/Runner.xcodeproj/project.pbxproj index 9891f1fc79..f8fc275db5 100644 --- a/tfagents-flutter/step5/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step5/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfagents-flutter/step5/frontend/pubspec.yaml b/tfagents-flutter/step5/frontend/pubspec.yaml index a6737d621b..fabcd69143 100644 --- a/tfagents-flutter/step5/frontend/pubspec.yaml +++ b/tfagents-flutter/step5/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfagents-flutter/step6/frontend/.gemini/settings.json b/tfagents-flutter/step6/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfagents-flutter/step6/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfagents-flutter/step6/frontend/.gitignore b/tfagents-flutter/step6/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfagents-flutter/step6/frontend/.gitignore +++ b/tfagents-flutter/step6/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfagents-flutter/step6/frontend/android/build.gradle.kts b/tfagents-flutter/step6/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfagents-flutter/step6/frontend/android/build.gradle.kts +++ b/tfagents-flutter/step6/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfagents-flutter/step6/frontend/android/settings.gradle.kts b/tfagents-flutter/step6/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfagents-flutter/step6/frontend/android/settings.gradle.kts +++ b/tfagents-flutter/step6/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfagents-flutter/step6/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfagents-flutter/step6/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfagents-flutter/step6/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfagents-flutter/step6/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfagents-flutter/step6/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step6/frontend/ios/Runner.xcodeproj/project.pbxproj index 740ca93b61..dc26eb938f 100644 --- a/tfagents-flutter/step6/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step6/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfagents-flutter/step6/frontend/linux/runner/my_application.cc b/tfagents-flutter/step6/frontend/linux/runner/my_application.cc index 89bc259bbc..3204c1fe86 100644 --- a/tfagents-flutter/step6/frontend/linux/runner/my_application.cc +++ b/tfagents-flutter/step6/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfagents-flutter/step6/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfagents-flutter/step6/frontend/macos/Runner.xcodeproj/project.pbxproj index 9891f1fc79..f8fc275db5 100644 --- a/tfagents-flutter/step6/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfagents-flutter/step6/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfagents-flutter/step6/frontend/pubspec.yaml b/tfagents-flutter/step6/frontend/pubspec.yaml index a6737d621b..fabcd69143 100644 --- a/tfagents-flutter/step6/frontend/pubspec.yaml +++ b/tfagents-flutter/step6/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfrs-flutter/codelab_rebuild.yaml b/tfrs-flutter/codelab_rebuild.yaml index e9f5aab3bd..a26070d54b 100644 --- a/tfrs-flutter/codelab_rebuild.yaml +++ b/tfrs-flutter/codelab_rebuild.yaml @@ -15,6 +15,21 @@ steps: - name: Strip DEVELOPMENT_TEAM strip-lines-containing: DEVELOPMENT_TEAM = path: frontend/ios/Runner.xcodeproj/project.pbxproj + - name: Add .gemini directory + mkdir: frontend/.gemini + - name: Add .gemini/settings.json + path: frontend/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add deps path: frontend flutter: pub add http diff --git a/tfrs-flutter/finished/frontend/.gemini/settings.json b/tfrs-flutter/finished/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfrs-flutter/finished/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfrs-flutter/finished/frontend/.gitignore b/tfrs-flutter/finished/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfrs-flutter/finished/frontend/.gitignore +++ b/tfrs-flutter/finished/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfrs-flutter/finished/frontend/android/build.gradle.kts b/tfrs-flutter/finished/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfrs-flutter/finished/frontend/android/build.gradle.kts +++ b/tfrs-flutter/finished/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfrs-flutter/finished/frontend/android/settings.gradle.kts b/tfrs-flutter/finished/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfrs-flutter/finished/frontend/android/settings.gradle.kts +++ b/tfrs-flutter/finished/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfrs-flutter/finished/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfrs-flutter/finished/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfrs-flutter/finished/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfrs-flutter/finished/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfrs-flutter/finished/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/finished/frontend/ios/Runner.xcodeproj/project.pbxproj index 2ff3b6fd05..577f8941bb 100644 --- a/tfrs-flutter/finished/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/finished/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfrs-flutter/finished/frontend/linux/runner/my_application.cc b/tfrs-flutter/finished/frontend/linux/runner/my_application.cc index 7b730afd9d..bafb507fb0 100644 --- a/tfrs-flutter/finished/frontend/linux/runner/my_application.cc +++ b/tfrs-flutter/finished/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfrs-flutter/finished/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/finished/frontend/macos/Runner.xcodeproj/project.pbxproj index 6a486aa6c1..839ce0a524 100644 --- a/tfrs-flutter/finished/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/finished/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfrs-flutter/finished/frontend/pubspec.yaml b/tfrs-flutter/finished/frontend/pubspec.yaml index 7fe83729fe..1d1abc370f 100644 --- a/tfrs-flutter/finished/frontend/pubspec.yaml +++ b/tfrs-flutter/finished/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfrs-flutter/step0/frontend/.gemini/settings.json b/tfrs-flutter/step0/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfrs-flutter/step0/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfrs-flutter/step0/frontend/.gitignore b/tfrs-flutter/step0/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfrs-flutter/step0/frontend/.gitignore +++ b/tfrs-flutter/step0/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfrs-flutter/step0/frontend/android/build.gradle.kts b/tfrs-flutter/step0/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfrs-flutter/step0/frontend/android/build.gradle.kts +++ b/tfrs-flutter/step0/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfrs-flutter/step0/frontend/android/settings.gradle.kts b/tfrs-flutter/step0/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfrs-flutter/step0/frontend/android/settings.gradle.kts +++ b/tfrs-flutter/step0/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfrs-flutter/step0/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfrs-flutter/step0/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfrs-flutter/step0/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfrs-flutter/step0/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfrs-flutter/step0/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/step0/frontend/ios/Runner.xcodeproj/project.pbxproj index 2ff3b6fd05..577f8941bb 100644 --- a/tfrs-flutter/step0/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/step0/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfrs-flutter/step0/frontend/linux/runner/my_application.cc b/tfrs-flutter/step0/frontend/linux/runner/my_application.cc index 7b730afd9d..bafb507fb0 100644 --- a/tfrs-flutter/step0/frontend/linux/runner/my_application.cc +++ b/tfrs-flutter/step0/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfrs-flutter/step0/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/step0/frontend/macos/Runner.xcodeproj/project.pbxproj index 6a486aa6c1..839ce0a524 100644 --- a/tfrs-flutter/step0/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/step0/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfrs-flutter/step0/frontend/pubspec.yaml b/tfrs-flutter/step0/frontend/pubspec.yaml index 7fe83729fe..1d1abc370f 100644 --- a/tfrs-flutter/step0/frontend/pubspec.yaml +++ b/tfrs-flutter/step0/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfrs-flutter/step1/frontend/.gemini/settings.json b/tfrs-flutter/step1/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfrs-flutter/step1/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfrs-flutter/step1/frontend/.gitignore b/tfrs-flutter/step1/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfrs-flutter/step1/frontend/.gitignore +++ b/tfrs-flutter/step1/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfrs-flutter/step1/frontend/android/build.gradle.kts b/tfrs-flutter/step1/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfrs-flutter/step1/frontend/android/build.gradle.kts +++ b/tfrs-flutter/step1/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfrs-flutter/step1/frontend/android/settings.gradle.kts b/tfrs-flutter/step1/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfrs-flutter/step1/frontend/android/settings.gradle.kts +++ b/tfrs-flutter/step1/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfrs-flutter/step1/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfrs-flutter/step1/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfrs-flutter/step1/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfrs-flutter/step1/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfrs-flutter/step1/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/step1/frontend/ios/Runner.xcodeproj/project.pbxproj index 2ff3b6fd05..577f8941bb 100644 --- a/tfrs-flutter/step1/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/step1/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfrs-flutter/step1/frontend/linux/runner/my_application.cc b/tfrs-flutter/step1/frontend/linux/runner/my_application.cc index 7b730afd9d..bafb507fb0 100644 --- a/tfrs-flutter/step1/frontend/linux/runner/my_application.cc +++ b/tfrs-flutter/step1/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfrs-flutter/step1/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/step1/frontend/macos/Runner.xcodeproj/project.pbxproj index 6a486aa6c1..839ce0a524 100644 --- a/tfrs-flutter/step1/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/step1/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfrs-flutter/step1/frontend/pubspec.yaml b/tfrs-flutter/step1/frontend/pubspec.yaml index 7fe83729fe..1d1abc370f 100644 --- a/tfrs-flutter/step1/frontend/pubspec.yaml +++ b/tfrs-flutter/step1/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfrs-flutter/step2/frontend/.gemini/settings.json b/tfrs-flutter/step2/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfrs-flutter/step2/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfrs-flutter/step2/frontend/.gitignore b/tfrs-flutter/step2/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfrs-flutter/step2/frontend/.gitignore +++ b/tfrs-flutter/step2/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfrs-flutter/step2/frontend/android/build.gradle.kts b/tfrs-flutter/step2/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfrs-flutter/step2/frontend/android/build.gradle.kts +++ b/tfrs-flutter/step2/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfrs-flutter/step2/frontend/android/settings.gradle.kts b/tfrs-flutter/step2/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfrs-flutter/step2/frontend/android/settings.gradle.kts +++ b/tfrs-flutter/step2/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfrs-flutter/step2/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfrs-flutter/step2/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfrs-flutter/step2/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfrs-flutter/step2/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfrs-flutter/step2/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/step2/frontend/ios/Runner.xcodeproj/project.pbxproj index 2ff3b6fd05..577f8941bb 100644 --- a/tfrs-flutter/step2/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/step2/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfrs-flutter/step2/frontend/linux/runner/my_application.cc b/tfrs-flutter/step2/frontend/linux/runner/my_application.cc index 7b730afd9d..bafb507fb0 100644 --- a/tfrs-flutter/step2/frontend/linux/runner/my_application.cc +++ b/tfrs-flutter/step2/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfrs-flutter/step2/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/step2/frontend/macos/Runner.xcodeproj/project.pbxproj index 6a486aa6c1..839ce0a524 100644 --- a/tfrs-flutter/step2/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/step2/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfrs-flutter/step2/frontend/pubspec.yaml b/tfrs-flutter/step2/frontend/pubspec.yaml index 7fe83729fe..1d1abc370f 100644 --- a/tfrs-flutter/step2/frontend/pubspec.yaml +++ b/tfrs-flutter/step2/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfrs-flutter/step3/frontend/.gemini/settings.json b/tfrs-flutter/step3/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfrs-flutter/step3/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfrs-flutter/step3/frontend/.gitignore b/tfrs-flutter/step3/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfrs-flutter/step3/frontend/.gitignore +++ b/tfrs-flutter/step3/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfrs-flutter/step3/frontend/android/build.gradle.kts b/tfrs-flutter/step3/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfrs-flutter/step3/frontend/android/build.gradle.kts +++ b/tfrs-flutter/step3/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfrs-flutter/step3/frontend/android/settings.gradle.kts b/tfrs-flutter/step3/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfrs-flutter/step3/frontend/android/settings.gradle.kts +++ b/tfrs-flutter/step3/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfrs-flutter/step3/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfrs-flutter/step3/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfrs-flutter/step3/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfrs-flutter/step3/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfrs-flutter/step3/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/step3/frontend/ios/Runner.xcodeproj/project.pbxproj index 2ff3b6fd05..577f8941bb 100644 --- a/tfrs-flutter/step3/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/step3/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfrs-flutter/step3/frontend/linux/runner/my_application.cc b/tfrs-flutter/step3/frontend/linux/runner/my_application.cc index 7b730afd9d..bafb507fb0 100644 --- a/tfrs-flutter/step3/frontend/linux/runner/my_application.cc +++ b/tfrs-flutter/step3/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfrs-flutter/step3/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/step3/frontend/macos/Runner.xcodeproj/project.pbxproj index 6a486aa6c1..839ce0a524 100644 --- a/tfrs-flutter/step3/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/step3/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfrs-flutter/step3/frontend/pubspec.yaml b/tfrs-flutter/step3/frontend/pubspec.yaml index 7fe83729fe..1d1abc370f 100644 --- a/tfrs-flutter/step3/frontend/pubspec.yaml +++ b/tfrs-flutter/step3/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfrs-flutter/step4/frontend/.gemini/settings.json b/tfrs-flutter/step4/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfrs-flutter/step4/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfrs-flutter/step4/frontend/.gitignore b/tfrs-flutter/step4/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfrs-flutter/step4/frontend/.gitignore +++ b/tfrs-flutter/step4/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfrs-flutter/step4/frontend/android/build.gradle.kts b/tfrs-flutter/step4/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfrs-flutter/step4/frontend/android/build.gradle.kts +++ b/tfrs-flutter/step4/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfrs-flutter/step4/frontend/android/settings.gradle.kts b/tfrs-flutter/step4/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfrs-flutter/step4/frontend/android/settings.gradle.kts +++ b/tfrs-flutter/step4/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfrs-flutter/step4/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfrs-flutter/step4/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfrs-flutter/step4/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfrs-flutter/step4/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfrs-flutter/step4/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/step4/frontend/ios/Runner.xcodeproj/project.pbxproj index 2ff3b6fd05..577f8941bb 100644 --- a/tfrs-flutter/step4/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/step4/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfrs-flutter/step4/frontend/linux/runner/my_application.cc b/tfrs-flutter/step4/frontend/linux/runner/my_application.cc index 7b730afd9d..bafb507fb0 100644 --- a/tfrs-flutter/step4/frontend/linux/runner/my_application.cc +++ b/tfrs-flutter/step4/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfrs-flutter/step4/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/step4/frontend/macos/Runner.xcodeproj/project.pbxproj index 6a486aa6c1..839ce0a524 100644 --- a/tfrs-flutter/step4/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/step4/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfrs-flutter/step4/frontend/pubspec.yaml b/tfrs-flutter/step4/frontend/pubspec.yaml index 7fe83729fe..1d1abc370f 100644 --- a/tfrs-flutter/step4/frontend/pubspec.yaml +++ b/tfrs-flutter/step4/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfrs-flutter/step5/frontend/.gemini/settings.json b/tfrs-flutter/step5/frontend/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfrs-flutter/step5/frontend/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfrs-flutter/step5/frontend/.gitignore b/tfrs-flutter/step5/frontend/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfrs-flutter/step5/frontend/.gitignore +++ b/tfrs-flutter/step5/frontend/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfrs-flutter/step5/frontend/android/build.gradle.kts b/tfrs-flutter/step5/frontend/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfrs-flutter/step5/frontend/android/build.gradle.kts +++ b/tfrs-flutter/step5/frontend/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfrs-flutter/step5/frontend/android/settings.gradle.kts b/tfrs-flutter/step5/frontend/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfrs-flutter/step5/frontend/android/settings.gradle.kts +++ b/tfrs-flutter/step5/frontend/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfrs-flutter/step5/frontend/ios/Flutter/AppFrameworkInfo.plist b/tfrs-flutter/step5/frontend/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfrs-flutter/step5/frontend/ios/Flutter/AppFrameworkInfo.plist +++ b/tfrs-flutter/step5/frontend/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfrs-flutter/step5/frontend/ios/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/step5/frontend/ios/Runner.xcodeproj/project.pbxproj index 2ff3b6fd05..577f8941bb 100644 --- a/tfrs-flutter/step5/frontend/ios/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/step5/frontend/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfrs-flutter/step5/frontend/linux/runner/my_application.cc b/tfrs-flutter/step5/frontend/linux/runner/my_application.cc index 7b730afd9d..bafb507fb0 100644 --- a/tfrs-flutter/step5/frontend/linux/runner/my_application.cc +++ b/tfrs-flutter/step5/frontend/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfrs-flutter/step5/frontend/macos/Runner.xcodeproj/project.pbxproj b/tfrs-flutter/step5/frontend/macos/Runner.xcodeproj/project.pbxproj index 6a486aa6c1..839ce0a524 100644 --- a/tfrs-flutter/step5/frontend/macos/Runner.xcodeproj/project.pbxproj +++ b/tfrs-flutter/step5/frontend/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfrs-flutter/step5/frontend/pubspec.yaml b/tfrs-flutter/step5/frontend/pubspec.yaml index 7fe83729fe..1d1abc370f 100644 --- a/tfrs-flutter/step5/frontend/pubspec.yaml +++ b/tfrs-flutter/step5/frontend/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 + http: ^1.5.0 dev_dependencies: flutter_test: diff --git a/tfserving-flutter/codelab2/finished/.gemini/settings.json b/tfserving-flutter/codelab2/finished/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfserving-flutter/codelab2/finished/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfserving-flutter/codelab2/finished/.gitignore b/tfserving-flutter/codelab2/finished/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfserving-flutter/codelab2/finished/.gitignore +++ b/tfserving-flutter/codelab2/finished/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfserving-flutter/codelab2/finished/android/build.gradle.kts b/tfserving-flutter/codelab2/finished/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfserving-flutter/codelab2/finished/android/build.gradle.kts +++ b/tfserving-flutter/codelab2/finished/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfserving-flutter/codelab2/finished/android/settings.gradle.kts b/tfserving-flutter/codelab2/finished/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfserving-flutter/codelab2/finished/android/settings.gradle.kts +++ b/tfserving-flutter/codelab2/finished/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfserving-flutter/codelab2/finished/ios/Flutter/AppFrameworkInfo.plist b/tfserving-flutter/codelab2/finished/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfserving-flutter/codelab2/finished/ios/Flutter/AppFrameworkInfo.plist +++ b/tfserving-flutter/codelab2/finished/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfserving-flutter/codelab2/finished/ios/Runner.xcodeproj/project.pbxproj b/tfserving-flutter/codelab2/finished/ios/Runner.xcodeproj/project.pbxproj index 4ab8908f07..816e5989ef 100644 --- a/tfserving-flutter/codelab2/finished/ios/Runner.xcodeproj/project.pbxproj +++ b/tfserving-flutter/codelab2/finished/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfserving-flutter/codelab2/finished/lib/main.dart b/tfserving-flutter/codelab2/finished/lib/main.dart index 0fb19acc4c..7503dcf5d3 100644 --- a/tfserving-flutter/codelab2/finished/lib/main.dart +++ b/tfserving-flutter/codelab2/finished/lib/main.dart @@ -78,33 +78,29 @@ class _TFServingDemoState extends State { hintText: 'Enter a sentence here', ), ), - Column( - children: [ - ListTile( - title: const Text('gRPC'), - leading: Radio( - value: ConnectionModeType.grpc, - groupValue: _connectionMode, - onChanged: (value) { - setState(() { - _connectionMode = value; - }); - }, + RadioGroup( + groupValue: _connectionMode, + onChanged: (value) { + setState(() { + _connectionMode = value; + }); + }, + child: Column( + children: [ + ListTile( + title: const Text('gRPC'), + leading: Radio( + value: ConnectionModeType.grpc, + ), ), - ), - ListTile( - title: const Text('REST'), - leading: Radio( - value: ConnectionModeType.rest, - groupValue: _connectionMode, - onChanged: (value) { - setState(() { - _connectionMode = value; - }); - }, + ListTile( + title: const Text('REST'), + leading: Radio( + value: ConnectionModeType.rest, + ), ), - ), - ], + ], + ), ), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, diff --git a/tfserving-flutter/codelab2/finished/linux/runner/my_application.cc b/tfserving-flutter/codelab2/finished/linux/runner/my_application.cc index 7023dc9266..c110b9d370 100644 --- a/tfserving-flutter/codelab2/finished/linux/runner/my_application.cc +++ b/tfserving-flutter/codelab2/finished/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfserving-flutter/codelab2/finished/macos/Runner.xcodeproj/project.pbxproj b/tfserving-flutter/codelab2/finished/macos/Runner.xcodeproj/project.pbxproj index 50ec7a23a3..3d3c528d08 100644 --- a/tfserving-flutter/codelab2/finished/macos/Runner.xcodeproj/project.pbxproj +++ b/tfserving-flutter/codelab2/finished/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfserving-flutter/codelab2/finished/pubspec.yaml b/tfserving-flutter/codelab2/finished/pubspec.yaml index 8ab8b1b7e5..60d3f340ab 100644 --- a/tfserving-flutter/codelab2/finished/pubspec.yaml +++ b/tfserving-flutter/codelab2/finished/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,9 +34,9 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 - protobuf: ^4.0.0 - grpc: ^4.0.4 + http: ^1.5.0 + protobuf: ^4.1.1 + grpc: ^4.1.0 fixnum: ^1.1.1 dev_dependencies: diff --git a/tfserving-flutter/codelab2/starter/.gemini/settings.json b/tfserving-flutter/codelab2/starter/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tfserving-flutter/codelab2/starter/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/tfserving-flutter/codelab2/starter/.gitignore b/tfserving-flutter/codelab2/starter/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/tfserving-flutter/codelab2/starter/.gitignore +++ b/tfserving-flutter/codelab2/starter/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/tfserving-flutter/codelab2/starter/android/build.gradle.kts b/tfserving-flutter/codelab2/starter/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/tfserving-flutter/codelab2/starter/android/build.gradle.kts +++ b/tfserving-flutter/codelab2/starter/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/tfserving-flutter/codelab2/starter/android/settings.gradle.kts b/tfserving-flutter/codelab2/starter/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/tfserving-flutter/codelab2/starter/android/settings.gradle.kts +++ b/tfserving-flutter/codelab2/starter/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/tfserving-flutter/codelab2/starter/ios/Flutter/AppFrameworkInfo.plist b/tfserving-flutter/codelab2/starter/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/tfserving-flutter/codelab2/starter/ios/Flutter/AppFrameworkInfo.plist +++ b/tfserving-flutter/codelab2/starter/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/tfserving-flutter/codelab2/starter/ios/Runner.xcodeproj/project.pbxproj b/tfserving-flutter/codelab2/starter/ios/Runner.xcodeproj/project.pbxproj index 4ab8908f07..816e5989ef 100644 --- a/tfserving-flutter/codelab2/starter/ios/Runner.xcodeproj/project.pbxproj +++ b/tfserving-flutter/codelab2/starter/ios/Runner.xcodeproj/project.pbxproj @@ -346,7 +346,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -472,7 +472,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -523,7 +523,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/tfserving-flutter/codelab2/starter/lib/main.dart b/tfserving-flutter/codelab2/starter/lib/main.dart index 0ba1b1df07..7cc252d517 100644 --- a/tfserving-flutter/codelab2/starter/lib/main.dart +++ b/tfserving-flutter/codelab2/starter/lib/main.dart @@ -78,33 +78,29 @@ class _TFServingDemoState extends State { hintText: 'Enter a sentence here', ), ), - Column( - children: [ - ListTile( - title: const Text('gRPC'), - leading: Radio( - value: ConnectionModeType.grpc, - groupValue: _connectionMode, - onChanged: (value) { - setState(() { - _connectionMode = value; - }); - }, + RadioGroup( + groupValue: _connectionMode, + onChanged: (value) { + setState(() { + _connectionMode = value; + }); + }, + child: Column( + children: [ + ListTile( + title: const Text('gRPC'), + leading: Radio( + value: ConnectionModeType.grpc, + ), ), - ), - ListTile( - title: const Text('REST'), - leading: Radio( - value: ConnectionModeType.rest, - groupValue: _connectionMode, - onChanged: (value) { - setState(() { - _connectionMode = value; - }); - }, + ListTile( + title: const Text('REST'), + leading: Radio( + value: ConnectionModeType.rest, + ), ), - ), - ], + ], + ), ), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, diff --git a/tfserving-flutter/codelab2/starter/linux/runner/my_application.cc b/tfserving-flutter/codelab2/starter/linux/runner/my_application.cc index 7023dc9266..c110b9d370 100644 --- a/tfserving-flutter/codelab2/starter/linux/runner/my_application.cc +++ b/tfserving-flutter/codelab2/starter/linux/runner/my_application.cc @@ -14,6 +14,12 @@ struct _MyApplication { G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView *view) +{ + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + // Implements GApplication::activate. static void my_application_activate(GApplication* application) { MyApplication* self = MY_APPLICATION(application); @@ -48,15 +54,23 @@ static void my_application_activate(GApplication* application) { } gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); g_autoptr(FlDartProject) project = fl_dart_project_new(); fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); gtk_widget_show(GTK_WIDGET(view)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), self); + gtk_widget_realize(GTK_WIDGET(view)); + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); gtk_widget_grab_focus(GTK_WIDGET(view)); diff --git a/tfserving-flutter/codelab2/starter/macos/Runner.xcodeproj/project.pbxproj b/tfserving-flutter/codelab2/starter/macos/Runner.xcodeproj/project.pbxproj index 50ec7a23a3..3d3c528d08 100644 --- a/tfserving-flutter/codelab2/starter/macos/Runner.xcodeproj/project.pbxproj +++ b/tfserving-flutter/codelab2/starter/macos/Runner.xcodeproj/project.pbxproj @@ -461,7 +461,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -543,7 +543,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -593,7 +593,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/tfserving-flutter/codelab2/starter/pubspec.yaml b/tfserving-flutter/codelab2/starter/pubspec.yaml index 8ab8b1b7e5..60d3f340ab 100644 --- a/tfserving-flutter/codelab2/starter/pubspec.yaml +++ b/tfserving-flutter/codelab2/starter/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,9 +34,9 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - http: ^1.4.0 - protobuf: ^4.0.0 - grpc: ^4.0.4 + http: ^1.5.0 + protobuf: ^4.1.1 + grpc: ^4.1.0 fixnum: ^1.1.1 dev_dependencies: diff --git a/tfserving-flutter/codelab_rebuild.yaml b/tfserving-flutter/codelab_rebuild.yaml index a1943be248..070608e1f2 100644 --- a/tfserving-flutter/codelab_rebuild.yaml +++ b/tfserving-flutter/codelab_rebuild.yaml @@ -26,6 +26,21 @@ steps: - name: Add dependencies path: codelab2/tfserving_flutter flutter: pub add http protobuf grpc fixnum + - name: Add .gemini directory + mkdir: codelab2/tfserving_flutter/.gemini + - name: Add .gemini/settings.json + path: codelab2/tfserving_flutter/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Patch pubspec.yaml path: codelab2/tfserving_flutter/pubspec.yaml patch-u: | @@ -512,33 +527,29 @@ steps: hintText: 'Enter a sentence here', ), ), - Column( - children: [ - ListTile( - title: const Text('gRPC'), - leading: Radio( - value: ConnectionModeType.grpc, - groupValue: _connectionMode, - onChanged: (value) { - setState(() { - _connectionMode = value; - }); - }, + RadioGroup( + groupValue: _connectionMode, + onChanged: (value) { + setState(() { + _connectionMode = value; + }); + }, + child: Column( + children: [ + ListTile( + title: const Text('gRPC'), + leading: Radio( + value: ConnectionModeType.grpc, + ), ), - ), - ListTile( - title: const Text('REST'), - leading: Radio( - value: ConnectionModeType.rest, - groupValue: _connectionMode, - onChanged: (value) { - setState(() { - _connectionMode = value; - }); - }, + ListTile( + title: const Text('REST'), + leading: Radio( + value: ConnectionModeType.rest, + ), ), - ), - ], + ], + ), ), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, @@ -3893,7 +3904,6 @@ steps: // Unique auto-generated name of the object. string object_name = 2; } - - name: Mkdir lib/proto/generated path: codelab2/tfserving_flutter mkdir: lib/proto/generated @@ -3937,7 +3947,6 @@ steps: protoc: proto: ./tensorflow_serving/apis/classification.proto output: grpc:./generated - - name: Generate from ./tensorflow/core/framework/graph.proto path: codelab2/tfserving_flutter/lib/proto protoc: @@ -4033,7 +4042,6 @@ steps: protoc: proto: ./tensorflow/core/protobuf/saved_object_graph.proto output: grpc:./generated - - name: Generate from ./google/protobuf/any.proto path: codelab2/tfserving_flutter/lib/proto protoc: @@ -4044,11 +4052,9 @@ steps: protoc: proto: ./google/protobuf/wrappers.proto output: grpc:./generated - - name: Dart format path: codelab2/tfserving_flutter/lib/proto dart: format . - - name: Copy codelab2/starter copydir: from: codelab2/tfserving_flutter @@ -4075,16 +4081,12 @@ steps: linter: rules: - - name: Copy codelab2/finished - copydir: - from: codelab2/tfserving_flutter - to: codelab2/finished - name: Patch lib/main.dart - path: codelab2/finished/lib/main.dart + path: codelab2/tfserving_flutter/lib/main.dart patch-u: | --- b/tfserving-flutter/codelab2/finished/lib/main.dart +++ a/tfserving-flutter/codelab2/finished/lib/main.dart - @@ -164,21 +164,107 @@ class _TFServingDemoState extends State { + @@ -160,21 +160,107 @@ class _TFServingDemoState extends State { // For iOS emulator, desktop and web platforms _server = '127.0.0.1'; } @@ -4200,6 +4202,10 @@ steps: - return ''; } } + - name: Copy codelab2/finished + copydir: + from: codelab2/tfserving_flutter + to: codelab2/finished - name: Flutter clean path: codelab2/finished flutter: clean diff --git a/tooling/codelab_rebuild/.gemini/settings.json b/tooling/codelab_rebuild/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/tooling/codelab_rebuild/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/webview_flutter/codelab_rebuild.yaml b/webview_flutter/codelab_rebuild.yaml index 8eb0cd539d..c6b26adb3d 100644 --- a/webview_flutter/codelab_rebuild.yaml +++ b/webview_flutter/codelab_rebuild.yaml @@ -18,6 +18,21 @@ steps: include: ../../analysis_options.yaml - name: Remove README rm: webview_in_flutter/README.md + - name: Add .gemini directory + mkdir: webview_in_flutter/.gemini + - name: Add .gemini/settings.json + path: webview_in_flutter/.gemini/settings.json + replace-contents: | + { + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } + } - name: Add .vscode directory mkdir: webview_in_flutter/.vscode - name: Add .vscode/launch.json @@ -42,20 +57,6 @@ steps: - name: Add webview_flutter path: webview_in_flutter flutter: pub add webview_flutter - - name: Patch android/app/build.gradle.kts - path: webview_in_flutter/android/app/build.gradle.kts - patch-u: | - --- b/webview_flutter/step_03/android/app/build.gradle - +++ a/webview_flutter/step_03/android/app/build.gradle - @@ -24,7 +24,7 @@ android { - applicationId = "com.example.webview_in_flutter" - // You can update the following values to match your application needs. - // For more information, see: https://flutter.dev/to/review-gradle-config. - - minSdk = flutter.minSdkVersion - + minSdk = 21 - targetSdk = flutter.targetSdkVersion - versionCode = flutter.versionCode - versionName = flutter.versionName - name: Build iOS platforms: [ macos ] path: webview_in_flutter diff --git a/webview_flutter/step_03/.gemini/settings.json b/webview_flutter/step_03/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/webview_flutter/step_03/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/webview_flutter/step_03/.gitignore b/webview_flutter/step_03/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/webview_flutter/step_03/.gitignore +++ b/webview_flutter/step_03/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/webview_flutter/step_03/android/app/build.gradle.kts b/webview_flutter/step_03/android/app/build.gradle.kts index bab26ab815..7416862e99 100644 --- a/webview_flutter/step_03/android/app/build.gradle.kts +++ b/webview_flutter/step_03/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.webview_in_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 21 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/webview_flutter/step_03/android/build.gradle.kts b/webview_flutter/step_03/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/webview_flutter/step_03/android/build.gradle.kts +++ b/webview_flutter/step_03/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/webview_flutter/step_03/android/settings.gradle.kts b/webview_flutter/step_03/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/webview_flutter/step_03/android/settings.gradle.kts +++ b/webview_flutter/step_03/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/webview_flutter/step_03/ios/Flutter/AppFrameworkInfo.plist b/webview_flutter/step_03/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/webview_flutter/step_03/ios/Flutter/AppFrameworkInfo.plist +++ b/webview_flutter/step_03/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/webview_flutter/step_03/ios/Podfile b/webview_flutter/step_03/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/webview_flutter/step_03/ios/Podfile +++ b/webview_flutter/step_03/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/webview_flutter/step_03/ios/Runner.xcodeproj/project.pbxproj b/webview_flutter/step_03/ios/Runner.xcodeproj/project.pbxproj index 669206b10b..390c81ba9e 100644 --- a/webview_flutter/step_03/ios/Runner.xcodeproj/project.pbxproj +++ b/webview_flutter/step_03/ios/Runner.xcodeproj/project.pbxproj @@ -9,13 +9,13 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */; }; 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 */; }; - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */; }; - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,22 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0D83A426055D720DCD11E9C0 /* 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 = ""; }; + 09056B15828603B899F4EAF6 /* 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 = ""; }; 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 = ""; }; 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; }; + 338187346883D3F358158A03 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 53D1444FB6D415F5DD21C557 /* 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 = ""; }; - 7107CFEBCA5010CE880E76E1 /* 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 = ""; }; + 46BC9FF15C243B16E56DE6F5 /* 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 = ""; }; + 52CAE97B5F235A5B1905C1D9 /* 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 = ""; }; + 5B2140F68325EE9C1519611E /* 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 = ""; }; + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7C8E4F8CC56E3B02615DA2C4 /* 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 = ""; }; - 8A84731F213C3068B7BB775F /* 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 = ""; }; + 8C3A78F1CB953AF0ECF62555 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,24 +65,22 @@ 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 = ""; }; - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F3597EF8833267819742F62E /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 80059F29D9C4BFFD7B1C2347 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */, + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + D053B80C18A37F1A87319C1F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */, + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 732C6A1486B1B77DE80BAB1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */, - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - E456A85AB3B2035151056E8C /* Pods */, - 732C6A1486B1B77DE80BAB1C /* Frameworks */, + CAC6E5CAB70F9F95AC361A0A /* Pods */, + D1BF3108240FA4086275E93A /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +142,29 @@ path = Runner; sourceTree = ""; }; - E456A85AB3B2035151056E8C /* Pods */ = { + CAC6E5CAB70F9F95AC361A0A /* Pods */ = { isa = PBXGroup; children = ( - F3597EF8833267819742F62E /* Pods-Runner.debug.xcconfig */, - 0D83A426055D720DCD11E9C0 /* Pods-Runner.release.xcconfig */, - 53D1444FB6D415F5DD21C557 /* Pods-Runner.profile.xcconfig */, - 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */, - 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */, - 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */, + 338187346883D3F358158A03 /* Pods-Runner.debug.xcconfig */, + 5B2140F68325EE9C1519611E /* Pods-Runner.release.xcconfig */, + 09056B15828603B899F4EAF6 /* Pods-Runner.profile.xcconfig */, + 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */, + 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */, + 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; + D1BF3108240FA4086275E93A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */, + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7F43C78FD096D3BD84E14723 /* [CP] Check Pods Manifest.lock */, + DD380A48C4BF3F8AC9A16855 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 80059F29D9C4BFFD7B1C2347 /* Frameworks */, + D053B80C18A37F1A87319C1F /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */, + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */, + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,29 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 7F43C78FD096D3BD84E14723 /* [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-RunnerTests-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; - }; - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */ = { + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +323,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */ = { + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -362,6 +340,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + DD380A48C4BF3F8AC9A16855 /* [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-RunnerTests-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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/webview_flutter/step_03/pubspec.yaml b/webview_flutter/step_03/pubspec.yaml index a8f530746c..45b43d6642 100644 --- a/webview_flutter/step_03/pubspec.yaml +++ b/webview_flutter/step_03/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - webview_flutter: ^4.12.0 + webview_flutter: ^4.13.0 dev_dependencies: flutter_test: @@ -45,7 +45,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/webview_flutter/step_04/.gemini/settings.json b/webview_flutter/step_04/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/webview_flutter/step_04/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/webview_flutter/step_04/.gitignore b/webview_flutter/step_04/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/webview_flutter/step_04/.gitignore +++ b/webview_flutter/step_04/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/webview_flutter/step_04/android/app/build.gradle.kts b/webview_flutter/step_04/android/app/build.gradle.kts index bab26ab815..7416862e99 100644 --- a/webview_flutter/step_04/android/app/build.gradle.kts +++ b/webview_flutter/step_04/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.webview_in_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 21 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/webview_flutter/step_04/android/build.gradle.kts b/webview_flutter/step_04/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/webview_flutter/step_04/android/build.gradle.kts +++ b/webview_flutter/step_04/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/webview_flutter/step_04/android/settings.gradle.kts b/webview_flutter/step_04/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/webview_flutter/step_04/android/settings.gradle.kts +++ b/webview_flutter/step_04/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/webview_flutter/step_04/ios/Flutter/AppFrameworkInfo.plist b/webview_flutter/step_04/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/webview_flutter/step_04/ios/Flutter/AppFrameworkInfo.plist +++ b/webview_flutter/step_04/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/webview_flutter/step_04/ios/Podfile b/webview_flutter/step_04/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/webview_flutter/step_04/ios/Podfile +++ b/webview_flutter/step_04/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/webview_flutter/step_04/ios/Runner.xcodeproj/project.pbxproj b/webview_flutter/step_04/ios/Runner.xcodeproj/project.pbxproj index 669206b10b..390c81ba9e 100644 --- a/webview_flutter/step_04/ios/Runner.xcodeproj/project.pbxproj +++ b/webview_flutter/step_04/ios/Runner.xcodeproj/project.pbxproj @@ -9,13 +9,13 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */; }; 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 */; }; - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */; }; - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,22 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0D83A426055D720DCD11E9C0 /* 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 = ""; }; + 09056B15828603B899F4EAF6 /* 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 = ""; }; 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 = ""; }; 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; }; + 338187346883D3F358158A03 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 53D1444FB6D415F5DD21C557 /* 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 = ""; }; - 7107CFEBCA5010CE880E76E1 /* 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 = ""; }; + 46BC9FF15C243B16E56DE6F5 /* 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 = ""; }; + 52CAE97B5F235A5B1905C1D9 /* 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 = ""; }; + 5B2140F68325EE9C1519611E /* 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 = ""; }; + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7C8E4F8CC56E3B02615DA2C4 /* 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 = ""; }; - 8A84731F213C3068B7BB775F /* 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 = ""; }; + 8C3A78F1CB953AF0ECF62555 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,24 +65,22 @@ 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 = ""; }; - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F3597EF8833267819742F62E /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 80059F29D9C4BFFD7B1C2347 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */, + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + D053B80C18A37F1A87319C1F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */, + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 732C6A1486B1B77DE80BAB1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */, - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - E456A85AB3B2035151056E8C /* Pods */, - 732C6A1486B1B77DE80BAB1C /* Frameworks */, + CAC6E5CAB70F9F95AC361A0A /* Pods */, + D1BF3108240FA4086275E93A /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +142,29 @@ path = Runner; sourceTree = ""; }; - E456A85AB3B2035151056E8C /* Pods */ = { + CAC6E5CAB70F9F95AC361A0A /* Pods */ = { isa = PBXGroup; children = ( - F3597EF8833267819742F62E /* Pods-Runner.debug.xcconfig */, - 0D83A426055D720DCD11E9C0 /* Pods-Runner.release.xcconfig */, - 53D1444FB6D415F5DD21C557 /* Pods-Runner.profile.xcconfig */, - 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */, - 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */, - 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */, + 338187346883D3F358158A03 /* Pods-Runner.debug.xcconfig */, + 5B2140F68325EE9C1519611E /* Pods-Runner.release.xcconfig */, + 09056B15828603B899F4EAF6 /* Pods-Runner.profile.xcconfig */, + 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */, + 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */, + 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; + D1BF3108240FA4086275E93A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */, + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7F43C78FD096D3BD84E14723 /* [CP] Check Pods Manifest.lock */, + DD380A48C4BF3F8AC9A16855 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 80059F29D9C4BFFD7B1C2347 /* Frameworks */, + D053B80C18A37F1A87319C1F /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */, + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */, + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,29 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 7F43C78FD096D3BD84E14723 /* [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-RunnerTests-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; - }; - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */ = { + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +323,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */ = { + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -362,6 +340,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + DD380A48C4BF3F8AC9A16855 /* [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-RunnerTests-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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/webview_flutter/step_04/pubspec.yaml b/webview_flutter/step_04/pubspec.yaml index a8f530746c..45b43d6642 100644 --- a/webview_flutter/step_04/pubspec.yaml +++ b/webview_flutter/step_04/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - webview_flutter: ^4.12.0 + webview_flutter: ^4.13.0 dev_dependencies: flutter_test: @@ -45,7 +45,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/webview_flutter/step_05/.gemini/settings.json b/webview_flutter/step_05/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/webview_flutter/step_05/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/webview_flutter/step_05/.gitignore b/webview_flutter/step_05/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/webview_flutter/step_05/.gitignore +++ b/webview_flutter/step_05/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/webview_flutter/step_05/android/app/build.gradle.kts b/webview_flutter/step_05/android/app/build.gradle.kts index bab26ab815..7416862e99 100644 --- a/webview_flutter/step_05/android/app/build.gradle.kts +++ b/webview_flutter/step_05/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.webview_in_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 21 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/webview_flutter/step_05/android/build.gradle.kts b/webview_flutter/step_05/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/webview_flutter/step_05/android/build.gradle.kts +++ b/webview_flutter/step_05/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/webview_flutter/step_05/android/settings.gradle.kts b/webview_flutter/step_05/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/webview_flutter/step_05/android/settings.gradle.kts +++ b/webview_flutter/step_05/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/webview_flutter/step_05/ios/Flutter/AppFrameworkInfo.plist b/webview_flutter/step_05/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/webview_flutter/step_05/ios/Flutter/AppFrameworkInfo.plist +++ b/webview_flutter/step_05/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/webview_flutter/step_05/ios/Podfile b/webview_flutter/step_05/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/webview_flutter/step_05/ios/Podfile +++ b/webview_flutter/step_05/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/webview_flutter/step_05/ios/Runner.xcodeproj/project.pbxproj b/webview_flutter/step_05/ios/Runner.xcodeproj/project.pbxproj index 669206b10b..390c81ba9e 100644 --- a/webview_flutter/step_05/ios/Runner.xcodeproj/project.pbxproj +++ b/webview_flutter/step_05/ios/Runner.xcodeproj/project.pbxproj @@ -9,13 +9,13 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */; }; 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 */; }; - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */; }; - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,22 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0D83A426055D720DCD11E9C0 /* 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 = ""; }; + 09056B15828603B899F4EAF6 /* 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 = ""; }; 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 = ""; }; 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; }; + 338187346883D3F358158A03 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 53D1444FB6D415F5DD21C557 /* 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 = ""; }; - 7107CFEBCA5010CE880E76E1 /* 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 = ""; }; + 46BC9FF15C243B16E56DE6F5 /* 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 = ""; }; + 52CAE97B5F235A5B1905C1D9 /* 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 = ""; }; + 5B2140F68325EE9C1519611E /* 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 = ""; }; + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7C8E4F8CC56E3B02615DA2C4 /* 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 = ""; }; - 8A84731F213C3068B7BB775F /* 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 = ""; }; + 8C3A78F1CB953AF0ECF62555 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,24 +65,22 @@ 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 = ""; }; - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F3597EF8833267819742F62E /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 80059F29D9C4BFFD7B1C2347 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */, + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + D053B80C18A37F1A87319C1F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */, + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 732C6A1486B1B77DE80BAB1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */, - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - E456A85AB3B2035151056E8C /* Pods */, - 732C6A1486B1B77DE80BAB1C /* Frameworks */, + CAC6E5CAB70F9F95AC361A0A /* Pods */, + D1BF3108240FA4086275E93A /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +142,29 @@ path = Runner; sourceTree = ""; }; - E456A85AB3B2035151056E8C /* Pods */ = { + CAC6E5CAB70F9F95AC361A0A /* Pods */ = { isa = PBXGroup; children = ( - F3597EF8833267819742F62E /* Pods-Runner.debug.xcconfig */, - 0D83A426055D720DCD11E9C0 /* Pods-Runner.release.xcconfig */, - 53D1444FB6D415F5DD21C557 /* Pods-Runner.profile.xcconfig */, - 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */, - 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */, - 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */, + 338187346883D3F358158A03 /* Pods-Runner.debug.xcconfig */, + 5B2140F68325EE9C1519611E /* Pods-Runner.release.xcconfig */, + 09056B15828603B899F4EAF6 /* Pods-Runner.profile.xcconfig */, + 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */, + 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */, + 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; + D1BF3108240FA4086275E93A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */, + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7F43C78FD096D3BD84E14723 /* [CP] Check Pods Manifest.lock */, + DD380A48C4BF3F8AC9A16855 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 80059F29D9C4BFFD7B1C2347 /* Frameworks */, + D053B80C18A37F1A87319C1F /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */, + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */, + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,29 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 7F43C78FD096D3BD84E14723 /* [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-RunnerTests-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; - }; - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */ = { + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +323,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */ = { + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -362,6 +340,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + DD380A48C4BF3F8AC9A16855 /* [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-RunnerTests-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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/webview_flutter/step_05/pubspec.yaml b/webview_flutter/step_05/pubspec.yaml index a8f530746c..45b43d6642 100644 --- a/webview_flutter/step_05/pubspec.yaml +++ b/webview_flutter/step_05/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - webview_flutter: ^4.12.0 + webview_flutter: ^4.13.0 dev_dependencies: flutter_test: @@ -45,7 +45,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/webview_flutter/step_06/.gemini/settings.json b/webview_flutter/step_06/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/webview_flutter/step_06/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/webview_flutter/step_06/.gitignore b/webview_flutter/step_06/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/webview_flutter/step_06/.gitignore +++ b/webview_flutter/step_06/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/webview_flutter/step_06/android/app/build.gradle.kts b/webview_flutter/step_06/android/app/build.gradle.kts index bab26ab815..7416862e99 100644 --- a/webview_flutter/step_06/android/app/build.gradle.kts +++ b/webview_flutter/step_06/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.webview_in_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 21 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/webview_flutter/step_06/android/build.gradle.kts b/webview_flutter/step_06/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/webview_flutter/step_06/android/build.gradle.kts +++ b/webview_flutter/step_06/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/webview_flutter/step_06/android/settings.gradle.kts b/webview_flutter/step_06/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/webview_flutter/step_06/android/settings.gradle.kts +++ b/webview_flutter/step_06/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/webview_flutter/step_06/ios/Flutter/AppFrameworkInfo.plist b/webview_flutter/step_06/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/webview_flutter/step_06/ios/Flutter/AppFrameworkInfo.plist +++ b/webview_flutter/step_06/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/webview_flutter/step_06/ios/Podfile b/webview_flutter/step_06/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/webview_flutter/step_06/ios/Podfile +++ b/webview_flutter/step_06/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/webview_flutter/step_06/ios/Runner.xcodeproj/project.pbxproj b/webview_flutter/step_06/ios/Runner.xcodeproj/project.pbxproj index 669206b10b..390c81ba9e 100644 --- a/webview_flutter/step_06/ios/Runner.xcodeproj/project.pbxproj +++ b/webview_flutter/step_06/ios/Runner.xcodeproj/project.pbxproj @@ -9,13 +9,13 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */; }; 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 */; }; - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */; }; - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,22 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0D83A426055D720DCD11E9C0 /* 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 = ""; }; + 09056B15828603B899F4EAF6 /* 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 = ""; }; 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 = ""; }; 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; }; + 338187346883D3F358158A03 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 53D1444FB6D415F5DD21C557 /* 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 = ""; }; - 7107CFEBCA5010CE880E76E1 /* 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 = ""; }; + 46BC9FF15C243B16E56DE6F5 /* 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 = ""; }; + 52CAE97B5F235A5B1905C1D9 /* 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 = ""; }; + 5B2140F68325EE9C1519611E /* 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 = ""; }; + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7C8E4F8CC56E3B02615DA2C4 /* 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 = ""; }; - 8A84731F213C3068B7BB775F /* 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 = ""; }; + 8C3A78F1CB953AF0ECF62555 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,24 +65,22 @@ 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 = ""; }; - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F3597EF8833267819742F62E /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 80059F29D9C4BFFD7B1C2347 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */, + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + D053B80C18A37F1A87319C1F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */, + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 732C6A1486B1B77DE80BAB1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */, - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - E456A85AB3B2035151056E8C /* Pods */, - 732C6A1486B1B77DE80BAB1C /* Frameworks */, + CAC6E5CAB70F9F95AC361A0A /* Pods */, + D1BF3108240FA4086275E93A /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +142,29 @@ path = Runner; sourceTree = ""; }; - E456A85AB3B2035151056E8C /* Pods */ = { + CAC6E5CAB70F9F95AC361A0A /* Pods */ = { isa = PBXGroup; children = ( - F3597EF8833267819742F62E /* Pods-Runner.debug.xcconfig */, - 0D83A426055D720DCD11E9C0 /* Pods-Runner.release.xcconfig */, - 53D1444FB6D415F5DD21C557 /* Pods-Runner.profile.xcconfig */, - 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */, - 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */, - 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */, + 338187346883D3F358158A03 /* Pods-Runner.debug.xcconfig */, + 5B2140F68325EE9C1519611E /* Pods-Runner.release.xcconfig */, + 09056B15828603B899F4EAF6 /* Pods-Runner.profile.xcconfig */, + 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */, + 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */, + 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; + D1BF3108240FA4086275E93A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */, + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7F43C78FD096D3BD84E14723 /* [CP] Check Pods Manifest.lock */, + DD380A48C4BF3F8AC9A16855 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 80059F29D9C4BFFD7B1C2347 /* Frameworks */, + D053B80C18A37F1A87319C1F /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */, + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */, + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,29 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 7F43C78FD096D3BD84E14723 /* [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-RunnerTests-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; - }; - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */ = { + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +323,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */ = { + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -362,6 +340,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + DD380A48C4BF3F8AC9A16855 /* [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-RunnerTests-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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/webview_flutter/step_06/pubspec.yaml b/webview_flutter/step_06/pubspec.yaml index a8f530746c..45b43d6642 100644 --- a/webview_flutter/step_06/pubspec.yaml +++ b/webview_flutter/step_06/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - webview_flutter: ^4.12.0 + webview_flutter: ^4.13.0 dev_dependencies: flutter_test: @@ -45,7 +45,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/webview_flutter/step_07/.gemini/settings.json b/webview_flutter/step_07/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/webview_flutter/step_07/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/webview_flutter/step_07/.gitignore b/webview_flutter/step_07/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/webview_flutter/step_07/.gitignore +++ b/webview_flutter/step_07/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/webview_flutter/step_07/android/app/build.gradle.kts b/webview_flutter/step_07/android/app/build.gradle.kts index bab26ab815..7416862e99 100644 --- a/webview_flutter/step_07/android/app/build.gradle.kts +++ b/webview_flutter/step_07/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.webview_in_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 21 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/webview_flutter/step_07/android/build.gradle.kts b/webview_flutter/step_07/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/webview_flutter/step_07/android/build.gradle.kts +++ b/webview_flutter/step_07/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/webview_flutter/step_07/android/settings.gradle.kts b/webview_flutter/step_07/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/webview_flutter/step_07/android/settings.gradle.kts +++ b/webview_flutter/step_07/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/webview_flutter/step_07/ios/Flutter/AppFrameworkInfo.plist b/webview_flutter/step_07/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/webview_flutter/step_07/ios/Flutter/AppFrameworkInfo.plist +++ b/webview_flutter/step_07/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/webview_flutter/step_07/ios/Podfile b/webview_flutter/step_07/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/webview_flutter/step_07/ios/Podfile +++ b/webview_flutter/step_07/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/webview_flutter/step_07/ios/Runner.xcodeproj/project.pbxproj b/webview_flutter/step_07/ios/Runner.xcodeproj/project.pbxproj index 669206b10b..390c81ba9e 100644 --- a/webview_flutter/step_07/ios/Runner.xcodeproj/project.pbxproj +++ b/webview_flutter/step_07/ios/Runner.xcodeproj/project.pbxproj @@ -9,13 +9,13 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */; }; 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 */; }; - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */; }; - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,22 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0D83A426055D720DCD11E9C0 /* 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 = ""; }; + 09056B15828603B899F4EAF6 /* 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 = ""; }; 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 = ""; }; 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; }; + 338187346883D3F358158A03 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 53D1444FB6D415F5DD21C557 /* 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 = ""; }; - 7107CFEBCA5010CE880E76E1 /* 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 = ""; }; + 46BC9FF15C243B16E56DE6F5 /* 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 = ""; }; + 52CAE97B5F235A5B1905C1D9 /* 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 = ""; }; + 5B2140F68325EE9C1519611E /* 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 = ""; }; + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7C8E4F8CC56E3B02615DA2C4 /* 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 = ""; }; - 8A84731F213C3068B7BB775F /* 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 = ""; }; + 8C3A78F1CB953AF0ECF62555 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,24 +65,22 @@ 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 = ""; }; - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F3597EF8833267819742F62E /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 80059F29D9C4BFFD7B1C2347 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */, + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + D053B80C18A37F1A87319C1F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */, + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 732C6A1486B1B77DE80BAB1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */, - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - E456A85AB3B2035151056E8C /* Pods */, - 732C6A1486B1B77DE80BAB1C /* Frameworks */, + CAC6E5CAB70F9F95AC361A0A /* Pods */, + D1BF3108240FA4086275E93A /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +142,29 @@ path = Runner; sourceTree = ""; }; - E456A85AB3B2035151056E8C /* Pods */ = { + CAC6E5CAB70F9F95AC361A0A /* Pods */ = { isa = PBXGroup; children = ( - F3597EF8833267819742F62E /* Pods-Runner.debug.xcconfig */, - 0D83A426055D720DCD11E9C0 /* Pods-Runner.release.xcconfig */, - 53D1444FB6D415F5DD21C557 /* Pods-Runner.profile.xcconfig */, - 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */, - 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */, - 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */, + 338187346883D3F358158A03 /* Pods-Runner.debug.xcconfig */, + 5B2140F68325EE9C1519611E /* Pods-Runner.release.xcconfig */, + 09056B15828603B899F4EAF6 /* Pods-Runner.profile.xcconfig */, + 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */, + 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */, + 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; + D1BF3108240FA4086275E93A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */, + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7F43C78FD096D3BD84E14723 /* [CP] Check Pods Manifest.lock */, + DD380A48C4BF3F8AC9A16855 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 80059F29D9C4BFFD7B1C2347 /* Frameworks */, + D053B80C18A37F1A87319C1F /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */, + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */, + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,29 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 7F43C78FD096D3BD84E14723 /* [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-RunnerTests-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; - }; - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */ = { + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +323,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */ = { + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -362,6 +340,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + DD380A48C4BF3F8AC9A16855 /* [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-RunnerTests-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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/webview_flutter/step_07/pubspec.yaml b/webview_flutter/step_07/pubspec.yaml index a8f530746c..45b43d6642 100644 --- a/webview_flutter/step_07/pubspec.yaml +++ b/webview_flutter/step_07/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - webview_flutter: ^4.12.0 + webview_flutter: ^4.13.0 dev_dependencies: flutter_test: @@ -45,7 +45,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/webview_flutter/step_08/.gemini/settings.json b/webview_flutter/step_08/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/webview_flutter/step_08/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/webview_flutter/step_08/.gitignore b/webview_flutter/step_08/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/webview_flutter/step_08/.gitignore +++ b/webview_flutter/step_08/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/webview_flutter/step_08/android/app/build.gradle.kts b/webview_flutter/step_08/android/app/build.gradle.kts index bab26ab815..7416862e99 100644 --- a/webview_flutter/step_08/android/app/build.gradle.kts +++ b/webview_flutter/step_08/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.webview_in_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 21 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/webview_flutter/step_08/android/build.gradle.kts b/webview_flutter/step_08/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/webview_flutter/step_08/android/build.gradle.kts +++ b/webview_flutter/step_08/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/webview_flutter/step_08/android/settings.gradle.kts b/webview_flutter/step_08/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/webview_flutter/step_08/android/settings.gradle.kts +++ b/webview_flutter/step_08/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/webview_flutter/step_08/ios/Flutter/AppFrameworkInfo.plist b/webview_flutter/step_08/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/webview_flutter/step_08/ios/Flutter/AppFrameworkInfo.plist +++ b/webview_flutter/step_08/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/webview_flutter/step_08/ios/Podfile b/webview_flutter/step_08/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/webview_flutter/step_08/ios/Podfile +++ b/webview_flutter/step_08/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/webview_flutter/step_08/ios/Runner.xcodeproj/project.pbxproj b/webview_flutter/step_08/ios/Runner.xcodeproj/project.pbxproj index 669206b10b..390c81ba9e 100644 --- a/webview_flutter/step_08/ios/Runner.xcodeproj/project.pbxproj +++ b/webview_flutter/step_08/ios/Runner.xcodeproj/project.pbxproj @@ -9,13 +9,13 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */; }; 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 */; }; - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */; }; - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,22 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0D83A426055D720DCD11E9C0 /* 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 = ""; }; + 09056B15828603B899F4EAF6 /* 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 = ""; }; 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 = ""; }; 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; }; + 338187346883D3F358158A03 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 53D1444FB6D415F5DD21C557 /* 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 = ""; }; - 7107CFEBCA5010CE880E76E1 /* 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 = ""; }; + 46BC9FF15C243B16E56DE6F5 /* 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 = ""; }; + 52CAE97B5F235A5B1905C1D9 /* 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 = ""; }; + 5B2140F68325EE9C1519611E /* 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 = ""; }; + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7C8E4F8CC56E3B02615DA2C4 /* 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 = ""; }; - 8A84731F213C3068B7BB775F /* 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 = ""; }; + 8C3A78F1CB953AF0ECF62555 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,24 +65,22 @@ 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 = ""; }; - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F3597EF8833267819742F62E /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 80059F29D9C4BFFD7B1C2347 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */, + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + D053B80C18A37F1A87319C1F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */, + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 732C6A1486B1B77DE80BAB1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */, - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - E456A85AB3B2035151056E8C /* Pods */, - 732C6A1486B1B77DE80BAB1C /* Frameworks */, + CAC6E5CAB70F9F95AC361A0A /* Pods */, + D1BF3108240FA4086275E93A /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +142,29 @@ path = Runner; sourceTree = ""; }; - E456A85AB3B2035151056E8C /* Pods */ = { + CAC6E5CAB70F9F95AC361A0A /* Pods */ = { isa = PBXGroup; children = ( - F3597EF8833267819742F62E /* Pods-Runner.debug.xcconfig */, - 0D83A426055D720DCD11E9C0 /* Pods-Runner.release.xcconfig */, - 53D1444FB6D415F5DD21C557 /* Pods-Runner.profile.xcconfig */, - 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */, - 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */, - 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */, + 338187346883D3F358158A03 /* Pods-Runner.debug.xcconfig */, + 5B2140F68325EE9C1519611E /* Pods-Runner.release.xcconfig */, + 09056B15828603B899F4EAF6 /* Pods-Runner.profile.xcconfig */, + 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */, + 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */, + 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; + D1BF3108240FA4086275E93A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */, + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7F43C78FD096D3BD84E14723 /* [CP] Check Pods Manifest.lock */, + DD380A48C4BF3F8AC9A16855 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 80059F29D9C4BFFD7B1C2347 /* Frameworks */, + D053B80C18A37F1A87319C1F /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */, + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */, + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,29 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 7F43C78FD096D3BD84E14723 /* [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-RunnerTests-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; - }; - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */ = { + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +323,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */ = { + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -362,6 +340,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + DD380A48C4BF3F8AC9A16855 /* [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-RunnerTests-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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/webview_flutter/step_08/pubspec.yaml b/webview_flutter/step_08/pubspec.yaml index a8f530746c..45b43d6642 100644 --- a/webview_flutter/step_08/pubspec.yaml +++ b/webview_flutter/step_08/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - webview_flutter: ^4.12.0 + webview_flutter: ^4.13.0 dev_dependencies: flutter_test: @@ -45,7 +45,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/webview_flutter/step_09/.gemini/settings.json b/webview_flutter/step_09/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/webview_flutter/step_09/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/webview_flutter/step_09/.gitignore b/webview_flutter/step_09/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/webview_flutter/step_09/.gitignore +++ b/webview_flutter/step_09/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/webview_flutter/step_09/android/app/build.gradle.kts b/webview_flutter/step_09/android/app/build.gradle.kts index bab26ab815..7416862e99 100644 --- a/webview_flutter/step_09/android/app/build.gradle.kts +++ b/webview_flutter/step_09/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.webview_in_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 21 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/webview_flutter/step_09/android/build.gradle.kts b/webview_flutter/step_09/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/webview_flutter/step_09/android/build.gradle.kts +++ b/webview_flutter/step_09/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/webview_flutter/step_09/android/settings.gradle.kts b/webview_flutter/step_09/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/webview_flutter/step_09/android/settings.gradle.kts +++ b/webview_flutter/step_09/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/webview_flutter/step_09/ios/Flutter/AppFrameworkInfo.plist b/webview_flutter/step_09/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/webview_flutter/step_09/ios/Flutter/AppFrameworkInfo.plist +++ b/webview_flutter/step_09/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/webview_flutter/step_09/ios/Podfile b/webview_flutter/step_09/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/webview_flutter/step_09/ios/Podfile +++ b/webview_flutter/step_09/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/webview_flutter/step_09/ios/Runner.xcodeproj/project.pbxproj b/webview_flutter/step_09/ios/Runner.xcodeproj/project.pbxproj index 669206b10b..390c81ba9e 100644 --- a/webview_flutter/step_09/ios/Runner.xcodeproj/project.pbxproj +++ b/webview_flutter/step_09/ios/Runner.xcodeproj/project.pbxproj @@ -9,13 +9,13 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */; }; 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 */; }; - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */; }; - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,22 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0D83A426055D720DCD11E9C0 /* 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 = ""; }; + 09056B15828603B899F4EAF6 /* 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 = ""; }; 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 = ""; }; 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; }; + 338187346883D3F358158A03 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 53D1444FB6D415F5DD21C557 /* 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 = ""; }; - 7107CFEBCA5010CE880E76E1 /* 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 = ""; }; + 46BC9FF15C243B16E56DE6F5 /* 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 = ""; }; + 52CAE97B5F235A5B1905C1D9 /* 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 = ""; }; + 5B2140F68325EE9C1519611E /* 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 = ""; }; + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7C8E4F8CC56E3B02615DA2C4 /* 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 = ""; }; - 8A84731F213C3068B7BB775F /* 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 = ""; }; + 8C3A78F1CB953AF0ECF62555 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,24 +65,22 @@ 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 = ""; }; - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F3597EF8833267819742F62E /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 80059F29D9C4BFFD7B1C2347 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */, + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + D053B80C18A37F1A87319C1F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */, + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 732C6A1486B1B77DE80BAB1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */, - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - E456A85AB3B2035151056E8C /* Pods */, - 732C6A1486B1B77DE80BAB1C /* Frameworks */, + CAC6E5CAB70F9F95AC361A0A /* Pods */, + D1BF3108240FA4086275E93A /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +142,29 @@ path = Runner; sourceTree = ""; }; - E456A85AB3B2035151056E8C /* Pods */ = { + CAC6E5CAB70F9F95AC361A0A /* Pods */ = { isa = PBXGroup; children = ( - F3597EF8833267819742F62E /* Pods-Runner.debug.xcconfig */, - 0D83A426055D720DCD11E9C0 /* Pods-Runner.release.xcconfig */, - 53D1444FB6D415F5DD21C557 /* Pods-Runner.profile.xcconfig */, - 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */, - 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */, - 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */, + 338187346883D3F358158A03 /* Pods-Runner.debug.xcconfig */, + 5B2140F68325EE9C1519611E /* Pods-Runner.release.xcconfig */, + 09056B15828603B899F4EAF6 /* Pods-Runner.profile.xcconfig */, + 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */, + 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */, + 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; + D1BF3108240FA4086275E93A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */, + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7F43C78FD096D3BD84E14723 /* [CP] Check Pods Manifest.lock */, + DD380A48C4BF3F8AC9A16855 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 80059F29D9C4BFFD7B1C2347 /* Frameworks */, + D053B80C18A37F1A87319C1F /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */, + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */, + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,29 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 7F43C78FD096D3BD84E14723 /* [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-RunnerTests-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; - }; - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */ = { + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +323,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */ = { + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -362,6 +340,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + DD380A48C4BF3F8AC9A16855 /* [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-RunnerTests-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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/webview_flutter/step_09/pubspec.yaml b/webview_flutter/step_09/pubspec.yaml index a8f530746c..45b43d6642 100644 --- a/webview_flutter/step_09/pubspec.yaml +++ b/webview_flutter/step_09/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - webview_flutter: ^4.12.0 + webview_flutter: ^4.13.0 dev_dependencies: flutter_test: @@ -45,7 +45,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/webview_flutter/step_10/.gemini/settings.json b/webview_flutter/step_10/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/webview_flutter/step_10/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/webview_flutter/step_10/.gitignore b/webview_flutter/step_10/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/webview_flutter/step_10/.gitignore +++ b/webview_flutter/step_10/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/webview_flutter/step_10/android/app/build.gradle.kts b/webview_flutter/step_10/android/app/build.gradle.kts index bab26ab815..7416862e99 100644 --- a/webview_flutter/step_10/android/app/build.gradle.kts +++ b/webview_flutter/step_10/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.webview_in_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 21 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/webview_flutter/step_10/android/build.gradle.kts b/webview_flutter/step_10/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/webview_flutter/step_10/android/build.gradle.kts +++ b/webview_flutter/step_10/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/webview_flutter/step_10/android/settings.gradle.kts b/webview_flutter/step_10/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/webview_flutter/step_10/android/settings.gradle.kts +++ b/webview_flutter/step_10/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/webview_flutter/step_10/ios/Flutter/AppFrameworkInfo.plist b/webview_flutter/step_10/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/webview_flutter/step_10/ios/Flutter/AppFrameworkInfo.plist +++ b/webview_flutter/step_10/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/webview_flutter/step_10/ios/Podfile b/webview_flutter/step_10/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/webview_flutter/step_10/ios/Podfile +++ b/webview_flutter/step_10/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/webview_flutter/step_10/ios/Runner.xcodeproj/project.pbxproj b/webview_flutter/step_10/ios/Runner.xcodeproj/project.pbxproj index 669206b10b..390c81ba9e 100644 --- a/webview_flutter/step_10/ios/Runner.xcodeproj/project.pbxproj +++ b/webview_flutter/step_10/ios/Runner.xcodeproj/project.pbxproj @@ -9,13 +9,13 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */; }; 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 */; }; - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */; }; - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,22 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0D83A426055D720DCD11E9C0 /* 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 = ""; }; + 09056B15828603B899F4EAF6 /* 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 = ""; }; 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 = ""; }; 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; }; + 338187346883D3F358158A03 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 53D1444FB6D415F5DD21C557 /* 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 = ""; }; - 7107CFEBCA5010CE880E76E1 /* 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 = ""; }; + 46BC9FF15C243B16E56DE6F5 /* 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 = ""; }; + 52CAE97B5F235A5B1905C1D9 /* 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 = ""; }; + 5B2140F68325EE9C1519611E /* 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 = ""; }; + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7C8E4F8CC56E3B02615DA2C4 /* 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 = ""; }; - 8A84731F213C3068B7BB775F /* 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 = ""; }; + 8C3A78F1CB953AF0ECF62555 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,24 +65,22 @@ 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 = ""; }; - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F3597EF8833267819742F62E /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 80059F29D9C4BFFD7B1C2347 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */, + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + D053B80C18A37F1A87319C1F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */, + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 732C6A1486B1B77DE80BAB1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */, - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - E456A85AB3B2035151056E8C /* Pods */, - 732C6A1486B1B77DE80BAB1C /* Frameworks */, + CAC6E5CAB70F9F95AC361A0A /* Pods */, + D1BF3108240FA4086275E93A /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +142,29 @@ path = Runner; sourceTree = ""; }; - E456A85AB3B2035151056E8C /* Pods */ = { + CAC6E5CAB70F9F95AC361A0A /* Pods */ = { isa = PBXGroup; children = ( - F3597EF8833267819742F62E /* Pods-Runner.debug.xcconfig */, - 0D83A426055D720DCD11E9C0 /* Pods-Runner.release.xcconfig */, - 53D1444FB6D415F5DD21C557 /* Pods-Runner.profile.xcconfig */, - 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */, - 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */, - 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */, + 338187346883D3F358158A03 /* Pods-Runner.debug.xcconfig */, + 5B2140F68325EE9C1519611E /* Pods-Runner.release.xcconfig */, + 09056B15828603B899F4EAF6 /* Pods-Runner.profile.xcconfig */, + 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */, + 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */, + 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; + D1BF3108240FA4086275E93A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */, + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7F43C78FD096D3BD84E14723 /* [CP] Check Pods Manifest.lock */, + DD380A48C4BF3F8AC9A16855 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 80059F29D9C4BFFD7B1C2347 /* Frameworks */, + D053B80C18A37F1A87319C1F /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */, + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */, + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,29 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 7F43C78FD096D3BD84E14723 /* [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-RunnerTests-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; - }; - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */ = { + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +323,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */ = { + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -362,6 +340,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + DD380A48C4BF3F8AC9A16855 /* [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-RunnerTests-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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/webview_flutter/step_10/pubspec.yaml b/webview_flutter/step_10/pubspec.yaml index a8f530746c..45b43d6642 100644 --- a/webview_flutter/step_10/pubspec.yaml +++ b/webview_flutter/step_10/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - webview_flutter: ^4.12.0 + webview_flutter: ^4.13.0 dev_dependencies: flutter_test: @@ -45,7 +45,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/webview_flutter/step_11/.gemini/settings.json b/webview_flutter/step_11/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/webview_flutter/step_11/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/webview_flutter/step_11/.gitignore b/webview_flutter/step_11/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/webview_flutter/step_11/.gitignore +++ b/webview_flutter/step_11/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/webview_flutter/step_11/android/app/build.gradle.kts b/webview_flutter/step_11/android/app/build.gradle.kts index bab26ab815..7416862e99 100644 --- a/webview_flutter/step_11/android/app/build.gradle.kts +++ b/webview_flutter/step_11/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.webview_in_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 21 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/webview_flutter/step_11/android/build.gradle.kts b/webview_flutter/step_11/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/webview_flutter/step_11/android/build.gradle.kts +++ b/webview_flutter/step_11/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/webview_flutter/step_11/android/settings.gradle.kts b/webview_flutter/step_11/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/webview_flutter/step_11/android/settings.gradle.kts +++ b/webview_flutter/step_11/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/webview_flutter/step_11/ios/Flutter/AppFrameworkInfo.plist b/webview_flutter/step_11/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/webview_flutter/step_11/ios/Flutter/AppFrameworkInfo.plist +++ b/webview_flutter/step_11/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/webview_flutter/step_11/ios/Podfile b/webview_flutter/step_11/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/webview_flutter/step_11/ios/Podfile +++ b/webview_flutter/step_11/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/webview_flutter/step_11/ios/Runner.xcodeproj/project.pbxproj b/webview_flutter/step_11/ios/Runner.xcodeproj/project.pbxproj index 669206b10b..390c81ba9e 100644 --- a/webview_flutter/step_11/ios/Runner.xcodeproj/project.pbxproj +++ b/webview_flutter/step_11/ios/Runner.xcodeproj/project.pbxproj @@ -9,13 +9,13 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */; }; 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 */; }; - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */; }; - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,22 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0D83A426055D720DCD11E9C0 /* 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 = ""; }; + 09056B15828603B899F4EAF6 /* 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 = ""; }; 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 = ""; }; 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; }; + 338187346883D3F358158A03 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 53D1444FB6D415F5DD21C557 /* 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 = ""; }; - 7107CFEBCA5010CE880E76E1 /* 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 = ""; }; + 46BC9FF15C243B16E56DE6F5 /* 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 = ""; }; + 52CAE97B5F235A5B1905C1D9 /* 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 = ""; }; + 5B2140F68325EE9C1519611E /* 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 = ""; }; + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7C8E4F8CC56E3B02615DA2C4 /* 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 = ""; }; - 8A84731F213C3068B7BB775F /* 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 = ""; }; + 8C3A78F1CB953AF0ECF62555 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,24 +65,22 @@ 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 = ""; }; - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F3597EF8833267819742F62E /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 80059F29D9C4BFFD7B1C2347 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */, + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + D053B80C18A37F1A87319C1F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */, + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 732C6A1486B1B77DE80BAB1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */, - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - E456A85AB3B2035151056E8C /* Pods */, - 732C6A1486B1B77DE80BAB1C /* Frameworks */, + CAC6E5CAB70F9F95AC361A0A /* Pods */, + D1BF3108240FA4086275E93A /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +142,29 @@ path = Runner; sourceTree = ""; }; - E456A85AB3B2035151056E8C /* Pods */ = { + CAC6E5CAB70F9F95AC361A0A /* Pods */ = { isa = PBXGroup; children = ( - F3597EF8833267819742F62E /* Pods-Runner.debug.xcconfig */, - 0D83A426055D720DCD11E9C0 /* Pods-Runner.release.xcconfig */, - 53D1444FB6D415F5DD21C557 /* Pods-Runner.profile.xcconfig */, - 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */, - 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */, - 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */, + 338187346883D3F358158A03 /* Pods-Runner.debug.xcconfig */, + 5B2140F68325EE9C1519611E /* Pods-Runner.release.xcconfig */, + 09056B15828603B899F4EAF6 /* Pods-Runner.profile.xcconfig */, + 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */, + 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */, + 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; + D1BF3108240FA4086275E93A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */, + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7F43C78FD096D3BD84E14723 /* [CP] Check Pods Manifest.lock */, + DD380A48C4BF3F8AC9A16855 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 80059F29D9C4BFFD7B1C2347 /* Frameworks */, + D053B80C18A37F1A87319C1F /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */, + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */, + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,29 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 7F43C78FD096D3BD84E14723 /* [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-RunnerTests-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; - }; - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */ = { + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +323,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */ = { + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -362,6 +340,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + DD380A48C4BF3F8AC9A16855 /* [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-RunnerTests-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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/webview_flutter/step_11/pubspec.yaml b/webview_flutter/step_11/pubspec.yaml index a8f530746c..45b43d6642 100644 --- a/webview_flutter/step_11/pubspec.yaml +++ b/webview_flutter/step_11/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - webview_flutter: ^4.12.0 + webview_flutter: ^4.13.0 dev_dependencies: flutter_test: @@ -45,7 +45,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/webview_flutter/step_12/.gemini/settings.json b/webview_flutter/step_12/.gemini/settings.json new file mode 100644 index 0000000000..a35b8a7ef4 --- /dev/null +++ b/webview_flutter/step_12/.gemini/settings.json @@ -0,0 +1,10 @@ +{ + "mcpServers": { + "dart": { + "command": "dart", + "args": [ + "mcp-server" + ] + } + } +} diff --git a/webview_flutter/step_12/.gitignore b/webview_flutter/step_12/.gitignore index 79c113f9b5..3820a95c65 100644 --- a/webview_flutter/step_12/.gitignore +++ b/webview_flutter/step_12/.gitignore @@ -27,11 +27,11 @@ migrate_working_dir/ **/doc/api/ **/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins .flutter-plugins-dependencies .pub-cache/ .pub/ /build/ +/coverage/ # Symbolication related app.*.symbols diff --git a/webview_flutter/step_12/android/app/build.gradle.kts b/webview_flutter/step_12/android/app/build.gradle.kts index bab26ab815..7416862e99 100644 --- a/webview_flutter/step_12/android/app/build.gradle.kts +++ b/webview_flutter/step_12/android/app/build.gradle.kts @@ -24,7 +24,7 @@ android { applicationId = "com.example.webview_in_flutter" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. - minSdk = 21 + minSdk = flutter.minSdkVersion targetSdk = flutter.targetSdkVersion versionCode = flutter.versionCode versionName = flutter.versionName diff --git a/webview_flutter/step_12/android/build.gradle.kts b/webview_flutter/step_12/android/build.gradle.kts index 89176ef44e..dbee657bb5 100644 --- a/webview_flutter/step_12/android/build.gradle.kts +++ b/webview_flutter/step_12/android/build.gradle.kts @@ -5,7 +5,10 @@ allprojects { } } -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() rootProject.layout.buildDirectory.value(newBuildDir) subprojects { diff --git a/webview_flutter/step_12/android/settings.gradle.kts b/webview_flutter/step_12/android/settings.gradle.kts index ab39a10a29..fb605bc840 100644 --- a/webview_flutter/step_12/android/settings.gradle.kts +++ b/webview_flutter/step_12/android/settings.gradle.kts @@ -1,11 +1,12 @@ pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") @@ -18,7 +19,7 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false + id("com.android.application") version "8.9.1" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false } diff --git a/webview_flutter/step_12/ios/Flutter/AppFrameworkInfo.plist b/webview_flutter/step_12/ios/Flutter/AppFrameworkInfo.plist index 7c56964006..1dc6cf7652 100644 --- a/webview_flutter/step_12/ios/Flutter/AppFrameworkInfo.plist +++ b/webview_flutter/step_12/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/webview_flutter/step_12/ios/Podfile b/webview_flutter/step_12/ios/Podfile index e549ee22f3..620e46eba6 100644 --- a/webview_flutter/step_12/ios/Podfile +++ b/webview_flutter/step_12/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '12.0' +# platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/webview_flutter/step_12/ios/Runner.xcodeproj/project.pbxproj b/webview_flutter/step_12/ios/Runner.xcodeproj/project.pbxproj index 669206b10b..390c81ba9e 100644 --- a/webview_flutter/step_12/ios/Runner.xcodeproj/project.pbxproj +++ b/webview_flutter/step_12/ios/Runner.xcodeproj/project.pbxproj @@ -9,13 +9,13 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */; }; 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 */; }; - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */; }; - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,20 +42,22 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0D83A426055D720DCD11E9C0 /* 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 = ""; }; + 09056B15828603B899F4EAF6 /* 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 = ""; }; 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 = ""; }; 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; }; + 338187346883D3F358158A03 /* 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 = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 53D1444FB6D415F5DD21C557 /* 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 = ""; }; - 7107CFEBCA5010CE880E76E1 /* 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 = ""; }; + 46BC9FF15C243B16E56DE6F5 /* 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 = ""; }; + 52CAE97B5F235A5B1905C1D9 /* 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 = ""; }; + 5B2140F68325EE9C1519611E /* 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 = ""; }; + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 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 = ""; }; + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7C8E4F8CC56E3B02615DA2C4 /* 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 = ""; }; - 8A84731F213C3068B7BB775F /* 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 = ""; }; + 8C3A78F1CB953AF0ECF62555 /* 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 = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,24 +65,22 @@ 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 = ""; }; - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F3597EF8833267819742F62E /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 80059F29D9C4BFFD7B1C2347 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 98F5ABF630C6BC13E7CCE882 /* Pods_RunnerTests.framework in Frameworks */, + 718245E362421E39D52FA3AB /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + D053B80C18A37F1A87319C1F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D41C31C295F56B7ECBC188AD /* Pods_Runner.framework in Frameworks */, + 37F5C73A747B0EC9360BB379 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -95,15 +95,6 @@ path = RunnerTests; sourceTree = ""; }; - 732C6A1486B1B77DE80BAB1C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 0AB9D1CF369F6A5E07B81D7A /* Pods_Runner.framework */, - A806F8D3C55E684CBA5AD8A7 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -122,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - E456A85AB3B2035151056E8C /* Pods */, - 732C6A1486B1B77DE80BAB1C /* Frameworks */, + CAC6E5CAB70F9F95AC361A0A /* Pods */, + D1BF3108240FA4086275E93A /* Frameworks */, ); sourceTree = ""; }; @@ -151,20 +142,29 @@ path = Runner; sourceTree = ""; }; - E456A85AB3B2035151056E8C /* Pods */ = { + CAC6E5CAB70F9F95AC361A0A /* Pods */ = { isa = PBXGroup; children = ( - F3597EF8833267819742F62E /* Pods-Runner.debug.xcconfig */, - 0D83A426055D720DCD11E9C0 /* Pods-Runner.release.xcconfig */, - 53D1444FB6D415F5DD21C557 /* Pods-Runner.profile.xcconfig */, - 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */, - 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */, - 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */, + 338187346883D3F358158A03 /* Pods-Runner.debug.xcconfig */, + 5B2140F68325EE9C1519611E /* Pods-Runner.release.xcconfig */, + 09056B15828603B899F4EAF6 /* Pods-Runner.profile.xcconfig */, + 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */, + 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */, + 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */, ); name = Pods; path = Pods; sourceTree = ""; }; + D1BF3108240FA4086275E93A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7856128C2DC9FDAE5630F85B /* Pods_Runner.framework */, + 6CF8B64479AD29726734B710 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7F43C78FD096D3BD84E14723 /* [CP] Check Pods Manifest.lock */, + DD380A48C4BF3F8AC9A16855 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 80059F29D9C4BFFD7B1C2347 /* Frameworks */, + D053B80C18A37F1A87319C1F /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */, + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */, + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -286,29 +286,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 7F43C78FD096D3BD84E14723 /* [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-RunnerTests-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; - }; - 7F7401B092E3898C2AE187F4 /* [CP] Check Pods Manifest.lock */ = { + 80DFBCC9144A4818507C38C8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -345,7 +323,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D27C408BDF56932CAA147251 /* [CP] Embed Pods Frameworks */ = { + AB1CF9F8B8A32CC293F003AE /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -362,6 +340,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + DD380A48C4BF3F8AC9A16855 /* [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-RunnerTests-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; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -455,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -487,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7C8E4F8CC56E3B02615DA2C4 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 8C3A78F1CB953AF0ECF62555 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -505,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7107CFEBCA5010CE880E76E1 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 46BC9FF15C243B16E56DE6F5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -521,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A84731F213C3068B7BB775F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 52CAE97B5F235A5B1905C1D9 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -584,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -635,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/webview_flutter/step_12/pubspec.yaml b/webview_flutter/step_12/pubspec.yaml index 4081edf3a6..42b82cd284 100644 --- a/webview_flutter/step_12/pubspec.yaml +++ b/webview_flutter/step_12/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.8.0 + sdk: ^3.9.0-0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -34,7 +34,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - webview_flutter: ^4.12.0 + webview_flutter: ^4.13.0 path_provider: ^2.1.5 dev_dependencies: @@ -46,7 +46,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec