From 3ba1bac51eab70746c17edd4aa7c0aa94cfa19da Mon Sep 17 00:00:00 2001 From: Brett Morgan <brett.morgan@gmail.com> Date: Wed, 10 Aug 2022 06:48:18 +1000 Subject: [PATCH] `infinite_list` rebuild script (#1361) --- infinite_list/.metadata | 39 +- infinite_list/android/app/build.gradle | 3 + .../android/app/src/debug/AndroidManifest.xml | 3 +- .../app/src/main/res/values-night/styles.xml | 2 +- .../app/src/main/res/values/styles.xml | 2 +- .../app/src/profile/AndroidManifest.xml | 3 +- infinite_list/android/build.gradle | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- infinite_list/codelab_rebuild.yaml | 52 ++ infinite_list/ios/.gitignore | 1 + .../ios/Flutter/AppFrameworkInfo.plist | 2 +- .../ios/Runner.xcodeproj/project.pbxproj | 72 +- .../xcshareddata/xcschemes/Runner.xcscheme | 10 +- .../contents.xcworkspacedata | 3 + infinite_list/ios/Runner/Info.plist | 4 + infinite_list/linux/CMakeLists.txt | 36 +- infinite_list/linux/flutter/CMakeLists.txt | 1 + infinite_list/macos/.gitignore | 7 + .../macos/Flutter/Flutter-Debug.xcconfig | 2 + .../macos/Flutter/Flutter-Release.xcconfig | 2 + .../Flutter/GeneratedPluginRegistrant.swift | 12 + infinite_list/macos/Podfile | 40 ++ .../macos/Runner.xcodeproj/project.pbxproj | 632 ++++++++++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 +++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + infinite_list/macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 ++ .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 46993 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 3276 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 1429 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 5933 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1243 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 14800 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 1874 bytes .../macos/Runner/Base.lproj/MainMenu.xib | 343 ++++++++++ .../macos/Runner/Configs/AppInfo.xcconfig | 14 + .../macos/Runner/Configs/Debug.xcconfig | 2 + .../macos/Runner/Configs/Release.xcconfig | 2 + .../macos/Runner/Configs/Warnings.xcconfig | 13 + .../macos/Runner/DebugProfile.entitlements | 16 + infinite_list/macos/Runner/Info.plist | 32 + .../macos/Runner/MainFlutterWindow.swift | 15 + .../macos/Runner/Release.entitlements | 12 + infinite_list/web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes infinite_list/web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes infinite_list/web/index.html | 94 +-- infinite_list/web/manifest.json | 12 + infinite_list/windows/CMakeLists.txt | 20 +- infinite_list/windows/flutter/CMakeLists.txt | 1 + infinite_list/windows/runner/CMakeLists.txt | 15 + infinite_list/windows/runner/utils.cpp | 6 +- 53 files changed, 1610 insertions(+), 109 deletions(-) create mode 100644 infinite_list/codelab_rebuild.yaml create mode 100644 infinite_list/macos/.gitignore create mode 100644 infinite_list/macos/Flutter/Flutter-Debug.xcconfig create mode 100644 infinite_list/macos/Flutter/Flutter-Release.xcconfig create mode 100644 infinite_list/macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 infinite_list/macos/Podfile create mode 100644 infinite_list/macos/Runner.xcodeproj/project.pbxproj create mode 100644 infinite_list/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 infinite_list/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 infinite_list/macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 infinite_list/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 infinite_list/macos/Runner/AppDelegate.swift create mode 100644 infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 infinite_list/macos/Runner/Base.lproj/MainMenu.xib create mode 100644 infinite_list/macos/Runner/Configs/AppInfo.xcconfig create mode 100644 infinite_list/macos/Runner/Configs/Debug.xcconfig create mode 100644 infinite_list/macos/Runner/Configs/Release.xcconfig create mode 100644 infinite_list/macos/Runner/Configs/Warnings.xcconfig create mode 100644 infinite_list/macos/Runner/DebugProfile.entitlements create mode 100644 infinite_list/macos/Runner/Info.plist create mode 100644 infinite_list/macos/Runner/MainFlutterWindow.swift create mode 100644 infinite_list/macos/Runner/Release.entitlements create mode 100644 infinite_list/web/icons/Icon-maskable-192.png create mode 100644 infinite_list/web/icons/Icon-maskable-512.png diff --git a/infinite_list/.metadata b/infinite_list/.metadata index 182cccafd..39f2501e1 100644 --- a/infinite_list/.metadata +++ b/infinite_list/.metadata @@ -1,10 +1,45 @@ # This file tracks properties of this Flutter project. # Used by Flutter tool to assess capabilities and perform upgrades etc. # -# This file should be version controlled and should not be manually edited. +# This file should be version controlled. version: - revision: 78910062997c3a836feee883712c241a5fd22983 + revision: f1875d570e39de09040c8f79aa13cc56baab8db1 channel: stable project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + - platform: android + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + - platform: ios + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + - platform: linux + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + - platform: macos + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + - platform: web + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + - platform: windows + create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/infinite_list/android/app/build.gradle b/infinite_list/android/app/build.gradle index fff656031..3b98760d1 100644 --- a/infinite_list/android/app/build.gradle +++ b/infinite_list/android/app/build.gradle @@ -27,6 +27,7 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -44,6 +45,8 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "dev.flutter.infinite_list" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() diff --git a/infinite_list/android/app/src/debug/AndroidManifest.xml b/infinite_list/android/app/src/debug/AndroidManifest.xml index e82654fa7..04dcd0cf7 100644 --- a/infinite_list/android/app/src/debug/AndroidManifest.xml +++ b/infinite_list/android/app/src/debug/AndroidManifest.xml @@ -1,6 +1,7 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="dev.flutter.infinite_list"> - <!-- Flutter needs it to communicate with the running application + <!-- The INTERNET permission is required for development. Specifically, + the Flutter tool needs it to communicate with the running application to allow setting breakpoints, to provide hot reload, etc. --> <uses-permission android:name="android.permission.INTERNET"/> diff --git a/infinite_list/android/app/src/main/res/values-night/styles.xml b/infinite_list/android/app/src/main/res/values-night/styles.xml index 3db14bb53..06952be74 100644 --- a/infinite_list/android/app/src/main/res/values-night/styles.xml +++ b/infinite_list/android/app/src/main/res/values-night/styles.xml @@ -3,7 +3,7 @@ <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on --> <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> <!-- Show a splash screen on the activity. Automatically removed when - Flutter draws its first frame --> + the Flutter engine draws its first frame --> <item name="android:windowBackground">@drawable/launch_background</item> </style> <!-- Theme applied to the Android Window as soon as the process has started. diff --git a/infinite_list/android/app/src/main/res/values/styles.xml b/infinite_list/android/app/src/main/res/values/styles.xml index d460d1e92..cb1ef8805 100644 --- a/infinite_list/android/app/src/main/res/values/styles.xml +++ b/infinite_list/android/app/src/main/res/values/styles.xml @@ -3,7 +3,7 @@ <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off --> <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar"> <!-- Show a splash screen on the activity. Automatically removed when - Flutter draws its first frame --> + the Flutter engine draws its first frame --> <item name="android:windowBackground">@drawable/launch_background</item> </style> <!-- Theme applied to the Android Window as soon as the process has started. diff --git a/infinite_list/android/app/src/profile/AndroidManifest.xml b/infinite_list/android/app/src/profile/AndroidManifest.xml index e82654fa7..04dcd0cf7 100644 --- a/infinite_list/android/app/src/profile/AndroidManifest.xml +++ b/infinite_list/android/app/src/profile/AndroidManifest.xml @@ -1,6 +1,7 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="dev.flutter.infinite_list"> - <!-- Flutter needs it to communicate with the running application + <!-- The INTERNET permission is required for development. Specifically, + the Flutter tool needs it to communicate with the running application to allow setting breakpoints, to provide hot reload, etc. --> <uses-permission android:name="android.permission.INTERNET"/> diff --git a/infinite_list/android/build.gradle b/infinite_list/android/build.gradle index 4256f9173..83ae22004 100644 --- a/infinite_list/android/build.gradle +++ b/infinite_list/android/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' + classpath 'com.android.tools.build:gradle:7.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/infinite_list/android/gradle/wrapper/gradle-wrapper.properties b/infinite_list/android/gradle/wrapper/gradle-wrapper.properties index bc6a58afd..cc5527d78 100644 --- a/infinite_list/android/gradle/wrapper/gradle-wrapper.properties +++ b/infinite_list/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/infinite_list/codelab_rebuild.yaml b/infinite_list/codelab_rebuild.yaml new file mode 100644 index 000000000..b89d08a72 --- /dev/null +++ b/infinite_list/codelab_rebuild.yaml @@ -0,0 +1,52 @@ +# Run with tooling from https://github.com/flutter/codelabs/tree/main/tooling/codelab_rebuild +name: Infinite List rebuild script +steps: + - name: Remove runners + rmdirs: + - android + - ios + - macos + - linux + - windows + - web + - name: Recreate runners + flutter: create --org dev.flutter . + - name: Patch macos/Runner/DebugProfile.entitlements + path: macos/Runner/DebugProfile.entitlements + patch-u: | + --- b/macos/Runner/DebugProfile.entitlements + +++ a/macos/Runner/DebugProfile.entitlements + @@ -6,6 +6,10 @@ + <true/> + <key>com.apple.security.cs.allow-jit</key> + <true/> + + <key>com.apple.security.files.user-selected.read-write</key> + + <true/> + + <key>com.apple.security.network.client</key> + + <true/> + <key>com.apple.security.network.server</key> + <true/> + </dict> + - name: Patch macos/Runner/Release.entitlements + path: macos/Runner/Release.entitlements + patch-u: | + --- b/macos/Runner/Release.entitlements + +++ a/macos/Runner/Release.entitlements + @@ -4,5 +4,9 @@ + <dict> + <key>com.apple.security.app-sandbox</key> + <true/> + + <key>com.apple.security.files.user-selected.read-write</key> + + <true/> + + <key>com.apple.security.network.client</key> + + <true/> + </dict> + </plist> + - name: Remove widget_test.dart + rm: test/widget_test.dart + - name: Flutter upgrade + flutter: pub upgrade --major-versions + - name: Flutter build macOS + flutter: build macos + - name: Flutter build macOS + flutter: build ios --simulator diff --git a/infinite_list/ios/.gitignore b/infinite_list/ios/.gitignore index 151026b91..7a7f9873a 100644 --- a/infinite_list/ios/.gitignore +++ b/infinite_list/ios/.gitignore @@ -1,3 +1,4 @@ +**/dgph *.mode1v3 *.mode2v3 *.moved-aside diff --git a/infinite_list/ios/Flutter/AppFrameworkInfo.plist b/infinite_list/ios/Flutter/AppFrameworkInfo.plist index 9367d483e..8d4492f97 100644 --- a/infinite_list/ios/Flutter/AppFrameworkInfo.plist +++ b/infinite_list/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ <key>CFBundleVersion</key> <string>1.0</string> <key>MinimumOSVersion</key> - <string>8.0</string> + <string>9.0</string> </dict> </plist> diff --git a/infinite_list/ios/Runner.xcodeproj/project.pbxproj b/infinite_list/ios/Runner.xcodeproj/project.pbxproj index 9e164d2a1..3586290dc 100644 --- a/infinite_list/ios/Runner.xcodeproj/project.pbxproj +++ b/infinite_list/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ @@ -13,6 +13,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 */; }; + E0A2EB0FB6FBE5C04FD68E5F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1EA37D35940772D3A25CAB8E /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -31,6 +32,8 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; + 1EA37D35940772D3A25CAB8E /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2D5E9F46C23C32B8159F71DB /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; @@ -42,6 +45,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + D8935AA727BD9F97522C6A74 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; }; + F4196E96775C3373A12FC485 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -49,6 +54,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + E0A2EB0FB6FBE5C04FD68E5F /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -72,6 +78,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + F9CC28950D90848346907DAB /* Pods */, + D8E5FD580974BD5F341F3121 /* Frameworks */, ); sourceTree = "<group>"; }; @@ -98,6 +106,25 @@ path = Runner; sourceTree = "<group>"; }; + D8E5FD580974BD5F341F3121 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1EA37D35940772D3A25CAB8E /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = "<group>"; + }; + F9CC28950D90848346907DAB /* Pods */ = { + isa = PBXGroup; + children = ( + F4196E96775C3373A12FC485 /* Pods-Runner.debug.xcconfig */, + 2D5E9F46C23C32B8159F71DB /* Pods-Runner.release.xcconfig */, + D8935AA727BD9F97522C6A74 /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = "<group>"; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -105,6 +132,7 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + E6A8D8B707A17B48B9BD1AB1 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, @@ -127,7 +155,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -197,6 +225,28 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + E6A8D8B707A17B48B9BD1AB1 /* [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 */ @@ -290,7 +340,10 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.infiniteList; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -399,7 +452,8 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -414,7 +468,10 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.infiniteList; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -433,7 +490,10 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.infiniteList; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; diff --git a/infinite_list/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/infinite_list/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140cfd..c87d15a33 100644 --- a/infinite_list/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/infinite_list/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <Scheme - LastUpgradeVersion = "1020" + LastUpgradeVersion = "1300" version = "1.3"> <BuildAction parallelizeBuildables = "YES" @@ -27,8 +27,6 @@ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> - <Testables> - </Testables> <MacroExpansion> <BuildableReference BuildableIdentifier = "primary" @@ -38,8 +36,8 @@ ReferencedContainer = "container:Runner.xcodeproj"> </BuildableReference> </MacroExpansion> - <AdditionalOptions> - </AdditionalOptions> + <Testables> + </Testables> </TestAction> <LaunchAction buildConfiguration = "Debug" @@ -61,8 +59,6 @@ ReferencedContainer = "container:Runner.xcodeproj"> </BuildableReference> </BuildableProductRunnable> - <AdditionalOptions> - </AdditionalOptions> </LaunchAction> <ProfileAction buildConfiguration = "Profile" diff --git a/infinite_list/ios/Runner.xcworkspace/contents.xcworkspacedata b/infinite_list/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a16e..21a3cc14c 100644 --- a/infinite_list/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/infinite_list/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ <FileRef location = "group:Runner.xcodeproj"> </FileRef> + <FileRef + location = "group:Pods/Pods.xcodeproj"> + </FileRef> </Workspace> diff --git a/infinite_list/ios/Runner/Info.plist b/infinite_list/ios/Runner/Info.plist index 473d3188e..a2c7ef0f1 100644 --- a/infinite_list/ios/Runner/Info.plist +++ b/infinite_list/ios/Runner/Info.plist @@ -4,6 +4,8 @@ <dict> <key>CFBundleDevelopmentRegion</key> <string>$(DEVELOPMENT_LANGUAGE)</string> + <key>CFBundleDisplayName</key> + <string>Infinite List</string> <key>CFBundleExecutable</key> <string>$(EXECUTABLE_NAME)</string> <key>CFBundleIdentifier</key> @@ -41,5 +43,7 @@ </array> <key>UIViewControllerBasedStatusBarAppearance</key> <false/> + <key>CADisableMinimumFrameDurationOnPhone</key> + <true/> </dict> </plist> diff --git a/infinite_list/linux/CMakeLists.txt b/infinite_list/linux/CMakeLists.txt index 4adfb180f..cbc4f1582 100644 --- a/infinite_list/linux/CMakeLists.txt +++ b/infinite_list/linux/CMakeLists.txt @@ -1,11 +1,19 @@ +# Project-level configuration. cmake_minimum_required(VERSION 3.10) project(runner LANGUAGES CXX) +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. set(BINARY_NAME "infinite_list") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID set(APPLICATION_ID "dev.flutter.infinite_list") +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. cmake_policy(SET CMP0063 NEW) +# Load bundled libraries from the lib/ directory relative to the binary. set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") # Root filesystem for cross-building. @@ -18,7 +26,7 @@ if(FLUTTER_TARGET_PLATFORM_SYSROOT) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) endif() -# Configure build options. +# Define build configuration options. if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Flutter build mode" FORCE) @@ -27,6 +35,10 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) endif() # Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. function(APPLY_STANDARD_SETTINGS TARGET) target_compile_features(${TARGET} PUBLIC cxx_std_14) target_compile_options(${TARGET} PRIVATE -Wall -Werror) @@ -34,9 +46,8 @@ function(APPLY_STANDARD_SETTINGS TARGET) target_compile_definitions(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>") endfunction() -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") - # Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") add_subdirectory(${FLUTTER_MANAGED_DIR}) # System-level dependencies. @@ -45,16 +56,27 @@ pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") -# Application build +# Define the application target. To change its name, change BINARY_NAME above, +# not the value here, or `flutter run` will no longer work. +# +# Any new source files that you add to the application should be added here. add_executable(${BINARY_NAME} "main.cc" "my_application.cc" "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" ) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. apply_standard_settings(${BINARY_NAME}) + +# Add dependency libraries. Add any application-specific dependencies here. target_link_libraries(${BINARY_NAME} PRIVATE flutter) target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# Run the Flutter tool portions of the build. This must not be removed. add_dependencies(${BINARY_NAME} flutter_assemble) + # Only the install-generated bundle's copy of the executable will launch # correctly, since the resources must in the right relative locations. To avoid # people trying to run the unbundled copy, put it in a subdirectory instead of @@ -94,11 +116,11 @@ install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR} install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) -endif() +endforeach(bundled_library) # Fully re-copy the assets directory on each build to avoid having stale files # from a previous install. diff --git a/infinite_list/linux/flutter/CMakeLists.txt b/infinite_list/linux/flutter/CMakeLists.txt index 33fd5801e..d5bd01648 100644 --- a/infinite_list/linux/flutter/CMakeLists.txt +++ b/infinite_list/linux/flutter/CMakeLists.txt @@ -1,3 +1,4 @@ +# This file controls Flutter-level build steps. It should not be edited. cmake_minimum_required(VERSION 3.10) set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") diff --git a/infinite_list/macos/.gitignore b/infinite_list/macos/.gitignore new file mode 100644 index 000000000..746adbb6b --- /dev/null +++ b/infinite_list/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/infinite_list/macos/Flutter/Flutter-Debug.xcconfig b/infinite_list/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 000000000..4b81f9b2d --- /dev/null +++ b/infinite_list/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/infinite_list/macos/Flutter/Flutter-Release.xcconfig b/infinite_list/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 000000000..5caa9d157 --- /dev/null +++ b/infinite_list/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/infinite_list/macos/Flutter/GeneratedPluginRegistrant.swift b/infinite_list/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 000000000..f5cde84ba --- /dev/null +++ b/infinite_list/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,12 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import window_size + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + WindowSizePlugin.register(with: registry.registrar(forPlugin: "WindowSizePlugin")) +} diff --git a/infinite_list/macos/Podfile b/infinite_list/macos/Podfile new file mode 100644 index 000000000..dade8dfad --- /dev/null +++ b/infinite_list/macos/Podfile @@ -0,0 +1,40 @@ +platform :osx, '10.11' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/infinite_list/macos/Runner.xcodeproj/project.pbxproj b/infinite_list/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..f596f7d8e --- /dev/null +++ b/infinite_list/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,632 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 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 */; }; + E7F344BF9D8682C1F27FE918 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28FC8FA0445DC9FCDC9DC569 /* Pods_Runner.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 0EA7CCA7F3E5AABE79B4ADC8 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; }; + 28FC8FA0445DC9FCDC9DC569 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; }; + 33CC10ED2044A3C60003C045 /* infinite_list.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = infinite_list.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = "<group>"; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = "<group>"; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; }; + 80B871AD7C866D392F1A57EC /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; }; + B80FFF920544FE423F293EBA /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E7F344BF9D8682C1F27FE918 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = "<group>"; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + 9B14ACFDB02B51AA7D39247D /* Pods */, + ); + sourceTree = "<group>"; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* infinite_list.app */, + ); + name = Products; + sourceTree = "<group>"; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = "<group>"; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = "<group>"; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = "<group>"; + }; + 9B14ACFDB02B51AA7D39247D /* Pods */ = { + isa = PBXGroup; + children = ( + B80FFF920544FE423F293EBA /* Pods-Runner.debug.xcconfig */, + 0EA7CCA7F3E5AABE79B4ADC8 /* Pods-Runner.release.xcconfig */, + 80B871AD7C866D392F1A57EC /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = "<group>"; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 28FC8FA0445DC9FCDC9DC569 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 6848D96977ABE013D61D4A6E /* [CP] Check Pods Manifest.lock */, + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + 534A5B362DEB4030312DE6AC /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* infinite_list.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + 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"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + 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"; + }; + 534A5B362DEB4030312DE6AC /* [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; + }; + 6848D96977ABE013D61D4A6E /* [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 */ + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = "<group>"; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/infinite_list/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/infinite_list/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/infinite_list/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>IDEDidComputeMac32BitWarning</key> + <true/> +</dict> +</plist> diff --git a/infinite_list/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/infinite_list/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000..9273055b2 --- /dev/null +++ b/infinite_list/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Scheme + LastUpgradeVersion = "1300" + version = "1.3"> + <BuildAction + parallelizeBuildables = "YES" + buildImplicitDependencies = "YES"> + <BuildActionEntries> + <BuildActionEntry + buildForTesting = "YES" + buildForRunning = "YES" + buildForProfiling = "YES" + buildForArchiving = "YES" + buildForAnalyzing = "YES"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "33CC10EC2044A3C60003C045" + BuildableName = "infinite_list.app" + BlueprintName = "Runner" + ReferencedContainer = "container:Runner.xcodeproj"> + </BuildableReference> + </BuildActionEntry> + </BuildActionEntries> + </BuildAction> + <TestAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + shouldUseLaunchSchemeArgsEnv = "YES"> + <MacroExpansion> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "33CC10EC2044A3C60003C045" + BuildableName = "infinite_list.app" + BlueprintName = "Runner" + ReferencedContainer = "container:Runner.xcodeproj"> + </BuildableReference> + </MacroExpansion> + <Testables> + </Testables> + </TestAction> + <LaunchAction + buildConfiguration = "Debug" + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + launchStyle = "0" + useCustomWorkingDirectory = "NO" + ignoresPersistentStateOnLaunch = "NO" + debugDocumentVersioning = "YES" + debugServiceExtension = "internal" + allowLocationSimulation = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "33CC10EC2044A3C60003C045" + BuildableName = "infinite_list.app" + BlueprintName = "Runner" + ReferencedContainer = "container:Runner.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </LaunchAction> + <ProfileAction + buildConfiguration = "Profile" + shouldUseLaunchSchemeArgsEnv = "YES" + savedToolIdentifier = "" + useCustomWorkingDirectory = "NO" + debugDocumentVersioning = "YES"> + <BuildableProductRunnable + runnableDebuggingMode = "0"> + <BuildableReference + BuildableIdentifier = "primary" + BlueprintIdentifier = "33CC10EC2044A3C60003C045" + BuildableName = "infinite_list.app" + BlueprintName = "Runner" + ReferencedContainer = "container:Runner.xcodeproj"> + </BuildableReference> + </BuildableProductRunnable> + </ProfileAction> + <AnalyzeAction + buildConfiguration = "Debug"> + </AnalyzeAction> + <ArchiveAction + buildConfiguration = "Release" + revealArchiveInOrganizer = "YES"> + </ArchiveAction> +</Scheme> diff --git a/infinite_list/macos/Runner.xcworkspace/contents.xcworkspacedata b/infinite_list/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..21a3cc14c --- /dev/null +++ b/infinite_list/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> + <FileRef + location = "group:Runner.xcodeproj"> + </FileRef> + <FileRef + location = "group:Pods/Pods.xcodeproj"> + </FileRef> +</Workspace> diff --git a/infinite_list/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/infinite_list/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/infinite_list/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>IDEDidComputeMac32BitWarning</key> + <true/> +</dict> +</plist> diff --git a/infinite_list/macos/Runner/AppDelegate.swift b/infinite_list/macos/Runner/AppDelegate.swift new file mode 100644 index 000000000..d53ef6437 --- /dev/null +++ b/infinite_list/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..a2ec33f19 --- /dev/null +++ b/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..3c4935a7ca84f0976aca34b7f2895d65fb94d1ea GIT binary patch literal 46993 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 QOu#(cH>|q6Qt;3J0APUL!~g&Q literal 0 HcmV?d00001 diff --git a/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..ed4cc16421680a50164ba74381b4b35ceaa0ccfc GIT binary patch literal 3276 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 literal 0 HcmV?d00001 diff --git a/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..483be61389733f2e5331c08db8ca245268610ccb GIT binary patch literal 1429 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a><YADU|^aU;1l8sRFH7;2N1=B zQQV0iv0xN^;z#sxC`vr}6NoU?!~oTRQPlAta5Zq#;6?$JK~=((;W7=P3}^zxG`N{) zZUedys1hg$u?tff&}tw`Joy9Yut*q!D29`8Ga>GbI`Jdw*pG<g2rUo=$RxyAi0zQ@ zK{g*#CB!bc_u+~|kN*O?3St_>cA%L+*Q#&*YQOJ$_%U#(BDn<O1)%wG2LRc++rJs_ z{ARTCo88{;VIVC(fy&@kKq3(+!cg`Os0N4(foRuvi_Pzx*E}+qe75q_|L~(AaRZ1H zSXO7vE8*g;>``;rKxi&&)LfRxIZ*98z8UWRslDo@Xu)QVh}rB>bKwe@Bjzwg%m$hd zG)gFMgHZlPxGcm3paLLb44<vP<D2@r*P^96AbR1lK<$hXvw`IQ|Nj*t=9vH!<*kw+ zKTrZ^aK8WT>yHI|Ag0wdp!_yD5R<|B29Ui~27`?vfy#ktk_KyHWMDA42{J=Uq-o}i z*%kZ@45mQ-Rw?0?K+z{&5KFc}xc5Q%1PFAbL_xCmpj?JNAm>L6SjrCMpiK}5LG0ZE z<A9vK72<4{``^ETd}9%0zzx*KnB?v5a_b$lS`(1NS>O>_%)r1c48n{Iv*t(u1=&kH zeO=ifbFy+6aSK)V_5t;<dAc};NL)@%U|@7pOA`w-E93Li%QKkYKD|HQA;2TTCB#SO z$n*(QCQX|-b#iz>NKhE#$Iz=+Oii|KDJ}W>g}0%`Svgra*tnS6TRU4iTH*e=dj~I` zym|EM*}I1?pT2#3`oZ(|3I-Y$DkeHMN=8~%YSR?;>=X?(Emci*ZIz9+t<|S1>hE8$ zVa1LmTh{DZv}x6@Wz!a}+qZDz%AHHMuHCzM^XlEpr!QPzf9Qzk<mEnd&1#RGiQN30 zVeL%o{C`cY-D3KYyK;VZO-*PwUK6!9?d`6w(q?(L_M~b@B;5WcYhC{K-sbZA|CrhN z8(sP2Evw%A=$yRVZ@y(U-=dd)TDzy~#qX?o`>S_0!&1MPx*ICxe}RFdTH+c}l9E`G zYL#4+3Zxi}3=A!G4S>ir#L(2r)WFKnP}jiR%D`ZOPH`@ZhTQy=%(P0}8ZH)|z6jL7 N;OXk;vd$@?2>?>Ex^Vyi literal 0 HcmV?d00001 diff --git a/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png new file mode 100644 index 0000000000000000000000000000000000000000..bcbf36df2f2aaaa0a63c7dabc94e600184229d0d GIT binary patch literal 5933 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 literal 0 HcmV?d00001 diff --git a/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png new file mode 100644 index 0000000000000000000000000000000000000000..9c0a652864769b250ed58097f2f6270b393f751f GIT binary patch literal 1243 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zS>O>_%)r1c48n{Iv*t(u1=&kHeO=ifbFy+6aSK)V_AxLppYn8Z42d|rc6w}vOsL55 z`t&mC&y2@JTEyg!eDiFX^k#CC!jq%>erB=yHqUP0XcDOTw6<f#LjBq^Y)7sw>ko}L zX;EmMrq(fKk*eygEuA616;0)>@A{TK|55PV@7<YqZ_edaC(fK%{e0g2|8t7p@3eNB zo}06hYelUL)43HzF^U`JzKWYFQ{bG)6k+*4N}u6p-UIdNt6tdsiF{D}faSqbKcROE z<_JX;?!K(PrJ-5r_lNZjC(X89Yfw5=Q?x*t@$ttE(LY!sY*&8pOgQNG*Nms$ory>0 z$OfzS*(VJxQev3J?yY?O=ul(v`fp}?u9z`JK3ugibK>)DyCwImZOF4d{xK%%Ks1*} zv$oa)9anR%lXIBUqYnhLmT>VOzHfNP?ZwJNZ!5$s9M08RynIvaXw>@G^T9@r9^KH1 zVy??F&uuk)bH9Y4pQY!hP5<HGJ$(mRi<yq{&Hu1$p?*&B$HN*@av?t^nMLcqth~GD zk5IvsD?YB@)-iw2T^`N(yHVfiaAtzXnljUA?V@Q7$rlUnXdGtNW0K!F_hitWE7{9W z9er@nu0~A5<V<(`es(*ycdDT`pE1v8Pz`0?x?g3_@n+umlb$l`Jd0%hF&3C>8i_H6 znl-Ncu<?aN1hX2eSQeN0f9?Q@d$*Fy6!d)`_O-G7m{Y7|b$f$Q<!S>CpLV6ZWU;4C zu@9exF&OZi`Bovq_m%T+WhU2kvkz@^_LpycBvqm3bMpLw8X-Or5sL>0AKE1<sLLLf zW?|SP-BoaG>$(k_L=_Zc=CUq#=x1-QZf)G7nHu@fmsQ1eN_N3+nTEz`4HI4Z6uVlE zJH+X&det8JU?tO?upcM4Z=cV!JV;yF>FfL5Q$M|W_2Z!P`S=}Wzp|_1^#d%e?_H`> zV@%vA$+bFVqhw9`U;TfP|5|PD{||OiYdor8P*i??|NJcb%kzT_73*7WE?Ua5hAnR2 z=7WE=PhTlJ#ZeRznjTUb;`E(wkMZrj4e|Hilz-mK>9cZHQY**5TUPw~u}k;u73K<U zP+oOrg;AFJGyf^GZspHry6tvoYl7Y86oHamd$z^Z6jaW<dzZ`cp0o4xxm88n!Omi) zZ`PbWYCI#7;lPJ}w<Gty@ky~XOMmXZyu1Ie5@&&mNWj(T11(zJWozmZ<6Ye2-LCh2 zzs>I}xAx!0m-)GVia|x^d3p~s_9gh83jA&Ra<8rM%`>U3x69t&NzbwWY}7Ar<FY44 zbO(zJi`$jX6}*)dl1%p)@)9mJ{rl!z&cu*)eZO-38{OX#p*xuNaO_#ID)r3CSF2}f zKhVC#zGu;?)Cci(=1l+CWfUK+ecCE*0nF&CC9V-ADTyViR>?)FK#IZ0z|d0H0EkRO w3{9;}4Xg|ebq&m|3=9_N6z8I7$jwj5OsmAL;bP(Gi$Dzwp00i_>zopr02+f8CIA2c literal 0 HcmV?d00001 diff --git a/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png new file mode 100644 index 0000000000000000000000000000000000000000..e71a726136a47ed24125c7efc79d68a4a01961b4 GIT binary patch literal 14800 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 OIc;`vc)7{z(*FShbtRtw literal 0 HcmV?d00001 diff --git a/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/infinite_list/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..8a31fe2dd3f91d79cab6e0390356bb3c1a355f94 GIT binary patch literal 1874 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 literal 0 HcmV?d00001 diff --git a/infinite_list/macos/Runner/Base.lproj/MainMenu.xib b/infinite_list/macos/Runner/Base.lproj/MainMenu.xib new file mode 100644 index 000000000..80e867a4e --- /dev/null +++ b/infinite_list/macos/Runner/Base.lproj/MainMenu.xib @@ -0,0 +1,343 @@ +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct"> + <dependencies> + <deployment identifier="macosx"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/> + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + </dependencies> + <objects> + <customObject id="-2" userLabel="File's Owner" customClass="NSApplication"> + <connections> + <outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/> + </connections> + </customObject> + <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> + <customObject id="-3" userLabel="Application" customClass="NSObject"/> + <customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="Runner" customModuleProvider="target"> + <connections> + <outlet property="applicationMenu" destination="uQy-DD-JDr" id="XBo-yE-nKs"/> + <outlet property="mainFlutterWindow" destination="QvC-M9-y7g" id="gIp-Ho-8D9"/> + </connections> + </customObject> + <customObject id="YLy-65-1bz" customClass="NSFontManager"/> + <menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6"> + <items> + <menuItem title="APP_NAME" id="1Xt-HY-uBw"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="APP_NAME" systemMenu="apple" id="uQy-DD-JDr"> + <items> + <menuItem title="About APP_NAME" id="5kV-Vb-QxS"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/> + </connections> + </menuItem> + <menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/> + <menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/> + <menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/> + <menuItem title="Services" id="NMo-om-nkz"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/> + </menuItem> + <menuItem isSeparatorItem="YES" id="4je-JR-u6R"/> + <menuItem title="Hide APP_NAME" keyEquivalent="h" id="Olw-nP-bQN"> + <connections> + <action selector="hide:" target="-1" id="PnN-Uc-m68"/> + </connections> + </menuItem> + <menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO"> + <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/> + <connections> + <action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/> + </connections> + </menuItem> + <menuItem title="Show All" id="Kd2-mp-pUS"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/> + </connections> + </menuItem> + <menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/> + <menuItem title="Quit APP_NAME" keyEquivalent="q" id="4sb-4s-VLi"> + <connections> + <action selector="terminate:" target="-1" id="Te7-pn-YzF"/> + </connections> + </menuItem> + </items> + </menu> + </menuItem> + <menuItem title="Edit" id="5QF-Oa-p0T"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="Edit" id="W48-6f-4Dl"> + <items> + <menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg"> + <connections> + <action selector="undo:" target="-1" id="M6e-cu-g7V"/> + </connections> + </menuItem> + <menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam"> + <connections> + <action selector="redo:" target="-1" id="oIA-Rs-6OD"/> + </connections> + </menuItem> + <menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/> + <menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG"> + <connections> + <action selector="cut:" target="-1" id="YJe-68-I9s"/> + </connections> + </menuItem> + <menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU"> + <connections> + <action selector="copy:" target="-1" id="G1f-GL-Joy"/> + </connections> + </menuItem> + <menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL"> + <connections> + <action selector="paste:" target="-1" id="UvS-8e-Qdg"/> + </connections> + </menuItem> + <menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk"> + <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/> + <connections> + <action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/> + </connections> + </menuItem> + <menuItem title="Delete" id="pa3-QI-u2k"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="delete:" target="-1" id="0Mk-Ml-PaM"/> + </connections> + </menuItem> + <menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m"> + <connections> + <action selector="selectAll:" target="-1" id="VNm-Mi-diN"/> + </connections> + </menuItem> + <menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/> + <menuItem title="Find" id="4EN-yA-p0u"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="Find" id="1b7-l0-nxx"> + <items> + <menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W"> + <connections> + <action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/> + </connections> + </menuItem> + <menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz"> + <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/> + <connections> + <action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/> + </connections> + </menuItem> + <menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye"> + <connections> + <action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/> + </connections> + </menuItem> + <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV"> + <connections> + <action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/> + </connections> + </menuItem> + <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt"> + <connections> + <action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/> + </connections> + </menuItem> + <menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd"> + <connections> + <action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/> + </connections> + </menuItem> + </items> + </menu> + </menuItem> + <menuItem title="Spelling and Grammar" id="Dv1-io-Yv7"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="Spelling" id="3IN-sU-3Bg"> + <items> + <menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI"> + <connections> + <action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/> + </connections> + </menuItem> + <menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7"> + <connections> + <action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/> + </connections> + </menuItem> + <menuItem isSeparatorItem="YES" id="bNw-od-mp5"/> + <menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/> + </connections> + </menuItem> + <menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/> + </connections> + </menuItem> + <menuItem title="Correct Spelling Automatically" id="78Y-hA-62v"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/> + </connections> + </menuItem> + </items> + </menu> + </menuItem> + <menuItem title="Substitutions" id="9ic-FL-obx"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="Substitutions" id="FeM-D8-WVr"> + <items> + <menuItem title="Show Substitutions" id="z6F-FW-3nz"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/> + </connections> + </menuItem> + <menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/> + <menuItem title="Smart Copy/Paste" id="9yt-4B-nSM"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/> + </connections> + </menuItem> + <menuItem title="Smart Quotes" id="hQb-2v-fYv"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/> + </connections> + </menuItem> + <menuItem title="Smart Dashes" id="rgM-f4-ycn"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/> + </connections> + </menuItem> + <menuItem title="Smart Links" id="cwL-P1-jid"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/> + </connections> + </menuItem> + <menuItem title="Data Detectors" id="tRr-pd-1PS"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/> + </connections> + </menuItem> + <menuItem title="Text Replacement" id="HFQ-gK-NFA"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/> + </connections> + </menuItem> + </items> + </menu> + </menuItem> + <menuItem title="Transformations" id="2oI-Rn-ZJC"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="Transformations" id="c8a-y6-VQd"> + <items> + <menuItem title="Make Upper Case" id="vmV-6d-7jI"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/> + </connections> + </menuItem> + <menuItem title="Make Lower Case" id="d9M-CD-aMd"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/> + </connections> + </menuItem> + <menuItem title="Capitalize" id="UEZ-Bs-lqG"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/> + </connections> + </menuItem> + </items> + </menu> + </menuItem> + <menuItem title="Speech" id="xrE-MZ-jX0"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="Speech" id="3rS-ZA-NoH"> + <items> + <menuItem title="Start Speaking" id="Ynk-f8-cLZ"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/> + </connections> + </menuItem> + <menuItem title="Stop Speaking" id="Oyz-dy-DGm"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/> + </connections> + </menuItem> + </items> + </menu> + </menuItem> + </items> + </menu> + </menuItem> + <menuItem title="View" id="H8h-7b-M4v"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="View" id="HyV-fh-RgO"> + <items> + <menuItem title="Enter Full Screen" keyEquivalent="f" id="4J7-dP-txa"> + <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/> + <connections> + <action selector="toggleFullScreen:" target="-1" id="dU3-MA-1Rq"/> + </connections> + </menuItem> + </items> + </menu> + </menuItem> + <menuItem title="Window" id="aUF-d1-5bR"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo"> + <items> + <menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV"> + <connections> + <action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/> + </connections> + </menuItem> + <menuItem title="Zoom" id="R4o-n2-Eq4"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="performZoom:" target="-1" id="DIl-cC-cCs"/> + </connections> + </menuItem> + <menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/> + <menuItem title="Bring All to Front" id="LE2-aR-0XJ"> + <modifierMask key="keyEquivalentModifierMask"/> + <connections> + <action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/> + </connections> + </menuItem> + </items> + </menu> + </menuItem> + <menuItem title="Help" id="EPT-qC-fAb"> + <modifierMask key="keyEquivalentModifierMask"/> + <menu key="submenu" title="Help" systemMenu="help" id="rJ0-wn-3NY"/> + </menuItem> + </items> + <point key="canvasLocation" x="142" y="-258"/> + </menu> + <window title="APP_NAME" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g" customClass="MainFlutterWindow" customModule="Runner" customModuleProvider="target"> + <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/> + <rect key="contentRect" x="335" y="390" width="800" height="600"/> + <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1577"/> + <view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ"> + <rect key="frame" x="0.0" y="0.0" width="800" height="600"/> + <autoresizingMask key="autoresizingMask"/> + </view> + </window> + </objects> +</document> diff --git a/infinite_list/macos/Runner/Configs/AppInfo.xcconfig b/infinite_list/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 000000000..90a804ca2 --- /dev/null +++ b/infinite_list/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = infinite_list + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.infiniteList + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2022 dev.flutter. All rights reserved. diff --git a/infinite_list/macos/Runner/Configs/Debug.xcconfig b/infinite_list/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 000000000..36b0fd946 --- /dev/null +++ b/infinite_list/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/infinite_list/macos/Runner/Configs/Release.xcconfig b/infinite_list/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 000000000..dff4f4956 --- /dev/null +++ b/infinite_list/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/infinite_list/macos/Runner/Configs/Warnings.xcconfig b/infinite_list/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 000000000..42bcbf478 --- /dev/null +++ b/infinite_list/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/infinite_list/macos/Runner/DebugProfile.entitlements b/infinite_list/macos/Runner/DebugProfile.entitlements new file mode 100644 index 000000000..0eaccf141 --- /dev/null +++ b/infinite_list/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>com.apple.security.app-sandbox</key> + <true/> + <key>com.apple.security.cs.allow-jit</key> + <true/> + <key>com.apple.security.files.user-selected.read-write</key> + <true/> + <key>com.apple.security.network.client</key> + <true/> + <key>com.apple.security.network.server</key> + <true/> +</dict> +</plist> diff --git a/infinite_list/macos/Runner/Info.plist b/infinite_list/macos/Runner/Info.plist new file mode 100644 index 000000000..4789daa6a --- /dev/null +++ b/infinite_list/macos/Runner/Info.plist @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDevelopmentRegion</key> + <string>$(DEVELOPMENT_LANGUAGE)</string> + <key>CFBundleExecutable</key> + <string>$(EXECUTABLE_NAME)</string> + <key>CFBundleIconFile</key> + <string></string> + <key>CFBundleIdentifier</key> + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>$(PRODUCT_NAME)</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleShortVersionString</key> + <string>$(FLUTTER_BUILD_NAME)</string> + <key>CFBundleVersion</key> + <string>$(FLUTTER_BUILD_NUMBER)</string> + <key>LSMinimumSystemVersion</key> + <string>$(MACOSX_DEPLOYMENT_TARGET)</string> + <key>NSHumanReadableCopyright</key> + <string>$(PRODUCT_COPYRIGHT)</string> + <key>NSMainNibFile</key> + <string>MainMenu</string> + <key>NSPrincipalClass</key> + <string>NSApplication</string> +</dict> +</plist> diff --git a/infinite_list/macos/Runner/MainFlutterWindow.swift b/infinite_list/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 000000000..2722837ec --- /dev/null +++ b/infinite_list/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController.init() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/infinite_list/macos/Runner/Release.entitlements b/infinite_list/macos/Runner/Release.entitlements new file mode 100644 index 000000000..a0463869a --- /dev/null +++ b/infinite_list/macos/Runner/Release.entitlements @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>com.apple.security.app-sandbox</key> + <true/> + <key>com.apple.security.files.user-selected.read-write</key> + <true/> + <key>com.apple.security.network.client</key> + <true/> +</dict> +</plist> diff --git a/infinite_list/web/icons/Icon-maskable-192.png b/infinite_list/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9b4d76e525556d5d89141648c724331630325d GIT binary patch literal 5594 zcmdT|`#%%j|KDb2V@0DPm$^(Lx5}lO%Y<A*c?-GUqfqYGZB2&AH6ypVg;M0ss1dm& z%_YfQMedp0XKi1fKjZtud7U3#&+~eo*W>v(=e*7<!NSbo821@&003~z$WZUr(cJ#O z0fijdTT}PB0DzN4MtVB`g*mP}*ky<qWNM9$XkKz2fTEsHRw<=ROGK)NsjdQazcWur zs?iB=r4<j~wsV~5Qal9AK&$-0iJQSv@b2^rd||$8(6_N1k)EgnIg|vCdmm*Yy{wXw zc-b~{deqi7({_4P^~EQD$N5e7g@wEgboiG(OIt@lqQnm_#Do7pV$ivY-!=CofP4VV zgF7H`{K!hrPaS}ByEhCEFsno+aslzca%lkQ@*AwY7#IM_BLSdu^^BS@K7io=p9NKX z@croGM9l&B&eS%N!3*4K2Ks)uUXFkKmjS+krYgP;p)wfA9vIO!CB@j81u=FKv^e3P zlXxd5qBg#Lz0TAuAEG21pqm=K`>hl@QqKS50#~#^IQPxBmuh|i9sXnt4ch@VT0F7% zM<VRprVRNY4aU?rwdv;X#UUK+G*<x7#}oi#Ik8j=O==F^Y6oLsg|D?MaS&}gmgq5% zHuQlso*jnCa_!%!F)8@PGSscIyFEOZ!qjv*sAKrc?d#xk5E!q6h5xwrk(Z9Yosd90 z&4FY23W;E6I-3}cUEW=a+7_|&=X}sFShzgL1@yTNfUx=fcb9I4L<Y&4KQHXl33max zcL5afNN~jo;Kh#Wtszx3rYr?nU1JEJ<NhB7pEw9d-WA!~iE~H@H$y{g#&+*6Hma@L z+%<c3$$Y>trs@KWIOo+QV@lSs66A>2pz6-`9Jk=0vv&u?)^F@HZ)-6HT=B7LF;rdj zskUyBfbojcX#CS>WrIWo9D=DIwcXM8=I5D{SGf$~=gh-$LwY?*)cD%38%sCc?5OsX z-XfkyL-<J4M>1`VavZ?>(pI-xp-kYq=1hsnyP^TLb%0vKRSo^~r{x?ISLY1i7KjSp z*0h&jG(Rkkq2+G_6eS>n&6>&Xk+ngOMcYrk<8KrukQHzfx675^^s$~<@d$9X{VBbg z2Fd4Z%g`!-P}d#`?B4#S-9x*eNlOVRnDrn#jY@~$jfQ-~3Od;A;x-BI1BEDdvr`pI z#D)d)!2_`GiZOUu1crb!hqH=ezs0qk<<T;N#7`H{uI8=lz?Jn2S1D$9u&j-xB=yae z%=GG-1Ypns?%gHTt5SGvyMyn*G7Nn5FYk1S5hzjI=91D#;s!+&JV&!uhFV+%4*QuK ziiJN%V?GHP2Rz<l5Cz4nxdrCb&z}Y>_xDm_Kkw?r*?0C3|Io6>$!kyDl;eH=aqg$B zsH_|ZD?jP2dc=)|L>DZmGyYKa06~5?C2Lc0#D%62p(YS;%_DRCB1k(+eLGXVMe+=4 zkKiJ%!N6^mxqM=wq`0+yoE#VHF%R<{<pzB>mMamR9o_1JH8jfnJ?NPLs$9U!9!dq8 z0B{dI2!M|sYGH&9TAY34OlpIsQ4i5bnbG>?cWwat1I13|r|_inLE?FS@Hxdxn_YZN z3jfUO*X9Q@?HZ>Q{W0z60!bbGh557XIKu1?)u|cf%go`pwo}CD=0tau-}t@R2OrSH zQzZr%JfYa`>2!g??76<b=e2OPf3&L^8Rf_5r~fM`y8^Yq5G!APP<xl6?LDL2;B@yj z)ifB}>=GJ$%ECbQh7Q2wLRp9QoyiRHP7VE^>JHm>9EqR3<$Y=Z1K^SHuwxCy-5@z3 zVM{XNNm}yM*pRdLKp??+_2&!bp#`=(Lh1vR{~j%n;cJv~9lXeMv)@}Odta)RnK|6* zC+IVSWumLo%{6bLDpn)Gz>6r&;Qs0^+Sz_yx_KNz9Dlt^ax`4>;EWrIT#(lJ_40<= z750fHZ7hI<yV{=hjsSQPCB!s;KVI$>{}%%5`;lwkI4<_FJw@!U^vW;igL0k+mK)-j zYuCK#mCDK3F|SC}tC2>m$ZCqNB7ac-0UFBJ|8RxmG@4a4qdjvMzzS&h9pQmu^x&*= zGvapd1#K%Da&)8f?<9WN`2H^qpd@{7In6DNM&916TRqtF4;3`R|Nhwbw=(4|^Io@T zIjoR?tB8d*sO>PX4vaIHF|W<zKQuPD;_JZi?Xx8Y$@*6LA>;WVl6L1JvSmStgnRQq zTX4(>1f^5QOAH{=18Q2Vc1JI{V<g<brhORb%L%-B80S9M*hx8$>=yOr7yZJf4Vpfo zeHXdhBe{PyY;)yF;=ycMW@Kb>t;yE<u?)r`{lKJWqf7LvE?#9n(S{|VuM+GNAwB<f z@5o);$fZ<g3ZFAVKOg|$EE#^kl$>>;f79~AlJ8k`xWucCxJfsXf2P72bAavWL1G#W z;o%kdH(mYCM{$~yw4({KatNGim49O2HY6O07$B`*K7}MvgI=4x=<G&d%C6$HDpo#c zkrgF-qa~#t4_bwi7IwE~TwMF;-qL{(={*OJ(5I+&Wg2quW0%4}BOzbFD`wG+%uW`b z2>SKdKVb8C$eJseA$tmSFOztFd*3W`J`yIB_~}k%Sd_bPBK8LxH)?8#jM{^%J_0|L z!gFI|68)G}ex5`Xh{5pB%GtlJ{Z5em*<D@6Y$s5GylUy}yy)!q2^e+4KzaNa2X@3h z@qOF78@az*ZmoP`dkX+-<*CVFk5_&Vnls;Kdl1+%2A~L*DVY-8YCAb4{Yi6tEvWWb zO!P>e0sH+sU1UVl7<5%Bq+YrHWL7?X?3LB<BC==QXkb#ZHG>i1R@_)F-_OqI1Zv`L zb6^Lq#H^2@d_(Z4E6xA9Z4o3kvf78ZDz!5W1#Mp|E;rv<E-GQ!XtA41MQaK-m0sLo z$<w_|FAGJ^zv=7#+b?>Jz&4qj2pXVxKB8Vg0}ek%4erou@QM&2t7Cn5GwYqy%{>jI z)4;3SAgqVi#b{kqX#$Mt6L8NhZYgonb7>+r#BHje)bvaZ2c0nAvrN3gez+dNXaV;A zmyR0z@9h4@6~rJik-=2M-T+d`t&@YW<wU#5pmo<=&m6u@AMqhU5PjnMPyFlrc1fI4 z^s+qCDbwxw9Chz5=Fn{K<DKi+?(Kt&Jk=KczO9E4_8$cW3QJQoN2o7><YlumXjuYH zmFy7o0zAj}(M3Oj*qqv>hsoP_XP-NsVO}wmo!nR~QVWU?nVlQjNfgcTzE-PkfIX5G z1?&MwaeuzhF=u)X%Vpg_e@>d2yZwxl6-r3OMqDn8_6m^4z3zG##cK0Fsgq8fcvmhu z{73jseR%X%$85H^jRAcrhd&k!<MZxk`~HjF|0NK5-*@CGKS_lu8bgj|J)6vMX}SJI z)b!??7qc{!3w>i^xL9FrS7qw2$&gwAS8AfAk#g_E_tP;x66fS`Mn@SNVrcn_N;EQm z`Mt3Z%rw%hDqTH-s~6SrIL$hIPKL5^7ejkLTBr46;pHTQDdoEr<t%xJrp5N8$@Xt_ z9Z!`6lKBPTNg3Xu5Vlui<8m2nO6<=@9&$Lw;OMv;YvIy)+D=^D-)NgD@!bgSSr<yv zu{4%2B|4ND;?y9p=8cQ;+A-`P^-^}&P&xI@u0C0<YPUWL3uFz5`3CkbT0b0K62v&% z7lU0)=F&UuVT*;Ztw~W4oA*<iUxok5GZ6N4Lp)1eY|`N2FXC%Q7In&kdIe;i5?$-~ zmCqh<?$Z3$2a`EdCfo{$#{EhiO2#?5h;O*Z;2hukceJRhq}i8(m{$J0r6Jl3bSZy^ zu5UC-crqz`d9qHK<&^;Oqotdhctr}FlWCKKefqLhsl|3hm$o+6=Y>S(B>``t;+1+M zvU&Se9@T_BeK;A^p|n^krIR+6rH~BjvRIugf`&EuX9u69`9C?9ANVL8l(rY6#mu^i z=*5Q)-%o*tWl`#b8p*ZH0I}hn#gV%|jt6V_JanDGuekR*-wF`u;amTCpGG|1;4A5$ zYbHF{?G1vv5;8Ph5%kEW)t|am2_4ik!`7q{ymfHoe^Z99c|$;FAL+NbxE-_zheYbV z3hb0`uZGTsgA5TG(X|GVDSJyJxsyR7V5PS_WSnYgwc_D60m7u*x4b2D79r5UgtL18 zcCHWk+K6N1Pg2c;0#r-)XpwGX?|Iv)^CLWqwF=a}fXUSM?n6E;cCeW5ER^om#{)Jr zJR81pkK?VoFm@N-s%hd7@hBS0xuCD0-UDVLDDkl7Ck=BAj*^ps`393}AJ+Ruq@fl9 z%R(&?5Nc3lnEKGaY<Vgp37({W*3kKqgZBXtTUU<()FlPj86N3Iv(9p#lJ!tc_gTIo z;eJ)#B&6-T1ZDLOVWBC#F-E3?6j0++MsR9i>MLmRzKXow1+Gh|O-LG7XiNxkG^uyv zpAtLINwMK}IWK65hOw&O>~EJ}x@lDBtB`yKeV1%GtY4PzT%@~wa1VgZn7QRwc7C)_ zpEF~upeDRg_<#w=dLQ)E?AzXUQpbKXYxkp>;c@aOr6A|dHA?KaZkL0svwB^U#zmx0 zzW4^&G!w7YeRxt<9;d@8H=u(j{6+Uj5A<tklHW2pTa~S@lu}HvHYx0LG+5Ph8O8@s zUM<{BPSivUfb(%r)fde;4#uVndFDrCoIKW4h8m;zj9B(+(CmAO-Mf+P9dj1Po7~)* zY*@|`3IG!5;+&n`diqaGGtlSrVI+4_`5o**#TZXT;5?t`EF1A}$;rRSoVgWuxA7Q4 zfN#A}7OG7Ax}QJeFGgPul^H>uTluvZZD4b+#+6Rp?(yJ`BC9EW9!b&KdPvzJYe5l7 zMJ9aC@S;sA0{F0XyVY{}FzW0Vh)0mPf_BX82E+CD&)wf2!x@{RO~XBYu80TONl3e+ zA7W$ra6LcDW_j4s-`3tI^VhG*sa5lLc+V6ONf=hO@q4|p`CinYqk1Ko*MbZ6_M05k zSwSwkvu;`|I*_Vl=zPd|dVD0lh&Ha)CSJJvV{AEdF{^Kn<A>_Yfsd!{Pc1GN<daM7 z8mUOs+pp)L&axG+J>gw}(^~%)jk5~0L~ms|Rez1fiK~s5t(p1ci5Gq$JC#^JrXf?8 z-Y-Zi_Hvi>oBzV8DSRG!7dm|%IlZg3^0{5~;>)8-+Nk&EhAd(}s^7%MuU}lphNW9Q zT)DPo(ob{tB7_?u;4-qGDo!sh&7gHaJfkh43QwL|bbFVi<Ea+pgM45vP>@+oy;i;M zM&CP^v~lx<aKd6jWNe#IO0jv{1tH>1U`pi9PmSr&Mc<%HAq0DGH?Ft95)WY`P?~7O z`O^Nr{Py9M#Ls4Y7OM?e%Y*Mvrme%=DwQaye^Qut_1pOMrg^!5u(f9p(D%MR%1K>% zRGw%=dYvw@)o}Fw@tOtPjz`45mfpn;OT&V(;z75J*<$52{sB65$gDjwX3Xa!x_wE- z!#RpwHM#WrO*|~f7z}(}<nUUe+>o7US(+0FYLM}6de>gQdtPazXz?<Q=Cmu$t&b5s z_!pBej^YlNNkzx}fWSiH{!n@T@Ifu$o%~J7hHs6{^SLdNR15PYA?76|svZujR?8#^ z)I@gLBE6Tx4GO=(ckCWc$heXEE^;p)e+2e+apB4q{Cyzmz7Fn7ZQqijBe5X~1V298 z=;sSRaCUk>OcNv4R^oYLJ_BQOd_l172oSK$6!1r@g+B@0ofJ4*{>_AIxfe-#xp>(1 z@Y3Nfd>fmqvjL;?+DmZk*KsfXJf<%~(gcLwEez%>1c6XSboURUh&k=B)MS>6kw9bY z{7vdev7;A}5fy*ZE23DS{J?8at~xwVk`pEwP5^k?XMQ7u64;KmFJ#POzdG#np~F&H ze-BUh@g54)dsS%nkBb}+GuUEKU~pHcYIg4vSo$J(J|U36bs0Use+3A&IMcR%6@jv$ z=+QI+@wW@?iu}Hpyzlvj-EYeop{<NJk_?+9;susJh)h#gLl{}>f65GX0O%>w#0t|V z1-svWk`hU~m`|O$kw5?Yn5UhI%9P-<45A(v0ld1n+%Ziq&TVpBcV9n}L9Tus-TI)f zd_(g+nYCDR@+wYNQm1GwxhUN4tGMLCzDzPqY$~`l<47{+l<{FZ$L6(>J)|}!bi<)| zE35dl{a2)&leQ@LlDxLQOfUDS`;+ZQ4ozrleQwaR<EyTs@1w`dks4V1dk^tPOQWgq z+6Kl%HpVkfMCvF_c(tYX0BYZ_jo-d`$-sj*0423_#lJLMTl@>-K|@9T{#hB5Z^t#8 zC-d_G;B4;F#8A2EBL58s$z<NI8TOT?gM~NOSY7YmPs@IwbBCCvQLcgb3NPO--vwvj zIo#4jFMb45R#6Bgag+ki@3s+fHX&7~8?2am6zoi1&#KKDn0gg6i&fE9{<inUqqvhQ zP{Z^|`oRsu;5Q#!9W4(+2@<ZLtCfDuYdGN^z*B|X;D?Jjs4CHjijE6FsIt|$l-U+k zM^iuup{QTmn0KT?-z;^(jE-x~4L1XTvIlF4I4?xhV$HvxJ-7ZK9Wl~V5za{*`g0UP z#1^aAmRM`7n?p|y*!kJIRHUS$ga(6NOSJnEe<uxwURIvzN2SJjEF3T>F-=SCr`P#z zNCTnHF&|X@q>SkAoYu>&s9v@zCpv9lLSH-UZzfhJh`EZ<wH2x)9grWv$QD12hWW&U zd-7x>A{X#%nqw@@aW^vPcfQrlPs(qQxmC|4tp^&sHy!H!2FH5eC{M@g;ElWNzlb-+ zxpfc0m4<}L){4|RZ>KReag2j%Ot_UKkgpJN!7Y_y3;<VDdMZ~NAH5|1NqWL>Ssz{9 z!K3isRtaFtQII5^6}cm9RZd5nTp9psk&u1C(BY`(_tolBwzV_@0F*m%3G%Y?2utyS zY`xM0iDRT)yTyYukFeGQ&W@ReM+ADG1xu@ruq&^GK35`+2r}b^V!m1(VgH|QhIPDE X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! literal 0 HcmV?d00001 diff --git a/infinite_list/web/icons/Icon-maskable-512.png b/infinite_list/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e GIT binary patch literal 20998 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 MPgg&ebxsLQ025IeI{*Lx literal 0 HcmV?d00001 diff --git a/infinite_list/web/index.html b/infinite_list/web/index.html index 864b27e22..cdab1aded 100644 --- a/infinite_list/web/index.html +++ b/infinite_list/web/index.html @@ -1,6 +1,5 @@ <!DOCTYPE html> <html> - <head> <!-- If you are serving your web app in a path other than the root, change the @@ -11,8 +10,11 @@ For more details: * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base + + This is a placeholder for base href that will be replaced by the value of + the `--base-href` argument provided to `flutter build`. --> - <base href="/"> + <base href="$FLUTTER_BASE_HREF"> <meta charset="UTF-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> @@ -25,80 +27,32 @@ <link rel="apple-touch-icon" href="icons/Icon-192.png"> <!-- Favicon --> - <link rel="icon" type="image/png" href="favicon.png" /> + <link rel="icon" type="image/png" href="favicon.png"/> <title>infinite_list</title> <link rel="manifest" href="manifest.json"> -</head> -<body> - <!-- This script installs service_worker.js to provide PWA functionality to - application. For more information, see: - https://developers.google.com/web/fundamentals/primers/service-workers --> <script> + // The value below is injected by flutter build, do not touch. var serviceWorkerVersion = null; - var scriptLoaded = false; - function loadMainDartJs() { - if (scriptLoaded) { - return; - } - scriptLoaded = true; - var scriptTag = document.createElement('script'); - scriptTag.src = 'main.dart.js'; - scriptTag.type = 'application/javascript'; - document.body.append(scriptTag); - } - - if ('serviceWorker' in navigator) { - // Service workers are supported. Use them. - window.addEventListener('load', function () { - // Wait for registration to finish before dropping the <script> tag. - // Otherwise, the browser will load the script multiple times, - // potentially different versions. - var serviceWorkerUrl = 'flutter_service_worker.js?v=' + serviceWorkerVersion; - navigator.serviceWorker.register(serviceWorkerUrl) - .then((reg) => { - function waitForActivation(serviceWorker) { - serviceWorker.addEventListener('statechange', () => { - if (serviceWorker.state == 'activated') { - console.log('Installed new service worker.'); - loadMainDartJs(); - } - }); - } - if (!reg.active && (reg.installing || reg.waiting)) { - // No active web worker and we have installed or are installing - // one for the first time. Simply wait for it to activate. - waitForActivation(reg.installing ?? reg.waiting); - } else if (!reg.active.scriptURL.endsWith(serviceWorkerVersion)) { - // When the app updates the serviceWorkerVersion changes, so we - // need to ask the service worker to update. - console.log('New service worker available.'); - reg.update(); - waitForActivation(reg.installing); - } else { - // Existing service worker is still good. - console.log('Loading app from service worker.'); - loadMainDartJs(); - } - }); - - // If service worker doesn't succeed in a reasonable amount of time, - // fallback to plaint <script> tag. - setTimeout(() => { - if (!scriptLoaded) { - console.warn( - 'Failed to load app from service worker. Falling back to plain <script> tag.', - ); - loadMainDartJs(); - } - }, 4000); + </script> + <!-- This script adds the flutter initialization JS code --> + <script src="flutter.js" defer></script> +</head> +<body> + <script> + window.addEventListener('load', function(ev) { + // Download main.dart.js + _flutter.loader.loadEntrypoint({ + serviceWorker: { + serviceWorkerVersion: serviceWorkerVersion, + } + }).then(function(engineInitializer) { + return engineInitializer.initializeEngine(); + }).then(function(appRunner) { + return appRunner.runApp(); }); - } else { - // Service workers not supported. Just drop the <script> tag. - loadMainDartJs(); - } + }); </script> </body> - -</html> \ No newline at end of file +</html> diff --git a/infinite_list/web/manifest.json b/infinite_list/web/manifest.json index a03ce55ac..0325f640b 100644 --- a/infinite_list/web/manifest.json +++ b/infinite_list/web/manifest.json @@ -18,6 +18,18 @@ "src": "icons/Icon-512.png", "sizes": "512x512", "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" } ] } diff --git a/infinite_list/windows/CMakeLists.txt b/infinite_list/windows/CMakeLists.txt index a27b87956..e976a2942 100644 --- a/infinite_list/windows/CMakeLists.txt +++ b/infinite_list/windows/CMakeLists.txt @@ -1,13 +1,16 @@ +# Project-level configuration. cmake_minimum_required(VERSION 3.14) project(infinite_list LANGUAGES CXX) +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. set(BINARY_NAME "infinite_list") +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. cmake_policy(SET CMP0063 NEW) -set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") - -# Configure build options. +# Define build configuration option. get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(IS_MULTICONFIG) set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" @@ -20,7 +23,7 @@ else() "Debug" "Profile" "Release") endif() endif() - +# Define settings for the Profile build mode. set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") @@ -30,6 +33,10 @@ set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") add_definitions(-DUNICODE -D_UNICODE) # Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. function(APPLY_STANDARD_SETTINGS TARGET) target_compile_features(${TARGET} PUBLIC cxx_std_17) target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") @@ -38,12 +45,11 @@ function(APPLY_STANDARD_SETTINGS TARGET) target_compile_definitions(${TARGET} PRIVATE "$<$<CONFIG:Debug>:_DEBUG>") endfunction() -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") - # Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") add_subdirectory(${FLUTTER_MANAGED_DIR}) -# Application build +# Application build; see runner/CMakeLists.txt. add_subdirectory("runner") # Generated plugin build rules, which manage building the plugins and adding diff --git a/infinite_list/windows/flutter/CMakeLists.txt b/infinite_list/windows/flutter/CMakeLists.txt index b2e4bd8d6..930d2071a 100644 --- a/infinite_list/windows/flutter/CMakeLists.txt +++ b/infinite_list/windows/flutter/CMakeLists.txt @@ -1,3 +1,4 @@ +# This file controls Flutter-level build steps. It should not be edited. cmake_minimum_required(VERSION 3.14) set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") diff --git a/infinite_list/windows/runner/CMakeLists.txt b/infinite_list/windows/runner/CMakeLists.txt index de2d8916b..b9e550fba 100644 --- a/infinite_list/windows/runner/CMakeLists.txt +++ b/infinite_list/windows/runner/CMakeLists.txt @@ -1,6 +1,11 @@ cmake_minimum_required(VERSION 3.14) project(runner LANGUAGES CXX) +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. add_executable(${BINARY_NAME} WIN32 "flutter_window.cpp" "main.cpp" @@ -10,8 +15,18 @@ add_executable(${BINARY_NAME} WIN32 "Runner.rc" "runner.exe.manifest" ) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. apply_standard_settings(${BINARY_NAME}) + +# Disable Windows macros that collide with C++ standard library functions. target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/infinite_list/windows/runner/utils.cpp b/infinite_list/windows/runner/utils.cpp index d19bdbbcc..f5bf9fa0f 100644 --- a/infinite_list/windows/runner/utils.cpp +++ b/infinite_list/windows/runner/utils.cpp @@ -48,10 +48,10 @@ std::string Utf8FromUtf16(const wchar_t* utf16_string) { int target_length = ::WideCharToMultiByte( CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, -1, nullptr, 0, nullptr, nullptr); - if (target_length == 0) { - return std::string(); - } std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } utf8_string.resize(target_length); int converted_length = ::WideCharToMultiByte( CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,