diff --git a/README.md b/README.md index 3b2b7e0bc..7dc15a9e4 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,14 @@ A collection of open source samples that illustrate best practices for [Flutter]. +## Contributing + +We're very appreciative of fixes and necessary improvements to the existing samples. **But in most cases, we're not currently adding new samples to this repository** while we rethink sample code in the post-LLM world. + +Please read the [contributor's guide] if you have contributions. + +Googler's, you can freely add samples to the [flutter/demos] repository. + ## Index ### Quickstarts @@ -189,3 +197,4 @@ If you run into a bug in one of the samples, please file an issue in the [The FlutterDev Discord]: https://discord.gg/rflutterdev [The Flutter Community forum]: https://forum.itsallwidgets.com/latest [`flutter/samples` issue tracker]: https://github.com/flutter/samples/issues +[flutter/demos]: https://github.com/flutter/demos diff --git a/experimental/federated_plugin/README.md b/experimental/federated_plugin/README.md index 2dc52b3cf..ffb580bda 100644 --- a/experimental/federated_plugin/README.md +++ b/experimental/federated_plugin/README.md @@ -1,20 +1,3 @@ -# federated_plugin +# Sample moved -A Flutter plugin sample that shows how to implement a federated plugin to retrieve current battery level on different platforms. - -This sample is currently being built. Not all platforms and functionality are in place. - -## Goals for this sample - -* Show how to develop a federated plugin which supports Android, iOS, web & desktop. -* Demonstrate how to use Platform Channels to communicate with different platforms including Web and Desktop. - -## Questions/issues - -If you have a general question about Flutter, the best places to go are: - -* [The FlutterDev Google Group](https://groups.google.com/forum/#!forum/flutter-dev) -* [The Flutter Gitter channel](https://gitter.im/flutter/flutter) -* [StackOverflow](https://stackoverflow.com/questions/tagged/flutter) - -If you run into an issue with the sample itself, please file an issue [here](https://github.com/flutter/samples/issues). \ No newline at end of file +The `federated_plugin` sample has been moved to the [flutter/demos][https://github.com/flutter/demos] repository, and is no longer maintained. diff --git a/experimental/federated_plugin/federated_plugin/.gitignore b/experimental/federated_plugin/federated_plugin/.gitignore deleted file mode 100644 index 9be145fde..000000000 --- a/experimental/federated_plugin/federated_plugin/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. -/pubspec.lock -**/doc/api/ -.dart_tool/ -.packages -build/ diff --git a/experimental/federated_plugin/federated_plugin/.metadata b/experimental/federated_plugin/federated_plugin/.metadata deleted file mode 100644 index 8c15ad72b..000000000 --- a/experimental/federated_plugin/federated_plugin/.metadata +++ /dev/null @@ -1,10 +0,0 @@ -# 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. - -version: - revision: 77d935af4db863f6abd0b9c31c7e6df2a13de57b - channel: stable - -project_type: plugin diff --git a/experimental/federated_plugin/federated_plugin/CHANGELOG.md b/experimental/federated_plugin/federated_plugin/CHANGELOG.md deleted file mode 100644 index 41cc7d819..000000000 --- a/experimental/federated_plugin/federated_plugin/CHANGELOG.md +++ /dev/null @@ -1,3 +0,0 @@ -## 0.0.1 - -* TODO: Describe initial release. diff --git a/experimental/federated_plugin/federated_plugin/analysis_options.yaml b/experimental/federated_plugin/federated_plugin/analysis_options.yaml deleted file mode 100644 index 13d6fe105..000000000 --- a/experimental/federated_plugin/federated_plugin/analysis_options.yaml +++ /dev/null @@ -1 +0,0 @@ -include: package:analysis_defaults/flutter.yaml diff --git a/experimental/federated_plugin/federated_plugin/android/.gitignore b/experimental/federated_plugin/federated_plugin/android/.gitignore deleted file mode 100644 index c6cbe562a..000000000 --- a/experimental/federated_plugin/federated_plugin/android/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -*.iml -.gradle -/local.properties -/.idea/workspace.xml -/.idea/libraries -.DS_Store -/build -/captures diff --git a/experimental/federated_plugin/federated_plugin/android/build.gradle b/experimental/federated_plugin/federated_plugin/android/build.gradle deleted file mode 100644 index 4e6d92440..000000000 --- a/experimental/federated_plugin/federated_plugin/android/build.gradle +++ /dev/null @@ -1,50 +0,0 @@ -group 'dev.flutter.federated_plugin' -version '1.0-SNAPSHOT' - -buildscript { - ext.kotlin_version = '1.3.50' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -rootProject.allprojects { - repositories { - google() - mavenCentral() - } -} - -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' - -android { - compileSdkVersion 30 - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - minSdkVersion 16 - } -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/experimental/federated_plugin/federated_plugin/android/settings.gradle b/experimental/federated_plugin/federated_plugin/android/settings.gradle deleted file mode 100644 index 8f719cd01..000000000 --- a/experimental/federated_plugin/federated_plugin/android/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -rootProject.name = 'federated_plugin' diff --git a/experimental/federated_plugin/federated_plugin/android/src/main/AndroidManifest.xml b/experimental/federated_plugin/federated_plugin/android/src/main/AndroidManifest.xml deleted file mode 100644 index 22a910cef..000000000 --- a/experimental/federated_plugin/federated_plugin/android/src/main/AndroidManifest.xml +++ /dev/null @@ -1,3 +0,0 @@ - - diff --git a/experimental/federated_plugin/federated_plugin/android/src/main/kotlin/dev/flutter/federated_plugin/FederatedPlugin.kt b/experimental/federated_plugin/federated_plugin/android/src/main/kotlin/dev/flutter/federated_plugin/FederatedPlugin.kt deleted file mode 100644 index c85fecf8b..000000000 --- a/experimental/federated_plugin/federated_plugin/android/src/main/kotlin/dev/flutter/federated_plugin/FederatedPlugin.kt +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2020 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package dev.flutter.federated_plugin - -import android.content.Context -import android.content.Intent -import android.content.IntentFilter -import android.os.BatteryManager -import android.os.Build -import androidx.annotation.NonNull - -import io.flutter.embedding.engine.plugins.FlutterPlugin -import io.flutter.plugin.common.MethodCall -import io.flutter.plugin.common.MethodChannel -import io.flutter.plugin.common.MethodChannel.MethodCallHandler -import io.flutter.plugin.common.MethodChannel.Result - -class FederatedPlugin : FlutterPlugin, MethodCallHandler { - private lateinit var channel: MethodChannel - private var context: Context? = null - - override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { - channel = MethodChannel(flutterPluginBinding.binaryMessenger, "battery") - channel.setMethodCallHandler(this) - context = flutterPluginBinding.applicationContext - } - - override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) { - if (call.method == "getBatteryLevel") { - val batteryLevel: Int - - batteryLevel = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - val batteryManager = context?.getSystemService(Context.BATTERY_SERVICE) as BatteryManager - batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) - } else { - val intent = IntentFilter(Intent.ACTION_BATTERY_CHANGED).let { intentFilter -> - context?.registerReceiver(null, intentFilter) - } - intent!!.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) * 100 / intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1) - } - - if (batteryLevel < 0) { - result.error("STATUS_UNAVAILABLE", "Not able to determine battery level.", null) - } else { - result.success(batteryLevel) - } - } else { - result.notImplemented() - } - } - - override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) { - channel.setMethodCallHandler(null) - context = null - } -} diff --git a/experimental/federated_plugin/federated_plugin/example/.gitignore b/experimental/federated_plugin/federated_plugin/example/.gitignore deleted file mode 100644 index 0fa6b675c..000000000 --- a/experimental/federated_plugin/federated_plugin/example/.gitignore +++ /dev/null @@ -1,46 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Web related -lib/generated_plugin_registrant.dart - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release diff --git a/experimental/federated_plugin/federated_plugin/example/.metadata b/experimental/federated_plugin/federated_plugin/example/.metadata deleted file mode 100644 index fd70cabc0..000000000 --- a/experimental/federated_plugin/federated_plugin/example/.metadata +++ /dev/null @@ -1,10 +0,0 @@ -# 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. - -version: - revision: 77d935af4db863f6abd0b9c31c7e6df2a13de57b - channel: stable - -project_type: app diff --git a/experimental/federated_plugin/federated_plugin/example/README.md b/experimental/federated_plugin/federated_plugin/example/README.md deleted file mode 100644 index 6cd01f271..000000000 --- a/experimental/federated_plugin/federated_plugin/example/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# federated_plugin_example - -Demonstrates how to use the federated_plugin plugin. diff --git a/experimental/federated_plugin/federated_plugin/example/analysis_options.yaml b/experimental/federated_plugin/federated_plugin/example/analysis_options.yaml deleted file mode 100644 index 13d6fe105..000000000 --- a/experimental/federated_plugin/federated_plugin/example/analysis_options.yaml +++ /dev/null @@ -1 +0,0 @@ -include: package:analysis_defaults/flutter.yaml diff --git a/experimental/federated_plugin/federated_plugin/example/android/.gitignore b/experimental/federated_plugin/federated_plugin/example/android/.gitignore deleted file mode 100644 index 6f568019d..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -gradle-wrapper.jar -/.gradle -/captures/ -/gradlew -/gradlew.bat -/local.properties -GeneratedPluginRegistrant.java - -# Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app -key.properties -**/*.keystore -**/*.jks diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/build.gradle b/experimental/federated_plugin/federated_plugin/example/android/app/build.gradle deleted file mode 100644 index 48b36eca4..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/app/build.gradle +++ /dev/null @@ -1,68 +0,0 @@ -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - -android { - compileSdkVersion flutter.compileSdkVersion - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "dev.flutter.federated_plugin_example" - minSdkVersion flutter.minSdkVersion - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - } -} - -flutter { - source '../..' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/debug/AndroidManifest.xml b/experimental/federated_plugin/federated_plugin/example/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index 7d525237e..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/AndroidManifest.xml b/experimental/federated_plugin/federated_plugin/example/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 887b665d6..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/kotlin/dev/flutter/example/MainActivity.kt b/experimental/federated_plugin/federated_plugin/example/android/app/src/main/kotlin/dev/flutter/example/MainActivity.kt deleted file mode 100644 index d37e09f4e..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/kotlin/dev/flutter/example/MainActivity.kt +++ /dev/null @@ -1,6 +0,0 @@ -package dev.flutter.example - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity: FlutterActivity() { -} diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/kotlin/dev/flutter/federated_plugin_example/MainActivity.kt b/experimental/federated_plugin/federated_plugin/example/android/app/src/main/kotlin/dev/flutter/federated_plugin_example/MainActivity.kt deleted file mode 100644 index de6cd71a4..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/kotlin/dev/flutter/federated_plugin_example/MainActivity.kt +++ /dev/null @@ -1,6 +0,0 @@ -package dev.flutter.federated_plugin_example - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity: FlutterActivity() { -} diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/drawable-v21/launch_background.xml b/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/drawable-v21/launch_background.xml deleted file mode 100644 index f74085f3f..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/drawable-v21/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/drawable/launch_background.xml b/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/drawable/launch_background.xml deleted file mode 100644 index 304732f88..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/drawable/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index db77bb4b7..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 17987b79b..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 09d439148..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index d5f1c8d34..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 4d6372eeb..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/values-night/styles.xml b/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/values-night/styles.xml deleted file mode 100644 index 3db14bb53..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/values-night/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/values/styles.xml b/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/values/styles.xml deleted file mode 100644 index d460d1e92..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/android/app/src/profile/AndroidManifest.xml b/experimental/federated_plugin/federated_plugin/example/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index 7d525237e..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/android/build.gradle b/experimental/federated_plugin/federated_plugin/example/android/build.gradle deleted file mode 100644 index 24047dce5..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/build.gradle +++ /dev/null @@ -1,31 +0,0 @@ -buildscript { - ext.kotlin_version = '1.3.50' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -rootProject.buildDir = '../build' -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/experimental/federated_plugin/federated_plugin/example/android/gradle.properties b/experimental/federated_plugin/federated_plugin/example/android/gradle.properties deleted file mode 100644 index 94adc3a3f..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.jvmargs=-Xmx1536M -android.useAndroidX=true -android.enableJetifier=true diff --git a/experimental/federated_plugin/federated_plugin/example/android/gradle/wrapper/gradle-wrapper.properties b/experimental/federated_plugin/federated_plugin/example/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index bc6a58afd..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Fri Jun 23 08:50:38 CEST 2017 -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 diff --git a/experimental/federated_plugin/federated_plugin/example/android/settings.gradle b/experimental/federated_plugin/federated_plugin/example/android/settings.gradle deleted file mode 100644 index 44e62bcf0..000000000 --- a/experimental/federated_plugin/federated_plugin/example/android/settings.gradle +++ /dev/null @@ -1,11 +0,0 @@ -include ':app' - -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() - -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } - -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/experimental/federated_plugin/federated_plugin/example/ios/.gitignore b/experimental/federated_plugin/federated_plugin/example/ios/.gitignore deleted file mode 100644 index 7a7f9873a..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -**/dgph -*.mode1v3 -*.mode2v3 -*.moved-aside -*.pbxuser -*.perspectivev3 -**/*sync/ -.sconsign.dblite -.tags* -**/.vagrant/ -**/DerivedData/ -Icon? -**/Pods/ -**/.symlinks/ -profile -xcuserdata -**/.generated/ -Flutter/App.framework -Flutter/Flutter.framework -Flutter/Flutter.podspec -Flutter/Generated.xcconfig -Flutter/ephemeral/ -Flutter/app.flx -Flutter/app.zip -Flutter/flutter_assets/ -Flutter/flutter_export_environment.sh -ServiceDefinitions.json -Runner/GeneratedPluginRegistrant.* - -# Exceptions to above rules. -!default.mode1v3 -!default.mode2v3 -!default.pbxuser -!default.perspectivev3 diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Flutter/AppFrameworkInfo.plist b/experimental/federated_plugin/federated_plugin/example/ios/Flutter/AppFrameworkInfo.plist deleted file mode 100644 index 8d4492f97..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Flutter/AppFrameworkInfo.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 9.0 - - diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Flutter/Debug.xcconfig b/experimental/federated_plugin/federated_plugin/example/ios/Flutter/Debug.xcconfig deleted file mode 100644 index ec97fc6f3..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Flutter/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "Generated.xcconfig" diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Flutter/Release.xcconfig b/experimental/federated_plugin/federated_plugin/example/ios/Flutter/Release.xcconfig deleted file mode 100644 index c4855bfe2..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Flutter/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "Generated.xcconfig" diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Podfile b/experimental/federated_plugin/federated_plugin/example/ios/Podfile deleted file mode 100644 index 1e8c3c90a..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Podfile +++ /dev/null @@ -1,41 +0,0 @@ -# Uncomment this line to define a global platform for your project -# platform :ios, '9.0' - -# 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', '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 Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/project.pbxproj b/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 8bae94179..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,549 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 50; - objects = { - -/* Begin PBXBuildFile section */ - 05F5AA9A8918E7054FF69BBB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30D3D9621395C516E82FBA97 /* Pods_Runner.framework */; }; - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 9705A1C41CF9048500538489 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 30D3D9621395C516E82FBA97 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 447027611B96046137396C04 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 66FD4F9678EE12C6021DDC4C /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; - 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AE02D38AA281AD19B3FBAE7B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 05F5AA9A8918E7054FF69BBB /* Pods_Runner.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 0F9960076300DD52FCCDCAC1 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 30D3D9621395C516E82FBA97 /* Pods_Runner.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 44C3AAFD416E2CBFA5D43075 /* Pods */ = { - isa = PBXGroup; - children = ( - 447027611B96046137396C04 /* Pods-Runner.debug.xcconfig */, - 66FD4F9678EE12C6021DDC4C /* Pods-Runner.release.xcconfig */, - AE02D38AA281AD19B3FBAE7B /* Pods-Runner.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - 9740EEB11CF90186004384FC /* Flutter */ = { - isa = PBXGroup; - children = ( - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 9740EEB31CF90195004384FC /* Generated.xcconfig */, - ); - name = Flutter; - sourceTree = ""; - }; - 97C146E51CF9000F007C117D = { - isa = PBXGroup; - children = ( - 9740EEB11CF90186004384FC /* Flutter */, - 97C146F01CF9000F007C117D /* Runner */, - 97C146EF1CF9000F007C117D /* Products */, - 44C3AAFD416E2CBFA5D43075 /* Pods */, - 0F9960076300DD52FCCDCAC1 /* Frameworks */, - ); - sourceTree = ""; - }; - 97C146EF1CF9000F007C117D /* Products */ = { - isa = PBXGroup; - children = ( - 97C146EE1CF9000F007C117D /* Runner.app */, - ); - name = Products; - sourceTree = ""; - }; - 97C146F01CF9000F007C117D /* Runner */ = { - isa = PBXGroup; - children = ( - 97C146FA1CF9000F007C117D /* Main.storyboard */, - 97C146FD1CF9000F007C117D /* Assets.xcassets */, - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, - 97C147021CF9000F007C117D /* Info.plist */, - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, - ); - path = Runner; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 97C146ED1CF9000F007C117D /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - C01D951D1D8DEFCA6C06A108 /* [CP] Check Pods Manifest.lock */, - 9740EEB61CF901F6004384FC /* Run Script */, - 97C146EA1CF9000F007C117D /* Sources */, - 97C146EB1CF9000F007C117D /* Frameworks */, - 97C146EC1CF9000F007C117D /* Resources */, - 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - F9CBF189CFE3019A377CBAB3 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Runner; - productName = Runner; - productReference = 97C146EE1CF9000F007C117D /* Runner.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 97C146E61CF9000F007C117D /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 97C146ED1CF9000F007C117D = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 1100; - }; - }; - }; - buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 97C146E51CF9000F007C117D; - productRefGroup = 97C146EF1CF9000F007C117D /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 97C146ED1CF9000F007C117D /* Runner */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 97C146EC1CF9000F007C117D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Thin Binary"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; - }; - 9740EEB61CF901F6004384FC /* Run Script */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; - }; - C01D951D1D8DEFCA6C06A108 /* [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; - }; - F9CBF189CFE3019A377CBAB3 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 97C146EA1CF9000F007C117D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 97C146FA1CF9000F007C117D /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C146FB1CF9000F007C117D /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C147001CF9000F007C117D /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 249021D3217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - 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_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - 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_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Profile; - }; - 249021D4217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.federatedPluginExample; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Profile; - }; - 97C147031CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - 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_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - 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_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - 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_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 97C147041CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - 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_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - 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_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 97C147061CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.federatedPluginExample; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 97C147071CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.federatedPluginExample; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147031CF9000F007C117D /* Debug */, - 97C147041CF9000F007C117D /* Release */, - 249021D3217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147061CF9000F007C117D /* Debug */, - 97C147071CF9000F007C117D /* Release */, - 249021D4217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 97C146E61CF9000F007C117D /* Project object */; -} diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a62..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5e..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index c87d15a33..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc14c..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5e..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/AppDelegate.swift b/experimental/federated_plugin/federated_plugin/example/ios/Runner/AppDelegate.swift deleted file mode 100644 index 70693e4a8..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner/AppDelegate.swift +++ /dev/null @@ -1,13 +0,0 @@ -import UIKit -import Flutter - -@UIApplicationMain -@objc class AppDelegate: FlutterAppDelegate { - override func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? - ) -> Bool { - GeneratedPluginRegistrant.register(with: self) - return super.application(application, didFinishLaunchingWithOptions: launchOptions) - } -} diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d36b1fab2..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada472..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png deleted file mode 100644 index 28c6bf030..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png deleted file mode 100644 index 2ccbfd967..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index f091b6b0b..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png deleted file mode 100644 index 4cde12118..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index d0ef06e7e..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png deleted file mode 100644 index dcdc2306c..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png deleted file mode 100644 index 2ccbfd967..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index c8f9ed8f5..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index a6d6b8609..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index a6d6b8609..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index 75b2d164a..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index c4df70d39..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png deleted file mode 100644 index 6a84f41e1..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png deleted file mode 100644 index d0e1f5853..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json deleted file mode 100644 index 0bedcf2fd..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "LaunchImage.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png deleted file mode 100644 index 9da19eaca..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19eaca..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19eaca..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725b7..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index f2e259c7c..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Base.lproj/Main.storyboard b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Base.lproj/Main.storyboard deleted file mode 100644 index f3c28516f..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Base.lproj/Main.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Info.plist b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Info.plist deleted file mode 100644 index ca05d0bd9..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Info.plist +++ /dev/null @@ -1,47 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Federated Plugin - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - federated_plugin_example - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - - diff --git a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Runner-Bridging-Header.h b/experimental/federated_plugin/federated_plugin/example/ios/Runner/Runner-Bridging-Header.h deleted file mode 100644 index 308a2a560..000000000 --- a/experimental/federated_plugin/federated_plugin/example/ios/Runner/Runner-Bridging-Header.h +++ /dev/null @@ -1 +0,0 @@ -#import "GeneratedPluginRegistrant.h" diff --git a/experimental/federated_plugin/federated_plugin/example/lib/main.dart b/experimental/federated_plugin/federated_plugin/example/lib/main.dart deleted file mode 100644 index c17ad14cd..000000000 --- a/experimental/federated_plugin/federated_plugin/example/lib/main.dart +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2020 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:federated_plugin/federated_plugin.dart'; -import 'package:flutter/material.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatelessWidget { - const MyApp({super.key}); - - @override - Widget build(BuildContext context) { - return MaterialApp(theme: ThemeData.light(), home: const HomePage()); - } -} - -/// Demonstrates how to use the getBatteryLevel method from federated_plugin to retrieve -/// current battery level of device. -class HomePage extends StatefulWidget { - const HomePage({super.key}); - - @override - State createState() => _HomePageState(); -} - -class _HomePageState extends State { - int? batteryLevel; - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar(title: const Text('Federated Plugin Demo')), - body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - batteryLevel == null - ? const SizedBox.shrink() - : Text( - 'Battery Level: $batteryLevel', - style: Theme.of(context).textTheme.headlineSmall, - ), - const SizedBox(height: 16), - FilledButton( - onPressed: () async { - try { - final result = await getBatteryLevel(); - setState(() { - batteryLevel = result; - }); - } catch (error) { - if (!context.mounted) return; - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Theme.of(context).primaryColor, - content: Text((error as dynamic).message as String), - ), - ); - } - }, - child: const Text('Get Battery Level'), - ), - ], - ), - ), - ); - } -} diff --git a/experimental/federated_plugin/federated_plugin/example/macos/.gitignore b/experimental/federated_plugin/federated_plugin/example/macos/.gitignore deleted file mode 100644 index 746adbb6b..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# Flutter-related -**/Flutter/ephemeral/ -**/Pods/ - -# Xcode-related -**/dgph -**/xcuserdata/ diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Flutter/Flutter-Debug.xcconfig b/experimental/federated_plugin/federated_plugin/example/macos/Flutter/Flutter-Debug.xcconfig deleted file mode 100644 index 4b81f9b2d..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Flutter/Flutter-Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Flutter/Flutter-Release.xcconfig b/experimental/federated_plugin/federated_plugin/example/macos/Flutter/Flutter-Release.xcconfig deleted file mode 100644 index 5caa9d157..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Flutter/Flutter-Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Flutter/GeneratedPluginRegistrant.swift b/experimental/federated_plugin/federated_plugin/example/macos/Flutter/GeneratedPluginRegistrant.swift deleted file mode 100644 index 0d51469d7..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// Generated file. Do not edit. -// - -import FlutterMacOS -import Foundation - -import federated_plugin_macos - -func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - FederatedPluginMacosPlugin.register(with: registry.registrar(forPlugin: "FederatedPluginMacosPlugin")) -} diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Podfile b/experimental/federated_plugin/federated_plugin/example/macos/Podfile deleted file mode 100644 index dade8dfad..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Podfile +++ /dev/null @@ -1,40 +0,0 @@ -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/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcodeproj/project.pbxproj b/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 659aec35e..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,632 +0,0 @@ -// !$*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 */; }; - C58C13458B8C1F1C0B003A42 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B52B3AE71320C78F7034ECA8 /* 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 */ - 1671D9D3B0356EFB54861951 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; - 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; - 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; - 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; - 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; - 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 45FDBBDD4581EECA19893003 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8FC351F79983970A66307AC9 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B52B3AE71320C78F7034ECA8 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 33CC10EA2044A3C60003C045 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - C58C13458B8C1F1C0B003A42 /* Pods_Runner.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 2B77B711C096CBDA06689A67 /* Pods */ = { - isa = PBXGroup; - children = ( - 45FDBBDD4581EECA19893003 /* Pods-Runner.debug.xcconfig */, - 8FC351F79983970A66307AC9 /* Pods-Runner.release.xcconfig */, - 1671D9D3B0356EFB54861951 /* Pods-Runner.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - 33BA886A226E78AF003329D5 /* Configs */ = { - isa = PBXGroup; - children = ( - 33E5194F232828860026EE4D /* AppInfo.xcconfig */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, - ); - path = Configs; - sourceTree = ""; - }; - 33CC10E42044A3C60003C045 = { - isa = PBXGroup; - children = ( - 33FAB671232836740065AC1E /* Runner */, - 33CEB47122A05771004F2AC0 /* Flutter */, - 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, - 2B77B711C096CBDA06689A67 /* Pods */, - ); - sourceTree = ""; - }; - 33CC10EE2044A3C60003C045 /* Products */ = { - isa = PBXGroup; - children = ( - 33CC10ED2044A3C60003C045 /* example.app */, - ); - name = Products; - sourceTree = ""; - }; - 33CC11242044D66E0003C045 /* Resources */ = { - isa = PBXGroup; - children = ( - 33CC10F22044A3C60003C045 /* Assets.xcassets */, - 33CC10F42044A3C60003C045 /* MainMenu.xib */, - 33CC10F72044A3C60003C045 /* Info.plist */, - ); - name = Resources; - path = ..; - sourceTree = ""; - }; - 33CEB47122A05771004F2AC0 /* Flutter */ = { - isa = PBXGroup; - children = ( - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, - ); - path = Flutter; - sourceTree = ""; - }; - 33FAB671232836740065AC1E /* Runner */ = { - isa = PBXGroup; - children = ( - 33CC10F02044A3C60003C045 /* AppDelegate.swift */, - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, - 33E51913231747F40026EE4D /* DebugProfile.entitlements */, - 33E51914231749380026EE4D /* Release.entitlements */, - 33CC11242044D66E0003C045 /* Resources */, - 33BA886A226E78AF003329D5 /* Configs */, - ); - path = Runner; - sourceTree = ""; - }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - B52B3AE71320C78F7034ECA8 /* Pods_Runner.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 33CC10EC2044A3C60003C045 /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - C6FC087C0C366A8D70EA0FE7 /* [CP] Check Pods Manifest.lock */, - 33CC10E92044A3C60003C045 /* Sources */, - 33CC10EA2044A3C60003C045 /* Frameworks */, - 33CC10EB2044A3C60003C045 /* Resources */, - 33CC110E2044A8840003C045 /* Bundle Framework */, - 3399D490228B24CF009A79C7 /* ShellScript */, - 50A44A481605D096E0AB4045 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 33CC11202044C79F0003C045 /* PBXTargetDependency */, - ); - name = Runner; - productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* example.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"; - }; - 50A44A481605D096E0AB4045 /* [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; - }; - C6FC087C0C366A8D70EA0FE7 /* [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 = ""; - }; -/* 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/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index fb7259e17..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcworkspace/contents.xcworkspacedata b/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc14c..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/AppDelegate.swift b/experimental/federated_plugin/federated_plugin/example/macos/Runner/AppDelegate.swift deleted file mode 100644 index d53ef6437..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner/AppDelegate.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Cocoa -import FlutterMacOS - -@NSApplicationMain -class AppDelegate: FlutterAppDelegate { - override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { - return true - } -} diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index a2ec33f19..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "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/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png deleted file mode 100644 index 3c4935a7c..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png deleted file mode 100644 index ed4cc1642..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png deleted file mode 100644 index 483be6138..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png deleted file mode 100644 index bcbf36df2..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png deleted file mode 100644 index 9c0a65286..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png deleted file mode 100644 index e71a72613..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png deleted file mode 100644 index 8a31fe2dd..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Base.lproj/MainMenu.xib b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Base.lproj/MainMenu.xib deleted file mode 100644 index 537341abf..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Base.lproj/MainMenu.xib +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Configs/AppInfo.xcconfig b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Configs/AppInfo.xcconfig deleted file mode 100644 index a1f74089f..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Configs/AppInfo.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// 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 = example - -// The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.example - -// The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2022 dev.flutter. All rights reserved. diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Configs/Debug.xcconfig b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Configs/Debug.xcconfig deleted file mode 100644 index 36b0fd946..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Configs/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Debug.xcconfig" -#include "Warnings.xcconfig" diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Configs/Release.xcconfig b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Configs/Release.xcconfig deleted file mode 100644 index dff4f4956..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Configs/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Release.xcconfig" -#include "Warnings.xcconfig" diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Configs/Warnings.xcconfig b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Configs/Warnings.xcconfig deleted file mode 100644 index 42bcbf478..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Configs/Warnings.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -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/experimental/federated_plugin/federated_plugin/example/macos/Runner/DebugProfile.entitlements b/experimental/federated_plugin/federated_plugin/example/macos/Runner/DebugProfile.entitlements deleted file mode 100644 index dddb8a30c..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner/DebugProfile.entitlements +++ /dev/null @@ -1,12 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.cs.allow-jit - - com.apple.security.network.server - - - diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Info.plist b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Info.plist deleted file mode 100644 index 4789daa6a..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - $(PRODUCT_COPYRIGHT) - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/experimental/federated_plugin/federated_plugin/example/macos/Runner/MainFlutterWindow.swift b/experimental/federated_plugin/federated_plugin/example/macos/Runner/MainFlutterWindow.swift deleted file mode 100644 index 2722837ec..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner/MainFlutterWindow.swift +++ /dev/null @@ -1,15 +0,0 @@ -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/experimental/federated_plugin/federated_plugin/example/macos/Runner/Release.entitlements b/experimental/federated_plugin/federated_plugin/example/macos/Runner/Release.entitlements deleted file mode 100644 index 852fa1a47..000000000 --- a/experimental/federated_plugin/federated_plugin/example/macos/Runner/Release.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.app-sandbox - - - diff --git a/experimental/federated_plugin/federated_plugin/example/pubspec.yaml b/experimental/federated_plugin/federated_plugin/example/pubspec.yaml deleted file mode 100644 index 03bea4d14..000000000 --- a/experimental/federated_plugin/federated_plugin/example/pubspec.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: federated_plugin_example -description: Demonstrates how to use the federated_plugin plugin. - -publish_to: 'none' # Remove this line if you wish to publish to pub.dev - -environment: - sdk: ^3.7.0-0 - -dependencies: - flutter: - sdk: flutter - - federated_plugin: - path: ../ - cupertino_icons: ^1.0.2 - -dev_dependencies: - analysis_defaults: - path: ../../../../analysis_defaults - flutter_test: - sdk: flutter - -flutter: - uses-material-design: true diff --git a/experimental/federated_plugin/federated_plugin/example/test/widget_test.dart b/experimental/federated_plugin/federated_plugin/example/test/widget_test.dart deleted file mode 100644 index 597a07b8e..000000000 --- a/experimental/federated_plugin/federated_plugin/example/test/widget_test.dart +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2020 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:federated_plugin_example/main.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - group('federated plugin demo tests', () { - const batteryLevel = 45; - - testWidgets('get current battery level from platform', (tester) async { - tester.binding.defaultBinaryMessenger.setMockMethodCallHandler( - const MethodChannel('battery'), - (call) async { - if (call.method == 'getBatteryLevel') { - return batteryLevel; - } - return 0; - }, - ); - await tester.pumpWidget(const MyApp()); - - // Tap button to retrieve current battery level from platform. - await tester.tap(find.byType(FilledButton)); - await tester.pumpAndSettle(); - - expect(find.text('Battery Level: $batteryLevel'), findsOneWidget); - }); - }); -} diff --git a/experimental/federated_plugin/federated_plugin/example/web/favicon.png b/experimental/federated_plugin/federated_plugin/example/web/favicon.png deleted file mode 100644 index 8aaa46ac1..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/web/favicon.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/web/icons/Icon-192.png b/experimental/federated_plugin/federated_plugin/example/web/icons/Icon-192.png deleted file mode 100644 index b749bfef0..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/web/icons/Icon-192.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/web/icons/Icon-512.png b/experimental/federated_plugin/federated_plugin/example/web/icons/Icon-512.png deleted file mode 100644 index 88cfd48df..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/web/icons/Icon-512.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/web/icons/Icon-maskable-192.png b/experimental/federated_plugin/federated_plugin/example/web/icons/Icon-maskable-192.png deleted file mode 100644 index eb9b4d76e..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/web/icons/Icon-maskable-192.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/web/icons/Icon-maskable-512.png b/experimental/federated_plugin/federated_plugin/example/web/icons/Icon-maskable-512.png deleted file mode 100644 index d69c56691..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/web/icons/Icon-maskable-512.png and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/web/index.html b/experimental/federated_plugin/federated_plugin/example/web/index.html deleted file mode 100644 index b6b9dd234..000000000 --- a/experimental/federated_plugin/federated_plugin/example/web/index.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - example - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/web/manifest.json b/experimental/federated_plugin/federated_plugin/example/web/manifest.json deleted file mode 100644 index 096edf8fe..000000000 --- a/experimental/federated_plugin/federated_plugin/example/web/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "example", - "short_name": "example", - "start_url": ".", - "display": "standalone", - "background_color": "#0175C2", - "theme_color": "#0175C2", - "description": "A new Flutter project.", - "orientation": "portrait-primary", - "prefer_related_applications": false, - "icons": [ - { - "src": "icons/Icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "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/experimental/federated_plugin/federated_plugin/example/windows/.gitignore b/experimental/federated_plugin/federated_plugin/example/windows/.gitignore deleted file mode 100644 index d492d0d98..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -flutter/ephemeral/ - -# Visual Studio user-specific files. -*.suo -*.user -*.userosscache -*.sln.docstates - -# Visual Studio build-related files. -x64/ -x86/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ diff --git a/experimental/federated_plugin/federated_plugin/example/windows/CMakeLists.txt b/experimental/federated_plugin/federated_plugin/example/windows/CMakeLists.txt deleted file mode 100644 index 1633297a0..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/CMakeLists.txt +++ /dev/null @@ -1,95 +0,0 @@ -cmake_minimum_required(VERSION 3.14) -project(example LANGUAGES CXX) - -set(BINARY_NAME "example") - -cmake_policy(SET CMP0063 NEW) - -set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") - -# Configure build options. -get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -if(IS_MULTICONFIG) - set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" - CACHE STRING "" FORCE) -else() - if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") - endif() -endif() - -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}") -set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") - -# Use Unicode for all projects. -add_definitions(-DUNICODE -D_UNICODE) - -# Compilation settings that should be applied to most targets. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_17) - target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") - target_compile_options(${TARGET} PRIVATE /EHsc) - target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") - target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") -endfunction() - -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") - -# Flutter library and tool build rules. -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# Application build -add_subdirectory("runner") - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# Support files are copied into place next to the executable, so that it can -# run in place. This is done instead of making a separate bundle (as on Linux) -# so that building and running from within Visual Studio will work. -set(BUILD_BUNDLE_DIR "$") -# Make the "install" step default, as it's required to run. -set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - CONFIGURATIONS Profile;Release - COMPONENT Runtime) diff --git a/experimental/federated_plugin/federated_plugin/example/windows/flutter/CMakeLists.txt b/experimental/federated_plugin/federated_plugin/example/windows/flutter/CMakeLists.txt deleted file mode 100644 index b2e4bd8d6..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/flutter/CMakeLists.txt +++ /dev/null @@ -1,103 +0,0 @@ -cmake_minimum_required(VERSION 3.14) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. -set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") - -# === Flutter Library === -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "flutter_export.h" - "flutter_windows.h" - "flutter_messenger.h" - "flutter_plugin_registrar.h" - "flutter_texture_registrar.h" -) -list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") -add_dependencies(flutter flutter_assemble) - -# === Wrapper === -list(APPEND CPP_WRAPPER_SOURCES_CORE - "core_implementations.cc" - "standard_codec.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_PLUGIN - "plugin_registrar.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_APP - "flutter_engine.cc" - "flutter_view_controller.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") - -# Wrapper sources needed for a plugin. -add_library(flutter_wrapper_plugin STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} -) -apply_standard_settings(flutter_wrapper_plugin) -set_target_properties(flutter_wrapper_plugin PROPERTIES - POSITION_INDEPENDENT_CODE ON) -set_target_properties(flutter_wrapper_plugin PROPERTIES - CXX_VISIBILITY_PRESET hidden) -target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) -target_include_directories(flutter_wrapper_plugin PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_plugin flutter_assemble) - -# Wrapper sources needed for the runner. -add_library(flutter_wrapper_app STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_APP} -) -apply_standard_settings(flutter_wrapper_app) -target_link_libraries(flutter_wrapper_app PUBLIC flutter) -target_include_directories(flutter_wrapper_app PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_app flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") -set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} - ${PHONY_OUTPUT} - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - windows-x64 $ - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} -) diff --git a/experimental/federated_plugin/federated_plugin/example/windows/flutter/generated_plugin_registrant.cc b/experimental/federated_plugin/federated_plugin/example/windows/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 369d3bae4..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,14 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - -#include - -void RegisterPlugins(flutter::PluginRegistry* registry) { - FederatedPluginWindowsPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("FederatedPluginWindowsPlugin")); -} diff --git a/experimental/federated_plugin/federated_plugin/example/windows/flutter/generated_plugin_registrant.h b/experimental/federated_plugin/federated_plugin/example/windows/flutter/generated_plugin_registrant.h deleted file mode 100644 index dc139d85a..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void RegisterPlugins(flutter::PluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/experimental/federated_plugin/federated_plugin/example/windows/flutter/generated_plugins.cmake b/experimental/federated_plugin/federated_plugin/example/windows/flutter/generated_plugins.cmake deleted file mode 100644 index d9e53e87a..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/flutter/generated_plugins.cmake +++ /dev/null @@ -1,24 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST - federated_plugin_windows -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/experimental/federated_plugin/federated_plugin/example/windows/runner/CMakeLists.txt b/experimental/federated_plugin/federated_plugin/example/windows/runner/CMakeLists.txt deleted file mode 100644 index de2d8916b..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/runner/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -cmake_minimum_required(VERSION 3.14) -project(runner LANGUAGES CXX) - -add_executable(${BINARY_NAME} WIN32 - "flutter_window.cpp" - "main.cpp" - "utils.cpp" - "win32_window.cpp" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" - "Runner.rc" - "runner.exe.manifest" -) -apply_standard_settings(${BINARY_NAME}) -target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") -target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) -target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") -add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/experimental/federated_plugin/federated_plugin/example/windows/runner/Runner.rc b/experimental/federated_plugin/federated_plugin/example/windows/runner/Runner.rc deleted file mode 100644 index 52ef87bfa..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/runner/Runner.rc +++ /dev/null @@ -1,121 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#pragma code_page(65001) -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_APP_ICON ICON "resources\\app_icon.ico" - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -#ifdef FLUTTER_BUILD_NUMBER -#define VERSION_AS_NUMBER FLUTTER_BUILD_NUMBER -#else -#define VERSION_AS_NUMBER 1,0,0 -#endif - -#ifdef FLUTTER_BUILD_NAME -#define VERSION_AS_STRING #FLUTTER_BUILD_NAME -#else -#define VERSION_AS_STRING "1.0.0" -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION VERSION_AS_NUMBER - PRODUCTVERSION VERSION_AS_NUMBER - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "CompanyName", "dev.flutter" "\0" - VALUE "FileDescription", "A new Flutter project." "\0" - VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "example" "\0" - VALUE "LegalCopyright", "Copyright (C) 2022 dev.flutter. All rights reserved." "\0" - VALUE "OriginalFilename", "example.exe" "\0" - VALUE "ProductName", "example" "\0" - VALUE "ProductVersion", VERSION_AS_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED diff --git a/experimental/federated_plugin/federated_plugin/example/windows/runner/flutter_window.cpp b/experimental/federated_plugin/federated_plugin/example/windows/runner/flutter_window.cpp deleted file mode 100644 index b43b9095e..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/runner/flutter_window.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "flutter_window.h" - -#include - -#include "flutter/generated_plugin_registrant.h" - -FlutterWindow::FlutterWindow(const flutter::DartProject& project) - : project_(project) {} - -FlutterWindow::~FlutterWindow() {} - -bool FlutterWindow::OnCreate() { - if (!Win32Window::OnCreate()) { - return false; - } - - RECT frame = GetClientArea(); - - // The size here must match the window dimensions to avoid unnecessary surface - // creation / destruction in the startup path. - flutter_controller_ = std::make_unique( - frame.right - frame.left, frame.bottom - frame.top, project_); - // Ensure that basic setup of the controller was successful. - if (!flutter_controller_->engine() || !flutter_controller_->view()) { - return false; - } - RegisterPlugins(flutter_controller_->engine()); - SetChildContent(flutter_controller_->view()->GetNativeWindow()); - return true; -} - -void FlutterWindow::OnDestroy() { - if (flutter_controller_) { - flutter_controller_ = nullptr; - } - - Win32Window::OnDestroy(); -} - -LRESULT -FlutterWindow::MessageHandler(HWND hwnd, UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - // Give Flutter, including plugins, an opportunity to handle window messages. - if (flutter_controller_) { - std::optional result = - flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, - lparam); - if (result) { - return *result; - } - } - - switch (message) { - case WM_FONTCHANGE: - flutter_controller_->engine()->ReloadSystemFonts(); - break; - } - - return Win32Window::MessageHandler(hwnd, message, wparam, lparam); -} diff --git a/experimental/federated_plugin/federated_plugin/example/windows/runner/flutter_window.h b/experimental/federated_plugin/federated_plugin/example/windows/runner/flutter_window.h deleted file mode 100644 index 6da0652f0..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/runner/flutter_window.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef RUNNER_FLUTTER_WINDOW_H_ -#define RUNNER_FLUTTER_WINDOW_H_ - -#include -#include - -#include - -#include "win32_window.h" - -// A window that does nothing but host a Flutter view. -class FlutterWindow : public Win32Window { - public: - // Creates a new FlutterWindow hosting a Flutter view running |project|. - explicit FlutterWindow(const flutter::DartProject& project); - virtual ~FlutterWindow(); - - protected: - // Win32Window: - bool OnCreate() override; - void OnDestroy() override; - LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, - LPARAM const lparam) noexcept override; - - private: - // The project to run. - flutter::DartProject project_; - - // The Flutter instance hosted by this window. - std::unique_ptr flutter_controller_; -}; - -#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/experimental/federated_plugin/federated_plugin/example/windows/runner/main.cpp b/experimental/federated_plugin/federated_plugin/example/windows/runner/main.cpp deleted file mode 100644 index bcb57b0e2..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/runner/main.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include - -#include "flutter_window.h" -#include "utils.h" - -int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, - _In_ wchar_t *command_line, _In_ int show_command) { - // Attach to console when present (e.g., 'flutter run') or create a - // new console when running with a debugger. - if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { - CreateAndAttachConsole(); - } - - // Initialize COM, so that it is available for use in the library and/or - // plugins. - ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); - - flutter::DartProject project(L"data"); - - std::vector command_line_arguments = - GetCommandLineArguments(); - - project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); - - FlutterWindow window(project); - Win32Window::Point origin(10, 10); - Win32Window::Size size(1280, 720); - if (!window.CreateAndShow(L"example", origin, size)) { - return EXIT_FAILURE; - } - window.SetQuitOnClose(true); - - ::MSG msg; - while (::GetMessage(&msg, nullptr, 0, 0)) { - ::TranslateMessage(&msg); - ::DispatchMessage(&msg); - } - - ::CoUninitialize(); - return EXIT_SUCCESS; -} diff --git a/experimental/federated_plugin/federated_plugin/example/windows/runner/resource.h b/experimental/federated_plugin/federated_plugin/example/windows/runner/resource.h deleted file mode 100644 index 66a65d1e4..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/runner/resource.h +++ /dev/null @@ -1,16 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by Runner.rc -// -#define IDI_APP_ICON 101 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/experimental/federated_plugin/federated_plugin/example/windows/runner/resources/app_icon.ico b/experimental/federated_plugin/federated_plugin/example/windows/runner/resources/app_icon.ico deleted file mode 100644 index c04e20caf..000000000 Binary files a/experimental/federated_plugin/federated_plugin/example/windows/runner/resources/app_icon.ico and /dev/null differ diff --git a/experimental/federated_plugin/federated_plugin/example/windows/runner/runner.exe.manifest b/experimental/federated_plugin/federated_plugin/example/windows/runner/runner.exe.manifest deleted file mode 100644 index c977c4a42..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/runner/runner.exe.manifest +++ /dev/null @@ -1,20 +0,0 @@ - - - - - PerMonitorV2 - - - - - - - - - - - - - - - diff --git a/experimental/federated_plugin/federated_plugin/example/windows/runner/utils.cpp b/experimental/federated_plugin/federated_plugin/example/windows/runner/utils.cpp deleted file mode 100644 index d19bdbbcc..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/runner/utils.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "utils.h" - -#include -#include -#include -#include - -#include - -void CreateAndAttachConsole() { - if (::AllocConsole()) { - FILE *unused; - if (freopen_s(&unused, "CONOUT$", "w", stdout)) { - _dup2(_fileno(stdout), 1); - } - if (freopen_s(&unused, "CONOUT$", "w", stderr)) { - _dup2(_fileno(stdout), 2); - } - std::ios::sync_with_stdio(); - FlutterDesktopResyncOutputStreams(); - } -} - -std::vector GetCommandLineArguments() { - // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. - int argc; - wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); - if (argv == nullptr) { - return std::vector(); - } - - std::vector command_line_arguments; - - // Skip the first argument as it's the binary name. - for (int i = 1; i < argc; i++) { - command_line_arguments.push_back(Utf8FromUtf16(argv[i])); - } - - ::LocalFree(argv); - - return command_line_arguments; -} - -std::string Utf8FromUtf16(const wchar_t* utf16_string) { - if (utf16_string == nullptr) { - return std::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; - utf8_string.resize(target_length); - int converted_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, utf8_string.data(), - target_length, nullptr, nullptr); - if (converted_length == 0) { - return std::string(); - } - return utf8_string; -} diff --git a/experimental/federated_plugin/federated_plugin/example/windows/runner/utils.h b/experimental/federated_plugin/federated_plugin/example/windows/runner/utils.h deleted file mode 100644 index 3879d5475..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/runner/utils.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef RUNNER_UTILS_H_ -#define RUNNER_UTILS_H_ - -#include -#include - -// Creates a console for the process, and redirects stdout and stderr to -// it for both the runner and the Flutter library. -void CreateAndAttachConsole(); - -// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string -// encoded in UTF-8. Returns an empty std::string on failure. -std::string Utf8FromUtf16(const wchar_t* utf16_string); - -// Gets the command line arguments passed in as a std::vector, -// encoded in UTF-8. Returns an empty std::vector on failure. -std::vector GetCommandLineArguments(); - -#endif // RUNNER_UTILS_H_ diff --git a/experimental/federated_plugin/federated_plugin/example/windows/runner/win32_window.cpp b/experimental/federated_plugin/federated_plugin/example/windows/runner/win32_window.cpp deleted file mode 100644 index c10f08dc7..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/runner/win32_window.cpp +++ /dev/null @@ -1,245 +0,0 @@ -#include "win32_window.h" - -#include - -#include "resource.h" - -namespace { - -constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; - -// The number of Win32Window objects that currently exist. -static int g_active_window_count = 0; - -using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); - -// Scale helper to convert logical scaler values to physical using passed in -// scale factor -int Scale(int source, double scale_factor) { - return static_cast(source * scale_factor); -} - -// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. -// This API is only needed for PerMonitor V1 awareness mode. -void EnableFullDpiSupportIfAvailable(HWND hwnd) { - HMODULE user32_module = LoadLibraryA("User32.dll"); - if (!user32_module) { - return; - } - auto enable_non_client_dpi_scaling = - reinterpret_cast( - GetProcAddress(user32_module, "EnableNonClientDpiScaling")); - if (enable_non_client_dpi_scaling != nullptr) { - enable_non_client_dpi_scaling(hwnd); - FreeLibrary(user32_module); - } -} - -} // namespace - -// Manages the Win32Window's window class registration. -class WindowClassRegistrar { - public: - ~WindowClassRegistrar() = default; - - // Returns the singleton registar instance. - static WindowClassRegistrar* GetInstance() { - if (!instance_) { - instance_ = new WindowClassRegistrar(); - } - return instance_; - } - - // Returns the name of the window class, registering the class if it hasn't - // previously been registered. - const wchar_t* GetWindowClass(); - - // Unregisters the window class. Should only be called if there are no - // instances of the window. - void UnregisterWindowClass(); - - private: - WindowClassRegistrar() = default; - - static WindowClassRegistrar* instance_; - - bool class_registered_ = false; -}; - -WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; - -const wchar_t* WindowClassRegistrar::GetWindowClass() { - if (!class_registered_) { - WNDCLASS window_class{}; - window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); - window_class.lpszClassName = kWindowClassName; - window_class.style = CS_HREDRAW | CS_VREDRAW; - window_class.cbClsExtra = 0; - window_class.cbWndExtra = 0; - window_class.hInstance = GetModuleHandle(nullptr); - window_class.hIcon = - LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); - window_class.hbrBackground = 0; - window_class.lpszMenuName = nullptr; - window_class.lpfnWndProc = Win32Window::WndProc; - RegisterClass(&window_class); - class_registered_ = true; - } - return kWindowClassName; -} - -void WindowClassRegistrar::UnregisterWindowClass() { - UnregisterClass(kWindowClassName, nullptr); - class_registered_ = false; -} - -Win32Window::Win32Window() { - ++g_active_window_count; -} - -Win32Window::~Win32Window() { - --g_active_window_count; - Destroy(); -} - -bool Win32Window::CreateAndShow(const std::wstring& title, - const Point& origin, - const Size& size) { - Destroy(); - - const wchar_t* window_class = - WindowClassRegistrar::GetInstance()->GetWindowClass(); - - const POINT target_point = {static_cast(origin.x), - static_cast(origin.y)}; - HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); - UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); - double scale_factor = dpi / 96.0; - - HWND window = CreateWindow( - window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, - Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), - Scale(size.width, scale_factor), Scale(size.height, scale_factor), - nullptr, nullptr, GetModuleHandle(nullptr), this); - - if (!window) { - return false; - } - - return OnCreate(); -} - -// static -LRESULT CALLBACK Win32Window::WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - if (message == WM_NCCREATE) { - auto window_struct = reinterpret_cast(lparam); - SetWindowLongPtr(window, GWLP_USERDATA, - reinterpret_cast(window_struct->lpCreateParams)); - - auto that = static_cast(window_struct->lpCreateParams); - EnableFullDpiSupportIfAvailable(window); - that->window_handle_ = window; - } else if (Win32Window* that = GetThisFromHandle(window)) { - return that->MessageHandler(window, message, wparam, lparam); - } - - return DefWindowProc(window, message, wparam, lparam); -} - -LRESULT -Win32Window::MessageHandler(HWND hwnd, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - switch (message) { - case WM_DESTROY: - window_handle_ = nullptr; - Destroy(); - if (quit_on_close_) { - PostQuitMessage(0); - } - return 0; - - case WM_DPICHANGED: { - auto newRectSize = reinterpret_cast(lparam); - LONG newWidth = newRectSize->right - newRectSize->left; - LONG newHeight = newRectSize->bottom - newRectSize->top; - - SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, - newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - - return 0; - } - case WM_SIZE: { - RECT rect = GetClientArea(); - if (child_content_ != nullptr) { - // Size and position the child window. - MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, - rect.bottom - rect.top, TRUE); - } - return 0; - } - - case WM_ACTIVATE: - if (child_content_ != nullptr) { - SetFocus(child_content_); - } - return 0; - } - - return DefWindowProc(window_handle_, message, wparam, lparam); -} - -void Win32Window::Destroy() { - OnDestroy(); - - if (window_handle_) { - DestroyWindow(window_handle_); - window_handle_ = nullptr; - } - if (g_active_window_count == 0) { - WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); - } -} - -Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { - return reinterpret_cast( - GetWindowLongPtr(window, GWLP_USERDATA)); -} - -void Win32Window::SetChildContent(HWND content) { - child_content_ = content; - SetParent(content, window_handle_); - RECT frame = GetClientArea(); - - MoveWindow(content, frame.left, frame.top, frame.right - frame.left, - frame.bottom - frame.top, true); - - SetFocus(child_content_); -} - -RECT Win32Window::GetClientArea() { - RECT frame; - GetClientRect(window_handle_, &frame); - return frame; -} - -HWND Win32Window::GetHandle() { - return window_handle_; -} - -void Win32Window::SetQuitOnClose(bool quit_on_close) { - quit_on_close_ = quit_on_close; -} - -bool Win32Window::OnCreate() { - // No-op; provided for subclasses. - return true; -} - -void Win32Window::OnDestroy() { - // No-op; provided for subclasses. -} diff --git a/experimental/federated_plugin/federated_plugin/example/windows/runner/win32_window.h b/experimental/federated_plugin/federated_plugin/example/windows/runner/win32_window.h deleted file mode 100644 index 17ba43112..000000000 --- a/experimental/federated_plugin/federated_plugin/example/windows/runner/win32_window.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef RUNNER_WIN32_WINDOW_H_ -#define RUNNER_WIN32_WINDOW_H_ - -#include - -#include -#include -#include - -// A class abstraction for a high DPI-aware Win32 Window. Intended to be -// inherited from by classes that wish to specialize with custom -// rendering and input handling -class Win32Window { - public: - struct Point { - unsigned int x; - unsigned int y; - Point(unsigned int x, unsigned int y) : x(x), y(y) {} - }; - - struct Size { - unsigned int width; - unsigned int height; - Size(unsigned int width, unsigned int height) - : width(width), height(height) {} - }; - - Win32Window(); - virtual ~Win32Window(); - - // Creates and shows a win32 window with |title| and position and size using - // |origin| and |size|. New windows are created on the default monitor. Window - // sizes are specified to the OS in physical pixels, hence to ensure a - // consistent size to will treat the width height passed in to this function - // as logical pixels and scale to appropriate for the default monitor. Returns - // true if the window was created successfully. - bool CreateAndShow(const std::wstring& title, - const Point& origin, - const Size& size); - - // Release OS resources associated with window. - void Destroy(); - - // Inserts |content| into the window tree. - void SetChildContent(HWND content); - - // Returns the backing Window handle to enable clients to set icon and other - // window properties. Returns nullptr if the window has been destroyed. - HWND GetHandle(); - - // If true, closing this window will quit the application. - void SetQuitOnClose(bool quit_on_close); - - // Return a RECT representing the bounds of the current client area. - RECT GetClientArea(); - - protected: - // Processes and route salient window messages for mouse handling, - // size change and DPI. Delegates handling of these to member overloads that - // inheriting classes can handle. - virtual LRESULT MessageHandler(HWND window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Called when CreateAndShow is called, allowing subclass window-related - // setup. Subclasses should return false if setup fails. - virtual bool OnCreate(); - - // Called when Destroy is called. - virtual void OnDestroy(); - - private: - friend class WindowClassRegistrar; - - // OS callback called by message pump. Handles the WM_NCCREATE message which - // is passed when the non-client area is being created and enables automatic - // non-client DPI scaling so that the non-client area automatically - // responsponds to changes in DPI. All other messages are handled by - // MessageHandler. - static LRESULT CALLBACK WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Retrieves a class instance pointer for |window| - static Win32Window* GetThisFromHandle(HWND const window) noexcept; - - bool quit_on_close_ = false; - - // window handle for top level window. - HWND window_handle_ = nullptr; - - // window handle for hosted content. - HWND child_content_ = nullptr; -}; - -#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/experimental/federated_plugin/federated_plugin/ios/.gitignore b/experimental/federated_plugin/federated_plugin/ios/.gitignore deleted file mode 100644 index 0c885071e..000000000 --- a/experimental/federated_plugin/federated_plugin/ios/.gitignore +++ /dev/null @@ -1,38 +0,0 @@ -.idea/ -.vagrant/ -.sconsign.dblite -.svn/ - -.DS_Store -*.swp -profile - -DerivedData/ -build/ -GeneratedPluginRegistrant.h -GeneratedPluginRegistrant.m - -.generated/ - -*.pbxuser -*.mode1v3 -*.mode2v3 -*.perspectivev3 - -!default.pbxuser -!default.mode1v3 -!default.mode2v3 -!default.perspectivev3 - -xcuserdata - -*.moved-aside - -*.pyc -*sync/ -Icon? -.tags* - -/Flutter/Generated.xcconfig -/Flutter/ephemeral/ -/Flutter/flutter_export_environment.sh \ No newline at end of file diff --git a/experimental/federated_plugin/federated_plugin/ios/Assets/.gitkeep b/experimental/federated_plugin/federated_plugin/ios/Assets/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/experimental/federated_plugin/federated_plugin/ios/Classes/FederatedPlugin.h b/experimental/federated_plugin/federated_plugin/ios/Classes/FederatedPlugin.h deleted file mode 100644 index ebcdf4e7e..000000000 --- a/experimental/federated_plugin/federated_plugin/ios/Classes/FederatedPlugin.h +++ /dev/null @@ -1,4 +0,0 @@ -#import - -@interface FederatedPlugin : NSObject -@end diff --git a/experimental/federated_plugin/federated_plugin/ios/Classes/FederatedPlugin.m b/experimental/federated_plugin/federated_plugin/ios/Classes/FederatedPlugin.m deleted file mode 100644 index bedb63cb0..000000000 --- a/experimental/federated_plugin/federated_plugin/ios/Classes/FederatedPlugin.m +++ /dev/null @@ -1,15 +0,0 @@ -#import "FederatedPlugin.h" -#if __has_include() -#import -#else -// Support project import fallback if the generated compatibility header -// is not copied when this plugin is created as a library. -// https://forums.swift.org/t/swift-static-libraries-dont-copy-generated-objective-c-header/19816 -#import "federated_plugin-Swift.h" -#endif - -@implementation FederatedPlugin -+ (void)registerWithRegistrar:(NSObject*)registrar { - [SwiftFederatedPlugin registerWithRegistrar:registrar]; -} -@end diff --git a/experimental/federated_plugin/federated_plugin/ios/Classes/SwiftFederatedPlugin.swift b/experimental/federated_plugin/federated_plugin/ios/Classes/SwiftFederatedPlugin.swift deleted file mode 100644 index 689bb2fdb..000000000 --- a/experimental/federated_plugin/federated_plugin/ios/Classes/SwiftFederatedPlugin.swift +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2020 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import Flutter -import UIKit - -public class SwiftFederatedPlugin: NSObject, FlutterPlugin { - public static func register(with registrar: FlutterPluginRegistrar) { - let channel = FlutterMethodChannel(name: "battery", binaryMessenger: registrar.messenger()) - let instance = SwiftFederatedPlugin() - registrar.addMethodCallDelegate(instance, channel: channel) - } - - public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { - guard call.method == "getBatteryLevel" else { - result(FlutterMethodNotImplemented) - return - } - - let device = UIDevice.current - device.isBatteryMonitoringEnabled = true - - if device.batteryState == UIDevice.BatteryState.unknown { - result(FlutterError(code: "STATUS_UNAVAILABLE", message: "Not able to determine battery level", details: nil)) - } - - result(Int(device.batteryLevel * 100)) - } -} diff --git a/experimental/federated_plugin/federated_plugin/ios/federated_plugin.podspec b/experimental/federated_plugin/federated_plugin/ios/federated_plugin.podspec deleted file mode 100644 index 2a2fede89..000000000 --- a/experimental/federated_plugin/federated_plugin/ios/federated_plugin.podspec +++ /dev/null @@ -1,23 +0,0 @@ -# -# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. -# Run `pod lib lint federated_plugin.podspec` to validate before publishing. -# -Pod::Spec.new do |s| - s.name = 'federated_plugin' - s.version = '0.0.1' - s.summary = 'A new flutter plugin project.' - s.description = <<-DESC -A new flutter plugin project. - DESC - s.homepage = 'http://example.com' - s.license = { :file => '../LICENSE' } - s.author = { 'Your Company' => 'email@example.com' } - s.source = { :path => '.' } - s.source_files = 'Classes/**/*' - s.dependency 'Flutter' - s.platform = :ios, '9.0' - - # Flutter.framework does not contain a i386 slice. - s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } - s.swift_version = '5.0' -end diff --git a/experimental/federated_plugin/federated_plugin/lib/federated_plugin.dart b/experimental/federated_plugin/federated_plugin/lib/federated_plugin.dart deleted file mode 100644 index 6b83ab724..000000000 --- a/experimental/federated_plugin/federated_plugin/lib/federated_plugin.dart +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2020 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:async'; - -import 'package:federated_plugin_platform_interface/federated_plugin_platform_interface.dart'; - -/// Returns the current battery level of device. -/// -/// It uses [FederatedPluginInterface] interface to provide current battery level. -Future getBatteryLevel() async { - return await FederatedPluginInterface.instance.getBatteryLevel(); -} diff --git a/experimental/federated_plugin/federated_plugin/pubspec.yaml b/experimental/federated_plugin/federated_plugin/pubspec.yaml deleted file mode 100644 index b2685424c..000000000 --- a/experimental/federated_plugin/federated_plugin/pubspec.yaml +++ /dev/null @@ -1,41 +0,0 @@ -name: federated_plugin -description: A new flutter plugin project to demonstrate how to implement federated plugin. -version: 0.0.1 - -publish_to: "none" - -environment: - sdk: ^3.7.0-0 - -dependencies: - flutter: - sdk: flutter - federated_plugin_platform_interface: - path: ../federated_plugin_platform_interface - federated_plugin_web: - path: ../federated_plugin_web - federated_plugin_windows: - path: ../federated_plugin_windows - federated_plugin_macos: - path: ../federated_plugin_macos - -dev_dependencies: - analysis_defaults: - path: ../../../analysis_defaults - flutter_test: - sdk: flutter - -flutter: - plugin: - platforms: - android: - package: dev.flutter.federated_plugin - pluginClass: FederatedPlugin - ios: - pluginClass: SwiftFederatedPlugin - web: - default_package: federated_plugin_web - windows: - default_package: federated_plugin_windows - macos: - default_package: federated_plugin_macos diff --git a/experimental/federated_plugin/federated_plugin/test/federated_plugin_test.dart b/experimental/federated_plugin/federated_plugin/test/federated_plugin_test.dart deleted file mode 100644 index 833fda455..000000000 --- a/experimental/federated_plugin/federated_plugin/test/federated_plugin_test.dart +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2020 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:federated_plugin/federated_plugin.dart'; -import 'package:flutter/services.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - TestWidgetsFlutterBinding.ensureInitialized(); - - group('Federated Plugin Test', () { - const batteryLevel = 34; - - testWidgets('getBatteryLevel method test', (tester) async { - tester.binding.defaultBinaryMessenger.setMockMethodCallHandler( - const MethodChannel('battery'), - (call) async { - if (call.method == 'getBatteryLevel') { - return batteryLevel; - } - return 0; - }, - ); - final result = await getBatteryLevel(); - expect(result, batteryLevel); - }); - }); -} diff --git a/experimental/federated_plugin/federated_plugin_macos/.gitignore b/experimental/federated_plugin/federated_plugin_macos/.gitignore deleted file mode 100644 index 9be145fde..000000000 --- a/experimental/federated_plugin/federated_plugin_macos/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. -/pubspec.lock -**/doc/api/ -.dart_tool/ -.packages -build/ diff --git a/experimental/federated_plugin/federated_plugin_macos/.metadata b/experimental/federated_plugin/federated_plugin_macos/.metadata deleted file mode 100644 index 8c15ad72b..000000000 --- a/experimental/federated_plugin/federated_plugin_macos/.metadata +++ /dev/null @@ -1,10 +0,0 @@ -# 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. - -version: - revision: 77d935af4db863f6abd0b9c31c7e6df2a13de57b - channel: stable - -project_type: plugin diff --git a/experimental/federated_plugin/federated_plugin_macos/analysis_options.yaml b/experimental/federated_plugin/federated_plugin_macos/analysis_options.yaml deleted file mode 100644 index 13d6fe105..000000000 --- a/experimental/federated_plugin/federated_plugin_macos/analysis_options.yaml +++ /dev/null @@ -1 +0,0 @@ -include: package:analysis_defaults/flutter.yaml diff --git a/experimental/federated_plugin/federated_plugin_macos/example/README.md b/experimental/federated_plugin/federated_plugin_macos/example/README.md deleted file mode 100644 index 922ad9c31..000000000 --- a/experimental/federated_plugin/federated_plugin_macos/example/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# federated_plugin_macos_example - -To view the usage of plugin, head over to [federated_plugin/example](../../federated_plugin/example). diff --git a/experimental/federated_plugin/federated_plugin_macos/lib/federated_plugin_macos.dart b/experimental/federated_plugin/federated_plugin_macos/lib/federated_plugin_macos.dart deleted file mode 100644 index 76d0f54c6..000000000 --- a/experimental/federated_plugin/federated_plugin_macos/lib/federated_plugin_macos.dart +++ /dev/null @@ -1,2 +0,0 @@ -// The federated_plugin_macos uses the default BatteryMethodChannel used by -// federated_plugin_platform_interface to do platform calls. diff --git a/experimental/federated_plugin/federated_plugin_macos/macos/Classes/FederatedPluginMacosPlugin.swift b/experimental/federated_plugin/federated_plugin_macos/macos/Classes/FederatedPluginMacosPlugin.swift deleted file mode 100644 index 8375b0e0a..000000000 --- a/experimental/federated_plugin/federated_plugin_macos/macos/Classes/FederatedPluginMacosPlugin.swift +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2020 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import Cocoa -import FlutterMacOS -import IOKit.ps - -public class FederatedPluginMacosPlugin: NSObject, FlutterPlugin { - public static func register(with registrar: FlutterPluginRegistrar) { - let channel = FlutterMethodChannel(name: "battery", binaryMessenger: registrar.messenger) - let instance = FederatedPluginMacosPlugin() - registrar.addMethodCallDelegate(instance, channel: channel) - } - - public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { - switch call.method { - case "getBatteryLevel": - getBatteryLevel(result) - default: - result(FlutterMethodNotImplemented) - } - } - - private func getBatteryLevel(_ result: FlutterResult) { - let snapshot = IOPSCopyPowerSourcesInfo().takeRetainedValue() - let sources = IOPSCopyPowerSourcesList(snapshot).takeRetainedValue() as Array - let sourceInfo : NSDictionary = IOPSGetPowerSourceDescription(snapshot, sources[0]).takeUnretainedValue() - - guard let capacity = sourceInfo[kIOPSCurrentCapacityKey] as? Int else { - result(FlutterError(code: "STATUS_UNAVAILABLE", message: "Not able to determine battery level", details: nil)) - return - } - - result(capacity) - } -} diff --git a/experimental/federated_plugin/federated_plugin_macos/macos/federated_plugin_macos.podspec b/experimental/federated_plugin/federated_plugin_macos/macos/federated_plugin_macos.podspec deleted file mode 100644 index b918b59e7..000000000 --- a/experimental/federated_plugin/federated_plugin_macos/macos/federated_plugin_macos.podspec +++ /dev/null @@ -1,22 +0,0 @@ -# -# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. -# Run `pod lib lint federated_plugin_macos.podspec` to validate before publishing. -# -Pod::Spec.new do |s| - s.name = 'federated_plugin_macos' - s.version = '0.0.1' - s.summary = 'A new flutter plugin project.' - s.description = <<-DESC -A new flutter plugin project. - DESC - s.homepage = 'http://example.com' - s.license = { :file => '../LICENSE' } - s.author = { 'Your Company' => 'email@example.com' } - s.source = { :path => '.' } - s.source_files = 'Classes/**/*' - s.dependency 'FlutterMacOS' - - s.platform = :osx, '10.11' - s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } - s.swift_version = '5.0' -end diff --git a/experimental/federated_plugin/federated_plugin_macos/pubspec.yaml b/experimental/federated_plugin/federated_plugin_macos/pubspec.yaml deleted file mode 100644 index 8eaef2b72..000000000 --- a/experimental/federated_plugin/federated_plugin_macos/pubspec.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: federated_plugin_macos -description: macOS implementation of federated_plugin to retrieve current battery level. -version: 0.0.1 -homepage: - -environment: - sdk: ^3.7.0-0 - -dependencies: - flutter: - sdk: flutter - -dev_dependencies: - analysis_defaults: - path: ../../../analysis_defaults - flutter_test: - sdk: flutter - -flutter: - plugin: - platforms: - macos: - pluginClass: FederatedPluginMacosPlugin diff --git a/experimental/federated_plugin/federated_plugin_platform_interface/.gitignore b/experimental/federated_plugin/federated_plugin_platform_interface/.gitignore deleted file mode 100644 index 9be145fde..000000000 --- a/experimental/federated_plugin/federated_plugin_platform_interface/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. -/pubspec.lock -**/doc/api/ -.dart_tool/ -.packages -build/ diff --git a/experimental/federated_plugin/federated_plugin_platform_interface/.metadata b/experimental/federated_plugin/federated_plugin_platform_interface/.metadata deleted file mode 100644 index af84dae5e..000000000 --- a/experimental/federated_plugin/federated_plugin_platform_interface/.metadata +++ /dev/null @@ -1,10 +0,0 @@ -# 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. - -version: - revision: 77d935af4db863f6abd0b9c31c7e6df2a13de57b - channel: stable - -project_type: package diff --git a/experimental/federated_plugin/federated_plugin_platform_interface/analysis_options.yaml b/experimental/federated_plugin/federated_plugin_platform_interface/analysis_options.yaml deleted file mode 100644 index 13d6fe105..000000000 --- a/experimental/federated_plugin/federated_plugin_platform_interface/analysis_options.yaml +++ /dev/null @@ -1 +0,0 @@ -include: package:analysis_defaults/flutter.yaml diff --git a/experimental/federated_plugin/federated_plugin_platform_interface/lib/battery_method_channel.dart b/experimental/federated_plugin/federated_plugin_platform_interface/lib/battery_method_channel.dart deleted file mode 100644 index 11f31ad7d..000000000 --- a/experimental/federated_plugin/federated_plugin_platform_interface/lib/battery_method_channel.dart +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2020 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:federated_plugin_platform_interface/federated_plugin_platform_interface.dart'; -import 'package:flutter/services.dart'; - -/// Implements [FederatedPluginInterface] using [MethodChannel] to fetch -/// battery level from platform. -class BatteryMethodChannel extends FederatedPluginInterface { - static const MethodChannel _methodChannel = MethodChannel('battery'); - - @override - Future getBatteryLevel() async { - return await _methodChannel.invokeMethod('getBatteryLevel') as int; - } -} diff --git a/experimental/federated_plugin/federated_plugin_platform_interface/lib/federated_plugin_platform_interface.dart b/experimental/federated_plugin/federated_plugin_platform_interface/lib/federated_plugin_platform_interface.dart deleted file mode 100644 index 595c82f9c..000000000 --- a/experimental/federated_plugin/federated_plugin_platform_interface/lib/federated_plugin_platform_interface.dart +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2020 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:federated_plugin_platform_interface/battery_method_channel.dart'; -import 'package:plugin_platform_interface/plugin_platform_interface.dart'; - -/// Interface which allows all the platform plugins to implement the same -/// functionality. -abstract class FederatedPluginInterface extends PlatformInterface { - FederatedPluginInterface() : super(token: _object); - - static FederatedPluginInterface _federatedPluginInterface = - BatteryMethodChannel(); - - static final Object _object = Object(); - - /// Provides instance of [BatteryMethodChannel] to invoke platform calls. - static FederatedPluginInterface get instance => _federatedPluginInterface; - - static set instance(FederatedPluginInterface instance) { - PlatformInterface.verifyToken(instance, _object); - _federatedPluginInterface = instance; - } - - /// Returns the current battery level of device. - Future getBatteryLevel() async { - throw UnimplementedError('getBatteryLevel() has not been implemented.'); - } -} diff --git a/experimental/federated_plugin/federated_plugin_platform_interface/pubspec.yaml b/experimental/federated_plugin/federated_plugin_platform_interface/pubspec.yaml deleted file mode 100644 index 11bbb8658..000000000 --- a/experimental/federated_plugin/federated_plugin_platform_interface/pubspec.yaml +++ /dev/null @@ -1,18 +0,0 @@ -name: federated_plugin_platform_interface -description: A platform interface for federated_plugin. -version: 0.0.1 -homepage: - -environment: - sdk: ^3.7.0-0 - -dependencies: - flutter: - sdk: flutter - plugin_platform_interface: ^2.0.2 - -dev_dependencies: - analysis_defaults: - path: ../../../analysis_defaults - flutter_test: - sdk: flutter diff --git a/experimental/federated_plugin/federated_plugin_platform_interface/test/federated_plugin_platform_interface_test.dart b/experimental/federated_plugin/federated_plugin_platform_interface/test/federated_plugin_platform_interface_test.dart deleted file mode 100644 index 3c302abc7..000000000 --- a/experimental/federated_plugin/federated_plugin_platform_interface/test/federated_plugin_platform_interface_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2020 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:federated_plugin_platform_interface/battery_method_channel.dart'; -import 'package:flutter/services.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - TestWidgetsFlutterBinding.ensureInitialized(); - - group('MethodChannel test', () { - const batteryLevel = 89; - - testWidgets('getBatteryLevel method test', (tester) async { - tester.binding.defaultBinaryMessenger.setMockMethodCallHandler( - const MethodChannel('battery'), - (call) async { - if (call.method == 'getBatteryLevel') { - return batteryLevel; - } - return 0; - }, - ); - final locationMethodChannel = BatteryMethodChannel(); - final result = await locationMethodChannel.getBatteryLevel(); - expect(result, batteryLevel); - }); - }); -} diff --git a/experimental/federated_plugin/federated_plugin_web/.gitignore b/experimental/federated_plugin/federated_plugin_web/.gitignore deleted file mode 100644 index 89aaf2a97..000000000 --- a/experimental/federated_plugin/federated_plugin_web/.gitignore +++ /dev/null @@ -1,78 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -build/ - -# Android related -**/android/**/gradle-wrapper.jar -**/android/.gradle -**/android/captures/ -**/android/gradlew -**/android/gradlew.bat -**/android/local.properties -**/android/**/GeneratedPluginRegistrant.java - -# iOS/XCode related -**/ios/**/*.mode1v3 -**/ios/**/*.mode2v3 -**/ios/**/*.moved-aside -**/ios/**/*.pbxuser -**/ios/**/*.perspectivev3 -**/ios/**/*sync/ -**/ios/**/.sconsign.dblite -**/ios/**/.tags* -**/ios/**/.vagrant/ -**/ios/**/DerivedData/ -**/ios/**/Icon? -**/ios/**/Pods/ -**/ios/**/.symlinks/ -**/ios/**/profile -**/ios/**/xcuserdata -**/ios/.generated/ -**/ios/Flutter/App.framework -**/ios/Flutter/Flutter.framework -**/ios/Flutter/Flutter.podspec -**/ios/Flutter/Generated.xcconfig -**/ios/Flutter/app.flx -**/ios/Flutter/app.zip -**/ios/Flutter/flutter_assets/ -**/ios/Flutter/flutter_export_environment.sh -**/ios/ServiceDefinitions.json -**/ios/Runner/GeneratedPluginRegistrant.* - -# Web related -lib/generated_plugin_registrant.dart - -# Exceptions to above rules. -!**/ios/**/default.mode1v3 -!**/ios/**/default.mode2v3 -!**/ios/**/default.pbxuser -!**/ios/**/default.perspectivev3 -!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages diff --git a/experimental/federated_plugin/federated_plugin_web/.metadata b/experimental/federated_plugin/federated_plugin_web/.metadata deleted file mode 100644 index 8d52aa40e..000000000 --- a/experimental/federated_plugin/federated_plugin_web/.metadata +++ /dev/null @@ -1,10 +0,0 @@ -# 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. - -version: - revision: 8c5c720ce60b1761ec2963053e0d415df60a29e1 - channel: master - -project_type: package diff --git a/experimental/federated_plugin/federated_plugin_web/README.md b/experimental/federated_plugin/federated_plugin_web/README.md deleted file mode 100644 index 8ad8ce4df..000000000 --- a/experimental/federated_plugin/federated_plugin_web/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# federated_plugin_web - -A flutter plugin to provide location support for web. The web implementation -of `federated_plugin` is tested using [integration_test](https://pub.dev/packages/integration_test) package. - -### Steps to run integration test on browser - -- Download and install the ChromeDriver from [here](https://chromedriver.chromium.org/downloads) -for the version of Chrome you are using. -- Start the driver using `chromedrive --port=4444` -- Run the test using `flutter drive -d web-server --browser-name=chrome --release --target=test_driver/federated_plugin_web_integration.dart` diff --git a/experimental/federated_plugin/federated_plugin_web/analysis_options.yaml b/experimental/federated_plugin/federated_plugin_web/analysis_options.yaml deleted file mode 100644 index 13d6fe105..000000000 --- a/experimental/federated_plugin/federated_plugin_web/analysis_options.yaml +++ /dev/null @@ -1 +0,0 @@ -include: package:analysis_defaults/flutter.yaml diff --git a/experimental/federated_plugin/federated_plugin_web/lib/federated_plugin_web.dart b/experimental/federated_plugin/federated_plugin_web/lib/federated_plugin_web.dart deleted file mode 100644 index da628a41c..000000000 --- a/experimental/federated_plugin/federated_plugin_web/lib/federated_plugin_web.dart +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2020 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:federated_plugin_platform_interface/federated_plugin_platform_interface.dart'; -import 'package:flutter/services.dart'; -import 'package:flutter_web_plugins/flutter_web_plugins.dart'; -import 'package:web/web.dart' as html; - -/// Web Implementation of [FederatedPluginInterface] to retrieve current battery -/// level of device. -class FederatedPlugin extends FederatedPluginInterface { - final html.Navigator _navigator; - - /// Constructor to override the navigator object for testing purpose. - FederatedPlugin({html.Navigator? navigator}) - : _navigator = navigator ?? html.window.navigator; - - /// Method to register the plugin which sets [FederatedPlugin] to be the default - /// instance of [FederatedPluginInterface]. - static void registerWith(Registrar registrar) { - FederatedPluginInterface.instance = FederatedPlugin(); - } - - /// Returns the current battery level of device. - /// - /// If any error, it's assume that the BatteryManager API is not supported by - /// browser. - @override - Future getBatteryLevel() async { - try { - final battery = _navigator.getBattery() as html.BatteryManager; - // The battery level retrieved is in range of 0.0 to 1.0. - return battery.level * 100 as int; - } catch (error) { - throw PlatformException( - code: 'STATUS_UNAVAILABLE', - message: 'The plugin is not supported by the browser.', - details: null, - ); - } - } -} diff --git a/experimental/federated_plugin/federated_plugin_web/pubspec.yaml b/experimental/federated_plugin/federated_plugin_web/pubspec.yaml deleted file mode 100644 index 42f574abc..000000000 --- a/experimental/federated_plugin/federated_plugin_web/pubspec.yaml +++ /dev/null @@ -1,32 +0,0 @@ -name: federated_plugin_web -description: Web implementation of federated_plugin to retrieve current battery level. -version: 0.0.1 -publish_to: none - -environment: - sdk: ^3.7.0-0 - -dependencies: - flutter: - sdk: flutter - flutter_web_plugins: - sdk: flutter - federated_plugin_platform_interface: - path: ../federated_plugin_platform_interface - web: ^1.1.0 - -dev_dependencies: - analysis_defaults: - path: ../../../analysis_defaults - flutter_test: - sdk: flutter - integration_test: - sdk: flutter - mockito: ^5.0.2 - -flutter: - plugin: - platforms: - web: - pluginClass: FederatedPlugin - fileName: federated_plugin_web.dart diff --git a/experimental/federated_plugin/federated_plugin_web/test_driver/federated_plugin_web_integration_test.dart b/experimental/federated_plugin/federated_plugin_web/test_driver/federated_plugin_web_integration_test.dart deleted file mode 100644 index ca0d54c65..000000000 --- a/experimental/federated_plugin/federated_plugin_web/test_driver/federated_plugin_web_integration_test.dart +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2020 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:async'; - -import 'package:integration_test/integration_test_driver.dart'; - -Future main() async => integrationDriver(); diff --git a/experimental/federated_plugin/federated_plugin_web/web/index.html b/experimental/federated_plugin/federated_plugin_web/web/index.html deleted file mode 100644 index 2cf1b6a25..000000000 --- a/experimental/federated_plugin/federated_plugin_web/web/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Browser Tests - - - - - diff --git a/experimental/federated_plugin/federated_plugin_windows/.gitignore b/experimental/federated_plugin/federated_plugin_windows/.gitignore deleted file mode 100644 index 9be145fde..000000000 --- a/experimental/federated_plugin/federated_plugin_windows/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. -/pubspec.lock -**/doc/api/ -.dart_tool/ -.packages -build/ diff --git a/experimental/federated_plugin/federated_plugin_windows/.metadata b/experimental/federated_plugin/federated_plugin_windows/.metadata deleted file mode 100644 index 8c15ad72b..000000000 --- a/experimental/federated_plugin/federated_plugin_windows/.metadata +++ /dev/null @@ -1,10 +0,0 @@ -# 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. - -version: - revision: 77d935af4db863f6abd0b9c31c7e6df2a13de57b - channel: stable - -project_type: plugin diff --git a/experimental/federated_plugin/federated_plugin_windows/analysis_options.yaml b/experimental/federated_plugin/federated_plugin_windows/analysis_options.yaml deleted file mode 100644 index 13d6fe105..000000000 --- a/experimental/federated_plugin/federated_plugin_windows/analysis_options.yaml +++ /dev/null @@ -1 +0,0 @@ -include: package:analysis_defaults/flutter.yaml diff --git a/experimental/federated_plugin/federated_plugin_windows/example/README.md b/experimental/federated_plugin/federated_plugin_windows/example/README.md deleted file mode 100644 index 94cbe1de6..000000000 --- a/experimental/federated_plugin/federated_plugin_windows/example/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# federated_plugin_windows_example - -To view the usage of plugin, head over to [federated_plugin/example](../../federated_plugin/example). diff --git a/experimental/federated_plugin/federated_plugin_windows/lib/federated_plugin_windows.dart b/experimental/federated_plugin/federated_plugin_windows/lib/federated_plugin_windows.dart deleted file mode 100644 index 136d1d687..000000000 --- a/experimental/federated_plugin/federated_plugin_windows/lib/federated_plugin_windows.dart +++ /dev/null @@ -1,2 +0,0 @@ -// The federated_plugin_windows uses the default BatteryMethodChannel used by -// federated_plugin_platform_interface to do platform calls. diff --git a/experimental/federated_plugin/federated_plugin_windows/pubspec.yaml b/experimental/federated_plugin/federated_plugin_windows/pubspec.yaml deleted file mode 100644 index bc67592ea..000000000 --- a/experimental/federated_plugin/federated_plugin_windows/pubspec.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: federated_plugin_windows -description: Windows implementation of federated_plugin to retrieve current battery level. -version: 0.0.1 -homepage: - -environment: - sdk: ^3.7.0-0 - -dependencies: - flutter: - sdk: flutter - -dev_dependencies: - analysis_defaults: - path: ../../../analysis_defaults - flutter_test: - sdk: flutter - -flutter: - plugin: - platforms: - windows: - pluginClass: FederatedPluginWindowsPlugin diff --git a/experimental/federated_plugin/federated_plugin_windows/windows/.gitignore b/experimental/federated_plugin/federated_plugin_windows/windows/.gitignore deleted file mode 100644 index b3eb2be16..000000000 --- a/experimental/federated_plugin/federated_plugin_windows/windows/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -flutter/ - -# Visual Studio user-specific files. -*.suo -*.user -*.userosscache -*.sln.docstates - -# Visual Studio build-related files. -x64/ -x86/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ diff --git a/experimental/federated_plugin/federated_plugin_windows/windows/CMakeLists.txt b/experimental/federated_plugin/federated_plugin_windows/windows/CMakeLists.txt deleted file mode 100644 index 94b8c6410..000000000 --- a/experimental/federated_plugin/federated_plugin_windows/windows/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -cmake_minimum_required(VERSION 3.14) -set(PROJECT_NAME "federated_plugin_windows") -project(${PROJECT_NAME} LANGUAGES CXX) - -# This value is used when generating builds using this plugin, so it must -# not be changed -set(PLUGIN_NAME "federated_plugin_windows_plugin") - -add_library(${PLUGIN_NAME} SHARED - "federated_plugin_windows_plugin.cpp" -) -apply_standard_settings(${PLUGIN_NAME}) -set_target_properties(${PLUGIN_NAME} PROPERTIES - CXX_VISIBILITY_PRESET hidden) -target_compile_definitions(${PLUGIN_NAME} PRIVATE FLUTTER_PLUGIN_IMPL) -target_include_directories(${PLUGIN_NAME} INTERFACE - "${CMAKE_CURRENT_SOURCE_DIR}/include") -target_link_libraries(${PLUGIN_NAME} PRIVATE flutter flutter_wrapper_plugin) - -# List of absolute paths to libraries that should be bundled with the plugin -set(federated_plugin_windows_bundled_libraries - "" - PARENT_SCOPE -) diff --git a/experimental/federated_plugin/federated_plugin_windows/windows/federated_plugin_windows_plugin.cpp b/experimental/federated_plugin/federated_plugin_windows/windows/federated_plugin_windows_plugin.cpp deleted file mode 100644 index 334877158..000000000 --- a/experimental/federated_plugin/federated_plugin_windows/windows/federated_plugin_windows_plugin.cpp +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2020 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "include/federated_plugin_windows/federated_plugin_windows_plugin.h" - -// This must be included before many other Windows headers. -#include - -#include -#include -#include - -#include -#include - -namespace { - -class FederatedPluginWindowsPlugin : public flutter::Plugin { - public: - static void RegisterWithRegistrar(flutter::PluginRegistrarWindows *registrar); - - FederatedPluginWindowsPlugin(); - - virtual ~FederatedPluginWindowsPlugin(); - - private: - // Called when a method is called on this plugin's channel from Dart. - void HandleMethodCall( - const flutter::MethodCall &method_call, - std::unique_ptr> result); -}; - -// static -void FederatedPluginWindowsPlugin::RegisterWithRegistrar( - flutter::PluginRegistrarWindows *registrar) { - auto channel = - std::make_unique>( - registrar->messenger(), "battery", - &flutter::StandardMethodCodec::GetInstance()); - - auto plugin = std::make_unique(); - - channel->SetMethodCallHandler( - [plugin_pointer = plugin.get()](const auto &call, auto result) { - plugin_pointer->HandleMethodCall(call, std::move(result)); - }); - - registrar->AddPlugin(std::move(plugin)); -} - -FederatedPluginWindowsPlugin::FederatedPluginWindowsPlugin() {} - -FederatedPluginWindowsPlugin::~FederatedPluginWindowsPlugin() {} - -void FederatedPluginWindowsPlugin::HandleMethodCall( - const flutter::MethodCall &method_call, - std::unique_ptr> result) { - if (method_call.method_name().compare("getBatteryLevel") == 0) { - SYSTEM_POWER_STATUS systemPower; - // GetSystemPowerStatus will retrieve the power status of the system. - if (GetSystemPowerStatus(&systemPower)) { - int batteryLevel = systemPower.BatteryLifePercent; - // The batteryLevel value in the range 0 to 100, or 255 if status is unknown. - if (batteryLevel != 255) { - flutter::EncodableValue response(batteryLevel); - result->Success(&response); - } - else { - result->Error("STATUS_UNAVAILABLE", "Not able to determine battery level."); - } - } - else { - result->Error("STATUS_UNAVAILABLE", "Not able to determine battery level."); - } - } - else { - result->NotImplemented(); - } -} - -} // namespace - -void FederatedPluginWindowsPluginRegisterWithRegistrar( - FlutterDesktopPluginRegistrarRef registrar) { - FederatedPluginWindowsPlugin::RegisterWithRegistrar( - flutter::PluginRegistrarManager::GetInstance() - ->GetRegistrar(registrar)); -} diff --git a/experimental/federated_plugin/federated_plugin_windows/windows/include/federated_plugin_windows/federated_plugin_windows_plugin.h b/experimental/federated_plugin/federated_plugin_windows/windows/include/federated_plugin_windows/federated_plugin_windows_plugin.h deleted file mode 100644 index 0becf0c79..000000000 --- a/experimental/federated_plugin/federated_plugin_windows/windows/include/federated_plugin_windows/federated_plugin_windows_plugin.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef FLUTTER_PLUGIN_FEDERATED_PLUGIN_WINDOWS_PLUGIN_H_ -#define FLUTTER_PLUGIN_FEDERATED_PLUGIN_WINDOWS_PLUGIN_H_ - -#include - -#ifdef FLUTTER_PLUGIN_IMPL -#define FLUTTER_PLUGIN_EXPORT __declspec(dllexport) -#else -#define FLUTTER_PLUGIN_EXPORT __declspec(dllimport) -#endif - -#if defined(__cplusplus) -extern "C" { -#endif - -FLUTTER_PLUGIN_EXPORT void FederatedPluginWindowsPluginRegisterWithRegistrar( - FlutterDesktopPluginRegistrarRef registrar); - -#if defined(__cplusplus) -} // extern "C" -#endif - -#endif // FLUTTER_PLUGIN_FEDERATED_PLUGIN_WINDOWS_PLUGIN_H_ diff --git a/experimental/varfont_shader_puzzle/.gitignore b/experimental/varfont_shader_puzzle/.gitignore deleted file mode 100644 index 24476c5d1..000000000 --- a/experimental/varfont_shader_puzzle/.gitignore +++ /dev/null @@ -1,44 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ -migrate_working_dir/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release diff --git a/experimental/varfont_shader_puzzle/.metadata b/experimental/varfont_shader_puzzle/.metadata deleted file mode 100644 index 620c3fb0b..000000000 --- a/experimental/varfont_shader_puzzle/.metadata +++ /dev/null @@ -1,42 +0,0 @@ -# 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. - -version: - revision: "db7ef5bf9f59442b0e200a90587e8fa5e0c6336a" - channel: "stable" - -project_type: app - -# Tracks metadata for the flutter migrate command -migration: - platforms: - - platform: root - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - - platform: android - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - - platform: ios - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - - platform: linux - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - - platform: macos - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - - platform: windows - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - - # 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/experimental/varfont_shader_puzzle/README.md b/experimental/varfont_shader_puzzle/README.md index cec255b5c..1d136ce85 100644 --- a/experimental/varfont_shader_puzzle/README.md +++ b/experimental/varfont_shader_puzzle/README.md @@ -1,3 +1,3 @@ -# Type Jam +# Sample moved -A simple typographically-themed puzzle app to explore creative use of variable fonts and shaders in Flutter. +The `varfont_shader_puzzle` sample has been moved to the [flutter/demos][https://github.com/flutter/demos] repository, and is no longer maintained. diff --git a/experimental/varfont_shader_puzzle/analysis_options.yaml b/experimental/varfont_shader_puzzle/analysis_options.yaml deleted file mode 100644 index 13d6fe105..000000000 --- a/experimental/varfont_shader_puzzle/analysis_options.yaml +++ /dev/null @@ -1 +0,0 @@ -include: package:analysis_defaults/flutter.yaml diff --git a/experimental/varfont_shader_puzzle/android/.gitignore b/experimental/varfont_shader_puzzle/android/.gitignore deleted file mode 100644 index 6f568019d..000000000 --- a/experimental/varfont_shader_puzzle/android/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -gradle-wrapper.jar -/.gradle -/captures/ -/gradlew -/gradlew.bat -/local.properties -GeneratedPluginRegistrant.java - -# Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app -key.properties -**/*.keystore -**/*.jks diff --git a/experimental/varfont_shader_puzzle/android/app/build.gradle b/experimental/varfont_shader_puzzle/android/app/build.gradle deleted file mode 100644 index 665ab6722..000000000 --- a/experimental/varfont_shader_puzzle/android/app/build.gradle +++ /dev/null @@ -1,67 +0,0 @@ -plugins { - id "com.android.application" - id "kotlin-android" - id "dev.flutter.flutter-gradle-plugin" -} - -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -android { - namespace "com.example.varfont_shader_puzzle" - compileSdkVersion flutter.compileSdkVersion - ndkVersion flutter.ndkVersion - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.varfont_shader_puzzle" - // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion flutter.minSdkVersion - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - } -} - -flutter { - source '../..' -} - -dependencies {} diff --git a/experimental/varfont_shader_puzzle/android/app/src/debug/AndroidManifest.xml b/experimental/varfont_shader_puzzle/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index 399f6981d..000000000 --- a/experimental/varfont_shader_puzzle/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/experimental/varfont_shader_puzzle/android/app/src/main/AndroidManifest.xml b/experimental/varfont_shader_puzzle/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 69cf431ac..000000000 --- a/experimental/varfont_shader_puzzle/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - diff --git a/experimental/varfont_shader_puzzle/android/app/src/main/kotlin/com/example/varfont_shader_puzzle/MainActivity.kt b/experimental/varfont_shader_puzzle/android/app/src/main/kotlin/com/example/varfont_shader_puzzle/MainActivity.kt deleted file mode 100644 index ec859b3e1..000000000 --- a/experimental/varfont_shader_puzzle/android/app/src/main/kotlin/com/example/varfont_shader_puzzle/MainActivity.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.varfont_shader_puzzle - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity: FlutterActivity() { -} diff --git a/experimental/varfont_shader_puzzle/android/app/src/main/res/drawable-v21/launch_background.xml b/experimental/varfont_shader_puzzle/android/app/src/main/res/drawable-v21/launch_background.xml deleted file mode 100644 index f74085f3f..000000000 --- a/experimental/varfont_shader_puzzle/android/app/src/main/res/drawable-v21/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/experimental/varfont_shader_puzzle/android/app/src/main/res/drawable/launch_background.xml b/experimental/varfont_shader_puzzle/android/app/src/main/res/drawable/launch_background.xml deleted file mode 100644 index 304732f88..000000000 --- a/experimental/varfont_shader_puzzle/android/app/src/main/res/drawable/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index db77bb4b7..000000000 Binary files a/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 17987b79b..000000000 Binary files a/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 09d439148..000000000 Binary files a/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index d5f1c8d34..000000000 Binary files a/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 4d6372eeb..000000000 Binary files a/experimental/varfont_shader_puzzle/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/android/app/src/main/res/values-night/styles.xml b/experimental/varfont_shader_puzzle/android/app/src/main/res/values-night/styles.xml deleted file mode 100644 index 06952be74..000000000 --- a/experimental/varfont_shader_puzzle/android/app/src/main/res/values-night/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/experimental/varfont_shader_puzzle/android/app/src/main/res/values/styles.xml b/experimental/varfont_shader_puzzle/android/app/src/main/res/values/styles.xml deleted file mode 100644 index cb1ef8805..000000000 --- a/experimental/varfont_shader_puzzle/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/experimental/varfont_shader_puzzle/android/app/src/profile/AndroidManifest.xml b/experimental/varfont_shader_puzzle/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index 399f6981d..000000000 --- a/experimental/varfont_shader_puzzle/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/experimental/varfont_shader_puzzle/android/build.gradle b/experimental/varfont_shader_puzzle/android/build.gradle deleted file mode 100644 index e83fb5dac..000000000 --- a/experimental/varfont_shader_puzzle/android/build.gradle +++ /dev/null @@ -1,30 +0,0 @@ -buildscript { - ext.kotlin_version = '1.7.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -rootProject.buildDir = '../build' -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') -} - -tasks.register("clean", Delete) { - delete rootProject.buildDir -} diff --git a/experimental/varfont_shader_puzzle/android/gradle.properties b/experimental/varfont_shader_puzzle/android/gradle.properties deleted file mode 100644 index 598d13fee..000000000 --- a/experimental/varfont_shader_puzzle/android/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.jvmargs=-Xmx4G -android.useAndroidX=true -android.enableJetifier=true diff --git a/experimental/varfont_shader_puzzle/android/gradle/wrapper/gradle-wrapper.properties b/experimental/varfont_shader_puzzle/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 3c472b99c..000000000 --- a/experimental/varfont_shader_puzzle/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/experimental/varfont_shader_puzzle/android/settings.gradle b/experimental/varfont_shader_puzzle/android/settings.gradle deleted file mode 100644 index 7cd712855..000000000 --- a/experimental/varfont_shader_puzzle/android/settings.gradle +++ /dev/null @@ -1,29 +0,0 @@ -pluginManagement { - def flutterSdkPath = { - def properties = new Properties() - file("local.properties").withInputStream { properties.load(it) } - def flutterSdkPath = properties.getProperty("flutter.sdk") - assert flutterSdkPath != null, "flutter.sdk not set in local.properties" - return flutterSdkPath - } - settings.ext.flutterSdkPath = flutterSdkPath() - - includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle") - - repositories { - google() - mavenCentral() - gradlePluginPortal() - } - - plugins { - id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false - } -} - -plugins { - id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "7.3.0" apply false -} - -include ":app" diff --git a/experimental/varfont_shader_puzzle/assets/fonts/Amstelvar-Roman[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,wdth,wght,opsz].ttf b/experimental/varfont_shader_puzzle/assets/fonts/Amstelvar-Roman[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,wdth,wght,opsz].ttf deleted file mode 100644 index 062b4a45a..000000000 Binary files a/experimental/varfont_shader_puzzle/assets/fonts/Amstelvar-Roman[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,wdth,wght,opsz].ttf and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/assets/fonts/Roboto-Bold.ttf b/experimental/varfont_shader_puzzle/assets/fonts/Roboto-Bold.ttf deleted file mode 100644 index 43da14d84..000000000 Binary files a/experimental/varfont_shader_puzzle/assets/fonts/Roboto-Bold.ttf and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/assets/fonts/Roboto-Regular.ttf b/experimental/varfont_shader_puzzle/assets/fonts/Roboto-Regular.ttf deleted file mode 100644 index ddf4bfacb..000000000 Binary files a/experimental/varfont_shader_puzzle/assets/fonts/Roboto-Regular.ttf and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/assets/images/specimen-1-glitch.png b/experimental/varfont_shader_puzzle/assets/images/specimen-1-glitch.png deleted file mode 100644 index 3e4f2bbb3..000000000 Binary files a/experimental/varfont_shader_puzzle/assets/images/specimen-1-glitch.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/assets/images/specimen-1.png b/experimental/varfont_shader_puzzle/assets/images/specimen-1.png deleted file mode 100644 index 9914ed907..000000000 Binary files a/experimental/varfont_shader_puzzle/assets/images/specimen-1.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/assets/images/specimen-2.png b/experimental/varfont_shader_puzzle/assets/images/specimen-2.png deleted file mode 100644 index 01682fb93..000000000 Binary files a/experimental/varfont_shader_puzzle/assets/images/specimen-2.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/assets/images/wallpaper1.png b/experimental/varfont_shader_puzzle/assets/images/wallpaper1.png deleted file mode 100644 index b7d18502b..000000000 Binary files a/experimental/varfont_shader_puzzle/assets/images/wallpaper1.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/assets/images/wallpaper2.png b/experimental/varfont_shader_puzzle/assets/images/wallpaper2.png deleted file mode 100644 index 01c482730..000000000 Binary files a/experimental/varfont_shader_puzzle/assets/images/wallpaper2.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/assets/images/wallpaper3.png b/experimental/varfont_shader_puzzle/assets/images/wallpaper3.png deleted file mode 100644 index 6f4af438c..000000000 Binary files a/experimental/varfont_shader_puzzle/assets/images/wallpaper3.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/codelab_rebuild.yaml b/experimental/varfont_shader_puzzle/codelab_rebuild.yaml deleted file mode 100644 index 46a1ecc55..000000000 --- a/experimental/varfont_shader_puzzle/codelab_rebuild.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# Run with tooling from https://github.com/flutter/codelabs/tree/main/tooling/codelab_rebuild -name: Animations rebuild script -steps: - - name: Remove runners - rmdirs: - - android - - ios - - linux - - macos - - windows - - name: Flutter recreate - flutter: create . --platforms android,ios,linux,macos,windows - - name: Build for iOS - flutter: build ios --simulator - - name: Build for macOS - flutter: build macos diff --git a/experimental/varfont_shader_puzzle/ios/.gitignore b/experimental/varfont_shader_puzzle/ios/.gitignore deleted file mode 100644 index 7a7f9873a..000000000 --- a/experimental/varfont_shader_puzzle/ios/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -**/dgph -*.mode1v3 -*.mode2v3 -*.moved-aside -*.pbxuser -*.perspectivev3 -**/*sync/ -.sconsign.dblite -.tags* -**/.vagrant/ -**/DerivedData/ -Icon? -**/Pods/ -**/.symlinks/ -profile -xcuserdata -**/.generated/ -Flutter/App.framework -Flutter/Flutter.framework -Flutter/Flutter.podspec -Flutter/Generated.xcconfig -Flutter/ephemeral/ -Flutter/app.flx -Flutter/app.zip -Flutter/flutter_assets/ -Flutter/flutter_export_environment.sh -ServiceDefinitions.json -Runner/GeneratedPluginRegistrant.* - -# Exceptions to above rules. -!default.mode1v3 -!default.mode2v3 -!default.pbxuser -!default.perspectivev3 diff --git a/experimental/varfont_shader_puzzle/ios/Flutter/AppFrameworkInfo.plist b/experimental/varfont_shader_puzzle/ios/Flutter/AppFrameworkInfo.plist deleted file mode 100644 index 9625e105d..000000000 --- a/experimental/varfont_shader_puzzle/ios/Flutter/AppFrameworkInfo.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 11.0 - - diff --git a/experimental/varfont_shader_puzzle/ios/Flutter/Debug.xcconfig b/experimental/varfont_shader_puzzle/ios/Flutter/Debug.xcconfig deleted file mode 100644 index ec97fc6f3..000000000 --- a/experimental/varfont_shader_puzzle/ios/Flutter/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "Generated.xcconfig" diff --git a/experimental/varfont_shader_puzzle/ios/Flutter/Release.xcconfig b/experimental/varfont_shader_puzzle/ios/Flutter/Release.xcconfig deleted file mode 100644 index c4855bfe2..000000000 --- a/experimental/varfont_shader_puzzle/ios/Flutter/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "Generated.xcconfig" diff --git a/experimental/varfont_shader_puzzle/ios/Podfile b/experimental/varfont_shader_puzzle/ios/Podfile deleted file mode 100644 index fdcc671eb..000000000 --- a/experimental/varfont_shader_puzzle/ios/Podfile +++ /dev/null @@ -1,44 +0,0 @@ -# Uncomment this line to define a global platform for your project -# platform :ios, '11.0' - -# 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', '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 Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/project.pbxproj b/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 4cf522395..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,722 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXBuildFile section */ - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 2D29E31A3A79F9333791B51D /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73A94518C1B077566B730F17 /* Pods_Runner.framework */; }; - 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 891BD033C601B72D562DF8C0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C6933D4A3C5277B69ACBFB6E /* Pods_RunnerTests.framework */; }; - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 97C146E61CF9000F007C117D /* Project object */; - proxyType = 1; - remoteGlobalIDString = 97C146ED1CF9000F007C117D; - remoteInfo = Runner; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 9705A1C41CF9048500538489 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 0D9FDBAE730D44B5DAF66533 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 1F18FCED1ECA53679E854763 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; - 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 43CE1627606473C19FB03FF3 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - 517D85BC067A0EA0E96EA4A8 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - 6364E8B2E7C9C391682E8BCF /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - 73A94518C1B077566B730F17 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; - 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C6933D4A3C5277B69ACBFB6E /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F9EB5298186B85BCAD585118 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2D29E31A3A79F9333791B51D /* Pods_Runner.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DF1CD5C6DFB4874767236D73 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 891BD033C601B72D562DF8C0 /* Pods_RunnerTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 07DA3946E7E7EFEFFAD0000F /* Frameworks */ = { - isa = PBXGroup; - children = ( - 73A94518C1B077566B730F17 /* Pods_Runner.framework */, - C6933D4A3C5277B69ACBFB6E /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 2D4C743D47EF854290F46B78 /* Pods */ = { - isa = PBXGroup; - children = ( - F9EB5298186B85BCAD585118 /* Pods-Runner.debug.xcconfig */, - 1F18FCED1ECA53679E854763 /* Pods-Runner.release.xcconfig */, - 6364E8B2E7C9C391682E8BCF /* Pods-Runner.profile.xcconfig */, - 0D9FDBAE730D44B5DAF66533 /* Pods-RunnerTests.debug.xcconfig */, - 43CE1627606473C19FB03FF3 /* Pods-RunnerTests.release.xcconfig */, - 517D85BC067A0EA0E96EA4A8 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { - isa = PBXGroup; - children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, - ); - path = RunnerTests; - sourceTree = ""; - }; - 9740EEB11CF90186004384FC /* Flutter */ = { - isa = PBXGroup; - children = ( - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 9740EEB31CF90195004384FC /* Generated.xcconfig */, - ); - name = Flutter; - sourceTree = ""; - }; - 97C146E51CF9000F007C117D = { - isa = PBXGroup; - children = ( - 9740EEB11CF90186004384FC /* Flutter */, - 97C146F01CF9000F007C117D /* Runner */, - 97C146EF1CF9000F007C117D /* Products */, - 331C8082294A63A400263BE5 /* RunnerTests */, - 2D4C743D47EF854290F46B78 /* Pods */, - 07DA3946E7E7EFEFFAD0000F /* Frameworks */, - ); - sourceTree = ""; - }; - 97C146EF1CF9000F007C117D /* Products */ = { - isa = PBXGroup; - children = ( - 97C146EE1CF9000F007C117D /* Runner.app */, - 331C8081294A63A400263BE5 /* RunnerTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 97C146F01CF9000F007C117D /* Runner */ = { - isa = PBXGroup; - children = ( - 97C146FA1CF9000F007C117D /* Main.storyboard */, - 97C146FD1CF9000F007C117D /* Assets.xcassets */, - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, - 97C147021CF9000F007C117D /* Info.plist */, - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, - ); - path = Runner; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 331C8080294A63A400263BE5 /* RunnerTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; - buildPhases = ( - 1CC0CE02DDD22E3C34E46370 /* [CP] Check Pods Manifest.lock */, - 331C807D294A63A400263BE5 /* Sources */, - 331C807F294A63A400263BE5 /* Resources */, - DF1CD5C6DFB4874767236D73 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 331C8086294A63A400263BE5 /* PBXTargetDependency */, - ); - name = RunnerTests; - productName = RunnerTests; - productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 97C146ED1CF9000F007C117D /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 8C070EA05DFDB24F15A12816 /* [CP] Check Pods Manifest.lock */, - 9740EEB61CF901F6004384FC /* Run Script */, - 97C146EA1CF9000F007C117D /* Sources */, - 97C146EB1CF9000F007C117D /* Frameworks */, - 97C146EC1CF9000F007C117D /* Resources */, - 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 3F8C0B811F28285ABC292845 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Runner; - productName = Runner; - productReference = 97C146EE1CF9000F007C117D /* Runner.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 97C146E61CF9000F007C117D /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1430; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 331C8080294A63A400263BE5 = { - CreatedOnToolsVersion = 14.0; - TestTargetID = 97C146ED1CF9000F007C117D; - }; - 97C146ED1CF9000F007C117D = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 1100; - }; - }; - }; - buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 97C146E51CF9000F007C117D; - productRefGroup = 97C146EF1CF9000F007C117D /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 97C146ED1CF9000F007C117D /* Runner */, - 331C8080294A63A400263BE5 /* RunnerTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 331C807F294A63A400263BE5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 97C146EC1CF9000F007C117D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 1CC0CE02DDD22E3C34E46370 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", - ); - name = "Thin Binary"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; - }; - 3F8C0B811F28285ABC292845 /* [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; - }; - 8C070EA05DFDB24F15A12816 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 9740EEB61CF901F6004384FC /* Run Script */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 331C807D294A63A400263BE5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 97C146EA1CF9000F007C117D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 97C146ED1CF9000F007C117D /* Runner */; - targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 97C146FA1CF9000F007C117D /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C146FB1CF9000F007C117D /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C147001CF9000F007C117D /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 249021D3217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - 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_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - 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_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Profile; - }; - 249021D4217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.varfontShaderPuzzle; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Profile; - }; - 331C8088294A63A400263BE5 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0D9FDBAE730D44B5DAF66533 /* Pods-RunnerTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.varfontShaderPuzzle.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Debug; - }; - 331C8089294A63A400263BE5 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 43CE1627606473C19FB03FF3 /* Pods-RunnerTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.varfontShaderPuzzle.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Release; - }; - 331C808A294A63A400263BE5 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 517D85BC067A0EA0E96EA4A8 /* Pods-RunnerTests.profile.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.varfontShaderPuzzle.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Profile; - }; - 97C147031CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - 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_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - 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_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - 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_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 97C147041CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - 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_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - 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_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 97C147061CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.varfontShaderPuzzle; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 97C147071CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.varfontShaderPuzzle; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 331C8088294A63A400263BE5 /* Debug */, - 331C8089294A63A400263BE5 /* Release */, - 331C808A294A63A400263BE5 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147031CF9000F007C117D /* Debug */, - 97C147041CF9000F007C117D /* Release */, - 249021D3217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147061CF9000F007C117D /* Debug */, - 97C147071CF9000F007C117D /* Release */, - 249021D4217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 97C146E61CF9000F007C117D /* Project object */; -} diff --git a/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a62..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5e..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index 87131a09b..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experimental/varfont_shader_puzzle/ios/Runner.xcworkspace/contents.xcworkspacedata b/experimental/varfont_shader_puzzle/ios/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc14c..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/experimental/varfont_shader_puzzle/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/experimental/varfont_shader_puzzle/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/experimental/varfont_shader_puzzle/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/experimental/varfont_shader_puzzle/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5e..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/experimental/varfont_shader_puzzle/ios/Runner/AppDelegate.swift b/experimental/varfont_shader_puzzle/ios/Runner/AppDelegate.swift deleted file mode 100644 index 70693e4a8..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner/AppDelegate.swift +++ /dev/null @@ -1,13 +0,0 @@ -import UIKit -import Flutter - -@UIApplicationMain -@objc class AppDelegate: FlutterAppDelegate { - override func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? - ) -> Bool { - GeneratedPluginRegistrant.register(with: self) - return super.application(application, didFinishLaunchingWithOptions: launchOptions) - } -} diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d36b1fab2..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada472..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png deleted file mode 100644 index 7353c41ec..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png deleted file mode 100644 index 797d452e4..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index 6ed2d933e..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png deleted file mode 100644 index 4cd7b0099..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index fe730945a..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png deleted file mode 100644 index 321773cd8..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png deleted file mode 100644 index 797d452e4..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index 502f463a9..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index 0ec303439..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index 0ec303439..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index e9f5fea27..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index 84ac32ae7..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png deleted file mode 100644 index 8953cba09..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png deleted file mode 100644 index 0467bf12a..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json deleted file mode 100644 index 0bedcf2fd..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "LaunchImage.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png deleted file mode 100644 index 9da19eaca..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19eaca..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19eaca..000000000 Binary files a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725b7..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Base.lproj/LaunchScreen.storyboard b/experimental/varfont_shader_puzzle/ios/Runner/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index f2e259c7c..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Base.lproj/Main.storyboard b/experimental/varfont_shader_puzzle/ios/Runner/Base.lproj/Main.storyboard deleted file mode 100644 index f3c28516f..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner/Base.lproj/Main.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Info.plist b/experimental/varfont_shader_puzzle/ios/Runner/Info.plist deleted file mode 100644 index 1028badf2..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner/Info.plist +++ /dev/null @@ -1,49 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Varfont Shader Puzzle - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - varfont_shader_puzzle - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - - - diff --git a/experimental/varfont_shader_puzzle/ios/Runner/Runner-Bridging-Header.h b/experimental/varfont_shader_puzzle/ios/Runner/Runner-Bridging-Header.h deleted file mode 100644 index 308a2a560..000000000 --- a/experimental/varfont_shader_puzzle/ios/Runner/Runner-Bridging-Header.h +++ /dev/null @@ -1 +0,0 @@ -#import "GeneratedPluginRegistrant.h" diff --git a/experimental/varfont_shader_puzzle/ios/RunnerTests/RunnerTests.swift b/experimental/varfont_shader_puzzle/ios/RunnerTests/RunnerTests.swift deleted file mode 100644 index 86a7c3b1b..000000000 --- a/experimental/varfont_shader_puzzle/ios/RunnerTests/RunnerTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -import Flutter -import UIKit -import XCTest - -class RunnerTests: XCTestCase { - - func testExample() { - // If you add code to the Runner application, consider adding tests here. - // See https://developer.apple.com/documentation/xctest for more information about using XCTest. - } - -} diff --git a/experimental/varfont_shader_puzzle/lib/components/components.dart b/experimental/varfont_shader_puzzle/lib/components/components.dart deleted file mode 100644 index f6974e9d9..000000000 --- a/experimental/varfont_shader_puzzle/lib/components/components.dart +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export 'fragment_shaded.dart'; -export 'lightboxed_panel.dart'; -export 'rotator_puzzle.dart'; -export 'wonky_anim_palette.dart'; -export 'wonky_char.dart'; diff --git a/experimental/varfont_shader_puzzle/lib/components/fragment_shaded.dart b/experimental/varfont_shader_puzzle/lib/components/fragment_shaded.dart deleted file mode 100644 index 80b74aa4c..000000000 --- a/experimental/varfont_shader_puzzle/lib/components/fragment_shaded.dart +++ /dev/null @@ -1,282 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:ui' as ui; - -import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; - -enum Shader { - nothing('nothing'), - bwSplit('bw_split'), - colorSplit('color_split'), - rowOffset('row_offset'), - wavyCirc('wavy_circ'), - wavy('wavy'), - wavy2('wavy2'); - - const Shader(this.name); - final String name; - Future get program => - ui.FragmentProgram.fromAsset('shaders/$name.frag'); -} - -class FragmentShaded extends StatefulWidget { - final Widget child; - final Shader shader; - final int shaderDuration; - static const int dampenDuration = 1000; - static final Map _programCache = {}; - - const FragmentShaded({ - required this.shader, - required this.shaderDuration, - required this.child, - super.key, - }); - - @override - State createState() => FragmentShadedState(); -} - -class FragmentShadedState extends State - with TickerProviderStateMixin { - late final AnimationController _controller; - late final Animation _dampenAnimation; - late final Animation _dampenCurve; - late final AnimationController _dampenController; - late AnimatingSamplerBuilder builder; - - @override - void initState() { - super.initState(); - _controller = AnimationController( - vsync: this, - duration: Duration(milliseconds: widget.shaderDuration), - )..repeat(reverse: false); - _dampenController = AnimationController( - vsync: this, - duration: const Duration(milliseconds: FragmentShaded.dampenDuration), - ); - _dampenCurve = CurvedAnimation( - parent: _dampenController, - curve: Curves.easeInOut, - ); - _dampenAnimation = Tween( - begin: 1.0, - end: 0.0, - ).animate(_dampenCurve); - initializeFragmentProgramsAndBuilder(); - } - - Future initializeFragmentProgramsAndBuilder() async { - if (FragmentShaded._programCache.isEmpty) { - for (final shader in Shader.values) { - FragmentShaded._programCache[shader] = await shader.program; - } - } - - setState(() { - builder = AnimatingSamplerBuilder( - _controller, - _dampenAnimation, - FragmentShaded._programCache[widget.shader]!.fragmentShader(), - ); - }); - } - - @override - void dispose() { - _controller.dispose(); - _dampenController.dispose(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - if (null == FragmentShaded._programCache[widget.shader]) { - setState(() {}); - return const SizedBox(width: 0, height: 0); - } - return Transform.scale( - scale: 0.5, - child: ShaderSamplerBuilder(builder, child: widget.child), - ); - } - - void startDampening() { - _dampenController.forward(); - } -} - -class AnimatingSamplerBuilder extends SamplerBuilder { - AnimatingSamplerBuilder( - this.animation, - this.dampenAnimation, - this.fragmentShader, - ) { - animation.addListener(notifyListeners); - dampenAnimation.addListener(notifyListeners); - } - - final Animation animation; - final Animation dampenAnimation; - - final ui.FragmentShader fragmentShader; - - @override - void paint(ui.Image image, Size size, ui.Canvas canvas) { - // animation - fragmentShader.setFloat(0, animation.value); - // width - fragmentShader.setFloat(1, size.width); - // height - fragmentShader.setFloat(2, size.height); - // dampener - fragmentShader.setFloat(3, dampenAnimation.value); - // sampler - fragmentShader.setImageSampler(0, image); - - canvas.drawRect(Offset.zero & size, Paint()..shader = fragmentShader); - } -} - -abstract class SamplerBuilder extends ChangeNotifier { - void paint(ui.Image image, Size size, ui.Canvas canvas); -} - -class ShaderSamplerBuilder extends StatelessWidget { - const ShaderSamplerBuilder(this.builder, {required this.child, super.key}); - - final SamplerBuilder builder; - final Widget child; - - @override - Widget build(BuildContext context) { - return RepaintBoundary(child: _ShaderSamplerImpl(builder, child: child)); - } -} - -class _ShaderSamplerImpl extends SingleChildRenderObjectWidget { - const _ShaderSamplerImpl(this.builder, {super.child}); - - final SamplerBuilder builder; - - @override - RenderObject createRenderObject(BuildContext context) { - return _RenderShaderSamplerBuilderWidget( - devicePixelRatio: MediaQuery.of(context).devicePixelRatio, - builder: builder, - ); - } - - @override - void updateRenderObject( - BuildContext context, - covariant RenderObject renderObject, - ) { - (renderObject as _RenderShaderSamplerBuilderWidget) - ..devicePixelRatio = MediaQuery.of(context).devicePixelRatio - ..builder = builder; - } -} - -// A render object that conditionally converts its child into a [ui.Image] -// and then paints it in place of the child. -class _RenderShaderSamplerBuilderWidget extends RenderProxyBox { - // Create a new [_RenderSnapshotWidget]. - _RenderShaderSamplerBuilderWidget({ - required double devicePixelRatio, - required SamplerBuilder builder, - }) : _devicePixelRatio = devicePixelRatio, - _builder = builder; - - /// The device pixel ratio used to create the child image. - double get devicePixelRatio => _devicePixelRatio; - double _devicePixelRatio; - set devicePixelRatio(double value) { - if (value == devicePixelRatio) { - return; - } - _devicePixelRatio = value; - if (_childRaster == null) { - return; - } else { - _childRaster?.dispose(); - _childRaster = null; - markNeedsPaint(); - } - } - - /// The painter used to paint the child snapshot or child widgets. - SamplerBuilder get builder => _builder; - SamplerBuilder _builder; - set builder(SamplerBuilder value) { - if (value == builder) { - return; - } - builder.removeListener(markNeedsPaint); - _builder = value; - builder.addListener(markNeedsPaint); - markNeedsPaint(); - } - - ui.Image? _childRaster; - - @override - void attach(PipelineOwner owner) { - builder.addListener(markNeedsPaint); - super.attach(owner); - } - - @override - void detach() { - _childRaster?.dispose(); - _childRaster = null; - builder.removeListener(markNeedsPaint); - super.detach(); - } - - @override - void dispose() { - builder.removeListener(markNeedsPaint); - _childRaster?.dispose(); - _childRaster = null; - super.dispose(); - } - - // Paint [child] with this painting context, then convert to a raster and detach all - // children from this layer. - ui.Image? _paintAndDetachToImage() { - final OffsetLayer offsetLayer = OffsetLayer(); - final PaintingContext context = PaintingContext( - offsetLayer, - Offset.zero & size, - ); - super.paint(context, Offset.zero); - // This ignore is here because this method is protected by the `PaintingContext`. Adding a new - // method that performs the work of `_paintAndDetachToImage` would avoid the need for this, but - // that would conflict with our goals of minimizing painting context. - // ignore: invalid_use_of_protected_member - context.stopRecordingIfNeeded(); - final ui.Image image = offsetLayer.toImageSync( - Offset.zero & size, - pixelRatio: devicePixelRatio, - ); - offsetLayer.dispose(); - return image; - } - - @override - void paint(PaintingContext context, Offset offset) { - if (size.isEmpty) { - _childRaster?.dispose(); - _childRaster = null; - return; - } - _childRaster?.dispose(); - _childRaster = _paintAndDetachToImage(); - builder.paint(_childRaster!, size, context.canvas); - } -} diff --git a/experimental/varfont_shader_puzzle/lib/components/lightboxed_panel.dart b/experimental/varfont_shader_puzzle/lib/components/lightboxed_panel.dart deleted file mode 100644 index 2e99e93a0..000000000 --- a/experimental/varfont_shader_puzzle/lib/components/lightboxed_panel.dart +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:flutter/material.dart'; -import '../page_content/pages_flow.dart'; -import '../styles.dart'; - -class LightboxedPanel extends StatefulWidget { - final PageConfig pageConfig; - final List content; - final double width = 300; - final Function? onDismiss; - final bool fadeOnDismiss; - final int? autoDismissAfter; - final bool buildButton; - final Color lightBoxBgColor; - final Color cardBgColor; - - const LightboxedPanel({ - super.key, - required this.pageConfig, - required this.content, - this.onDismiss, - this.fadeOnDismiss = true, - this.autoDismissAfter, - this.buildButton = true, - this.lightBoxBgColor = const Color.fromARGB(200, 255, 255, 255), - this.cardBgColor = Colors.white, - }); - - @override - State createState() => _LightboxedPanelState(); -} - -class _LightboxedPanelState extends State { - bool _fading = false; - bool _show = true; - late int _fadeOutDur = 200; - - @override - void initState() { - _fadeOutDur = widget.fadeOnDismiss ? _fadeOutDur : 0; - if (null != widget.autoDismissAfter) { - _fadeOutDur = 0; - Future.delayed( - Duration(milliseconds: widget.autoDismissAfter!), - handleDismiss, - ); - } - super.initState(); - } - - void handleDismiss() { - if (widget.fadeOnDismiss) { - setState(() { - _fading = true; - }); - } - Future.delayed(Duration(milliseconds: _fadeOutDur), () { - setState(() { - if (widget.fadeOnDismiss) { - _show = false; - } - if (null != widget.onDismiss) { - widget.onDismiss!(); - } - }); - }); - } - - List buttonComponents() { - return [ - Column( - children: [ - const SizedBox(height: 8), - TextButton( - onPressed: handleDismiss, - style: ButtonStyles.style(), - child: Text( - 'OK', - style: TextStyles.bodyStyle().copyWith( - color: Colors.white, - height: 1.2, - ), - ), - ), - ], - ), - ]; - } - - @override - Widget build(BuildContext context) { - if (_show) { - return AnimatedOpacity( - opacity: _fading ? 0 : 1, - curve: Curves.easeOut, - duration: Duration(milliseconds: _fadeOutDur), - child: DecoratedBox( - decoration: BoxDecoration(color: widget.lightBoxBgColor), - child: Center( - child: SizedBox( - width: widget.width, - child: DecoratedBox( - decoration: BoxDecoration( - color: widget.cardBgColor, - border: Border.all( - color: const Color.fromARGB(255, 200, 200, 200), - width: 1.0, - ), - boxShadow: const [ - BoxShadow( - color: Color.fromARGB(30, 0, 0, 0), - offset: Offset.zero, - blurRadius: 4.0, - spreadRadius: 2.0, - ), - ], - borderRadius: const BorderRadius.all(Radius.circular(10.0)), - ), - child: Padding( - padding: const EdgeInsets.all(20.0), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: - widget.content + - (widget.buildButton ? buttonComponents() : []), - ), - ), - ), - ), - ), - ), - ); - } - return const SizedBox(width: 0, height: 0); - } -} diff --git a/experimental/varfont_shader_puzzle/lib/components/rotator_puzzle.dart b/experimental/varfont_shader_puzzle/lib/components/rotator_puzzle.dart deleted file mode 100644 index f84ad4a71..000000000 --- a/experimental/varfont_shader_puzzle/lib/components/rotator_puzzle.dart +++ /dev/null @@ -1,431 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:math'; -import 'dart:ui' as ui; - -import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; - -import '../model/puzzle_model.dart'; -import '../page_content/pages_flow.dart'; -import 'components.dart'; - -class RotatorPuzzle extends StatefulWidget { - final PageConfig pageConfig; - final int numTiles; - final int puzzleNum; - final Shader shader; - final int shaderDuration; - - final String tileShadedString; - final double tileShadedStringSize; - final EdgeInsets tileShadedStringPadding; - final int tileShadedStringAnimDuration; - final List tileShadedStringAnimSettings; - final double tileScaleModifier; - - const RotatorPuzzle({ - super.key, - required this.pageConfig, - required this.numTiles, - required this.puzzleNum, - required this.shader, - required this.shaderDuration, - required this.tileShadedString, - required this.tileShadedStringSize, - required this.tileShadedStringPadding, - required this.tileShadedStringAnimDuration, - this.tileShadedStringAnimSettings = const [], - this.tileScaleModifier = 1.0, - }); - - @override - State createState() => RotatorPuzzleState(); -} - -class RotatorPuzzleState extends State - with TickerProviderStateMixin { - late PuzzleModel puzzleModel; - bool solved = false; - late final AnimationController animationController = AnimationController( - vsync: this, - duration: const Duration(milliseconds: 1000), - ); - late final CurvedAnimation animationCurve = CurvedAnimation( - parent: animationController, - curve: const Interval(0.2, 0.45, curve: Curves.easeOut), - ); - late Animation opacAnimation = Tween( - begin: 0.4, - end: 1.0, - ).animate(animationCurve)..addListener(() { - setState(() {}); - }); - - List> tileKeys = []; - GlobalKey shadedWidgetStackHackStateKey = GlobalKey(); - GlobalKey shadedWidgetRepaintBoundaryKey = GlobalKey(); - GlobalKey tileBgWonkyCharKey = GlobalKey(); - ui.Image? shadedImg; - - @override - void initState() { - for (int i = 0; i < widget.numTiles; i++) { - tileKeys.add(GlobalKey()); - } - puzzleModel = PuzzleModel( - dim: widget.numTiles, - ); //TODO check if correct; correlate dim and numTiles; probably get rid of numTiles - generateTiles(); - shuffle(); - super.initState(); - } - - List generateTiles() { - // TODO move to build? - List tiles = []; - int dim = sqrt(widget.numTiles).round(); - for (int i = 0; i < widget.numTiles; i++) { - RotatorPuzzleTile tile = RotatorPuzzleTile( - key: tileKeys[i], - tileID: i, - row: (i / dim).floor(), - col: i % dim, - parentState: this, - shader: widget.shader, - shaderDuration: widget.shaderDuration, - tileShadedString: widget.tileShadedString, - tileShadedStringSize: widget.tileShadedStringSize, - tileShadedStringPadding: widget.tileShadedStringPadding, - animationSettings: widget.tileShadedStringAnimSettings, - tileShadedStringAnimDuration: widget.tileShadedStringAnimDuration, - tileScaleModifier: widget.tileScaleModifier, - ); - tiles.add(tile); - } - return tiles; - } - - void handlePointerDown({required int tileID}) { - puzzleModel.rotateTile(tileID); - if (puzzleModel.allRotationsCorrect()) { - handleSolved(); - } - } - - void handleSolved() { - animationController.addStatusListener((status) { - solved = true; - for (GlobalKey k in tileKeys) { - if (null != k.currentState && k.currentState!.mounted) { - startDampening(); - tileBgWonkyCharKey.currentState!.stopAnimation(); - } - } - if (status == AnimationStatus.completed) { - Future.delayed( - const Duration(milliseconds: FragmentShaded.dampenDuration + 250), - () { - widget.pageConfig.pageController.nextPage( - duration: const Duration( - milliseconds: PagesFlow.pageScrollDuration, - ), - curve: Curves.easeOut, - ); - }, - ); - } - }); - animationController.forward(); - } - - void shuffle() { - Random rng = Random(0xC00010FF); - for (int i = 0; i < widget.numTiles; i++) { - int rando = rng.nextInt(3); - puzzleModel.setTileStatus(i, rando); - if (puzzleModel.allRotationsCorrect()) { - // fallback to prevent starting on solved puzzle - puzzleModel.setTileStatus(0, 1); - } - } - } - - double tileSize() { - return widget.pageConfig.puzzleSize / sqrt(widget.numTiles); - } - - List tileCoords({required int row, required int col}) { - return [col * tileSize(), row * tileSize()]; - } - - void setImageFromRepaintBoundary(GlobalKey which) { - final BuildContext? context = which.currentContext; - if (null != context) { - final RenderRepaintBoundary boundary = - context.findRenderObject()! as RenderRepaintBoundary; - final ui.Image img = boundary.toImageSync(); - if (mounted) { - setState(() { - shadedImg = img; - }); - } - } - } - - void startDampening() { - if (null != shadedWidgetStackHackStateKey.currentState && - shadedWidgetStackHackStateKey.currentState!.mounted) { - shadedWidgetStackHackStateKey.currentState!.startDampening(); - } - } - - @override - Widget build(BuildContext context) { - // TODO fix widget implementation to remove the need for this hack - // to force a setState rebuild - WidgetsBinding.instance.addPostFrameCallback((_) { - if (mounted) { - setState(() {}); - } - }); - // end hack ---------------- - setImageFromRepaintBoundary(shadedWidgetRepaintBoundaryKey); - return Center( - child: SizedBox( - width: widget.pageConfig.puzzleSize, - height: widget.pageConfig.puzzleSize, - child: Opacity( - opacity: opacAnimation.value, - child: Stack( - children: - [ - Positioned( - left: -9999, - top: -9999, - child: RepaintBoundary( - key: shadedWidgetRepaintBoundaryKey, - child: SizedBox( - width: widget.pageConfig.puzzleSize * 4, - height: widget.pageConfig.puzzleSize * 4, - child: Center( - child: FragmentShaded( - key: shadedWidgetStackHackStateKey, - shader: widget.shader, - shaderDuration: widget.shaderDuration, - child: Padding( - padding: widget.tileShadedStringPadding, - child: WonkyChar( - key: tileBgWonkyCharKey, - text: widget.tileShadedString, - size: widget.tileShadedStringSize, - animDurationMillis: - widget.tileShadedStringAnimDuration, - animationSettings: - widget.tileShadedStringAnimSettings, - ), - ), - ), - ), - ), - ), - ), - ] + - generateTiles(), - ), - ), - ), - ); - } -} - -//////////////////////////////////////////////////////// - -class RotatorPuzzleTile extends StatefulWidget { - final int tileID; - final RotatorPuzzleState parentState; - final Shader shader; - final int shaderDuration; - final String tileShadedString; - final double tileShadedStringSize; - final EdgeInsets tileShadedStringPadding; - final int tileShadedStringAnimDuration; - final List animationSettings; - final double tileScaleModifier; - - // TODO get row/col out into model - final int row; - final int col; - - RotatorPuzzleTile({ - super.key, - required this.tileID, - required this.row, - required this.col, - required this.parentState, - required this.shader, - required this.shaderDuration, - required this.tileShadedString, - required this.tileShadedStringSize, - required this.tileShadedStringPadding, - required this.animationSettings, - required this.tileShadedStringAnimDuration, - required this.tileScaleModifier, - }); - - final State tileState = RotatorPuzzleTileState(); - - @override - State createState() => RotatorPuzzleTileState(); -} - -class RotatorPuzzleTileState extends State - with TickerProviderStateMixin { - double touchedOpac = 0.0; - Duration touchedOpacDur = const Duration(milliseconds: 50); - late final AnimationController animationController = AnimationController( - vsync: this, - duration: const Duration(milliseconds: 100), - ); - late final CurvedAnimation animationCurve = CurvedAnimation( - parent: animationController, - curve: Curves.easeOut, - ); - late Animation animation; - - @override - void initState() { - super.initState(); - animation = Tween( - // initialize animation to starting point - begin: currentStatus() * pi * 0.5, - end: currentStatus() * pi * 0.5, - ).animate(animationController); - } - - @override - Widget build(BuildContext context) { - // TODO fix widget implementation to remove the need for this hack - // to force a setState rebuild - WidgetsBinding.instance.addPostFrameCallback((_) { - if (mounted) { - setState(() {}); - } - }); - // end hack ------------------------------ - List coords = widget.parentState.tileCoords( - row: widget.row, - col: widget.col, - ); - double zeroPoint = - widget.parentState.widget.pageConfig.puzzleSize * .5 - - widget.parentState.tileSize() * 0.5; - - return Stack( - children: [ - Stack( - children: [ - Positioned( - left: coords[0], - top: coords[1], - child: Transform( - transform: Matrix4.rotationZ(animation.value), - alignment: Alignment.center, - child: GestureDetector( - onTap: handlePointerDown, - child: ClipRect( - child: SizedBox( - width: widget.parentState.tileSize(), - height: widget.parentState.tileSize(), - child: OverflowBox( - maxHeight: - widget.parentState.widget.pageConfig.puzzleSize, - maxWidth: - widget.parentState.widget.pageConfig.puzzleSize, - child: Transform.translate( - offset: Offset( - zeroPoint - - widget.col * widget.parentState.tileSize(), - zeroPoint - - widget.row * widget.parentState.tileSize(), - ), - child: SizedBox( - width: - widget.parentState.widget.pageConfig.puzzleSize, - height: - widget.parentState.widget.pageConfig.puzzleSize, - child: Transform.scale( - scale: widget.tileScaleModifier, - child: RawImage( - image: widget.parentState.shadedImg, - ), - ), - ), - ), - ), - ), - ), - ), - ), - ), - // puzzle tile overlay fades in/out on tap, to indicate touched tile - Positioned( - left: coords[0], - top: coords[1], - child: IgnorePointer( - child: AnimatedOpacity( - opacity: touchedOpac, - duration: touchedOpacDur, - onEnd: () { - if (touchedOpac == 1.0) { - touchedOpac = 0.0; - touchedOpacDur = const Duration(milliseconds: 300); - setState(() {}); - } - }, - child: DecoratedBox( - decoration: const BoxDecoration( - color: Color.fromARGB(120, 0, 0, 0), - ), - child: SizedBox( - width: widget.parentState.tileSize(), - height: widget.parentState.tileSize(), - ), - ), - ), - ), - ), - ], - ), - ], - ); - } - - void handlePointerDown() { - if (!widget.parentState.solved) { - int oldStatus = currentStatus(); - widget.parentState.handlePointerDown(tileID: widget.tileID); - touchedOpac = 1.0; - touchedOpacDur = const Duration(milliseconds: 100); - rotateTile(oldStatus: oldStatus); - setState(() {}); - } - } - - int currentStatus() { - return widget.parentState.puzzleModel.getTileStatus(widget.tileID); - } - - void rotateTile({required int oldStatus}) { - animation = Tween( - begin: oldStatus * pi * 0.5, - end: currentStatus() * pi * 0.5, - ).animate(animationController)..addListener(() { - setState(() {}); - }); - animationController.reset(); - animationController.forward(); - } -} diff --git a/experimental/varfont_shader_puzzle/lib/components/wonky_anim_palette.dart b/experimental/varfont_shader_puzzle/lib/components/wonky_anim_palette.dart deleted file mode 100644 index a3e2acbcf..000000000 --- a/experimental/varfont_shader_puzzle/lib/components/wonky_anim_palette.dart +++ /dev/null @@ -1,332 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:math'; -import 'package:flutter/material.dart'; -import '../components/components.dart'; - -// WonkyAnimPalette class is meant to be used with WonkyChar -// to create animations based on variable font settings (aka 'axes'), -// and a few basic settings like scale, rotation, etc. -// The choice of variable font axes to implement in this class and -// default min/max values for variable font axes are hard-coded -// for Amstelvar font, packaged and used in this project. -// Other variable fonts will have different available axes and min/max values. -// -// See articles on variable fonts at https://fonts.google.com/knowledge/topics/variable_fonts -// See a list of variable fonts in the Google Fonts lineup, along with -// an enumeration of variable font axes at https://fonts.google.com/variablefonts - -class WonkyAnimPalette { - const WonkyAnimPalette({Key? key}); - static const Curve defaultCurve = Curves.easeInOut; - - // basic (settings unrelated to variable font) - static WonkyAnimSetting scale({ - double from = 1, - double to = 2, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'basic', - property: 'scale', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting offsetX({ - double from = -50, - double to = 50, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'basic', - property: 'offsetX', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting offsetY({ - double from = -50, - double to = 50, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'basic', - property: 'offsetY', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting rotation({ - double from = -pi, - double to = pi, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'basic', - property: 'rotation', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting color({ - Color from = Colors.blue, - Color to = Colors.red, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'basic', - property: 'color', - fromTo: RangeColor(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - // font variants (variable font settings) - static WonkyAnimSetting opticalSize({ - double from = 8, - double to = 144, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'fv', - property: 'opsz', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting weight({ - double from = 100, - double to = 1000, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'fv', - property: 'wght', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting grade({ - double from = -300, - double to = 500, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'fv', - property: 'GRAD', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting slant({ - double from = -10, - double to = 0, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'fv', - property: 'slnt', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting width({ - double from = 50, - double to = 125, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'fv', - property: 'wdth', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting thickStroke({ - double from = 18, - double to = 263, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'fv', - property: 'XOPQ', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting thinStroke({ - double from = 15, - double to = 132, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'fv', - property: 'YOPQ', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting counterWd({ - double from = 324, - double to = 640, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'fv', - property: 'XTRA', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting upperCaseHt({ - double from = 500, - double to = 1000, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'fv', - property: 'YTUC', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting lowerCaseHt({ - double from = 420, - double to = 570, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'fv', - property: 'YTLC', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting ascenderHt({ - double from = 500, - double to = 983, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'fv', - property: 'YTAS', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting descenderDepth({ - double from = -500, - double to = -138, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'fv', - property: 'YTDE', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } - - static WonkyAnimSetting figureHt({ - double from = 425, - double to = 1000, - double startAt = 0, - double endAt = 1, - Curve curve = defaultCurve, - }) { - return WonkyAnimSetting( - type: 'fv', - property: 'YTFI', - fromTo: RangeDbl(from: from, to: to), - startAt: startAt, - endAt: endAt, - curve: curve, - ); - } -} diff --git a/experimental/varfont_shader_puzzle/lib/components/wonky_char.dart b/experimental/varfont_shader_puzzle/lib/components/wonky_char.dart deleted file mode 100644 index 399dbef0c..000000000 --- a/experimental/varfont_shader_puzzle/lib/components/wonky_char.dart +++ /dev/null @@ -1,242 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:ui' as ui; - -import 'package:flutter/foundation.dart' show kDebugMode; -import 'package:flutter/material.dart'; - -class WonkyChar extends StatefulWidget { - final String text; - final double size; - final double baseRotation; - final int animDurationMillis; - final List animationSettings; - const WonkyChar({ - super.key, - required this.text, - required this.size, - this.baseRotation = 0, - this.animDurationMillis = 1000, - this.animationSettings = const [], - }); - - @override - State createState() => WonkyCharState(); -} - -class WonkyCharState extends State - with SingleTickerProviderStateMixin { - bool loopingAnimation = true; - late AnimationController _animController; - final List> _curves = []; - late final List _fvAnimations = []; - final List _fvAxes = []; - // default curve and animations in case user sets nothing for them - late final defaultCurve = CurvedAnimation( - parent: _animController, - curve: const Interval(0, 1, curve: Curves.linear), - ); - late Animation _scaleAnimation = Tween( - begin: 1, - end: 1, - ).animate(defaultCurve); - late Animation _offsetXAnimation = Tween( - begin: 0, - end: 0, - ).animate(defaultCurve); - late Animation _offsetYAnimation = Tween( - begin: 0, - end: 0, - ).animate(defaultCurve); - late Animation _rotationAnimation = Tween( - begin: 0, - end: 0, - ).animate(defaultCurve); - late Animation _colorAnimation = ColorTween( - begin: Colors.black, - end: Colors.black, - ).animate(defaultCurve); - - @override - void initState() { - super.initState(); - initAnimations(widget.animationSettings); - _animController - ..addListener(() { - setState(() {}); - }) - ..addStatusListener((status) { - if (status == AnimationStatus.completed && loopingAnimation) { - _animController.reverse(); - } else if (status == AnimationStatus.dismissed && loopingAnimation) { - _animController.forward(); - } - }); - _animController.forward(); - } - - @override - void dispose() { - _animController.dispose(); - super.dispose(); - } - - void stopAnimation() { - _animController.stop(); - } - - @override - Widget build(BuildContext context) { - List fontVariations = []; - for (int i = 0; i < _fvAxes.length; i++) { - fontVariations.add( - ui.FontVariation(_fvAxes[i], _fvAnimations[i].value as double), - ); - } - return Transform( - alignment: Alignment.center, - transform: - Matrix4.translationValues( - _offsetXAnimation.value as double, - _offsetYAnimation.value as double, - 0, - ) - ..scale(_scaleAnimation.value) - ..rotateZ( - widget.baseRotation + (_rotationAnimation.value as double), - ), - child: IgnorePointer( - child: Text( - widget.text, - textAlign: TextAlign.center, - style: TextStyle( - color: _colorAnimation.value as Color?, - fontFamily: 'Amstelvar', - fontSize: widget.size, - fontVariations: fontVariations, - ), - ), - ), - ); - } - - void initAnimations(List settings) { - _animController = AnimationController( - vsync: this, - duration: Duration(milliseconds: widget.animDurationMillis), - ); - for (WonkyAnimSetting s in settings) { - final curve = CurvedAnimation( - parent: _animController, - curve: Interval(s.startAt, s.endAt, curve: s.curve), - ); - late Animation animation; - if (s.property == 'color') { - animation = ColorTween( - begin: s.fromTo.fromValue() as Color?, - end: s.fromTo.toValue() as Color?, - ).animate(curve); - } else { - animation = Tween( - begin: s.fromTo.fromValue() as double, - end: s.fromTo.toValue() as double, - ).animate(curve); - } - if (s.type == 'fv') { - _fvAxes.add(s.property); - _fvAnimations.add(animation); - } else if (s.type == 'basic') { - switch (s.property) { - case 'scale': - { - _scaleAnimation = animation; - } - case 'rotation': - { - _rotationAnimation = animation; - } - case 'offsetX': - { - _offsetXAnimation = animation; - } - case 'offsetY': - { - _offsetYAnimation = animation; - } - case 'color': - { - _colorAnimation = animation; - } - default: - { - if (kDebugMode) { - print( - '**ERROR** unrecognized property to animate: ${s.property}', - ); - } - } - } - } - // save refs to all curves just to persist in mem, don't need to touch them again - _curves.add(curve); - } - } -} - -abstract class WCRange { - WCRange(); - T fromValue(); - T toValue(); -} - -class RangeColor implements WCRange { - Color from; - Color to; - RangeColor({required this.from, required this.to}); - @override - Color fromValue() { - return from; - } - - @override - Color toValue() { - return to; - } -} - -class RangeDbl implements WCRange { - double from; - double to; - - RangeDbl({required this.from, required this.to}); - - @override - double fromValue() { - return from; - } - - @override - double toValue() { - return to; - } -} - -class WonkyAnimSetting { - // just the animation - String type; // 'fv' for fontVariation, 'basic' for everything else - String property; //font variation axis, or 'size'/'rotation'/etc. - WCRange fromTo; - double startAt; // 0 to 1 rel to controller - double endAt; // same as start - Curve curve; - WonkyAnimSetting({ - required this.type, - required this.property, - required this.fromTo, - required this.startAt, - required this.endAt, - required this.curve, - }); -} diff --git a/experimental/varfont_shader_puzzle/lib/main.dart b/experimental/varfont_shader_puzzle/lib/main.dart deleted file mode 100644 index bf845e2d0..000000000 --- a/experimental/varfont_shader_puzzle/lib/main.dart +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:flutter/material.dart'; -import '../page_content/pages_flow.dart'; - -void main() { - runApp(const TypePuzzle()); -} - -class TypePuzzle extends StatelessWidget { - const TypePuzzle({super.key}); - - @override - Widget build(BuildContext context) { - return MaterialApp( - debugShowCheckedModeBanner: false, - title: 'Type Jam', - theme: ThemeData(primarySwatch: Colors.grey), - home: const Scaffold(appBar: null, body: PagesFlow()), - ); - } -} diff --git a/experimental/varfont_shader_puzzle/lib/model/puzzle_model.dart b/experimental/varfont_shader_puzzle/lib/model/puzzle_model.dart deleted file mode 100644 index f1dfd6c7b..000000000 --- a/experimental/varfont_shader_puzzle/lib/model/puzzle_model.dart +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -class PuzzleModel { - final int dim; // num tiles in any one dir; dim x dim board - - // 2d array like a board - // x is the tileID and its position in the array mirrors the board - List> positions = [[]]; - - // rotation states, where index == tileID - // x is num of CCW rotations off from correct (x % 4 == 0 indicates correct) - List status = []; - - PuzzleModel({required this.dim}) { - for (int i = 0; i < dim; i++) { - if (positions[positions.length - 1].length == dim) { - positions.add([]); - } - positions[positions.length - 1].add(i); - status.add(0); - } - } - - bool allRotationsCorrect() { - for (int i = 0; i < status.length; i++) { - if (status[i] % 4 != 0) { - return false; - } - } - return true; - } - - void setTileStatus(int tileID, int newStatus) { - status[tileID] = newStatus; - } - - int getTileStatus(int tileID) { - return status[tileID]; - } - - void rotateTile(int tileID) { - status[tileID]--; - } - - int getRotationOfTile(int tileID) { - return status[tileID]; - } -} diff --git a/experimental/varfont_shader_puzzle/lib/page_content/page_ascender_descender.dart b/experimental/varfont_shader_puzzle/lib/page_content/page_ascender_descender.dart deleted file mode 100644 index ce9c13d0a..000000000 --- a/experimental/varfont_shader_puzzle/lib/page_content/page_ascender_descender.dart +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:math'; - -import 'package:flutter/material.dart'; - -import '../components/components.dart'; -import '../page_content/pages_flow.dart'; -import '../styles.dart'; - -class PageAscenderDescender extends SinglePage { - const PageAscenderDescender({super.key, required super.pageConfig}); - @override - State createState() => _PageAscenderDescenderState(); -} - -class _PageAscenderDescenderState extends SinglePageState { - @override - Widget createTopicIntro() { - return LightboxedPanel( - pageConfig: widget.pageConfig, - content: [ - Text( - 'Ascenders & Descenders'.toUpperCase(), - style: TextStyles.headlineStyle(), - textAlign: TextAlign.left, - ), - Text( - 'Fonts can also vary based on their ' - 'individual pieces, like the ascenders (the parts that ' - 'extend upward) and the descenders (which extend downward)! ' - 'Piece this letter together and lock in its ' - 'wobbly ascenders and descenders!', - style: TextStyles.bodyStyle(), - textAlign: TextAlign.left, - ), - ], - ); - } - - @override - List buildWonkyChars() { - return [ - Positioned( - left: widget.pageConfig.wonkyCharLargeSize * 0.08, - top: widget.pageConfig.wonkyCharLargeSize * -0.1, - child: WonkyChar( - text: 'l', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: 0.15 * pi, - animDurationMillis: 3200, - animationSettings: [ - WonkyAnimPalette.ascenderHt( - from: 500, - to: 983, - curve: Curves.easeInOut, - ), - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - curve: Curves.easeInOut, - ), - ], - ), - ), - Positioned( - left: widget.pageConfig.screenWidth * 0.34, - top: widget.pageConfig.wonkyCharLargeSize * 0.12, - child: WonkyChar( - text: 'g', - size: widget.pageConfig.wonkyCharSmallSize, - baseRotation: -0.12 * pi, - animDurationMillis: 3200, - animationSettings: [ - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - curve: Curves.easeInOut, - ), - WonkyAnimPalette.descenderDepth(from: -500, to: -138), - ], - ), - ), - Positioned( - right: widget.pageConfig.wonkyCharLargeSize * -0.1, - top: widget.pageConfig.wonkyCharLargeSize * -0.5, - child: WonkyChar( - text: 'q', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: 0.15 * pi, - animDurationMillis: 5000, - animationSettings: [ - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - ), - WonkyAnimPalette.descenderDepth( - from: -240, - to: -440, - startAt: 0.3, - endAt: 0.7, - curve: Curves.bounceOut, - ), - ], - ), - ), - // lower half -------------------------------------- - Positioned( - left: widget.pageConfig.wonkyCharSmallSize * 0.1, - bottom: widget.pageConfig.wonkyCharSmallSize * -0.34, - child: WonkyChar( - text: 'f', - size: widget.pageConfig.wonkyCharSmallSize, - baseRotation: -0.15 * pi, - animDurationMillis: 12000, - animationSettings: [ - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - ), - WonkyAnimPalette.ascenderHt(from: 600, to: 980), - ], - ), - ), - Positioned( - left: widget.pageConfig.screenWidth * 0.17, - bottom: widget.pageConfig.wonkyCharLargeSize * 0.5, - child: WonkyChar( - text: 'p', - size: widget.pageConfig.wonkyCharSmallSize, - baseRotation: -0.15 * pi, - animDurationMillis: 3000, - animationSettings: [ - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - ), - WonkyAnimPalette.descenderDepth( - from: -390, - to: -220, - curve: Curves.linear, - ), - ], - ), - ), - Positioned( - left: widget.pageConfig.screenWidth * 0.4, - bottom: widget.pageConfig.wonkyCharSmallSize * 0.25, - child: WonkyChar( - text: 'k', - size: widget.pageConfig.wonkyCharSmallSize, - baseRotation: -0.15 * pi, - animDurationMillis: 3000, - animationSettings: [ - WonkyAnimPalette.ascenderHt( - from: 600, - to: 840, - curve: Curves.linear, - ), - ], - ), - ), - Positioned( - right: widget.pageConfig.wonkyCharLargeSize * 0.05, - bottom: widget.pageConfig.wonkyCharLargeSize * -0.04, - child: WonkyChar( - text: 'j', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: 0.2 * pi, - animDurationMillis: 5000, - animationSettings: [ - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - ), - WonkyAnimPalette.descenderDepth(from: -200, to: -500), - ], - ), - ), - ]; - } - - @override - Widget createPuzzle() { - return RotatorPuzzle( - pageConfig: widget.pageConfig, - numTiles: 9, - puzzleNum: 3, - shader: Shader.rowOffset, - shaderDuration: 2000, - tileShadedString: 'fyd', - tileShadedStringPadding: EdgeInsets.only( - top: 0.233 * widget.pageConfig.puzzleSize, - bottom: 0, - left: 0.465 * widget.pageConfig.puzzleSize, - right: 0.465 * widget.pageConfig.puzzleSize, - ), - tileShadedStringSize: 1.86 * widget.pageConfig.puzzleSize, - tileScaleModifier: 2.7, - tileShadedStringAnimDuration: 2000, - tileShadedStringAnimSettings: [ - WonkyAnimPalette.weight(from: 200, to: 200), - WonkyAnimPalette.width(from: 50, to: 50), - WonkyAnimPalette.ascenderHt(from: 700, to: 980), - WonkyAnimPalette.descenderDepth(from: -238, to: -138), - ], - ); - } -} diff --git a/experimental/varfont_shader_puzzle/lib/page_content/page_narrative_post.dart b/experimental/varfont_shader_puzzle/lib/page_content/page_narrative_post.dart deleted file mode 100644 index 71d37c457..000000000 --- a/experimental/varfont_shader_puzzle/lib/page_content/page_narrative_post.dart +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:flutter/material.dart'; -import '../components/components.dart'; -import '../page_content/pages_flow.dart'; -import '../styles.dart'; - -class PageNarrativePost extends NarrativePage { - const PageNarrativePost({super.key, required super.pageConfig}); - - @override - State createState() => _PageNarrativePostState(); -} - -class _PageNarrativePostState extends NarrativePageState { - @override - void initState() { - panels = [ - LightboxedPanel( - pageConfig: widget.pageConfig, - fadeOnDismiss: false, - buildButton: true, - onDismiss: super.handleIntroDismiss, - content: [ - Text( - 'Whew, we put everything back together just before the font launch.', - style: TextStyles.bodyStyle(), - textAlign: TextAlign.left, - ), - const SizedBox(height: 8), - const Image(image: AssetImage('assets/images/specimen-1.png')), - Text( - 'As a reward, please enjoy the FontCo wallpapers on the next screen. Congratulations!', - style: TextStyles.bodyStyle(), - textAlign: TextAlign.left, - ), - ], - ), - ]; - super.initState(); - } - - @override - Widget build(BuildContext context) { - return panels[panelIndex]; - } -} diff --git a/experimental/varfont_shader_puzzle/lib/page_content/page_narrative_pre.dart b/experimental/varfont_shader_puzzle/lib/page_content/page_narrative_pre.dart deleted file mode 100644 index 4f78f0734..000000000 --- a/experimental/varfont_shader_puzzle/lib/page_content/page_narrative_pre.dart +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:flutter/material.dart'; -import '../components/components.dart'; -import '../page_content/pages_flow.dart'; -import '../styles.dart'; - -class PageNarrativePre extends NarrativePage { - const PageNarrativePre({super.key, required super.pageConfig}); - - @override - State createState() => _PageNarrativePreState(); -} - -class _PageNarrativePreState extends NarrativePageState { - @override - void initState() { - panels = [ - LightboxedPanel( - key: UniqueKey(), - pageConfig: widget.pageConfig, - fadeOnDismiss: false, - onDismiss: super.handleIntroDismiss, - content: [ - Text( - 'Welcome to your first day on the FontCo team! Are you ready to help us publish our newest font, Designer Pro?', - style: TextStyles.bodyStyle(), - textAlign: TextAlign.left, - ), - const SizedBox(height: 8), - const Image(image: AssetImage('assets/images/specimen-1.png')), - ], - ), - LightboxedPanel( - key: UniqueKey(), - pageConfig: widget.pageConfig, - fadeOnDismiss: false, - onDismiss: super.handleIntroDismiss, - autoDismissAfter: 100, - buildButton: false, - lightBoxBgColor: Colors.black, - cardBgColor: Colors.black, - content: [ - Transform.scale( - scaleX: -1, - child: Text( - 'Welcome to your first day on the FontCo team! Are you ready to help us publish our newest font, Designer Pro?', - style: TextStyles.bodyStyle().copyWith(color: Colors.white), - textAlign: TextAlign.left, - ), - ), - const SizedBox(height: 8), - Transform.scale( - scaleX: -1, - child: const Image( - image: AssetImage('assets/images/specimen-1-glitch.png'), - ), - ), - const SizedBox(height: 56), - ], - ), - LightboxedPanel( - key: UniqueKey(), - pageConfig: widget.pageConfig, - fadeOnDismiss: false, - onDismiss: super.handleIntroDismiss, - autoDismissAfter: 100, - buildButton: false, - lightBoxBgColor: Colors.black, - cardBgColor: Colors.black, - content: [ - Transform.scale( - scaleX: -1, - child: Transform.translate( - offset: const Offset(20.0, 0.0), - child: Text( - 'Welcome to your first day on the FontCo team! Are you ready to help us publish our newest font, Designer Pro?', - style: TextStyles.bodyStyle().copyWith(color: Colors.white), - textAlign: TextAlign.left, - ), - ), - ), - const SizedBox(height: 8), - Transform.scale( - scaleX: -1, - child: Transform.translate( - offset: const Offset(-20.0, 0.0), - child: const Image( - image: AssetImage('assets/images/specimen-1-glitch.png'), - ), - ), - ), - const SizedBox(height: 56), - ], - ), - LightboxedPanel( - key: UniqueKey(), - pageConfig: widget.pageConfig, - fadeOnDismiss: false, - onDismiss: super.handleIntroDismiss, - autoDismissAfter: 100, - buildButton: false, - lightBoxBgColor: Colors.black, - cardBgColor: Colors.black, - content: [ - Transform.scale( - scaleX: -1, - child: Text( - 'Welcome to your first day on the FontCo team! Are you ready to help us publish our newest font, Designer Pro?', - style: TextStyles.bodyStyle().copyWith(color: Colors.white), - textAlign: TextAlign.left, - ), - ), - const SizedBox(height: 8), - Transform.scale( - scaleX: -1, - child: const Image( - image: AssetImage('assets/images/specimen-1-glitch.png'), - ), - ), - const SizedBox(height: 56), - ], - ), - LightboxedPanel( - key: UniqueKey(), - pageConfig: widget.pageConfig, - fadeOnDismiss: false, - onDismiss: super.handleIntroDismiss, - content: [ - Text( - 'Oh no, you clicked the button too hard! Now the font file is glitched. Help us put the letters back together so we can launch!', - style: TextStyles.bodyStyle(), - textAlign: TextAlign.left, - ), - const SizedBox(height: 8), - const Image(image: AssetImage('assets/images/specimen-2.png')), - ], - ), - ]; - super.initState(); - } - - @override - Widget build(BuildContext context) { - return panels[panelIndex]; - } -} diff --git a/experimental/varfont_shader_puzzle/lib/page_content/page_optical_size.dart b/experimental/varfont_shader_puzzle/lib/page_content/page_optical_size.dart deleted file mode 100644 index 25cf974ca..000000000 --- a/experimental/varfont_shader_puzzle/lib/page_content/page_optical_size.dart +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:math'; - -import 'package:flutter/material.dart'; - -import '../components/components.dart'; -import '../page_content/pages_flow.dart'; -import '../styles.dart'; - -class PageOpticalSize extends SinglePage { - const PageOpticalSize({super.key, required super.pageConfig}); - - @override - State createState() => _PageOpticalSizeState(); -} - -class _PageOpticalSizeState extends SinglePageState { - @override - Widget createTopicIntro() { - return LightboxedPanel( - pageConfig: widget.pageConfig, - content: [ - Text( - 'Optical Size'.toUpperCase(), - style: TextStyles.headlineStyle(), - textAlign: TextAlign.left, - ), - Text( - 'Optical size adjusts the type according to how large it will be shown. ' - 'Smaller type usually calls for less contrast between the thin and thick ' - 'parts the letter, while larger type calls for more contrast. ' - 'Put this glitching letter back together and lock in the optical size!', - style: TextStyles.bodyStyle(), - textAlign: TextAlign.left, - ), - ], - ); - } - - @override - List buildWonkyChars() { - return [ - Positioned( - left: widget.pageConfig.wonkyCharLargeSize * -0.13, - top: widget.pageConfig.wonkyCharLargeSize * -0.3, - child: WonkyChar( - text: 'O', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: 0.15 * pi, - animDurationMillis: 3200, - animationSettings: [ - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - curve: Curves.easeInOut, - ), - WonkyAnimPalette.opticalSize(from: 70, to: 144), - ], - ), - ), - Positioned( - left: widget.pageConfig.screenWidth * 0.37, - top: widget.pageConfig.wonkyCharLargeSize * 0.37, - child: WonkyChar( - text: '@', - size: widget.pageConfig.wonkyCharSmallSize, - baseRotation: -0.12 * pi, - animDurationMillis: 3200, - animationSettings: [ - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - curve: Curves.easeInOut, - ), - WonkyAnimPalette.opticalSize(from: 78, to: 8), - ], - ), - ), - Positioned( - left: widget.pageConfig.screenWidth * 0.57, - top: widget.pageConfig.wonkyCharSmallSize * -0.02, - child: WonkyChar( - text: 'r', - size: widget.pageConfig.wonkyCharSmallSize, - baseRotation: -0.15 * pi, - animationSettings: [WonkyAnimPalette.opticalSize(from: 32, to: 106)], - ), - ), - Positioned( - right: widget.pageConfig.wonkyCharLargeSize * 0.03, - top: widget.pageConfig.wonkyCharLargeSize * -0.26, - child: WonkyChar( - text: 'e', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: -0.15 * pi, - animDurationMillis: 5000, - animationSettings: [WonkyAnimPalette.opticalSize(from: 70, to: 144)], - ), - ), - // lower half -------------------------------------- - Positioned( - left: widget.pageConfig.wonkyCharLargeSize * 0.1, - bottom: widget.pageConfig.wonkyCharLargeSize * 0.05, - child: WonkyChar( - text: 'i', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: -0.04 * pi, - animationSettings: [WonkyAnimPalette.opticalSize(from: 40, to: 8)], - ), - ), - Positioned( - left: widget.pageConfig.screenWidth * 0.37, - bottom: widget.pageConfig.wonkyCharLargeSize * -0.04, - child: WonkyChar( - text: 'Z', - size: widget.pageConfig.wonkyCharSmallSize, - baseRotation: -0.15 * pi, - animationSettings: [WonkyAnimPalette.opticalSize(from: 8, to: 60)], - ), - ), - Positioned( - right: widget.pageConfig.wonkyCharLargeSize * -0.14, - bottom: widget.pageConfig.wonkyCharLargeSize * -0.1, - child: WonkyChar( - text: 'A', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: 0.15 * pi, - animDurationMillis: 12000, - animationSettings: [ - WonkyAnimPalette.opticalSize(from: 80, to: 20), - WonkyAnimPalette.rotation(from: -0.01 * pi, to: 0.01 * pi), - ], - ), - ), - ]; - } - - @override - Widget createPuzzle() { - return RotatorPuzzle( - pageConfig: widget.pageConfig, - numTiles: 16, - puzzleNum: 4, - shader: Shader.wavy, - shaderDuration: 5000, - tileShadedString: 'Z', - tileShadedStringPadding: EdgeInsets.only( - bottom: 0.349 * widget.pageConfig.puzzleSize, - ), - tileScaleModifier: 2.6, - tileShadedStringSize: 2.79 * widget.pageConfig.puzzleSize, - tileShadedStringAnimDuration: 3000, - tileShadedStringAnimSettings: [ - WonkyAnimPalette.weight(from: 1000, to: 1000), - WonkyAnimPalette.width(from: 125, to: 125), - WonkyAnimPalette.opticalSize(from: 8, to: 144), - ], - ); - } -} diff --git a/experimental/varfont_shader_puzzle/lib/page_content/page_weight.dart b/experimental/varfont_shader_puzzle/lib/page_content/page_weight.dart deleted file mode 100644 index da93a7fe9..000000000 --- a/experimental/varfont_shader_puzzle/lib/page_content/page_weight.dart +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:math'; - -import 'package:flutter/material.dart'; - -import '../components/components.dart'; -import '../page_content/pages_flow.dart'; -import '../styles.dart'; - -class PageWeight extends SinglePage { - const PageWeight({super.key, required super.pageConfig}); - - @override - State createState() => _PageWeightState(); -} - -class _PageWeightState extends SinglePageState { - @override - Widget createTopicIntro() { - return LightboxedPanel( - pageConfig: widget.pageConfig, - content: [ - Text( - 'Weight'.toUpperCase(), - style: TextStyles.headlineStyle(), - textAlign: TextAlign.left, - ), - Text( - 'You probably knew that fonts can vary by weight, or the boldness, ' - 'as we can see in the letters on this page. Tap the pieces of the ' - 'broken letter to bring it back together, but don’t get distracted ' - 'by its oscillating weight!', - style: TextStyles.bodyStyle(), - textAlign: TextAlign.left, - ), - ], - ); - } - - @override - List buildWonkyChars() { - return [ - Positioned( - left: widget.pageConfig.wonkyCharLargeSize * -0.01, - top: widget.pageConfig.wonkyCharLargeSize * -0.26, - child: WonkyChar( - text: 'S', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: 0.15 * pi, - animDurationMillis: 3200, - animationSettings: [ - WonkyAnimPalette.weight( - from: 100, - to: 300, - curve: Curves.easeInOut, - ), - ], - ), - ), - Positioned( - left: widget.pageConfig.screenWidth * 0.34, - top: widget.pageConfig.wonkyCharLargeSize * 0.3, - child: WonkyChar( - text: 't', - size: widget.pageConfig.wonkyCharSmallSize, - baseRotation: -0.12 * pi, - animDurationMillis: 3200, - animationSettings: [ - WonkyAnimPalette.weight( - from: 1000, - to: 800, - curve: Curves.easeInOut, - ), - ], - ), - ), - Positioned( - right: widget.pageConfig.wonkyCharLargeSize * 0.07, - top: widget.pageConfig.wonkyCharLargeSize * -0.26, - child: WonkyChar( - text: 'q', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: -0.15 * pi, - animDurationMillis: 5000, - animationSettings: [WonkyAnimPalette.weight(from: 200, to: 500)], - ), - ), - Positioned( - left: widget.pageConfig.screenWidth * 0.5, - top: widget.pageConfig.wonkyCharSmallSize * 0.3, - child: WonkyChar( - text: '*', - size: widget.pageConfig.wonkyCharSmallSize, - baseRotation: -0.15 * pi, - animationSettings: [WonkyAnimPalette.weight(from: 100, to: 400)], - ), - ), - // lower half -------------------------------------- - Positioned( - left: widget.pageConfig.wonkyCharLargeSize * -0.2, - bottom: widget.pageConfig.wonkyCharLargeSize * -0.34, - child: WonkyChar( - text: 'C', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: -0.15 * pi, - animDurationMillis: 7000, - animationSettings: [WonkyAnimPalette.weight(from: 1000, to: 700)], - ), - ), - Positioned( - left: widget.pageConfig.screenWidth * 0.42, - bottom: widget.pageConfig.wonkyCharLargeSize * 0.02, - child: WonkyChar( - text: 'f', - size: widget.pageConfig.wonkyCharSmallSize, - baseRotation: -0.15 * pi, - animDurationMillis: 4000, - animationSettings: [WonkyAnimPalette.weight(from: 100, to: 200)], - ), - ), - Positioned( - right: widget.pageConfig.wonkyCharLargeSize * -0.2, - bottom: widget.pageConfig.wonkyCharLargeSize * -0.23, - child: WonkyChar( - text: 'R', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: -1.15 * pi, - animDurationMillis: 2000, - animationSettings: [WonkyAnimPalette.weight(from: 700, to: 900)], - ), - ), - ]; - } - - @override - Widget createPuzzle() { - return RotatorPuzzle( - pageConfig: widget.pageConfig, - numTiles: 9, - puzzleNum: 1, - shader: Shader.wavy2, - shaderDuration: 3000, - tileShadedString: 'W', - tileShadedStringPadding: EdgeInsets.only( - left: 0.698 * widget.pageConfig.puzzleSize, - right: 0.698 * widget.pageConfig.puzzleSize, - ), - tileShadedStringSize: 2.79 * widget.pageConfig.puzzleSize, - tileScaleModifier: 2.4, - tileShadedStringAnimDuration: 1000, - tileShadedStringAnimSettings: [ - WonkyAnimPalette.weight(from: 600, to: 1000), - WonkyAnimPalette.width(from: 50, to: 50), - ], - ); - } -} diff --git a/experimental/varfont_shader_puzzle/lib/page_content/page_width.dart b/experimental/varfont_shader_puzzle/lib/page_content/page_width.dart deleted file mode 100644 index 1e77117d6..000000000 --- a/experimental/varfont_shader_puzzle/lib/page_content/page_width.dart +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:math'; - -import 'package:flutter/material.dart'; - -import '../components/components.dart'; -import '../page_content/pages_flow.dart'; -import '../styles.dart'; - -class PageWidth extends SinglePage { - const PageWidth({super.key, required super.pageConfig}); - @override - State createState() => _PageWidthState(); -} - -class _PageWidthState extends SinglePageState { - @override - Widget createTopicIntro() { - return LightboxedPanel( - pageConfig: widget.pageConfig, - content: [ - Text( - 'Width'.toUpperCase(), - style: TextStyles.headlineStyle(), - textAlign: TextAlign.left, - ), - Text( - 'Fonts can vary by width as well. Choosing a new width setting is better ' - 'than stretching letters in an image editor, which would just distort the letter. ' - 'Solve this letter puzzle to clear the glitch and set the width!', - style: TextStyles.bodyStyle(), - textAlign: TextAlign.left, - ), - ], - ); - } - - @override - List buildWonkyChars() { - return [ - Positioned( - left: widget.pageConfig.wonkyCharLargeSize * -0.17, - top: widget.pageConfig.wonkyCharLargeSize * -0.2, - child: WonkyChar( - text: 'r', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: -0.15 * pi, - animationSettings: [ - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - ), - WonkyAnimPalette.width(from: 120, to: 125), - ], - ), - ), - Positioned( - left: widget.pageConfig.screenWidth * 0.3, - top: widget.pageConfig.wonkyCharLargeSize * 0.42, - child: WonkyChar( - text: 'x', - size: widget.pageConfig.wonkyCharSmallSize, - baseRotation: -0.12 * pi, - animDurationMillis: 3200, - animationSettings: [ - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - curve: Curves.easeInOut, - ), - WonkyAnimPalette.width(from: 70, to: 50), - WonkyAnimPalette.offsetY(from: -6, to: 2, curve: Curves.easeInOut), - WonkyAnimPalette.rotation(from: -0.04 * pi, to: 0.005 * pi), - ], - ), - ), - Positioned( - right: widget.pageConfig.wonkyCharLargeSize * 0, - top: widget.pageConfig.wonkyCharLargeSize * -0.2, - child: WonkyChar( - text: 'F', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: 0.15 * pi, - animDurationMillis: 3200, - animationSettings: [ - WonkyAnimPalette.width(from: 120, to: 125), - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - ), - ], - ), - ), - - // lower half -------------------------------------- - Positioned( - left: widget.pageConfig.wonkyCharLargeSize * -0.2, - bottom: widget.pageConfig.wonkyCharLargeSize * -0.3, - child: WonkyChar( - text: 'W', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: -0.15 * pi, - animDurationMillis: 6000, - animationSettings: [ - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - ), - WonkyAnimPalette.width(from: 75, to: 50), - ], - ), - ), - Positioned( - left: widget.pageConfig.screenWidth * 0.4, - bottom: widget.pageConfig.wonkyCharLargeSize * 0.1, - child: WonkyChar( - text: 'h', - size: widget.pageConfig.wonkyCharSmallSize, - baseRotation: -0.15 * pi, - animationSettings: [ - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - ), - WonkyAnimPalette.width(from: 90, to: 115), - ], - ), - ), - Positioned( - left: widget.pageConfig.screenWidth * 0.75, - bottom: widget.pageConfig.wonkyCharSmallSize * -0.24, - child: WonkyChar( - text: 'K', - size: widget.pageConfig.wonkyCharSmallSize, - baseRotation: -0.15 * pi, - animDurationMillis: 5000, - animationSettings: [ - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - ), - WonkyAnimPalette.width(from: 125, to: 90, startAt: 0.3, endAt: 0.7), - ], - ), - ), - Positioned( - right: widget.pageConfig.wonkyCharLargeSize * 0.0, - bottom: widget.pageConfig.wonkyCharLargeSize * 0.1, - child: WonkyChar( - text: '?', - size: widget.pageConfig.wonkyCharLargeSize, - baseRotation: -1.67 * pi, - animationSettings: [ - WonkyAnimPalette.weight( - from: PageConfig.baseWeight, - to: PageConfig.baseWeight, - ), - WonkyAnimPalette.width(from: 110, to: 60), - ], - ), - ), - ]; - } - - @override - Widget createPuzzle() { - return RotatorPuzzle( - pageConfig: widget.pageConfig, - numTiles: 16, - puzzleNum: 2, - shader: Shader.bwSplit, - shaderDuration: 2000, - tileShadedString: 'S', - tileShadedStringPadding: EdgeInsets.only( - left: 0.349 * widget.pageConfig.puzzleSize, - right: 0.349 * widget.pageConfig.puzzleSize, - ), - tileShadedStringSize: 3.256 * widget.pageConfig.puzzleSize, - tileScaleModifier: 2.34, - tileShadedStringAnimDuration: 2000, - tileShadedStringAnimSettings: [ - WonkyAnimPalette.weight(from: 200, to: 200), - WonkyAnimPalette.width(from: 50, to: 125), - ], - ); - } -} diff --git a/experimental/varfont_shader_puzzle/lib/page_content/pages.dart b/experimental/varfont_shader_puzzle/lib/page_content/pages.dart deleted file mode 100644 index 602f1aba5..000000000 --- a/experimental/varfont_shader_puzzle/lib/page_content/pages.dart +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -export 'page_ascender_descender.dart'; -export 'page_narrative_post.dart'; -export 'page_narrative_pre.dart'; -export 'page_optical_size.dart'; -export 'page_weight.dart'; -export 'page_width.dart'; diff --git a/experimental/varfont_shader_puzzle/lib/page_content/pages_flow.dart b/experimental/varfont_shader_puzzle/lib/page_content/pages_flow.dart deleted file mode 100644 index 607d9c786..000000000 --- a/experimental/varfont_shader_puzzle/lib/page_content/pages_flow.dart +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'dart:math'; - -import 'package:flutter/material.dart'; - -import '../components/components.dart'; -import '../page_content/wallpapers_flow.dart'; -import 'pages.dart'; - -class PagesFlow extends StatefulWidget { - const PagesFlow({super.key}); - - static const pageScrollDuration = 400; - - @override - State createState() => _PagesFlowState(); -} - -class _PagesFlowState extends State { - late PageController pageController = PageController(); - - @override - Widget build(BuildContext context) { - final double screenWidth = MediaQuery.of(context).size.width; - final double screenHeight = MediaQuery.of(context).size.height; - bool narrowView = screenWidth * 1.8 < screenHeight ? true : false; - double puzzleSize = - narrowView ? screenWidth * 1 : min(screenHeight * 0.6, screenWidth); - double topBottomMargin = (screenHeight - puzzleSize) * 0.5; - double wonkyCharLargeSize = topBottomMargin * 1.0; - double wonkyCharSmallSize = wonkyCharLargeSize * 0.5; - PageConfig pageConfig = PageConfig( - screenWidth: screenWidth, - screenHeight: screenHeight, - narrowView: narrowView, - puzzleSize: puzzleSize, - pageController: pageController, - wonkyCharLargeSize: wonkyCharLargeSize, - wonkyCharSmallSize: wonkyCharSmallSize, - ); - - return PageView( - controller: pageController, - physics: const NeverScrollableScrollPhysics(), - scrollDirection: Axis.vertical, - children: [ - PageNarrativePre(pageConfig: pageConfig), - PageWeight(pageConfig: pageConfig), - PageAscenderDescender(pageConfig: pageConfig), - PageOpticalSize(pageConfig: pageConfig), - PageWidth(pageConfig: pageConfig), - PageNarrativePost(pageConfig: pageConfig), - const WallpapersFlow(), - ], - ); - } -} - -class PageConfig { - final double screenWidth; - final double screenHeight; - final bool narrowView; - final double puzzleSize; - final PageController pageController; - final double wonkyCharLargeSize; - final double wonkyCharSmallSize; - static double baseWeight = 800; - const PageConfig({ - Key? key, - required this.screenWidth, - required this.screenHeight, - required this.narrowView, - required this.puzzleSize, - required this.pageController, - required this.wonkyCharLargeSize, - required this.wonkyCharSmallSize, - }); -} - -class SinglePage extends StatefulWidget { - final PageConfig pageConfig; - const SinglePage({super.key, required this.pageConfig}); - - @override - State createState() => SinglePageState(); -} - -class SinglePageState extends State with TickerProviderStateMixin { - List buildWonkyChars() { - return []; - } - - Widget createPuzzle() { - return Container(); - } - - Widget createTopicIntro() { - return LightboxedPanel(pageConfig: widget.pageConfig, content: const []); - } - - @override - Widget build(BuildContext context) { - List c = []; - c.add(createPuzzle()); - c += buildWonkyChars(); - c.add(createTopicIntro()); - return Stack(children: c); - } - - void puzzleDone() {} -} - -class NarrativePage extends StatefulWidget { - final PageConfig pageConfig; - const NarrativePage({super.key, required this.pageConfig}); - - @override - State createState() => NarrativePageState(); -} - -class NarrativePageState extends State - with TickerProviderStateMixin { - int panelIndex = 0; - List panels = []; - - void handleIntroDismiss() { - Future.delayed(const Duration(milliseconds: 50), () { - setState(() { - if (panelIndex == panels.length - 1) { - widget.pageConfig.pageController.nextPage( - duration: const Duration( - milliseconds: PagesFlow.pageScrollDuration, - ), - curve: Curves.easeOut, - ); - } else { - panelIndex++; - } - }); - }); - } - - @override - Widget build(BuildContext context) { - switch (panelIndex) { - default: - return Container(); - } - } - - void puzzleDone() {} -} diff --git a/experimental/varfont_shader_puzzle/lib/page_content/wallpapers_flow.dart b/experimental/varfont_shader_puzzle/lib/page_content/wallpapers_flow.dart deleted file mode 100644 index 24120c935..000000000 --- a/experimental/varfont_shader_puzzle/lib/page_content/wallpapers_flow.dart +++ /dev/null @@ -1,426 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; - -class WallpapersFlow extends StatefulWidget { - const WallpapersFlow({super.key}); - - @override - State createState() => _WallpapersFlowState(); -} - -class _WallpapersFlowState extends State { - int pageNum = 0; - int numPages = 4; - - @override - void initState() { - LicenseRegistry.addLicense( - () => Stream.value( - LicenseEntryWithLineBreaks(['roboto_font'], robotoLicense), - ), - ); - LicenseRegistry.addLicense( - () => Stream.value( - LicenseEntryWithLineBreaks([ - 'amstelvar_font', - ], amstelvarLicense), - ), - ); - super.initState(); - } - - @override - Widget build(BuildContext context) { - return Stack( - children: [ - PageView( - onPageChanged: (value) { - setState(() { - pageNum = value; - }); - }, - children: const [ - DecoratedBox( - decoration: BoxDecoration(color: Colors.black), - child: Center( - child: Image( - image: AssetImage('assets/images/wallpaper3.png'), - fit: BoxFit.contain, - ), - ), - ), - DecoratedBox( - decoration: BoxDecoration(color: Colors.black), - child: Center( - child: Image( - image: AssetImage('assets/images/wallpaper1.png'), - fit: BoxFit.contain, - ), - ), - ), - DecoratedBox( - decoration: BoxDecoration(color: Colors.black), - child: Center( - child: Image( - image: AssetImage('assets/images/wallpaper2.png'), - fit: BoxFit.contain, - ), - ), - ), - LicensePage(), - ], - ), - Align( - alignment: Alignment.bottomCenter, - child: Padding( - padding: const EdgeInsets.only(bottom: 20.0), - child: Container( - width: 100, - height: 30, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(15), - color: const Color.fromARGB(220, 0, 0, 0), - ), - child: Center( - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: _buildScrollDots(), - ), - ), - ), - ), - ), - ], - ); - } - - List _buildScrollDots() { - List dots = []; - for (int i = 0; i < numPages; i++) { - Color dotColor = - i == pageNum - ? const Color.fromARGB(255, 255, 255, 255) - : const Color.fromARGB(255, 105, 105, 105); - Widget d = Container( - width: 16, - height: 16, - decoration: BoxDecoration( - color: dotColor, - borderRadius: BorderRadius.circular(8.0), - border: Border.all(color: Colors.white, width: 0.5), - ), - ); - dots.add(d); - } - return dots; - } - - final String robotoLicense = ''' -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, -and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by -the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all -other entities that control, are controlled by, or are under common -control with that entity. For the purposes of this definition, -"control" means (i) the power, direct or indirect, to cause the -direction or management of such entity, whether by contract or -otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity -exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, -including but not limited to software source code, documentation -source, and configuration files. - -"Object" form shall mean any form resulting from mechanical -transformation or translation of a Source form, including but -not limited to compiled object code, generated documentation, -and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or -Object form, made available under the License, as indicated by a -copyright notice that is included in or attached to the work -(an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object -form, that is based on (or derived from) the Work and for which the -editorial revisions, annotations, elaborations, or other modifications -represent, as a whole, an original work of authorship. For the purposes -of this License, Derivative Works shall not include works that remain -separable from, or merely link (or bind by name) to the interfaces of, -the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including -the original version of the Work and any modifications or additions -to that Work or Derivative Works thereof, that is intentionally -submitted to Licensor for inclusion in the Work by the copyright owner -or by an individual or Legal Entity authorized to submit on behalf of -the copyright owner. For the purposes of this definition, "submitted" -means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, -and issue tracking systems that are managed by, or on behalf of, the -Licensor for the purpose of discussing and improving the Work, but -excluding communication that is conspicuously marked or otherwise -designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity -on behalf of whom a Contribution has been received by Licensor and -subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the -Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -(except as stated in this section) patent license to make, have made, -use, offer to sell, sell, import, and otherwise transfer the Work, -where such license applies only to those patent claims licensable -by such Contributor that are necessarily infringed by their -Contribution(s) alone or by combination of their Contribution(s) -with the Work to which such Contribution(s) was submitted. If You -institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work -or a Contribution incorporated within the Work constitutes direct -or contributory patent infringement, then any patent licenses -granted to You under this License for that Work shall terminate -as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the -Work or Derivative Works thereof in any medium, with or without -modifications, and in Source or Object form, provided that You -meet the following conditions: - -(a) You must give any other recipients of the Work or -Derivative Works a copy of this License; and - -(b) You must cause any modified files to carry prominent notices -stating that You changed the files; and - -(c) You must retain, in the Source form of any Derivative Works -that You distribute, all copyright, patent, trademark, and -attribution notices from the Source form of the Work, -excluding those notices that do not pertain to any part of -the Derivative Works; and - -(d) If the Work includes a "NOTICE" text file as part of its -distribution, then any Derivative Works that You distribute must -include a readable copy of the attribution notices contained -within such NOTICE file, excluding those notices that do not -pertain to any part of the Derivative Works, in at least one -of the following places: within a NOTICE text file distributed -as part of the Derivative Works; within the Source form or -documentation, if provided along with the Derivative Works; or, -within a display generated by the Derivative Works, if and -wherever such third-party notices normally appear. The contents -of the NOTICE file are for informational purposes only and -do not modify the License. You may add Your own attribution -notices within Derivative Works that You distribute, alongside -or as an addendum to the NOTICE text from the Work, provided -that such additional attribution notices cannot be construed -as modifying the License. - -You may add Your own copyright statement to Your modifications and -may provide additional or different license terms and conditions -for use, reproduction, or distribution of Your modifications, or -for any such Derivative Works as a whole, provided Your use, -reproduction, and distribution of the Work otherwise complies with -the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, -any Contribution intentionally submitted for inclusion in the Work -by You to the Licensor shall be under the terms and conditions of -this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify -the terms of any separate license agreement you may have executed -with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade -names, trademarks, service marks, or product names of the Licensor, -except as required for reasonable and customary use in describing the -origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or -agreed to in writing, Licensor provides the Work (and each -Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -implied, including, without limitation, any warranties or conditions -of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -PARTICULAR PURPOSE. You are solely responsible for determining the -appropriateness of using or redistributing the Work and assume any -risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, -whether in tort (including negligence), contract, or otherwise, -unless required by applicable law (such as deliberate and grossly -negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, -incidental, or consequential damages of any character arising as a -result of this License or out of the use or inability to use the -Work (including but not limited to damages for loss of goodwill, -work stoppage, computer failure or malfunction, or any and all -other commercial damages or losses), even if such Contributor -has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing -the Work or Derivative Works thereof, You may choose to offer, -and charge a fee for, acceptance of support, warranty, indemnity, -or other liability obligations and/or rights consistent with this -License. However, in accepting such obligations, You may act only -on Your own behalf and on Your sole responsibility, not on behalf -of any other Contributor, and only if You agree to indemnify, -defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason -of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - -To apply the Apache License to your work, attach the following -boilerplate notice, with the fields enclosed by brackets "[]" -replaced with your own identifying information. (Don't include -the brackets!) The text should be enclosed in the appropriate -comment syntax for the file format. We also recommend that a -file or class name and description of purpose be included on the -same "printed page" as the copyright notice for easier -identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - '''; - - final String amstelvarLicense = ''' -Copyright 2016 The Amstelvar Project Authors (info@fontbureau.com) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE - -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS - -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS - -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION - -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER - -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. - '''; -} diff --git a/experimental/varfont_shader_puzzle/lib/styles.dart b/experimental/varfont_shader_puzzle/lib/styles.dart deleted file mode 100644 index 996b3b8d5..000000000 --- a/experimental/varfont_shader_puzzle/lib/styles.dart +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:flutter/material.dart'; - -class TextStyles { - const TextStyles({Key? key}); - - static TextStyle bodyStyle() { - return const TextStyle( - fontFamily: 'Roboto', - fontSize: 16, - color: Colors.black, - fontWeight: FontWeight.w400, - height: 1.5, - ); - } - - static TextStyle headlineStyle() { - return const TextStyle( - fontFamily: 'Roboto', - fontSize: 16, - color: Colors.black, - fontWeight: FontWeight.w700, - height: 1.5, - ); - } -} - -class ButtonStyles { - static ButtonStyle style() { - return ButtonStyle( - fixedSize: WidgetStateProperty.resolveWith((states) { - return const Size(100, 36); - }), - shape: WidgetStateProperty.resolveWith((states) { - return const RoundedRectangleBorder( - borderRadius: BorderRadius.all(Radius.circular(18)), - ); - }), - overlayColor: null, - backgroundColor: WidgetStateProperty.resolveWith((states) { - if (states.contains(WidgetState.hovered)) { - return Colors.black; // Hovered bg (for desktop with mouse) - } - return Colors.grey[600]; // Default bg - }), - ); - } -} diff --git a/experimental/varfont_shader_puzzle/linux/.gitignore b/experimental/varfont_shader_puzzle/linux/.gitignore deleted file mode 100644 index d3896c984..000000000 --- a/experimental/varfont_shader_puzzle/linux/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/experimental/varfont_shader_puzzle/linux/CMakeLists.txt b/experimental/varfont_shader_puzzle/linux/CMakeLists.txt deleted file mode 100644 index ad8043045..000000000 --- a/experimental/varfont_shader_puzzle/linux/CMakeLists.txt +++ /dev/null @@ -1,145 +0,0 @@ -# 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 "varfont_shader_puzzle") -# The unique GTK application identifier for this application. See: -# https://wiki.gnome.org/HowDoI/ChooseApplicationID -set(APPLICATION_ID "com.example.varfont_shader_puzzle") - -# 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. -if(FLUTTER_TARGET_PLATFORM_SYSROOT) - set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endif() - -# 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) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") -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) - target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") - target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) - -add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") - -# 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 -# the default top-level location. -set_target_properties(${BINARY_NAME} - PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" -) - - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# By default, "installing" just makes a relocatable bundle in the build -# directory. -set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -# Start with a clean build bundle directory every time. -install(CODE " - file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") - " COMPONENT Runtime) - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) - install(FILES "${bundled_library}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endforeach(bundled_library) - -# Copy the native assets provided by the build.dart from all packages. -set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") -install(DIRECTORY "${NATIVE_ASSETS_DIR}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") - install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() diff --git a/experimental/varfont_shader_puzzle/linux/flutter/CMakeLists.txt b/experimental/varfont_shader_puzzle/linux/flutter/CMakeLists.txt deleted file mode 100644 index d5bd01648..000000000 --- a/experimental/varfont_shader_puzzle/linux/flutter/CMakeLists.txt +++ /dev/null @@ -1,88 +0,0 @@ -# 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") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. - -# Serves the same purpose as list(TRANSFORM ... PREPEND ...), -# which isn't available in 3.10. -function(list_prepend LIST_NAME PREFIX) - set(NEW_LIST "") - foreach(element ${${LIST_NAME}}) - list(APPEND NEW_LIST "${PREFIX}${element}") - endforeach(element) - set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) -endfunction() - -# === Flutter Library === -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) -pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) -pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) - -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "fl_basic_message_channel.h" - "fl_binary_codec.h" - "fl_binary_messenger.h" - "fl_dart_project.h" - "fl_engine.h" - "fl_json_message_codec.h" - "fl_json_method_codec.h" - "fl_message_codec.h" - "fl_method_call.h" - "fl_method_channel.h" - "fl_method_codec.h" - "fl_method_response.h" - "fl_plugin_registrar.h" - "fl_plugin_registry.h" - "fl_standard_message_codec.h" - "fl_standard_method_codec.h" - "fl_string_codec.h" - "fl_value.h" - "fl_view.h" - "flutter_linux.h" -) -list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") -target_link_libraries(flutter INTERFACE - PkgConfig::GTK - PkgConfig::GLIB - PkgConfig::GIO -) -add_dependencies(flutter flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CMAKE_CURRENT_BINARY_DIR}/_phony_ - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" - ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} -) diff --git a/experimental/varfont_shader_puzzle/linux/flutter/generated_plugin_registrant.cc b/experimental/varfont_shader_puzzle/linux/flutter/generated_plugin_registrant.cc deleted file mode 100644 index e71a16d23..000000000 --- a/experimental/varfont_shader_puzzle/linux/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,11 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - - -void fl_register_plugins(FlPluginRegistry* registry) { -} diff --git a/experimental/varfont_shader_puzzle/linux/flutter/generated_plugin_registrant.h b/experimental/varfont_shader_puzzle/linux/flutter/generated_plugin_registrant.h deleted file mode 100644 index e0f0a47bc..000000000 --- a/experimental/varfont_shader_puzzle/linux/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void fl_register_plugins(FlPluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/experimental/varfont_shader_puzzle/linux/flutter/generated_plugins.cmake b/experimental/varfont_shader_puzzle/linux/flutter/generated_plugins.cmake deleted file mode 100644 index 2e1de87a7..000000000 --- a/experimental/varfont_shader_puzzle/linux/flutter/generated_plugins.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/experimental/varfont_shader_puzzle/linux/main.cc b/experimental/varfont_shader_puzzle/linux/main.cc deleted file mode 100644 index e7c5c5437..000000000 --- a/experimental/varfont_shader_puzzle/linux/main.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include "my_application.h" - -int main(int argc, char** argv) { - g_autoptr(MyApplication) app = my_application_new(); - return g_application_run(G_APPLICATION(app), argc, argv); -} diff --git a/experimental/varfont_shader_puzzle/linux/my_application.cc b/experimental/varfont_shader_puzzle/linux/my_application.cc deleted file mode 100644 index af4aa59f8..000000000 --- a/experimental/varfont_shader_puzzle/linux/my_application.cc +++ /dev/null @@ -1,104 +0,0 @@ -#include "my_application.h" - -#include -#ifdef GDK_WINDOWING_X11 -#include -#endif - -#include "flutter/generated_plugin_registrant.h" - -struct _MyApplication { - GtkApplication parent_instance; - char** dart_entrypoint_arguments; -}; - -G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) - -// Implements GApplication::activate. -static void my_application_activate(GApplication* application) { - MyApplication* self = MY_APPLICATION(application); - GtkWindow* window = - GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); - - // Use a header bar when running in GNOME as this is the common style used - // by applications and is the setup most users will be using (e.g. Ubuntu - // desktop). - // If running on X and not using GNOME then just use a traditional title bar - // in case the window manager does more exotic layout, e.g. tiling. - // If running on Wayland assume the header bar will work (may need changing - // if future cases occur). - gboolean use_header_bar = TRUE; -#ifdef GDK_WINDOWING_X11 - GdkScreen* screen = gtk_window_get_screen(window); - if (GDK_IS_X11_SCREEN(screen)) { - const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); - if (g_strcmp0(wm_name, "GNOME Shell") != 0) { - use_header_bar = FALSE; - } - } -#endif - if (use_header_bar) { - GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); - gtk_widget_show(GTK_WIDGET(header_bar)); - gtk_header_bar_set_title(header_bar, "varfont_shader_puzzle"); - gtk_header_bar_set_show_close_button(header_bar, TRUE); - gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); - } else { - gtk_window_set_title(window, "varfont_shader_puzzle"); - } - - gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); - - g_autoptr(FlDartProject) project = fl_dart_project_new(); - fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); - - FlView* view = fl_view_new(project); - gtk_widget_show(GTK_WIDGET(view)); - gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); - - fl_register_plugins(FL_PLUGIN_REGISTRY(view)); - - gtk_widget_grab_focus(GTK_WIDGET(view)); -} - -// Implements GApplication::local_command_line. -static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { - MyApplication* self = MY_APPLICATION(application); - // Strip out the first argument as it is the binary name. - self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); - - g_autoptr(GError) error = nullptr; - if (!g_application_register(application, nullptr, &error)) { - g_warning("Failed to register: %s", error->message); - *exit_status = 1; - return TRUE; - } - - g_application_activate(application); - *exit_status = 0; - - return TRUE; -} - -// Implements GObject::dispose. -static void my_application_dispose(GObject* object) { - MyApplication* self = MY_APPLICATION(object); - g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); - G_OBJECT_CLASS(my_application_parent_class)->dispose(object); -} - -static void my_application_class_init(MyApplicationClass* klass) { - G_APPLICATION_CLASS(klass)->activate = my_application_activate; - G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; - G_OBJECT_CLASS(klass)->dispose = my_application_dispose; -} - -static void my_application_init(MyApplication* self) {} - -MyApplication* my_application_new() { - return MY_APPLICATION(g_object_new(my_application_get_type(), - "application-id", APPLICATION_ID, - "flags", G_APPLICATION_NON_UNIQUE, - nullptr)); -} diff --git a/experimental/varfont_shader_puzzle/linux/my_application.h b/experimental/varfont_shader_puzzle/linux/my_application.h deleted file mode 100644 index 72271d5e4..000000000 --- a/experimental/varfont_shader_puzzle/linux/my_application.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef FLUTTER_MY_APPLICATION_H_ -#define FLUTTER_MY_APPLICATION_H_ - -#include - -G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, - GtkApplication) - -/** - * my_application_new: - * - * Creates a new Flutter-based application. - * - * Returns: a new #MyApplication. - */ -MyApplication* my_application_new(); - -#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/experimental/varfont_shader_puzzle/macos/.gitignore b/experimental/varfont_shader_puzzle/macos/.gitignore deleted file mode 100644 index 746adbb6b..000000000 --- a/experimental/varfont_shader_puzzle/macos/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# Flutter-related -**/Flutter/ephemeral/ -**/Pods/ - -# Xcode-related -**/dgph -**/xcuserdata/ diff --git a/experimental/varfont_shader_puzzle/macos/Flutter/Flutter-Debug.xcconfig b/experimental/varfont_shader_puzzle/macos/Flutter/Flutter-Debug.xcconfig deleted file mode 100644 index 4b81f9b2d..000000000 --- a/experimental/varfont_shader_puzzle/macos/Flutter/Flutter-Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/experimental/varfont_shader_puzzle/macos/Flutter/Flutter-Release.xcconfig b/experimental/varfont_shader_puzzle/macos/Flutter/Flutter-Release.xcconfig deleted file mode 100644 index 5caa9d157..000000000 --- a/experimental/varfont_shader_puzzle/macos/Flutter/Flutter-Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/experimental/varfont_shader_puzzle/macos/Flutter/GeneratedPluginRegistrant.swift b/experimental/varfont_shader_puzzle/macos/Flutter/GeneratedPluginRegistrant.swift deleted file mode 100644 index e777c67df..000000000 --- a/experimental/varfont_shader_puzzle/macos/Flutter/GeneratedPluginRegistrant.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// Generated file. Do not edit. -// - -import FlutterMacOS -import Foundation - -import path_provider_foundation - -func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) -} diff --git a/experimental/varfont_shader_puzzle/macos/Podfile b/experimental/varfont_shader_puzzle/macos/Podfile deleted file mode 100644 index c795730db..000000000 --- a/experimental/varfont_shader_puzzle/macos/Podfile +++ /dev/null @@ -1,43 +0,0 @@ -platform :osx, '10.14' - -# 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__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_macos_build_settings(target) - end -end diff --git a/experimental/varfont_shader_puzzle/macos/Runner.xcodeproj/project.pbxproj b/experimental/varfont_shader_puzzle/macos/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 0a1dbc3b7..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,791 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - 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 */ - 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 9AD9C7CBBD29DB185019EF48 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1AD57E306C7913C852FBBA4 /* Pods_RunnerTests.framework */; }; - FA96D6B9CBC6E13557F9110C /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A624D26F7047752B3346B282 /* Pods_Runner.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 33CC10E52044A3C60003C045 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 33CC10EC2044A3C60003C045; - remoteInfo = Runner; - }; - 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 */ - 02634EB403290F109558BF3C /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - 0E2712B9A70A6FD93CF5D7E7 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 10D6E80226A2DE5C9DEF84C5 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - 23BC1B8C8CB2FB797DD34104 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* varfont_shader_puzzle.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = varfont_shader_puzzle.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; - 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; - 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; - 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; - 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; - 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 38EF51A217BB444E8F1A714B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - 9DA93DF1A5822B2C98DA5037 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - A1AD57E306C7913C852FBBA4 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A624D26F7047752B3346B282 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 331C80D2294CF70F00263BE5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 9AD9C7CBBD29DB185019EF48 /* Pods_RunnerTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 33CC10EA2044A3C60003C045 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - FA96D6B9CBC6E13557F9110C /* Pods_Runner.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 331C80D6294CF71000263BE5 /* RunnerTests */ = { - isa = PBXGroup; - children = ( - 331C80D7294CF71000263BE5 /* RunnerTests.swift */, - ); - path = RunnerTests; - sourceTree = ""; - }; - 33BA886A226E78AF003329D5 /* Configs */ = { - isa = PBXGroup; - children = ( - 33E5194F232828860026EE4D /* AppInfo.xcconfig */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, - ); - path = Configs; - sourceTree = ""; - }; - 33CC10E42044A3C60003C045 = { - isa = PBXGroup; - children = ( - 33FAB671232836740065AC1E /* Runner */, - 33CEB47122A05771004F2AC0 /* Flutter */, - 331C80D6294CF71000263BE5 /* RunnerTests */, - 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, - 7C86745D0D82044E969BACB8 /* Pods */, - ); - sourceTree = ""; - }; - 33CC10EE2044A3C60003C045 /* Products */ = { - isa = PBXGroup; - children = ( - 33CC10ED2044A3C60003C045 /* varfont_shader_puzzle.app */, - 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 33CC11242044D66E0003C045 /* Resources */ = { - isa = PBXGroup; - children = ( - 33CC10F22044A3C60003C045 /* Assets.xcassets */, - 33CC10F42044A3C60003C045 /* MainMenu.xib */, - 33CC10F72044A3C60003C045 /* Info.plist */, - ); - name = Resources; - path = ..; - sourceTree = ""; - }; - 33CEB47122A05771004F2AC0 /* Flutter */ = { - isa = PBXGroup; - children = ( - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, - ); - path = Flutter; - sourceTree = ""; - }; - 33FAB671232836740065AC1E /* Runner */ = { - isa = PBXGroup; - children = ( - 33CC10F02044A3C60003C045 /* AppDelegate.swift */, - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, - 33E51913231747F40026EE4D /* DebugProfile.entitlements */, - 33E51914231749380026EE4D /* Release.entitlements */, - 33CC11242044D66E0003C045 /* Resources */, - 33BA886A226E78AF003329D5 /* Configs */, - ); - path = Runner; - sourceTree = ""; - }; - 7C86745D0D82044E969BACB8 /* Pods */ = { - isa = PBXGroup; - children = ( - 0E2712B9A70A6FD93CF5D7E7 /* Pods-Runner.debug.xcconfig */, - 9DA93DF1A5822B2C98DA5037 /* Pods-Runner.release.xcconfig */, - 38EF51A217BB444E8F1A714B /* Pods-Runner.profile.xcconfig */, - 02634EB403290F109558BF3C /* Pods-RunnerTests.debug.xcconfig */, - 10D6E80226A2DE5C9DEF84C5 /* Pods-RunnerTests.release.xcconfig */, - 23BC1B8C8CB2FB797DD34104 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - A624D26F7047752B3346B282 /* Pods_Runner.framework */, - A1AD57E306C7913C852FBBA4 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 331C80D4294CF70F00263BE5 /* RunnerTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; - buildPhases = ( - 1986167CB62CEBBA52986B8C /* [CP] Check Pods Manifest.lock */, - 331C80D1294CF70F00263BE5 /* Sources */, - 331C80D2294CF70F00263BE5 /* Frameworks */, - 331C80D3294CF70F00263BE5 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 331C80DA294CF71000263BE5 /* PBXTargetDependency */, - ); - name = RunnerTests; - productName = RunnerTests; - productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 33CC10EC2044A3C60003C045 /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - E9CFF6D875A4761770870406 /* [CP] Check Pods Manifest.lock */, - 33CC10E92044A3C60003C045 /* Sources */, - 33CC10EA2044A3C60003C045 /* Frameworks */, - 33CC10EB2044A3C60003C045 /* Resources */, - 33CC110E2044A8840003C045 /* Bundle Framework */, - 3399D490228B24CF009A79C7 /* ShellScript */, - 74AFE9CCCD7F41E520B7612F /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 33CC11202044C79F0003C045 /* PBXTargetDependency */, - ); - name = Runner; - productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* varfont_shader_puzzle.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 33CC10E52044A3C60003C045 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1430; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 331C80D4294CF70F00263BE5 = { - CreatedOnToolsVersion = 14.0; - TestTargetID = 33CC10EC2044A3C60003C045; - }; - 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 */, - 331C80D4294CF70F00263BE5 /* RunnerTests */, - 33CC111A2044C6BA0003C045 /* Flutter Assemble */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 331C80D3294CF70F00263BE5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 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 */ - 1986167CB62CEBBA52986B8C /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 3399D490228B24CF009A79C7 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - 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"; - }; - 74AFE9CCCD7F41E520B7612F /* [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; - }; - E9CFF6D875A4761770870406 /* [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 */ - 331C80D1294CF70F00263BE5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 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 */ - 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 33CC10EC2044A3C60003C045 /* Runner */; - targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; - }; - 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 = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 331C80DB294CF71000263BE5 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 02634EB403290F109558BF3C /* Pods-RunnerTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.varfontShaderPuzzle.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/varfont_shader_puzzle.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/varfont_shader_puzzle"; - }; - name = Debug; - }; - 331C80DC294CF71000263BE5 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 10D6E80226A2DE5C9DEF84C5 /* Pods-RunnerTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.varfontShaderPuzzle.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/varfont_shader_puzzle.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/varfont_shader_puzzle"; - }; - name = Release; - }; - 331C80DD294CF71000263BE5 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 23BC1B8C8CB2FB797DD34104 /* Pods-RunnerTests.profile.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.varfontShaderPuzzle.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/varfont_shader_puzzle.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/varfont_shader_puzzle"; - }; - name = Profile; - }; - 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.14; - 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.14; - 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.14; - 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 */ - 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 331C80DB294CF71000263BE5 /* Debug */, - 331C80DC294CF71000263BE5 /* Release */, - 331C80DD294CF71000263BE5 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 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/experimental/varfont_shader_puzzle/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/experimental/varfont_shader_puzzle/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/experimental/varfont_shader_puzzle/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/experimental/varfont_shader_puzzle/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index 0bd9e4630..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experimental/varfont_shader_puzzle/macos/Runner.xcworkspace/contents.xcworkspacedata b/experimental/varfont_shader_puzzle/macos/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc14c..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/experimental/varfont_shader_puzzle/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/experimental/varfont_shader_puzzle/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/experimental/varfont_shader_puzzle/macos/Runner/AppDelegate.swift b/experimental/varfont_shader_puzzle/macos/Runner/AppDelegate.swift deleted file mode 100644 index d53ef6437..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner/AppDelegate.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Cocoa -import FlutterMacOS - -@NSApplicationMain -class AppDelegate: FlutterAppDelegate { - override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { - return true - } -} diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index a2ec33f19..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "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/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png deleted file mode 100644 index 82b6f9d9a..000000000 Binary files a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png deleted file mode 100644 index 13b35eba5..000000000 Binary files a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png deleted file mode 100644 index 0a3f5fa40..000000000 Binary files a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png deleted file mode 100644 index bdb57226d..000000000 Binary files a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png deleted file mode 100644 index f083318e0..000000000 Binary files a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png deleted file mode 100644 index 326c0e72c..000000000 Binary files a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png deleted file mode 100644 index 2f1632cfd..000000000 Binary files a/experimental/varfont_shader_puzzle/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Base.lproj/MainMenu.xib b/experimental/varfont_shader_puzzle/macos/Runner/Base.lproj/MainMenu.xib deleted file mode 100644 index 80e867a4e..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner/Base.lproj/MainMenu.xib +++ /dev/null @@ -1,343 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Configs/AppInfo.xcconfig b/experimental/varfont_shader_puzzle/macos/Runner/Configs/AppInfo.xcconfig deleted file mode 100644 index 13b311fd4..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner/Configs/AppInfo.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// 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 = varfont_shader_puzzle - -// The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = com.example.varfontShaderPuzzle - -// The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2023 com.example. All rights reserved. diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Configs/Debug.xcconfig b/experimental/varfont_shader_puzzle/macos/Runner/Configs/Debug.xcconfig deleted file mode 100644 index 36b0fd946..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner/Configs/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Debug.xcconfig" -#include "Warnings.xcconfig" diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Configs/Release.xcconfig b/experimental/varfont_shader_puzzle/macos/Runner/Configs/Release.xcconfig deleted file mode 100644 index dff4f4956..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner/Configs/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Release.xcconfig" -#include "Warnings.xcconfig" diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Configs/Warnings.xcconfig b/experimental/varfont_shader_puzzle/macos/Runner/Configs/Warnings.xcconfig deleted file mode 100644 index 42bcbf478..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner/Configs/Warnings.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -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/experimental/varfont_shader_puzzle/macos/Runner/DebugProfile.entitlements b/experimental/varfont_shader_puzzle/macos/Runner/DebugProfile.entitlements deleted file mode 100644 index dddb8a30c..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner/DebugProfile.entitlements +++ /dev/null @@ -1,12 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.cs.allow-jit - - com.apple.security.network.server - - - diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Info.plist b/experimental/varfont_shader_puzzle/macos/Runner/Info.plist deleted file mode 100644 index 4789daa6a..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - $(PRODUCT_COPYRIGHT) - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/experimental/varfont_shader_puzzle/macos/Runner/MainFlutterWindow.swift b/experimental/varfont_shader_puzzle/macos/Runner/MainFlutterWindow.swift deleted file mode 100644 index 3cc05eb23..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner/MainFlutterWindow.swift +++ /dev/null @@ -1,15 +0,0 @@ -import Cocoa -import FlutterMacOS - -class MainFlutterWindow: NSWindow { - override func awakeFromNib() { - let flutterViewController = FlutterViewController() - let windowFrame = self.frame - self.contentViewController = flutterViewController - self.setFrame(windowFrame, display: true) - - RegisterGeneratedPlugins(registry: flutterViewController) - - super.awakeFromNib() - } -} diff --git a/experimental/varfont_shader_puzzle/macos/Runner/Release.entitlements b/experimental/varfont_shader_puzzle/macos/Runner/Release.entitlements deleted file mode 100644 index 852fa1a47..000000000 --- a/experimental/varfont_shader_puzzle/macos/Runner/Release.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.app-sandbox - - - diff --git a/experimental/varfont_shader_puzzle/macos/RunnerTests/RunnerTests.swift b/experimental/varfont_shader_puzzle/macos/RunnerTests/RunnerTests.swift deleted file mode 100644 index 5418c9f53..000000000 --- a/experimental/varfont_shader_puzzle/macos/RunnerTests/RunnerTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -import FlutterMacOS -import Cocoa -import XCTest - -class RunnerTests: XCTestCase { - - func testExample() { - // If you add code to the Runner application, consider adding tests here. - // See https://developer.apple.com/documentation/xctest for more information about using XCTest. - } - -} diff --git a/experimental/varfont_shader_puzzle/pubspec.yaml b/experimental/varfont_shader_puzzle/pubspec.yaml deleted file mode 100644 index b0f032ed6..000000000 --- a/experimental/varfont_shader_puzzle/pubspec.yaml +++ /dev/null @@ -1,44 +0,0 @@ -name: varfont_shader_puzzle -description: A new Flutter project. -publish_to: 'none' -version: 1.0.0+1 - -environment: - sdk: ^3.7.0-0 - -dependencies: - flutter: - sdk: flutter - google_fonts: ^6.0.0 - -dev_dependencies: - analysis_defaults: - path: ../../analysis_defaults - flutter_test: - sdk: flutter - -flutter: - uses-material-design: true - - assets: - - assets/images/ - - shaders: - - shaders/wavy.frag - - shaders/wavy2.frag - - shaders/wavy_circ.frag - - shaders/color_split.frag - - shaders/bw_split.frag - - shaders/row_offset.frag - - shaders/nothing.frag - - fonts: - - family: Roboto - fonts: - - asset: assets/fonts/Roboto-Regular.ttf - weight: 400 - - asset: assets/fonts/Roboto-Bold.ttf - weight: 700 - - family: Amstelvar - fonts: - - asset: assets/fonts/Amstelvar-Roman[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,wdth,wght,opsz].ttf diff --git a/experimental/varfont_shader_puzzle/shaders/bw_split.frag b/experimental/varfont_shader_puzzle/shaders/bw_split.frag deleted file mode 100644 index 22069f86b..000000000 --- a/experimental/varfont_shader_puzzle/shaders/bw_split.frag +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#define PI 3.1415926538 - -uniform float uTime; -uniform vec2 uSize; -uniform float uDampener; - -out vec4 fragColor; - -uniform sampler2D uTexture; - -void main() -{ - float piTime = uTime * PI * 2; - vec2 texCoord = gl_FragCoord.xy / uSize.xy; - float offset = 50; - - float opacSum = 0.0; - vec4 thisCol = texture(uTexture, texCoord.xy); - - float x = texCoord.x + (offset / uSize.x * pow(sin(piTime), 4)) * uDampener; - if (x >= 0.0 && x <= 1.0) { - opacSum += 0.3 * texture(uTexture, vec2(x, texCoord.y)).a; - } - - x = texCoord.x - (offset / uSize.x * pow(sin(piTime + PI), 2)) * uDampener; - if (x >= 0.0 && x <= 1.0) { - opacSum += 0.3 * texture(uTexture, vec2(x, texCoord.y)).a; - } - - float y = texCoord.y + (offset / uSize.y * pow(sin(piTime + PI * 0.66), 4)) * uDampener; - if (y >= 0.0 && y <= 1.0) { - opacSum += 0.3 * texture(uTexture, vec2(texCoord.x, y)).a; - } - - fragColor = vec4(0.0, 0.0, 0.0, clamp(opacSum, 0.0, 1.0)); - -} diff --git a/experimental/varfont_shader_puzzle/shaders/color_split.frag b/experimental/varfont_shader_puzzle/shaders/color_split.frag deleted file mode 100644 index 99f474bb8..000000000 --- a/experimental/varfont_shader_puzzle/shaders/color_split.frag +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#define PI 3.1415926538 - -uniform float uTime; -uniform vec2 uSize; -uniform float uDampener; - -out vec4 fragColor; - -uniform sampler2D uTexture; - -void main() -{ - float piTime = uTime * PI * 2; - vec2 texCoord = gl_FragCoord.xy / uSize.xy; - float offset = 15; - - vec4 thisCol = texture(uTexture, texCoord.xy); - vec4 rSrc = texture(uTexture, vec2(texCoord.x + offset / uSize.x * sin(piTime), texCoord.y)); - float r = rSrc.a; - - vec4 gSrc = texture(uTexture, vec2(texCoord.x + offset / uSize.x * sin(piTime + PI), texCoord.y)); - float g = gSrc.a; - - vec4 bSrc = texture(uTexture, vec2(texCoord.x, texCoord.y + offset / uSize.y * sin(piTime + PI * 0.66))); - float b = bSrc.a; - fragColor = vec4(r, g, b, clamp(r+g+b, 0.0, 1.0)); -} diff --git a/experimental/varfont_shader_puzzle/shaders/nothing.frag b/experimental/varfont_shader_puzzle/shaders/nothing.frag deleted file mode 100644 index a9a08403e..000000000 --- a/experimental/varfont_shader_puzzle/shaders/nothing.frag +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#define PI 3.1415926538 - -uniform float uTime; -uniform vec2 uSize; -uniform float uDampener; - -out vec4 fragColor; - -uniform sampler2D uTexture; - -void main() -{ - float piTime = uTime * PI * 2; - vec2 texCoord = gl_FragCoord.xy / uSize.xy; - fragColor = texture(uTexture, texCoord); -} diff --git a/experimental/varfont_shader_puzzle/shaders/row_offset.frag b/experimental/varfont_shader_puzzle/shaders/row_offset.frag deleted file mode 100644 index 74e4ba707..000000000 --- a/experimental/varfont_shader_puzzle/shaders/row_offset.frag +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#define PI 3.1415926538 - -uniform float uTime; -uniform vec2 uSize; -uniform float uDampener; - -out vec4 fragColor; - -uniform sampler2D uTexture; - -void main() -{ - float piTime = uTime * PI * 2; - - vec2 texCoord = gl_FragCoord.xy / uSize.xy; - - float levels = 5; - float maxMag = 0.1; - float minMag = 0.02; - float magMod = maxMag / levels; - float row = floor(texCoord.y * uSize.y * 0.25); // resolution/density of rows - float offsetDir = mod(row, 2) == 0 ? -1 : 1; - float sinFn = cos(texCoord.y * 1 * PI + piTime); - float offset = (offsetDir * (minMag + maxMag * sinFn)) * uDampener; - - vec2 offsetTexCoord = vec2(texCoord.x + offset, texCoord.y); - vec4 outColor = texture(uTexture, offsetTexCoord); - if (texCoord.x + offset < 0.0 || texCoord.x + offset > 1.0) { - outColor = vec4(0.0, 0.0, 0.0, 0.0); - } - fragColor = outColor; -} diff --git a/experimental/varfont_shader_puzzle/shaders/wavy.frag b/experimental/varfont_shader_puzzle/shaders/wavy.frag deleted file mode 100644 index 89d5dda38..000000000 --- a/experimental/varfont_shader_puzzle/shaders/wavy.frag +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#define PI 3.1415926538 - -uniform float uTime; -uniform vec2 uSize; -uniform float uDampener; - -out vec4 fragColor; - -uniform sampler2D uTexture; - -void main() -{ - float piTime = uTime * PI * 2; - - vec2 texCoord = gl_FragCoord.xy / uSize.xy; - int speed; - - // wavy - speed = 1; - float xAdj = texCoord.x * 3 * PI; - float waveFnVal = sin((xAdj + piTime * speed)); - float hackAdj = 0.0; - float offset = ( ((pow(waveFnVal, 2) * 0.5 - 0.5) * 0.2) + hackAdj ) * uDampener; - - vec2 offsetTexCoord = vec2(texCoord.x, texCoord.y + offset); - fragColor = texture(uTexture, offsetTexCoord); -} diff --git a/experimental/varfont_shader_puzzle/shaders/wavy2.frag b/experimental/varfont_shader_puzzle/shaders/wavy2.frag deleted file mode 100644 index da92fe19a..000000000 --- a/experimental/varfont_shader_puzzle/shaders/wavy2.frag +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#define PI 3.1415926538 - -uniform float uTime; -uniform vec2 uSize; -uniform float uDampener; - -out vec4 fragColor; - -uniform sampler2D uTexture; - -void main() -{ - float piTime = uTime * PI * 2; - - vec2 texCoord = gl_FragCoord.xy / uSize.xy; - float maxMag = 0.2; - - float thisMag = (sin(texCoord.y * 10 + piTime) + 1) * 0.5 * maxMag * uDampener; - float srcX; - srcX = texCoord.x + (0.5 - texCoord.x) * thisMag; - vec2 srcCoord = vec2(srcX, texCoord.y); - fragColor = texture(uTexture, srcCoord); -} diff --git a/experimental/varfont_shader_puzzle/shaders/wavy_circ.frag b/experimental/varfont_shader_puzzle/shaders/wavy_circ.frag deleted file mode 100644 index 9d0c2ce35..000000000 --- a/experimental/varfont_shader_puzzle/shaders/wavy_circ.frag +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#define PI 3.1415926538 - -uniform float uTime; -uniform vec2 uSize; -uniform float uDampener; - -out vec4 fragColor; - -uniform sampler2D uTexture; - -void main() -{ - float piTime = uTime * PI * 2; - - vec2 texCoord = gl_FragCoord.xy / uSize.xy; - float maxMag = 0.4; - float minMag = 0.3; - float numRings = 6.0; - float ringVel = 4.0; - float numPeakShifts = 8.0; - float peakShiftVel = -3.0; - - float unitX = (texCoord.x - 0.5) * 2; - float unitY = (texCoord.y - 0.5) * 2; - float dist = distance(vec2(0, 0), vec2(unitX, unitY)); - float theta = atan(unitY, unitX) + PI; // add PI for atan2 values -PI to PI - float thisMag = (sin(theta * numRings - piTime * ringVel) + 1) * 0.5 * (cos(theta * numPeakShifts - piTime * peakShiftVel) + 1) * 0.5 * (maxMag - minMag) + minMag; - - float unitSrcDist = dist - dist * thisMag; - float unitSrcX = cos(theta) * unitSrcDist; - float unitSrcY = sin(theta) * unitSrcDist; - float texSrcX = unitSrcX * 0.5 + 0.5; - float texSrcY = unitSrcY * 0.5 + 0.5; - fragColor = texture(uTexture, vec2(texSrcX, texSrcY)); -} diff --git a/experimental/varfont_shader_puzzle/test/widget_test.dart b/experimental/varfont_shader_puzzle/test/widget_test.dart deleted file mode 100644 index 96e10aa45..000000000 --- a/experimental/varfont_shader_puzzle/test/widget_test.dart +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2023 The Flutter team. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:flutter_test/flutter_test.dart'; - -import 'package:varfont_shader_puzzle/main.dart'; - -void main() { - const welcomeText = - 'Welcome to your first day on the FontCo team! Are you ready to help us publish our newest font, Designer Pro?'; - const welcomeTextStep2 = - 'Oh no, you clicked the button too hard! Now the font file is glitched. Help us put the letters back together so we can launch!'; - - testWidgets('Initial display', (tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const TypePuzzle()); - - // Verify intro text - expect(find.text(welcomeText), findsOneWidget); - expect(find.text(welcomeTextStep2), findsNothing); - - // Verify OK button - expect(find.text('OK'), findsOneWidget); - }); -} diff --git a/experimental/varfont_shader_puzzle/windows/.gitignore b/experimental/varfont_shader_puzzle/windows/.gitignore deleted file mode 100644 index d492d0d98..000000000 --- a/experimental/varfont_shader_puzzle/windows/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -flutter/ephemeral/ - -# Visual Studio user-specific files. -*.suo -*.user -*.userosscache -*.sln.docstates - -# Visual Studio build-related files. -x64/ -x86/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ diff --git a/experimental/varfont_shader_puzzle/windows/CMakeLists.txt b/experimental/varfont_shader_puzzle/windows/CMakeLists.txt deleted file mode 100644 index 49844b190..000000000 --- a/experimental/varfont_shader_puzzle/windows/CMakeLists.txt +++ /dev/null @@ -1,108 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.14) -project(varfont_shader_puzzle 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 "varfont_shader_puzzle") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(VERSION 3.14...3.25) - -# Define build configuration option. -get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -if(IS_MULTICONFIG) - set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" - CACHE STRING "" FORCE) -else() - if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "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}") -set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") - -# Use Unicode for all projects. -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") - target_compile_options(${TARGET} PRIVATE /EHsc) - target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") - target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# Application build; see runner/CMakeLists.txt. -add_subdirectory("runner") - - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# Support files are copied into place next to the executable, so that it can -# run in place. This is done instead of making a separate bundle (as on Linux) -# so that building and running from within Visual Studio will work. -set(BUILD_BUNDLE_DIR "$") -# Make the "install" step default, as it's required to run. -set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() - -# Copy the native assets provided by the build.dart from all packages. -set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") -install(DIRECTORY "${NATIVE_ASSETS_DIR}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - CONFIGURATIONS Profile;Release - COMPONENT Runtime) diff --git a/experimental/varfont_shader_puzzle/windows/flutter/CMakeLists.txt b/experimental/varfont_shader_puzzle/windows/flutter/CMakeLists.txt deleted file mode 100644 index 903f4899d..000000000 --- a/experimental/varfont_shader_puzzle/windows/flutter/CMakeLists.txt +++ /dev/null @@ -1,109 +0,0 @@ -# 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") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. -set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") - -# Set fallback configurations for older versions of the flutter tool. -if (NOT DEFINED FLUTTER_TARGET_PLATFORM) - set(FLUTTER_TARGET_PLATFORM "windows-x64") -endif() - -# === Flutter Library === -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "flutter_export.h" - "flutter_windows.h" - "flutter_messenger.h" - "flutter_plugin_registrar.h" - "flutter_texture_registrar.h" -) -list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") -add_dependencies(flutter flutter_assemble) - -# === Wrapper === -list(APPEND CPP_WRAPPER_SOURCES_CORE - "core_implementations.cc" - "standard_codec.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_PLUGIN - "plugin_registrar.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_APP - "flutter_engine.cc" - "flutter_view_controller.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") - -# Wrapper sources needed for a plugin. -add_library(flutter_wrapper_plugin STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} -) -apply_standard_settings(flutter_wrapper_plugin) -set_target_properties(flutter_wrapper_plugin PROPERTIES - POSITION_INDEPENDENT_CODE ON) -set_target_properties(flutter_wrapper_plugin PROPERTIES - CXX_VISIBILITY_PRESET hidden) -target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) -target_include_directories(flutter_wrapper_plugin PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_plugin flutter_assemble) - -# Wrapper sources needed for the runner. -add_library(flutter_wrapper_app STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_APP} -) -apply_standard_settings(flutter_wrapper_app) -target_link_libraries(flutter_wrapper_app PUBLIC flutter) -target_include_directories(flutter_wrapper_app PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_app flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") -set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} - ${PHONY_OUTPUT} - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - ${FLUTTER_TARGET_PLATFORM} $ - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} -) diff --git a/experimental/varfont_shader_puzzle/windows/flutter/generated_plugin_registrant.cc b/experimental/varfont_shader_puzzle/windows/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 8b6d4680a..000000000 --- a/experimental/varfont_shader_puzzle/windows/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,11 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - - -void RegisterPlugins(flutter::PluginRegistry* registry) { -} diff --git a/experimental/varfont_shader_puzzle/windows/flutter/generated_plugin_registrant.h b/experimental/varfont_shader_puzzle/windows/flutter/generated_plugin_registrant.h deleted file mode 100644 index dc139d85a..000000000 --- a/experimental/varfont_shader_puzzle/windows/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void RegisterPlugins(flutter::PluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/experimental/varfont_shader_puzzle/windows/flutter/generated_plugins.cmake b/experimental/varfont_shader_puzzle/windows/flutter/generated_plugins.cmake deleted file mode 100644 index b93c4c30c..000000000 --- a/experimental/varfont_shader_puzzle/windows/flutter/generated_plugins.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/experimental/varfont_shader_puzzle/windows/runner/CMakeLists.txt b/experimental/varfont_shader_puzzle/windows/runner/CMakeLists.txt deleted file mode 100644 index 394917c05..000000000 --- a/experimental/varfont_shader_puzzle/windows/runner/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -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" - "utils.cpp" - "win32_window.cpp" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" - "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}) - -# Add preprocessor definitions for the build version. -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") - -# 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_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") -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/experimental/varfont_shader_puzzle/windows/runner/Runner.rc b/experimental/varfont_shader_puzzle/windows/runner/Runner.rc deleted file mode 100644 index c6f7bda3f..000000000 --- a/experimental/varfont_shader_puzzle/windows/runner/Runner.rc +++ /dev/null @@ -1,121 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#pragma code_page(65001) -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_APP_ICON ICON "resources\\app_icon.ico" - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) -#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD -#else -#define VERSION_AS_NUMBER 1,0,0,0 -#endif - -#if defined(FLUTTER_VERSION) -#define VERSION_AS_STRING FLUTTER_VERSION -#else -#define VERSION_AS_STRING "1.0.0" -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION VERSION_AS_NUMBER - PRODUCTVERSION VERSION_AS_NUMBER - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "CompanyName", "com.example" "\0" - VALUE "FileDescription", "varfont_shader_puzzle" "\0" - VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "varfont_shader_puzzle" "\0" - VALUE "LegalCopyright", "Copyright (C) 2023 com.example. All rights reserved." "\0" - VALUE "OriginalFilename", "varfont_shader_puzzle.exe" "\0" - VALUE "ProductName", "varfont_shader_puzzle" "\0" - VALUE "ProductVersion", VERSION_AS_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED diff --git a/experimental/varfont_shader_puzzle/windows/runner/flutter_window.cpp b/experimental/varfont_shader_puzzle/windows/runner/flutter_window.cpp deleted file mode 100644 index 955ee3038..000000000 --- a/experimental/varfont_shader_puzzle/windows/runner/flutter_window.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include "flutter_window.h" - -#include - -#include "flutter/generated_plugin_registrant.h" - -FlutterWindow::FlutterWindow(const flutter::DartProject& project) - : project_(project) {} - -FlutterWindow::~FlutterWindow() {} - -bool FlutterWindow::OnCreate() { - if (!Win32Window::OnCreate()) { - return false; - } - - RECT frame = GetClientArea(); - - // The size here must match the window dimensions to avoid unnecessary surface - // creation / destruction in the startup path. - flutter_controller_ = std::make_unique( - frame.right - frame.left, frame.bottom - frame.top, project_); - // Ensure that basic setup of the controller was successful. - if (!flutter_controller_->engine() || !flutter_controller_->view()) { - return false; - } - RegisterPlugins(flutter_controller_->engine()); - SetChildContent(flutter_controller_->view()->GetNativeWindow()); - - flutter_controller_->engine()->SetNextFrameCallback([&]() { - this->Show(); - }); - - // Flutter can complete the first frame before the "show window" callback is - // registered. The following call ensures a frame is pending to ensure the - // window is shown. It is a no-op if the first frame hasn't completed yet. - flutter_controller_->ForceRedraw(); - - return true; -} - -void FlutterWindow::OnDestroy() { - if (flutter_controller_) { - flutter_controller_ = nullptr; - } - - Win32Window::OnDestroy(); -} - -LRESULT -FlutterWindow::MessageHandler(HWND hwnd, UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - // Give Flutter, including plugins, an opportunity to handle window messages. - if (flutter_controller_) { - std::optional result = - flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, - lparam); - if (result) { - return *result; - } - } - - switch (message) { - case WM_FONTCHANGE: - flutter_controller_->engine()->ReloadSystemFonts(); - break; - } - - return Win32Window::MessageHandler(hwnd, message, wparam, lparam); -} diff --git a/experimental/varfont_shader_puzzle/windows/runner/flutter_window.h b/experimental/varfont_shader_puzzle/windows/runner/flutter_window.h deleted file mode 100644 index 6da0652f0..000000000 --- a/experimental/varfont_shader_puzzle/windows/runner/flutter_window.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef RUNNER_FLUTTER_WINDOW_H_ -#define RUNNER_FLUTTER_WINDOW_H_ - -#include -#include - -#include - -#include "win32_window.h" - -// A window that does nothing but host a Flutter view. -class FlutterWindow : public Win32Window { - public: - // Creates a new FlutterWindow hosting a Flutter view running |project|. - explicit FlutterWindow(const flutter::DartProject& project); - virtual ~FlutterWindow(); - - protected: - // Win32Window: - bool OnCreate() override; - void OnDestroy() override; - LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, - LPARAM const lparam) noexcept override; - - private: - // The project to run. - flutter::DartProject project_; - - // The Flutter instance hosted by this window. - std::unique_ptr flutter_controller_; -}; - -#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/experimental/varfont_shader_puzzle/windows/runner/main.cpp b/experimental/varfont_shader_puzzle/windows/runner/main.cpp deleted file mode 100644 index b709e9fda..000000000 --- a/experimental/varfont_shader_puzzle/windows/runner/main.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include - -#include "flutter_window.h" -#include "utils.h" - -int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, - _In_ wchar_t *command_line, _In_ int show_command) { - // Attach to console when present (e.g., 'flutter run') or create a - // new console when running with a debugger. - if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { - CreateAndAttachConsole(); - } - - // Initialize COM, so that it is available for use in the library and/or - // plugins. - ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); - - flutter::DartProject project(L"data"); - - std::vector command_line_arguments = - GetCommandLineArguments(); - - project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); - - FlutterWindow window(project); - Win32Window::Point origin(10, 10); - Win32Window::Size size(1280, 720); - if (!window.Create(L"varfont_shader_puzzle", origin, size)) { - return EXIT_FAILURE; - } - window.SetQuitOnClose(true); - - ::MSG msg; - while (::GetMessage(&msg, nullptr, 0, 0)) { - ::TranslateMessage(&msg); - ::DispatchMessage(&msg); - } - - ::CoUninitialize(); - return EXIT_SUCCESS; -} diff --git a/experimental/varfont_shader_puzzle/windows/runner/resource.h b/experimental/varfont_shader_puzzle/windows/runner/resource.h deleted file mode 100644 index 66a65d1e4..000000000 --- a/experimental/varfont_shader_puzzle/windows/runner/resource.h +++ /dev/null @@ -1,16 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by Runner.rc -// -#define IDI_APP_ICON 101 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/experimental/varfont_shader_puzzle/windows/runner/resources/app_icon.ico b/experimental/varfont_shader_puzzle/windows/runner/resources/app_icon.ico deleted file mode 100644 index c04e20caf..000000000 Binary files a/experimental/varfont_shader_puzzle/windows/runner/resources/app_icon.ico and /dev/null differ diff --git a/experimental/varfont_shader_puzzle/windows/runner/runner.exe.manifest b/experimental/varfont_shader_puzzle/windows/runner/runner.exe.manifest deleted file mode 100644 index a42ea7687..000000000 --- a/experimental/varfont_shader_puzzle/windows/runner/runner.exe.manifest +++ /dev/null @@ -1,20 +0,0 @@ - - - - - PerMonitorV2 - - - - - - - - - - - - - - - diff --git a/experimental/varfont_shader_puzzle/windows/runner/utils.cpp b/experimental/varfont_shader_puzzle/windows/runner/utils.cpp deleted file mode 100644 index b2b08734d..000000000 --- a/experimental/varfont_shader_puzzle/windows/runner/utils.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "utils.h" - -#include -#include -#include -#include - -#include - -void CreateAndAttachConsole() { - if (::AllocConsole()) { - FILE *unused; - if (freopen_s(&unused, "CONOUT$", "w", stdout)) { - _dup2(_fileno(stdout), 1); - } - if (freopen_s(&unused, "CONOUT$", "w", stderr)) { - _dup2(_fileno(stdout), 2); - } - std::ios::sync_with_stdio(); - FlutterDesktopResyncOutputStreams(); - } -} - -std::vector GetCommandLineArguments() { - // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. - int argc; - wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); - if (argv == nullptr) { - return std::vector(); - } - - std::vector command_line_arguments; - - // Skip the first argument as it's the binary name. - for (int i = 1; i < argc; i++) { - command_line_arguments.push_back(Utf8FromUtf16(argv[i])); - } - - ::LocalFree(argv); - - return command_line_arguments; -} - -std::string Utf8FromUtf16(const wchar_t* utf16_string) { - if (utf16_string == nullptr) { - return std::string(); - } - int target_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, nullptr, 0, nullptr, nullptr) - -1; // remove the trailing null character - int input_length = (int)wcslen(utf16_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, - input_length, utf8_string.data(), target_length, nullptr, nullptr); - if (converted_length == 0) { - return std::string(); - } - return utf8_string; -} diff --git a/experimental/varfont_shader_puzzle/windows/runner/utils.h b/experimental/varfont_shader_puzzle/windows/runner/utils.h deleted file mode 100644 index 3879d5475..000000000 --- a/experimental/varfont_shader_puzzle/windows/runner/utils.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef RUNNER_UTILS_H_ -#define RUNNER_UTILS_H_ - -#include -#include - -// Creates a console for the process, and redirects stdout and stderr to -// it for both the runner and the Flutter library. -void CreateAndAttachConsole(); - -// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string -// encoded in UTF-8. Returns an empty std::string on failure. -std::string Utf8FromUtf16(const wchar_t* utf16_string); - -// Gets the command line arguments passed in as a std::vector, -// encoded in UTF-8. Returns an empty std::vector on failure. -std::vector GetCommandLineArguments(); - -#endif // RUNNER_UTILS_H_ diff --git a/experimental/varfont_shader_puzzle/windows/runner/win32_window.cpp b/experimental/varfont_shader_puzzle/windows/runner/win32_window.cpp deleted file mode 100644 index 60608d0fe..000000000 --- a/experimental/varfont_shader_puzzle/windows/runner/win32_window.cpp +++ /dev/null @@ -1,288 +0,0 @@ -#include "win32_window.h" - -#include -#include - -#include "resource.h" - -namespace { - -/// Window attribute that enables dark mode window decorations. -/// -/// Redefined in case the developer's machine has a Windows SDK older than -/// version 10.0.22000.0. -/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute -#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE -#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 -#endif - -constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; - -/// Registry key for app theme preference. -/// -/// A value of 0 indicates apps should use dark mode. A non-zero or missing -/// value indicates apps should use light mode. -constexpr const wchar_t kGetPreferredBrightnessRegKey[] = - L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; -constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; - -// The number of Win32Window objects that currently exist. -static int g_active_window_count = 0; - -using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); - -// Scale helper to convert logical scaler values to physical using passed in -// scale factor -int Scale(int source, double scale_factor) { - return static_cast(source * scale_factor); -} - -// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. -// This API is only needed for PerMonitor V1 awareness mode. -void EnableFullDpiSupportIfAvailable(HWND hwnd) { - HMODULE user32_module = LoadLibraryA("User32.dll"); - if (!user32_module) { - return; - } - auto enable_non_client_dpi_scaling = - reinterpret_cast( - GetProcAddress(user32_module, "EnableNonClientDpiScaling")); - if (enable_non_client_dpi_scaling != nullptr) { - enable_non_client_dpi_scaling(hwnd); - } - FreeLibrary(user32_module); -} - -} // namespace - -// Manages the Win32Window's window class registration. -class WindowClassRegistrar { - public: - ~WindowClassRegistrar() = default; - - // Returns the singleton registrar instance. - static WindowClassRegistrar* GetInstance() { - if (!instance_) { - instance_ = new WindowClassRegistrar(); - } - return instance_; - } - - // Returns the name of the window class, registering the class if it hasn't - // previously been registered. - const wchar_t* GetWindowClass(); - - // Unregisters the window class. Should only be called if there are no - // instances of the window. - void UnregisterWindowClass(); - - private: - WindowClassRegistrar() = default; - - static WindowClassRegistrar* instance_; - - bool class_registered_ = false; -}; - -WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; - -const wchar_t* WindowClassRegistrar::GetWindowClass() { - if (!class_registered_) { - WNDCLASS window_class{}; - window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); - window_class.lpszClassName = kWindowClassName; - window_class.style = CS_HREDRAW | CS_VREDRAW; - window_class.cbClsExtra = 0; - window_class.cbWndExtra = 0; - window_class.hInstance = GetModuleHandle(nullptr); - window_class.hIcon = - LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); - window_class.hbrBackground = 0; - window_class.lpszMenuName = nullptr; - window_class.lpfnWndProc = Win32Window::WndProc; - RegisterClass(&window_class); - class_registered_ = true; - } - return kWindowClassName; -} - -void WindowClassRegistrar::UnregisterWindowClass() { - UnregisterClass(kWindowClassName, nullptr); - class_registered_ = false; -} - -Win32Window::Win32Window() { - ++g_active_window_count; -} - -Win32Window::~Win32Window() { - --g_active_window_count; - Destroy(); -} - -bool Win32Window::Create(const std::wstring& title, - const Point& origin, - const Size& size) { - Destroy(); - - const wchar_t* window_class = - WindowClassRegistrar::GetInstance()->GetWindowClass(); - - const POINT target_point = {static_cast(origin.x), - static_cast(origin.y)}; - HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); - UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); - double scale_factor = dpi / 96.0; - - HWND window = CreateWindow( - window_class, title.c_str(), WS_OVERLAPPEDWINDOW, - Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), - Scale(size.width, scale_factor), Scale(size.height, scale_factor), - nullptr, nullptr, GetModuleHandle(nullptr), this); - - if (!window) { - return false; - } - - UpdateTheme(window); - - return OnCreate(); -} - -bool Win32Window::Show() { - return ShowWindow(window_handle_, SW_SHOWNORMAL); -} - -// static -LRESULT CALLBACK Win32Window::WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - if (message == WM_NCCREATE) { - auto window_struct = reinterpret_cast(lparam); - SetWindowLongPtr(window, GWLP_USERDATA, - reinterpret_cast(window_struct->lpCreateParams)); - - auto that = static_cast(window_struct->lpCreateParams); - EnableFullDpiSupportIfAvailable(window); - that->window_handle_ = window; - } else if (Win32Window* that = GetThisFromHandle(window)) { - return that->MessageHandler(window, message, wparam, lparam); - } - - return DefWindowProc(window, message, wparam, lparam); -} - -LRESULT -Win32Window::MessageHandler(HWND hwnd, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - switch (message) { - case WM_DESTROY: - window_handle_ = nullptr; - Destroy(); - if (quit_on_close_) { - PostQuitMessage(0); - } - return 0; - - case WM_DPICHANGED: { - auto newRectSize = reinterpret_cast(lparam); - LONG newWidth = newRectSize->right - newRectSize->left; - LONG newHeight = newRectSize->bottom - newRectSize->top; - - SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, - newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - - return 0; - } - case WM_SIZE: { - RECT rect = GetClientArea(); - if (child_content_ != nullptr) { - // Size and position the child window. - MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, - rect.bottom - rect.top, TRUE); - } - return 0; - } - - case WM_ACTIVATE: - if (child_content_ != nullptr) { - SetFocus(child_content_); - } - return 0; - - case WM_DWMCOLORIZATIONCOLORCHANGED: - UpdateTheme(hwnd); - return 0; - } - - return DefWindowProc(window_handle_, message, wparam, lparam); -} - -void Win32Window::Destroy() { - OnDestroy(); - - if (window_handle_) { - DestroyWindow(window_handle_); - window_handle_ = nullptr; - } - if (g_active_window_count == 0) { - WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); - } -} - -Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { - return reinterpret_cast( - GetWindowLongPtr(window, GWLP_USERDATA)); -} - -void Win32Window::SetChildContent(HWND content) { - child_content_ = content; - SetParent(content, window_handle_); - RECT frame = GetClientArea(); - - MoveWindow(content, frame.left, frame.top, frame.right - frame.left, - frame.bottom - frame.top, true); - - SetFocus(child_content_); -} - -RECT Win32Window::GetClientArea() { - RECT frame; - GetClientRect(window_handle_, &frame); - return frame; -} - -HWND Win32Window::GetHandle() { - return window_handle_; -} - -void Win32Window::SetQuitOnClose(bool quit_on_close) { - quit_on_close_ = quit_on_close; -} - -bool Win32Window::OnCreate() { - // No-op; provided for subclasses. - return true; -} - -void Win32Window::OnDestroy() { - // No-op; provided for subclasses. -} - -void Win32Window::UpdateTheme(HWND const window) { - DWORD light_mode; - DWORD light_mode_size = sizeof(light_mode); - LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, - kGetPreferredBrightnessRegValue, - RRF_RT_REG_DWORD, nullptr, &light_mode, - &light_mode_size); - - if (result == ERROR_SUCCESS) { - BOOL enable_dark_mode = light_mode == 0; - DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, - &enable_dark_mode, sizeof(enable_dark_mode)); - } -} diff --git a/experimental/varfont_shader_puzzle/windows/runner/win32_window.h b/experimental/varfont_shader_puzzle/windows/runner/win32_window.h deleted file mode 100644 index e901dde68..000000000 --- a/experimental/varfont_shader_puzzle/windows/runner/win32_window.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef RUNNER_WIN32_WINDOW_H_ -#define RUNNER_WIN32_WINDOW_H_ - -#include - -#include -#include -#include - -// A class abstraction for a high DPI-aware Win32 Window. Intended to be -// inherited from by classes that wish to specialize with custom -// rendering and input handling -class Win32Window { - public: - struct Point { - unsigned int x; - unsigned int y; - Point(unsigned int x, unsigned int y) : x(x), y(y) {} - }; - - struct Size { - unsigned int width; - unsigned int height; - Size(unsigned int width, unsigned int height) - : width(width), height(height) {} - }; - - Win32Window(); - virtual ~Win32Window(); - - // Creates a win32 window with |title| that is positioned and sized using - // |origin| and |size|. New windows are created on the default monitor. Window - // sizes are specified to the OS in physical pixels, hence to ensure a - // consistent size this function will scale the inputted width and height as - // as appropriate for the default monitor. The window is invisible until - // |Show| is called. Returns true if the window was created successfully. - bool Create(const std::wstring& title, const Point& origin, const Size& size); - - // Show the current window. Returns true if the window was successfully shown. - bool Show(); - - // Release OS resources associated with window. - void Destroy(); - - // Inserts |content| into the window tree. - void SetChildContent(HWND content); - - // Returns the backing Window handle to enable clients to set icon and other - // window properties. Returns nullptr if the window has been destroyed. - HWND GetHandle(); - - // If true, closing this window will quit the application. - void SetQuitOnClose(bool quit_on_close); - - // Return a RECT representing the bounds of the current client area. - RECT GetClientArea(); - - protected: - // Processes and route salient window messages for mouse handling, - // size change and DPI. Delegates handling of these to member overloads that - // inheriting classes can handle. - virtual LRESULT MessageHandler(HWND window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Called when CreateAndShow is called, allowing subclass window-related - // setup. Subclasses should return false if setup fails. - virtual bool OnCreate(); - - // Called when Destroy is called. - virtual void OnDestroy(); - - private: - friend class WindowClassRegistrar; - - // OS callback called by message pump. Handles the WM_NCCREATE message which - // is passed when the non-client area is being created and enables automatic - // non-client DPI scaling so that the non-client area automatically - // responds to changes in DPI. All other messages are handled by - // MessageHandler. - static LRESULT CALLBACK WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Retrieves a class instance pointer for |window| - static Win32Window* GetThisFromHandle(HWND const window) noexcept; - - // Update the window frame's theme to match the system theme. - static void UpdateTheme(HWND const window); - - bool quit_on_close_ = false; - - // window handle for top level window. - HWND window_handle_ = nullptr; - - // window handle for hosted content. - HWND child_content_ = nullptr; -}; - -#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/experimental/veggieseasons/README.md b/experimental/veggieseasons/README.md deleted file mode 100644 index 75d68ca71..000000000 --- a/experimental/veggieseasons/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Veggie Seasons - -The [Veggie Seasons](https://github.com/flutter/samples/tree/main/veggieseasons) app has been moved out of the experimental -directory of this repository as it now works on stable channel of Flutter. diff --git a/experimental/web_dashboard/.gitignore b/experimental/web_dashboard/.gitignore deleted file mode 100644 index a981f586a..000000000 --- a/experimental/web_dashboard/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Exceptions to above rules. -!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages diff --git a/experimental/web_dashboard/.metadata b/experimental/web_dashboard/.metadata deleted file mode 100644 index 4390eea94..000000000 --- a/experimental/web_dashboard/.metadata +++ /dev/null @@ -1,10 +0,0 @@ -# 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. - -version: - revision: bc6f270c584d1fdba81330090ef6e822b9082919 - channel: master - -project_type: app diff --git a/experimental/web_dashboard/README.md b/experimental/web_dashboard/README.md deleted file mode 100644 index 0d9ce84d6..000000000 --- a/experimental/web_dashboard/README.md +++ /dev/null @@ -1,123 +0,0 @@ -# web_dashboard - -**In progress** - -A dashboard app that displays daily entries. - -1. How to use an AdaptiveScaffold adaptive layout for large, medium, and small -screens. -2. How to use Firebase [Cloud -Firestore](https://firebase.google.com/docs/firestore) database with Google -Sign-In. -3. How to use [charts](https://pub.dev/packages/charts_flutter) to display -data. -4. (in progress) How to set up routing for a web app - -This app is web-first, and isn't guaranteed to run on iOS, Android or desktop -platforms. - -## Running - -Normal mode (DDC): - -``` -flutter run -d chrome -``` - -Skia / CanvasKit mode: - -``` -flutter run -d chrome --release --dart-define=FLUTTER_WEB_USE_SKIA=true -``` - -## Running JSON code generator - -``` -flutter pub run grinder generate -``` - -## Add Firebase - -### Step 1: Create a new Firebase project - -Go to [console.firebase.google.com](https://console.firebase.google.com/) and -create a new Firebase project. - -### Step 2: Enable Google Sign In for your project - -In the Firebase console, go to "Authentication" and enable Google sign in. Click -on "Web SDK Configuration" and copy down your Web client ID. - -### Step 3: Add Client ID to `index.html` - -Uncomment this line in `index.html` and replace `` with the -client ID from Step 2: - -```html - - -``` - -### Step 4: Create a web app - -In the Firebase console, under "Project overview", click "Add app", select Web, -and replace the contents of `web/firebase_init.js`. - -```javascript -// web/firebase_init.js -var firebaseConfig = { - apiKey: "", - authDomain: "", - databaseURL: "", - projectId: "", - storageBucket: "", - messagingSenderId: "", - appId: "" -}; - -// Initialize Firebase -firebase.initializeApp(firebaseConfig); -``` - -### Step 4: Create Cloud Firestore - -Create a new Cloud Firestore database and add the following rules to disallow -users from reading/writing other users' data: - -``` -rules_version = '2'; - -service cloud.firestore { - match /databases/{database}/documents { - // Make sure the uid of the requesting user matches name of the user - // document. The wildcard expression {userId} makes the userId variable - // available in rules. - match /users/{userId}/{document=**} { - allow read, update, delete: if request.auth.uid == userId; - allow create: if request.auth.uid != null; - } - } -} -``` - -### Step 5: Run the app - -Run the app on port 5000: - -```bash -flutter run -d chrome --web-port=5000 -``` - -If you see CORS errors in your browser's console, go to the [Services -section][cloud-console-apis] in the Google Cloud console, go to Credentials, and -verify that `localhost:5000` is whitelisted. - -### (optional) Step 7: Set up iOS and Android -If you would like to run the app on iOS or Android, make sure you've installed -the appropriate configuration files described at -[firebase.google.com/docs/flutter/setup][flutter-setup] from step 1, and follow -the instructions detailed in the [google_sign_in README][google-sign-in] - -[flutter-setup]: https://firebase.google.com/docs/flutter/setup -[cloud-console-apis]: https://console.developers.google.com/apis/dashboard -[google-sign-in]: https://pub.dev/packages/google_sign_in diff --git a/experimental/web_dashboard/analysis_options.yaml b/experimental/web_dashboard/analysis_options.yaml deleted file mode 100644 index 13d6fe105..000000000 --- a/experimental/web_dashboard/analysis_options.yaml +++ /dev/null @@ -1 +0,0 @@ -include: package:analysis_defaults/flutter.yaml diff --git a/experimental/web_dashboard/lib/main.dart b/experimental/web_dashboard/lib/main.dart deleted file mode 100644 index c0b1767e6..000000000 --- a/experimental/web_dashboard/lib/main.dart +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:flutter/material.dart'; - -import 'src/app.dart'; - -void main() { - runApp(DashboardApp.mock()); -} diff --git a/experimental/web_dashboard/lib/main_firebase.dart b/experimental/web_dashboard/lib/main_firebase.dart deleted file mode 100644 index 20517fecc..000000000 --- a/experimental/web_dashboard/lib/main_firebase.dart +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:flutter/material.dart'; - -import 'src/app.dart'; - -void main() { - runApp(DashboardApp.firebase()); -} diff --git a/experimental/web_dashboard/lib/src/api/api.dart b/experimental/web_dashboard/lib/src/api/api.dart deleted file mode 100644 index 0ab9dfa2b..000000000 --- a/experimental/web_dashboard/lib/src/api/api.dart +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:cloud_firestore/cloud_firestore.dart'; -import 'package:json_annotation/json_annotation.dart'; - -part 'api.g.dart'; - -/// Manipulates app data, -abstract class DashboardApi { - CategoryApi get categories; - EntryApi get entries; -} - -/// Manipulates [Category] data. -abstract class CategoryApi { - Future delete(String id); - - Future get(String id); - - Future insert(Category category); - - Future> list(); - - Future update(Category category, String id); - - Stream> subscribe(); -} - -/// Manipulates [Entry] data. -abstract class EntryApi { - Future delete(String categoryId, String id); - - Future get(String categoryId, String id); - - Future insert(String categoryId, Entry entry); - - Future> list(String categoryId); - - Future update(String categoryId, String id, Entry entry); - - Stream> subscribe(String categoryId); -} - -/// Something that's being tracked, e.g. Hours Slept, Cups of water, etc. -@JsonSerializable() -class Category { - String name; - - @JsonKey(includeFromJson: false) - String? id; - - Category(this.name); - - factory Category.fromJson(Map json) => - _$CategoryFromJson(json); - - Map toJson() => _$CategoryToJson(this); - - @override - operator ==(Object other) => other is Category && other.id == id; - @override - int get hashCode => id.hashCode; - @override - String toString() { - return ''; - } -} - -/// A number tracked at a point in time. -@JsonSerializable() -class Entry { - int value; - @JsonKey(fromJson: _timestampToDateTime, toJson: _dateTimeToTimestamp) - DateTime time; - - @JsonKey(includeFromJson: false) - String? id; - - Entry(this.value, this.time); - - factory Entry.fromJson(Map json) => _$EntryFromJson(json); - - Map toJson() => _$EntryToJson(this); - - static DateTime _timestampToDateTime(Timestamp timestamp) { - return DateTime.fromMillisecondsSinceEpoch( - timestamp.millisecondsSinceEpoch, - ); - } - - static Timestamp _dateTimeToTimestamp(DateTime dateTime) { - return Timestamp.fromMillisecondsSinceEpoch( - dateTime.millisecondsSinceEpoch, - ); - } - - @override - operator ==(Object other) => other is Entry && other.id == id; - - @override - int get hashCode => id.hashCode; - - @override - String toString() { - return ''; - } -} diff --git a/experimental/web_dashboard/lib/src/api/api.g.dart b/experimental/web_dashboard/lib/src/api/api.g.dart deleted file mode 100644 index 6a90026ce..000000000 --- a/experimental/web_dashboard/lib/src/api/api.g.dart +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'api.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -Category _$CategoryFromJson(Map json) { - return Category(json['name'] as String); -} - -Map _$CategoryToJson(Category instance) => { - 'name': instance.name, -}; - -Entry _$EntryFromJson(Map json) { - return Entry( - json['value'] as int, - Entry._timestampToDateTime(json['time'] as Timestamp), - ); -} - -Map _$EntryToJson(Entry instance) => { - 'value': instance.value, - 'time': Entry._dateTimeToTimestamp(instance.time), -}; diff --git a/experimental/web_dashboard/lib/src/api/firebase.dart b/experimental/web_dashboard/lib/src/api/firebase.dart deleted file mode 100644 index 6ba42e8df..000000000 --- a/experimental/web_dashboard/lib/src/api/firebase.dart +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:cloud_firestore/cloud_firestore.dart'; - -import 'api.dart'; - -class FirebaseDashboardApi implements DashboardApi { - @override - final EntryApi entries; - - @override - final CategoryApi categories; - - FirebaseDashboardApi(FirebaseFirestore firestore, String userId) - : entries = FirebaseEntryApi(firestore, userId), - categories = FirebaseCategoryApi(firestore, userId); -} - -class FirebaseEntryApi implements EntryApi { - final FirebaseFirestore firestore; - final String userId; - final CollectionReference> _categoriesRef; - - FirebaseEntryApi(this.firestore, this.userId) - : _categoriesRef = firestore.collection('users/$userId/categories'); - - @override - Stream> subscribe(String categoryId) { - var snapshots = - _categoriesRef.doc(categoryId).collection('entries').snapshots(); - var result = snapshots.map>((querySnapshot) { - return querySnapshot.docs.map((snapshot) { - return Entry.fromJson(snapshot.data())..id = snapshot.id; - }).toList(); - }); - - return result; - } - - @override - Future delete(String categoryId, String id) async { - var document = _categoriesRef.doc('$categoryId/entries/$id'); - var entry = await get(categoryId, document.id); - - await document.delete(); - - return entry; - } - - @override - Future insert(String categoryId, Entry entry) async { - var document = await _categoriesRef - .doc(categoryId) - .collection('entries') - .add(entry.toJson()); - return await get(categoryId, document.id); - } - - @override - Future> list(String categoryId) async { - var entriesRef = _categoriesRef.doc(categoryId).collection('entries'); - var querySnapshot = await entriesRef.get(); - var entries = - querySnapshot.docs - .map((doc) => Entry.fromJson(doc.data())..id = doc.id) - .toList(); - - return entries; - } - - @override - Future update(String categoryId, String id, Entry entry) async { - var document = _categoriesRef.doc('$categoryId/entries/$id'); - await document.update(entry.toJson()); - var snapshot = await document.get(); - return Entry.fromJson(snapshot.data()!)..id = snapshot.id; - } - - @override - Future get(String categoryId, String id) async { - var document = _categoriesRef.doc('$categoryId/entries/$id'); - var snapshot = await document.get(); - return Entry.fromJson(snapshot.data()!)..id = snapshot.id; - } -} - -class FirebaseCategoryApi implements CategoryApi { - final FirebaseFirestore firestore; - final String userId; - final CollectionReference> _categoriesRef; - - FirebaseCategoryApi(this.firestore, this.userId) - : _categoriesRef = firestore.collection('users/$userId/categories'); - - @override - Stream> subscribe() { - var snapshots = _categoriesRef.snapshots(); - var result = snapshots.map>((querySnapshot) { - return querySnapshot.docs.map((snapshot) { - return Category.fromJson(snapshot.data())..id = snapshot.id; - }).toList(); - }); - - return result; - } - - @override - Future delete(String id) async { - var document = _categoriesRef.doc(id); - var categories = await get(document.id); - - await document.delete(); - - return categories; - } - - @override - Future get(String id) async { - var document = _categoriesRef.doc(id); - var snapshot = await document.get(); - return Category.fromJson(snapshot.data()!)..id = snapshot.id; - } - - @override - Future insert(Category category) async { - var document = await _categoriesRef.add(category.toJson()); - return await get(document.id); - } - - @override - Future> list() async { - var querySnapshot = await _categoriesRef.get(); - var categories = - querySnapshot.docs - .map((doc) => Category.fromJson(doc.data())..id = doc.id) - .toList(); - - return categories; - } - - @override - Future update(Category category, String id) async { - var document = _categoriesRef.doc(id); - await document.update(category.toJson()); - var snapshot = await document.get(); - return Category.fromJson(snapshot.data()!)..id = snapshot.id; - } -} diff --git a/experimental/web_dashboard/lib/src/api/mock.dart b/experimental/web_dashboard/lib/src/api/mock.dart deleted file mode 100644 index 463d8b294..000000000 --- a/experimental/web_dashboard/lib/src/api/mock.dart +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'dart:async'; -import 'dart:math'; - -import 'package:uuid/uuid.dart' as uuid; - -import 'api.dart'; - -class MockDashboardApi implements DashboardApi { - @override - final EntryApi entries = MockEntryApi(); - - @override - final CategoryApi categories = MockCategoryApi(); - - MockDashboardApi(); - - /// Creates a [MockDashboardApi] filled with mock data for the last 30 days. - Future fillWithMockData() async { - await Future.delayed(const Duration(seconds: 1)); - var category1 = await categories.insert(Category('Coffee (oz)')); - var category2 = await categories.insert(Category('Running (miles)')); - var category3 = await categories.insert(Category('Git Commits')); - var monthAgo = DateTime.now().subtract(const Duration(days: 30)); - - for (var category in [category1, category2, category3]) { - for (var i = 0; i < 30; i++) { - var date = monthAgo.add(Duration(days: i)); - var value = Random().nextInt(6) + 1; - await entries.insert(category.id!, Entry(value, date)); - } - } - } -} - -class MockCategoryApi implements CategoryApi { - final Map _storage = {}; - final StreamController> _streamController = - StreamController>.broadcast(); - - @override - Future delete(String id) async { - var removed = _storage.remove(id); - _emit(); - return removed; - } - - @override - Future get(String id) async { - return _storage[id]; - } - - @override - Future insert(Category category) async { - var id = const uuid.Uuid().v4(); - var newCategory = Category(category.name)..id = id; - _storage[id] = newCategory; - _emit(); - return newCategory; - } - - @override - Future> list() async { - return _storage.values.toList(); - } - - @override - Future update(Category category, String id) async { - _storage[id] = category; - _emit(); - return category..id = id; - } - - @override - Stream> subscribe() => _streamController.stream; - - void _emit() { - _streamController.add(_storage.values.toList()); - } -} - -class MockEntryApi implements EntryApi { - final Map _storage = {}; - final StreamController<_EntriesEvent> _streamController = - StreamController.broadcast(); - - @override - Future delete(String categoryId, String id) async { - _emit(categoryId); - return _storage.remove('$categoryId-$id'); - } - - @override - Future insert(String categoryId, Entry entry) async { - var id = const uuid.Uuid().v4(); - var newEntry = Entry(entry.value, entry.time)..id = id; - _storage['$categoryId-$id'] = newEntry; - _emit(categoryId); - return newEntry; - } - - @override - Future> list(String categoryId) async { - var list = - _storage.keys - .where((k) => k.startsWith(categoryId)) - .map((k) => _storage[k]) - .nonNulls - .toList(); - return list; - } - - @override - Future update(String categoryId, String id, Entry entry) async { - _storage['$categoryId-$id'] = entry; - _emit(categoryId); - return entry..id = id; - } - - @override - Stream> subscribe(String categoryId) { - return _streamController.stream - .where((event) => event.categoryId == categoryId) - .map((event) => event.entries); - } - - void _emit(String categoryId) { - var entries = - _storage.keys - .where((k) => k.startsWith(categoryId)) - .map((k) => _storage[k]!) - .toList(); - - _streamController.add(_EntriesEvent(categoryId, entries)); - } - - @override - Future get(String categoryId, String id) async { - return _storage['$categoryId-$id']; - } -} - -class _EntriesEvent { - final String categoryId; - final List entries; - - _EntriesEvent(this.categoryId, this.entries); -} diff --git a/experimental/web_dashboard/lib/src/app.dart b/experimental/web_dashboard/lib/src/app.dart deleted file mode 100644 index 44c247df0..000000000 --- a/experimental/web_dashboard/lib/src/app.dart +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:cloud_firestore/cloud_firestore.dart'; -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; - -import 'api/api.dart'; -import 'api/firebase.dart'; -import 'api/mock.dart'; -import 'auth/auth.dart'; -import 'auth/firebase.dart'; -import 'auth/mock.dart'; -import 'pages/home.dart'; -import 'pages/sign_in.dart'; - -/// The global state the app. -class AppState { - final Auth auth; - DashboardApi? api; - - AppState(this.auth); -} - -/// Creates a [DashboardApi] for the given user. This allows users of this -/// widget to specify whether [MockDashboardApi] or [ApiBuilder] should be -/// created when the user logs in. -typedef ApiBuilder = DashboardApi Function(User user); - -/// An app that displays a personalized dashboard. -class DashboardApp extends StatefulWidget { - static DashboardApi _mockApiBuilder(User user) => - MockDashboardApi()..fillWithMockData(); - static DashboardApi _apiBuilder(User user) => - FirebaseDashboardApi(FirebaseFirestore.instance, user.uid); - - final Auth auth; - final ApiBuilder apiBuilder; - - /// Runs the app using Firebase - DashboardApp.firebase({super.key}) - : auth = FirebaseAuthService(), - apiBuilder = _apiBuilder; - - /// Runs the app using mock data - DashboardApp.mock({super.key}) - : auth = MockAuthService(), - apiBuilder = _mockApiBuilder; - - @override - State createState() => _DashboardAppState(); -} - -class _DashboardAppState extends State { - late final AppState _appState; - - @override - void initState() { - super.initState(); - _appState = AppState(widget.auth); - } - - @override - Widget build(BuildContext context) { - return Provider.value( - value: _appState, - child: MaterialApp( - theme: ThemeData.light(), - home: SignInSwitcher( - appState: _appState, - apiBuilder: widget.apiBuilder, - ), - ), - ); - } -} - -/// Switches between showing the [SignInPage] or [HomePage], depending on -/// whether or not the user is signed in. -class SignInSwitcher extends StatefulWidget { - final AppState? appState; - final ApiBuilder? apiBuilder; - - const SignInSwitcher({this.appState, this.apiBuilder, super.key}); - - @override - State createState() => _SignInSwitcherState(); -} - -class _SignInSwitcherState extends State { - bool _isSignedIn = false; - - @override - Widget build(BuildContext context) { - return AnimatedSwitcher( - switchInCurve: Curves.easeOut, - switchOutCurve: Curves.easeOut, - duration: const Duration(milliseconds: 200), - child: - _isSignedIn - ? HomePage(onSignOut: _handleSignOut) - : SignInPage( - auth: widget.appState!.auth, - onSuccess: _handleSignIn, - ), - ); - } - - void _handleSignIn(User user) { - widget.appState!.api = widget.apiBuilder!(user); - - setState(() { - _isSignedIn = true; - }); - } - - Future _handleSignOut() async { - await widget.appState!.auth.signOut(); - setState(() { - _isSignedIn = false; - }); - } -} diff --git a/experimental/web_dashboard/lib/src/auth/auth.dart b/experimental/web_dashboard/lib/src/auth/auth.dart deleted file mode 100644 index 24cb700b6..000000000 --- a/experimental/web_dashboard/lib/src/auth/auth.dart +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -abstract class Auth { - Future get isSignedIn; - Future signIn(); - Future signOut(); -} - -abstract class User { - String get uid; -} - -class SignInException implements Exception {} diff --git a/experimental/web_dashboard/lib/src/auth/firebase.dart b/experimental/web_dashboard/lib/src/auth/firebase.dart deleted file mode 100644 index 81a798ada..000000000 --- a/experimental/web_dashboard/lib/src/auth/firebase.dart +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:firebase_auth/firebase_auth.dart' hide User; -import 'package:flutter/services.dart'; -import 'package:google_sign_in/google_sign_in.dart'; - -import 'auth.dart'; - -class FirebaseAuthService implements Auth { - final GoogleSignIn _googleSignIn = GoogleSignIn(); - final FirebaseAuth _auth = FirebaseAuth.instance; - - @override - Future get isSignedIn => _googleSignIn.isSignedIn(); - - @override - Future signIn() async { - try { - return await _signIn(); - } on PlatformException { - throw SignInException(); - } - } - - Future _signIn() async { - GoogleSignInAccount? googleUser; - if (await isSignedIn) { - googleUser = await _googleSignIn.signInSilently(); - } else { - googleUser = await _googleSignIn.signIn(); - } - - var googleAuth = await googleUser!.authentication; - - var credential = GoogleAuthProvider.credential( - accessToken: googleAuth.accessToken, - idToken: googleAuth.idToken, - ); - - var authResult = await _auth.signInWithCredential(credential); - - return _FirebaseUser(authResult.user!.uid); - } - - @override - Future signOut() async { - await Future.wait([_auth.signOut(), _googleSignIn.signOut()]); - } -} - -class _FirebaseUser implements User { - @override - final String uid; - - _FirebaseUser(this.uid); -} diff --git a/experimental/web_dashboard/lib/src/auth/mock.dart b/experimental/web_dashboard/lib/src/auth/mock.dart deleted file mode 100644 index e54d51831..000000000 --- a/experimental/web_dashboard/lib/src/auth/mock.dart +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'auth.dart'; - -class MockAuthService implements Auth { - @override - Future get isSignedIn async => false; - - @override - Future signIn() async { - return MockUser(); - } - - @override - Future signOut() async { - return null; - } -} - -class MockUser implements User { - @override - String get uid => "123"; -} diff --git a/experimental/web_dashboard/lib/src/pages/dashboard.dart b/experimental/web_dashboard/lib/src/pages/dashboard.dart deleted file mode 100644 index d120b118b..000000000 --- a/experimental/web_dashboard/lib/src/pages/dashboard.dart +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; - -import '../api/api.dart'; -import '../app.dart'; -import '../widgets/category_chart.dart'; - -class DashboardPage extends StatelessWidget { - const DashboardPage({super.key}); - - @override - Widget build(BuildContext context) { - var appState = Provider.of(context); - return FutureBuilder>( - future: appState.api!.categories.list(), - builder: (context, futureSnapshot) { - if (!futureSnapshot.hasData) { - return const Center(child: CircularProgressIndicator()); - } - return StreamBuilder>( - initialData: futureSnapshot.data, - stream: appState.api!.categories.subscribe(), - builder: (context, snapshot) { - if (snapshot.data == null) { - return const Center(child: CircularProgressIndicator()); - } - return Dashboard(snapshot.data); - }, - ); - }, - ); - } -} - -class Dashboard extends StatelessWidget { - final List? categories; - - const Dashboard(this.categories, {super.key}); - - @override - Widget build(BuildContext context) { - var api = Provider.of(context).api; - return Scrollbar( - child: GridView( - gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( - childAspectRatio: 2, - maxCrossAxisExtent: 500, - ), - children: [ - ...categories!.map( - (category) => - Card(child: CategoryChart(category: category, api: api)), - ), - ], - ), - ); - } -} diff --git a/experimental/web_dashboard/lib/src/pages/entries.dart b/experimental/web_dashboard/lib/src/pages/entries.dart deleted file mode 100644 index 0220c9764..000000000 --- a/experimental/web_dashboard/lib/src/pages/entries.dart +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:flutter/material.dart'; -import 'package:intl/intl.dart' as intl; -import 'package:provider/provider.dart'; - -import '../api/api.dart'; -import '../app.dart'; -import '../widgets/categories_dropdown.dart'; -import '../widgets/dialogs.dart'; - -class EntriesPage extends StatefulWidget { - const EntriesPage({super.key}); - - @override - State createState() => _EntriesPageState(); -} - -class _EntriesPageState extends State { - Category? _selected; - - @override - Widget build(BuildContext context) { - var appState = Provider.of(context); - return Column( - children: [ - CategoryDropdown( - api: appState.api!.categories, - onSelected: (category) => setState(() => _selected = category), - ), - Expanded( - child: - _selected == null - ? const Center(child: CircularProgressIndicator()) - : EntriesList( - category: _selected, - api: appState.api!.entries, - ), - ), - ], - ); - } -} - -class EntriesList extends StatefulWidget { - final Category? category; - final EntryApi api; - - EntriesList({this.category, required this.api}) - : super(key: ValueKey(category?.id)); - - @override - State createState() => _EntriesListState(); -} - -class _EntriesListState extends State { - @override - Widget build(BuildContext context) { - if (widget.category == null) { - return _buildLoadingIndicator(); - } - - return FutureBuilder>( - future: widget.api.list(widget.category!.id!), - builder: (context, futureSnapshot) { - if (!futureSnapshot.hasData) { - return _buildLoadingIndicator(); - } - return StreamBuilder>( - initialData: futureSnapshot.data, - stream: widget.api.subscribe(widget.category!.id!), - builder: (context, snapshot) { - if (!snapshot.hasData) { - return _buildLoadingIndicator(); - } - return ListView.builder( - itemBuilder: (context, index) { - return EntryTile( - category: widget.category, - entry: snapshot.data![index], - ); - }, - itemCount: snapshot.data!.length, - ); - }, - ); - }, - ); - } - - Widget _buildLoadingIndicator() { - return const Center(child: CircularProgressIndicator()); - } -} - -class EntryTile extends StatelessWidget { - final Category? category; - final Entry? entry; - - const EntryTile({this.category, this.entry, super.key}); - - @override - Widget build(BuildContext context) { - return ListTile( - title: Text(entry!.value.toString()), - subtitle: Text(intl.DateFormat('MM/dd/yy h:mm a').format(entry!.time)), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - TextButton( - child: const Text('Edit'), - onPressed: () { - showDialog( - context: context, - builder: (context) { - return EditEntryDialog(category: category, entry: entry); - }, - ); - }, - ), - TextButton( - child: const Text('Delete'), - onPressed: () async { - final appState = Provider.of(context, listen: false); - final scaffoldMessenger = ScaffoldMessenger.of(context); - final bool? shouldDelete = await showDialog( - context: context, - builder: - (context) => AlertDialog( - title: const Text('Delete entry?'), - actions: [ - TextButton( - child: const Text('Cancel'), - onPressed: () => Navigator.of(context).pop(false), - ), - TextButton( - child: const Text('Delete'), - onPressed: () => Navigator.of(context).pop(true), - ), - ], - ), - ); - if (shouldDelete != null && shouldDelete) { - await appState.api!.entries.delete(category!.id!, entry!.id!); - scaffoldMessenger.showSnackBar( - const SnackBar(content: Text('Entry deleted')), - ); - } - }, - ), - ], - ), - ); - } -} diff --git a/experimental/web_dashboard/lib/src/pages/home.dart b/experimental/web_dashboard/lib/src/pages/home.dart deleted file mode 100644 index 9e9b652c2..000000000 --- a/experimental/web_dashboard/lib/src/pages/home.dart +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'dart:async'; - -import 'package:flutter/material.dart'; - -import '../widgets/dialogs.dart'; -import '../widgets/third_party/adaptive_scaffold.dart'; -import 'dashboard.dart'; -import 'entries.dart'; - -class HomePage extends StatefulWidget { - final VoidCallback onSignOut; - - const HomePage({required this.onSignOut, super.key}); - - @override - State createState() => _HomePageState(); -} - -class _HomePageState extends State { - int _pageIndex = 0; - - @override - Widget build(BuildContext context) { - return AdaptiveScaffold( - title: const Text('Dashboard App'), - actions: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: TextButton( - style: TextButton.styleFrom(foregroundColor: Colors.white), - onPressed: () => _handleSignOut(), - child: const Text('Sign Out'), - ), - ), - ], - currentIndex: _pageIndex, - destinations: const [ - AdaptiveScaffoldDestination(title: 'Home', icon: Icons.home), - AdaptiveScaffoldDestination(title: 'Entries', icon: Icons.list), - AdaptiveScaffoldDestination(title: 'Settings', icon: Icons.settings), - ], - body: _pageAtIndex(_pageIndex), - onNavigationIndexChange: (newIndex) { - setState(() { - _pageIndex = newIndex; - }); - }, - floatingActionButton: - _hasFloatingActionButton ? _buildFab(context) : null, - ); - } - - bool get _hasFloatingActionButton { - if (_pageIndex == 2) return false; - return true; - } - - FloatingActionButton _buildFab(BuildContext context) { - return FloatingActionButton( - child: const Icon(Icons.add), - onPressed: () => _handleFabPressed(), - ); - } - - void _handleFabPressed() { - if (_pageIndex == 0) { - showDialog( - context: context, - builder: (context) => const NewCategoryDialog(), - ); - return; - } - - if (_pageIndex == 1) { - showDialog( - context: context, - builder: (context) => const NewEntryDialog(), - ); - return; - } - } - - Future _handleSignOut() async { - var shouldSignOut = await (showDialog( - context: context, - builder: - (context) => AlertDialog( - title: const Text('Are you sure you want to sign out?'), - actions: [ - TextButton( - child: const Text('No'), - onPressed: () { - Navigator.of(context).pop(false); - }, - ), - TextButton( - child: const Text('Yes'), - onPressed: () { - Navigator.of(context).pop(true); - }, - ), - ], - ), - )); - - if (shouldSignOut == null || !shouldSignOut) { - return; - } - - widget.onSignOut(); - } - - static Widget _pageAtIndex(int index) { - if (index == 0) { - return const DashboardPage(); - } - - if (index == 1) { - return const EntriesPage(); - } - - return const Center(child: Text('Settings page')); - } -} diff --git a/experimental/web_dashboard/lib/src/pages/sign_in.dart b/experimental/web_dashboard/lib/src/pages/sign_in.dart deleted file mode 100644 index d441be52c..000000000 --- a/experimental/web_dashboard/lib/src/pages/sign_in.dart +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:flutter/material.dart'; - -import '../auth/auth.dart'; - -class SignInPage extends StatelessWidget { - final Auth auth; - final ValueChanged onSuccess; - - const SignInPage({required this.auth, required this.onSuccess, super.key}); - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Center(child: SignInButton(auth: auth, onSuccess: onSuccess)), - ); - } -} - -class SignInButton extends StatefulWidget { - final Auth auth; - final ValueChanged onSuccess; - - const SignInButton({required this.auth, required this.onSuccess, super.key}); - - @override - State createState() => _SignInButtonState(); -} - -class _SignInButtonState extends State { - Future? _checkSignInFuture; - - @override - void initState() { - super.initState(); - _checkSignInFuture = _checkIfSignedIn(); - } - - // Check if the user is signed in. If the user is already signed in (for - // example, if they signed in and refreshed the page), invoke the `onSuccess` - // callback right away. - Future _checkIfSignedIn() async { - var alreadySignedIn = await widget.auth.isSignedIn; - if (alreadySignedIn) { - var user = await widget.auth.signIn(); - widget.onSuccess(user); - } - return alreadySignedIn; - } - - Future _signIn() async { - try { - var user = await widget.auth.signIn(); - widget.onSuccess(user); - } on SignInException { - _showError(); - } - } - - @override - Widget build(BuildContext context) { - return FutureBuilder( - future: _checkSignInFuture, - builder: (context, snapshot) { - // If signed in, or the future is incomplete, show a circular - // progress indicator. - var alreadySignedIn = snapshot.data; - if (snapshot.connectionState != ConnectionState.done || - alreadySignedIn == true) { - return const CircularProgressIndicator(); - } - - // If sign in failed, show toast and the login button - if (snapshot.hasError) { - _showError(); - } - - return FilledButton( - child: const Text('Sign In with Google'), - onPressed: () => _signIn(), - ); - }, - ); - } - - void _showError() { - ScaffoldMessenger.of( - context, - ).showSnackBar(const SnackBar(content: Text('Unable to sign in.'))); - } -} diff --git a/experimental/web_dashboard/lib/src/utils/chart_utils.dart b/experimental/web_dashboard/lib/src/utils/chart_utils.dart deleted file mode 100644 index bbb23840c..000000000 --- a/experimental/web_dashboard/lib/src/utils/chart_utils.dart +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import '../api/api.dart'; -import 'day_helpers.dart'; - -/// The total value of one or more [Entry]s on a given day. -class EntryTotal { - final DateTime day; - int value; - - EntryTotal(this.day, this.value); -} - -/// Returns a list of [EntryTotal] objects. Each [EntryTotal] is the sum of -/// the values of all the entries on a given day. -List entryTotalsByDay( - List? entries, - int daysAgo, { - DateTime? today, -}) { - today ??= DateTime.now(); - return _entryTotalsByDay(entries, daysAgo, today).toList(); -} - -Iterable _entryTotalsByDay( - List? entries, - int daysAgo, - DateTime today, -) sync* { - var start = today.subtract(Duration(days: daysAgo)); - var entriesByDay = _entriesInRange(start, today, entries); - - for (var i = 0; i < entriesByDay.length; i++) { - var list = entriesByDay[i]; - var entryTotal = EntryTotal(start.add(Duration(days: i)), 0); - - for (var entry in list) { - entryTotal.value += entry.value; - } - - yield entryTotal; - } -} - -/// Groups entries by day between [start] and [end]. The result is a list of -/// lists. The outer list represents the number of days since [start], and the -/// inner list is the group of entries on that day. -List> _entriesInRange( - DateTime start, - DateTime end, - List? entries, -) => _entriesInRangeImpl(start, end, entries).toList(); - -Iterable> _entriesInRangeImpl( - DateTime start, - DateTime end, - List? entries, -) sync* { - start = start.atMidnight; - end = end.atMidnight; - var d = start; - - while (d.compareTo(end) <= 0) { - var es = []; - for (var entry in entries!) { - if (d.isSameDay(entry.time.atMidnight)) { - es.add(entry); - } - } - - yield es; - d = d.add(const Duration(days: 1)); - } -} diff --git a/experimental/web_dashboard/lib/src/utils/day_helpers.dart b/experimental/web_dashboard/lib/src/utils/day_helpers.dart deleted file mode 100644 index 9b8993889..000000000 --- a/experimental/web_dashboard/lib/src/utils/day_helpers.dart +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -extension DayUtils on DateTime { - /// The UTC date portion of a datetime, without the minutes, seconds, etc. - DateTime get atMidnight { - return DateTime.utc(year, month, day); - } - - /// Checks that the two [DateTime]s share the same date. - bool isSameDay(DateTime d2) { - return year == d2.year && month == d2.month && day == d2.day; - } -} diff --git a/experimental/web_dashboard/lib/src/widgets/categories_dropdown.dart b/experimental/web_dashboard/lib/src/widgets/categories_dropdown.dart deleted file mode 100644 index 3cfc6bf40..000000000 --- a/experimental/web_dashboard/lib/src/widgets/categories_dropdown.dart +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'dart:async'; - -import 'package:flutter/material.dart'; -import '../api/api.dart'; - -/// Subscribes to the latest list of categories and allows the user to select -/// one. -class CategoryDropdown extends StatefulWidget { - final CategoryApi api; - final ValueChanged onSelected; - - const CategoryDropdown({ - required this.api, - required this.onSelected, - super.key, - }); - - @override - State createState() => _CategoryDropdownState(); -} - -class _CategoryDropdownState extends State { - Category? _selected; - Future>? _future; - Stream>? _stream; - - @override - void initState() { - super.initState(); - - // This widget needs to wait for the list of Categories, select the first - // Category, and emit an `onSelected` event. - // - // This could be done inside the FutureBuilder's `builder` callback, - // but calling setState() during the build is an error. (Calling the - // onSelected callback will also cause the parent widget to call - // setState()). - // - // Instead, we'll create a new Future that sets the selected Category and - // calls `onSelected` if necessary. Then, we'll pass *that* future to - // FutureBuilder. Now the selected category is set and events are emitted - // *before* the build is triggered by the FutureBuilder. - _future = widget.api.list().then((categories) { - if (categories.isEmpty) { - return categories; - } - - _setSelected(categories.first); - return categories; - }); - - // Same here, we'll create a new stream that handles any potential - // setState() operations before we trigger our StreamBuilder. - _stream = widget.api.subscribe().map((categories) { - if (!categories.contains(_selected) && categories.isNotEmpty) { - _setSelected(categories.first); - } - - return categories; - }); - } - - @override - Widget build(BuildContext context) { - return FutureBuilder>( - future: _future, - builder: (context, futureSnapshot) { - // Show an empty dropdown while the data is loading. - if (!futureSnapshot.hasData) { - return DropdownButton(items: const [], onChanged: null); - } - - return StreamBuilder>( - initialData: futureSnapshot.hasData ? futureSnapshot.data : [], - stream: _stream, - builder: (context, snapshot) { - var data = snapshot.hasData ? snapshot.data! : []; - return DropdownButton( - value: _selected, - items: data.map(_buildDropdownItem).toList(), - onChanged: (category) { - _setSelected(category); - }, - ); - }, - ); - }, - ); - } - - void _setSelected(Category? category) { - if (_selected == category) { - return; - } - setState(() { - _selected = category; - }); - - widget.onSelected(_selected); - } - - DropdownMenuItem _buildDropdownItem(Category category) { - return DropdownMenuItem( - value: category, - child: Text(category.name), - ); - } -} diff --git a/experimental/web_dashboard/lib/src/widgets/category_chart.dart b/experimental/web_dashboard/lib/src/widgets/category_chart.dart deleted file mode 100644 index 48fba2e80..000000000 --- a/experimental/web_dashboard/lib/src/widgets/category_chart.dart +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:community_charts_flutter/community_charts_flutter.dart' - as charts; -import 'package:flutter/material.dart'; -import 'package:intl/intl.dart' as intl; - -import '../api/api.dart'; -import '../utils/chart_utils.dart' as utils; -import 'dialogs.dart'; - -// The number of days to show in the chart -const _daysBefore = 10; - -class CategoryChart extends StatelessWidget { - final Category category; - final DashboardApi? api; - - const CategoryChart({required this.category, required this.api, super.key}); - - @override - Widget build(BuildContext context) { - return Column( - children: [ - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text(category.name), - IconButton( - icon: const Icon(Icons.settings), - onPressed: () { - showDialog( - context: context, - builder: (context) { - return EditCategoryDialog(category: category); - }, - ); - }, - ), - ], - ), - ), - Expanded( - // Load the initial snapshot using a FutureBuilder, and subscribe to - // additional updates with a StreamBuilder. - child: FutureBuilder>( - future: api!.entries.list(category.id!), - builder: (context, futureSnapshot) { - if (!futureSnapshot.hasData) { - return _buildLoadingIndicator(); - } - return StreamBuilder>( - initialData: futureSnapshot.data, - stream: api!.entries.subscribe(category.id!), - builder: (context, snapshot) { - if (!snapshot.hasData) { - return _buildLoadingIndicator(); - } - return _BarChart(entries: snapshot.data); - }, - ); - }, - ), - ), - ], - ); - } - - Widget _buildLoadingIndicator() { - return const Center(child: CircularProgressIndicator()); - } -} - -class _BarChart extends StatelessWidget { - final List? entries; - - const _BarChart({this.entries}); - - @override - Widget build(BuildContext context) { - return charts.BarChart([_seriesData()], animate: false); - } - - charts.Series _seriesData() { - return charts.Series( - id: 'Entries', - colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault, - domainFn: (entryTotal, _) { - var format = intl.DateFormat.Md(); - return format.format(entryTotal.day); - }, - measureFn: (total, _) { - return total.value; - }, - data: utils.entryTotalsByDay(entries, _daysBefore), - ); - } -} diff --git a/experimental/web_dashboard/lib/src/widgets/category_forms.dart b/experimental/web_dashboard/lib/src/widgets/category_forms.dart deleted file mode 100644 index e60ce292f..000000000 --- a/experimental/web_dashboard/lib/src/widgets/category_forms.dart +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:web_dashboard/src/api/api.dart'; -import 'package:web_dashboard/src/app.dart'; - -class NewCategoryForm extends StatefulWidget { - const NewCategoryForm({super.key}); - - @override - State createState() => _NewCategoryFormState(); -} - -class _NewCategoryFormState extends State { - final Category _category = Category(''); - - @override - Widget build(BuildContext context) { - var api = Provider.of(context).api; - return EditCategoryForm( - category: _category, - onDone: (shouldInsert) { - if (shouldInsert) { - api!.categories.insert(_category); - } - Navigator.of(context).pop(); - }, - ); - } -} - -class EditCategoryForm extends StatefulWidget { - final Category category; - final ValueChanged onDone; - - const EditCategoryForm({ - required this.category, - required this.onDone, - super.key, - }); - - @override - State createState() => _EditCategoryFormState(); -} - -class _EditCategoryFormState extends State { - final _formKey = GlobalKey(); - - @override - Widget build(BuildContext context) { - return Form( - key: _formKey, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: TextFormField( - initialValue: widget.category.name, - decoration: const InputDecoration(labelText: 'Name'), - onChanged: (newValue) { - widget.category.name = newValue; - }, - validator: (value) { - if (value!.isEmpty) { - return 'Please enter a name'; - } - return null; - }, - ), - ), - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: FilledButton( - child: const Text('Cancel'), - onPressed: () { - widget.onDone(false); - }, - ), - ), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: FilledButton( - child: const Text('OK'), - onPressed: () { - if (_formKey.currentState!.validate()) { - widget.onDone(true); - } - }, - ), - ), - ], - ), - ], - ), - ); - } -} diff --git a/experimental/web_dashboard/lib/src/widgets/dialogs.dart b/experimental/web_dashboard/lib/src/widgets/dialogs.dart deleted file mode 100644 index 91ae49bd2..000000000 --- a/experimental/web_dashboard/lib/src/widgets/dialogs.dart +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:web_dashboard/src/api/api.dart'; -import 'package:web_dashboard/src/widgets/category_forms.dart'; - -import '../app.dart'; -import 'edit_entry.dart'; - -class NewCategoryDialog extends StatelessWidget { - const NewCategoryDialog({super.key}); - - @override - Widget build(BuildContext context) { - return const SimpleDialog( - title: Text('New Category'), - children: [NewCategoryForm()], - ); - } -} - -class EditCategoryDialog extends StatelessWidget { - final Category category; - - const EditCategoryDialog({required this.category, super.key}); - - @override - Widget build(BuildContext context) { - var api = Provider.of(context).api; - - return SimpleDialog( - title: const Text('Edit Category'), - children: [ - EditCategoryForm( - category: category, - onDone: (shouldUpdate) { - if (shouldUpdate) { - api!.categories.update(category, category.id!); - } - Navigator.of(context).pop(); - }, - ), - ], - ); - } -} - -class NewEntryDialog extends StatefulWidget { - const NewEntryDialog({super.key}); - - @override - State createState() => _NewEntryDialogState(); -} - -class _NewEntryDialogState extends State { - @override - Widget build(BuildContext context) { - return const SimpleDialog( - title: Text('New Entry'), - children: [NewEntryForm()], - ); - } -} - -class EditEntryDialog extends StatelessWidget { - final Category? category; - final Entry? entry; - - const EditEntryDialog({this.category, this.entry, super.key}); - - @override - Widget build(BuildContext context) { - var api = Provider.of(context).api; - - return SimpleDialog( - title: const Text('Edit Entry'), - children: [ - EditEntryForm( - entry: entry, - onDone: (shouldUpdate) { - if (shouldUpdate) { - api!.entries.update(category!.id!, entry!.id!, entry!); - } - Navigator.of(context).pop(); - }, - ), - ], - ); - } -} diff --git a/experimental/web_dashboard/lib/src/widgets/edit_entry.dart b/experimental/web_dashboard/lib/src/widgets/edit_entry.dart deleted file mode 100644 index d08aac246..000000000 --- a/experimental/web_dashboard/lib/src/widgets/edit_entry.dart +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:flutter/material.dart'; -import 'package:intl/intl.dart' as intl; -import 'package:provider/provider.dart'; -import 'package:web_dashboard/src/api/api.dart'; - -import '../app.dart'; -import 'categories_dropdown.dart'; - -class NewEntryForm extends StatefulWidget { - const NewEntryForm({super.key}); - - @override - State createState() => _NewEntryFormState(); -} - -class _NewEntryFormState extends State { - late Category _selected; - final Entry _entry = Entry(0, DateTime.now()); - - @override - Widget build(BuildContext context) { - var api = Provider.of(context).api!; - - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: CategoryDropdown( - api: api.categories, - onSelected: (category) { - if (category == null) return; - setState(() { - _selected = category; - }); - }, - ), - ), - EditEntryForm( - entry: _entry, - onDone: (shouldInsert) { - if (shouldInsert) { - api.entries.insert(_selected.id!, _entry); - } - Navigator.of(context).pop(); - }, - ), - ], - ); - } -} - -class EditEntryForm extends StatefulWidget { - final Entry? entry; - final ValueChanged onDone; - - const EditEntryForm({required this.entry, required this.onDone, super.key}); - - @override - State createState() => _EditEntryFormState(); -} - -class _EditEntryFormState extends State { - final _formKey = GlobalKey(); - - @override - Widget build(BuildContext context) { - return Form( - key: _formKey, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.all(8), - child: TextFormField( - initialValue: widget.entry!.value.toString(), - decoration: const InputDecoration(labelText: 'Value'), - keyboardType: TextInputType.number, - validator: (value) { - try { - int.parse(value!); - } catch (e) { - return "Please enter a whole number"; - } - return null; - }, - onChanged: (newValue) { - widget.entry!.value = int.parse(newValue); - }, - ), - ), - Padding( - padding: const EdgeInsets.all(8), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text(intl.DateFormat('MM/dd/yyyy').format(widget.entry!.time)), - FilledButton( - child: const Text('Edit'), - onPressed: () async { - var result = await showDatePicker( - context: context, - initialDate: widget.entry!.time, - firstDate: DateTime.now().subtract( - const Duration(days: 365), - ), - lastDate: DateTime.now(), - ); - if (result == null) { - return; - } - setState(() { - widget.entry!.time = result; - }); - }, - ), - ], - ), - ), - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: FilledButton( - child: const Text('Cancel'), - onPressed: () { - widget.onDone(false); - }, - ), - ), - Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: FilledButton( - child: const Text('OK'), - onPressed: () { - if (_formKey.currentState!.validate()) { - widget.onDone(true); - } - }, - ), - ), - ], - ), - ], - ), - ); - } -} diff --git a/experimental/web_dashboard/lib/src/widgets/third_party/adaptive_scaffold.dart b/experimental/web_dashboard/lib/src/widgets/third_party/adaptive_scaffold.dart deleted file mode 100644 index a8b08e4c3..000000000 --- a/experimental/web_dashboard/lib/src/widgets/third_party/adaptive_scaffold.dart +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:flutter/material.dart'; - -bool _isLargeScreen(BuildContext context) { - return MediaQuery.of(context).size.width > 960.0; -} - -bool _isMediumScreen(BuildContext context) { - return MediaQuery.of(context).size.width > 640.0; -} - -/// See bottomNavigationBarItem or NavigationRailDestination -class AdaptiveScaffoldDestination { - final String title; - final IconData icon; - - const AdaptiveScaffoldDestination({required this.title, required this.icon}); -} - -/// A widget that adapts to the current display size, displaying a [Drawer], -/// [NavigationRail], or [BottomNavigationBar]. Navigation destinations are -/// defined in the [destinations] parameter. -class AdaptiveScaffold extends StatefulWidget { - final Widget? title; - final List actions; - final Widget? body; - final int currentIndex; - final List destinations; - final ValueChanged? onNavigationIndexChange; - final FloatingActionButton? floatingActionButton; - - const AdaptiveScaffold({ - this.title, - this.body, - this.actions = const [], - required this.currentIndex, - required this.destinations, - this.onNavigationIndexChange, - this.floatingActionButton, - super.key, - }); - - @override - State createState() => _AdaptiveScaffoldState(); -} - -class _AdaptiveScaffoldState extends State { - @override - Widget build(BuildContext context) { - // Show a Drawer - if (_isLargeScreen(context)) { - return Row( - children: [ - Drawer( - child: Column( - children: [ - DrawerHeader(child: Center(child: widget.title)), - for (var d in widget.destinations) - ListTile( - leading: Icon(d.icon), - title: Text(d.title), - selected: - widget.destinations.indexOf(d) == widget.currentIndex, - onTap: () => _destinationTapped(d), - ), - ], - ), - ), - VerticalDivider(width: 1, thickness: 1, color: Colors.grey[300]), - Expanded( - child: Scaffold( - appBar: AppBar(actions: widget.actions), - body: widget.body, - floatingActionButton: widget.floatingActionButton, - ), - ), - ], - ); - } - - // Show a navigation rail - if (_isMediumScreen(context)) { - return Scaffold( - appBar: AppBar(title: widget.title, actions: widget.actions), - body: Row( - children: [ - NavigationRail( - leading: widget.floatingActionButton, - destinations: [ - ...widget.destinations.map( - (d) => NavigationRailDestination( - icon: Icon(d.icon), - label: Text(d.title), - ), - ), - ], - selectedIndex: widget.currentIndex, - onDestinationSelected: widget.onNavigationIndexChange ?? (_) {}, - ), - VerticalDivider(width: 1, thickness: 1, color: Colors.grey[300]), - Expanded(child: widget.body!), - ], - ), - ); - } - - // Show a bottom app bar - return Scaffold( - body: widget.body, - appBar: AppBar(title: widget.title, actions: widget.actions), - bottomNavigationBar: BottomNavigationBar( - items: [ - ...widget.destinations.map( - (d) => BottomNavigationBarItem(icon: Icon(d.icon), label: d.title), - ), - ], - currentIndex: widget.currentIndex, - onTap: widget.onNavigationIndexChange, - ), - floatingActionButton: widget.floatingActionButton, - ); - } - - void _destinationTapped(AdaptiveScaffoldDestination destination) { - var idx = widget.destinations.indexOf(destination); - if (idx != widget.currentIndex) { - widget.onNavigationIndexChange!(idx); - } - } -} diff --git a/experimental/web_dashboard/pubspec.yaml b/experimental/web_dashboard/pubspec.yaml deleted file mode 100644 index 38c4b899d..000000000 --- a/experimental/web_dashboard/pubspec.yaml +++ /dev/null @@ -1,34 +0,0 @@ -name: web_dashboard -description: A dashboard app sample -version: 1.0.0+1 -publish_to: none - -environment: - sdk: ^3.7.0-0 - -dependencies: - cloud_firestore: ^5.0.1 - community_charts_flutter: ^1.0.2 - cupertino_icons: ^1.0.0 - firebase_auth: ^5.1.0 - firebase_core: ^3.1.0 - flutter: - sdk: flutter - google_sign_in: ^6.0.0 - intl: any # Pinned by Flutter SDK version - json_annotation: ^4.5.0 - path: ^1.8.1 - provider: ^6.0.0 - uuid: ^4.0.0 - -dev_dependencies: - analysis_defaults: - path: ../../analysis_defaults - build_runner: ^2.1.0 - flutter_test: - sdk: flutter - grinder: ^0.9.0 - json_serializable: ^6.2.0 - -flutter: - uses-material-design: true diff --git a/experimental/web_dashboard/test/chart_utils_test.dart b/experimental/web_dashboard/test/chart_utils_test.dart deleted file mode 100644 index 02b0d8a90..000000000 --- a/experimental/web_dashboard/test/chart_utils_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:flutter_test/flutter_test.dart'; - -import 'package:web_dashboard/src/api/api.dart'; -import 'package:web_dashboard/src/utils/chart_utils.dart'; - -void main() { - group('chart utils', () { - test('totals entries by day', () async { - var entries = [ - Entry(10, DateTime(2020, 3, 1)), - Entry(10, DateTime(2020, 3, 1)), - Entry(10, DateTime(2020, 3, 2)), - ]; - var totals = entryTotalsByDay(entries, 2, today: DateTime(2020, 3, 2)); - expect(totals, hasLength(3)); - expect(totals[1].value, 20); - expect(totals[2].value, 10); - }); - test('days', () async { - expect( - DateTime.utc(2020, 1, 3).difference(DateTime.utc(2020, 1, 2)).inDays, - 1, - ); - }); - }); -} diff --git a/experimental/web_dashboard/test/mock_service_test.dart b/experimental/web_dashboard/test/mock_service_test.dart deleted file mode 100644 index edca1de5f..000000000 --- a/experimental/web_dashboard/test/mock_service_test.dart +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:flutter_test/flutter_test.dart'; - -import 'package:web_dashboard/src/api/api.dart'; -import 'package:web_dashboard/src/api/mock.dart'; - -void main() { - group('mock dashboard API', () { - late DashboardApi api; - - setUp(() { - api = MockDashboardApi(); - }); - - group('items', () { - test('insert', () async { - var category = await api.categories.insert(Category('Coffees Drank')); - expect(category.name, 'Coffees Drank'); - }); - - test('delete', () async { - await api.categories.insert(Category('Coffees Drank')); - var category = await api.categories.insert(Category('Miles Ran')); - var removed = await api.categories.delete(category.id!); - - expect(removed, isNotNull); - expect(removed!.name, 'Miles Ran'); - - var categories = await api.categories.list(); - expect(categories, hasLength(1)); - }); - - test('update', () async { - var category = await api.categories.insert(Category('Coffees Drank')); - await api.categories.update(Category('Bagels Consumed'), category.id!); - - var latest = await api.categories.get(category.id!); - expect(latest, isNotNull); - expect(latest!.name, equals('Bagels Consumed')); - }); - test('subscribe', () async { - var stream = api.categories.subscribe(); - - stream.listen( - expectAsync1((x) { - expect(x, hasLength(1)); - expect(x.first.name, equals('Coffees Drank')); - }, count: 1), - ); - await api.categories.insert(Category('Coffees Drank')); - }); - }); - - group('entry service', () { - late Category category; - DateTime dateTime = DateTime(2020, 1, 1, 30, 45); - - setUp(() async { - category = await api.categories.insert( - Category('Lines of code committed'), - ); - }); - - test('insert', () async { - var entry = await api.entries.insert(category.id!, Entry(1, dateTime)); - - expect(entry.value, 1); - expect(entry.time, dateTime); - }); - - test('delete', () async { - await api.entries.insert(category.id!, Entry(1, dateTime)); - var entry2 = await api.entries.insert(category.id!, Entry(2, dateTime)); - - await api.entries.delete(category.id!, entry2.id!); - - var entries = await api.entries.list(category.id!); - expect(entries, hasLength(1)); - }); - - test('update', () async { - var entry = await api.entries.insert(category.id!, Entry(1, dateTime)); - var updated = await api.entries.update( - category.id!, - entry.id!, - Entry(2, dateTime), - ); - expect(updated.value, 2); - }); - - test('subscribe', () async { - var stream = api.entries.subscribe(category.id!); - - stream.listen( - expectAsync1((x) { - expect(x, hasLength(1)); - expect(x.first.value, equals(1)); - }, count: 1), - ); - - await api.entries.insert(category.id!, Entry(1, dateTime)); - }); - }); - }); -} diff --git a/experimental/web_dashboard/tool/grind.dart b/experimental/web_dashboard/tool/grind.dart deleted file mode 100644 index 1728347a2..000000000 --- a/experimental/web_dashboard/tool/grind.dart +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. -import 'dart:convert'; -import 'dart:io'; - -import 'package:grinder/grinder.dart'; -import 'package:path/path.dart' as path; - -void main(List args) => grind(args); - -@Task() -void runSkia() { - run( - 'flutter', - arguments: - 'run -d web --web-port=5000 --release --dart-define=FLUTTER_WEB_USE_SKIA=true lib/main.dart ' - .split(' '), - ); -} - -@Task() -void runWeb() { - run( - 'flutter', - arguments: 'run -d web --web-port=5000 lib/main.dart '.split(' '), - ); -} - -@Task() -void runFirebase() { - run( - 'flutter', - arguments: 'run -d web --web-port=5000 lib/main_firebase.dart '.split(' '), - ); -} - -@Task() -void runFirebaseSkia() { - run( - 'flutter', - arguments: - 'run -d web --web-port=5000 --release --dart-define=FLUTTER_WEB_USE_SKIA=true lib/main_firebase.dart' - .split(' '), - ); -} - -@Task() -void test() { - TestRunner().testAsync(); -} - -@DefaultTask() -@Depends(test, copyright) -void build() { - Pub.build(); -} - -@Task() -void clean() => defaultClean(); - -@Task() -void generate() { - Pub.run('build_runner', arguments: ['build']); -} - -const _copyright = - '''// Copyright 2020, the Flutter project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file.'''; - -@Task() -Future copyright() async { - var files = []; - await for (var file in _filesWithoutCopyright()) { - files.add(file); - } - - if (files.isNotEmpty) { - log('Found Dart files without a copyright header:'); - for (var file in files) { - log(file.toString()); - } - fail('run "grind fix-copyright" to add copyright headers'); - } -} - -@Task() -Future fixCopyright() async { - await for (var file in _filesWithoutCopyright()) { - var contents = await file.readAsString(); - await file.writeAsString('$_copyright\n\n$contents'); - } -} - -Stream _filesWithoutCopyright() async* { - var set = FileSet.fromDir(Directory('.'), recurse: true); - var dartFiles = set.files.where( - (file) => path.extension(file.path) == '.dart', - ); - - for (var file in dartFiles) { - var firstThreeLines = await file - .openRead() - .transform(utf8.decoder) - .transform(const LineSplitter()) - .take(3) - .fold('', (previous, element) { - if (previous == '') return element; - return '$previous\n$element'; - }); - - if (firstThreeLines != _copyright) { - yield file; - } - } -} diff --git a/experimental/web_dashboard/web/firebase_init.js b/experimental/web_dashboard/web/firebase_init.js deleted file mode 100644 index 54f55233f..000000000 --- a/experimental/web_dashboard/web/firebase_init.js +++ /dev/null @@ -1,12 +0,0 @@ -// Your web app's Firebase configuration -var firebaseConfig = { - apiKey: "", - authDomain: "", - databaseURL: "", - projectId: "", - storageBucket: "", - messagingSenderId: "", - appId: "" -}; -// Initialize Firebase -firebase.initializeApp(firebaseConfig); diff --git a/experimental/web_dashboard/web/icons/Icon-192.png b/experimental/web_dashboard/web/icons/Icon-192.png deleted file mode 100644 index b749bfef0..000000000 Binary files a/experimental/web_dashboard/web/icons/Icon-192.png and /dev/null differ diff --git a/experimental/web_dashboard/web/icons/Icon-512.png b/experimental/web_dashboard/web/icons/Icon-512.png deleted file mode 100644 index 88cfd48df..000000000 Binary files a/experimental/web_dashboard/web/icons/Icon-512.png and /dev/null differ diff --git a/experimental/web_dashboard/web/index.html b/experimental/web_dashboard/web/index.html deleted file mode 100644 index 17171134f..000000000 --- a/experimental/web_dashboard/web/index.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - web_dashboard - - - - - - - - - - - - - - - - - diff --git a/experimental/web_dashboard/web/manifest.json b/experimental/web_dashboard/web/manifest.json deleted file mode 100644 index 0aeff5984..000000000 --- a/experimental/web_dashboard/web/manifest.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "web_dashboard", - "short_name": "web_dashboard", - "start_url": ".", - "display": "minimal-ui", - "background_color": "#0175C2", - "theme_color": "#0175C2", - "description": "A desktop-friendly dashboard app", - "orientation": "portrait-primary", - "prefer_related_applications": false, - "icons": [ - { - "src": "icons/Icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "icons/Icon-512.png", - "sizes": "512x512", - "type": "image/png" - } - ] -} diff --git a/ios_app_clip/.gitignore b/ios_app_clip/.gitignore index 9d532b18a..5f73eb498 100644 --- a/ios_app_clip/.gitignore +++ b/ios_app_clip/.gitignore @@ -23,6 +23,7 @@ # Flutter/Dart/Pub related **/doc/api/ **/ios/Flutter/.last_build_id +**/ios/Flutter/ .dart_tool/ .flutter-plugins .flutter-plugins-dependencies diff --git a/isolate_example/lib/infinite_process_page.dart b/isolate_example/lib/infinite_process_page.dart index dadc45bfc..465d2135b 100644 --- a/isolate_example/lib/infinite_process_page.dart +++ b/isolate_example/lib/infinite_process_page.dart @@ -78,25 +78,25 @@ class InfiniteProcessPage extends StatelessWidget { value: !controller.paused, onChanged: (_) => controller.pausedSwitch(), activeTrackColor: Colors.lightGreenAccent, - activeColor: Colors.black, + activeThumbColor: Colors.black, inactiveTrackColor: Colors.deepOrangeAccent, inactiveThumbColor: Colors.black, ), const Text('Pause/Resume'), ], ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - for (int i = 1; i <= 3; i++) ...[ - Radio( - value: i, - groupValue: controller.currentMultiplier, - onChanged: (val) => controller.setMultiplier(val!), - ), - Text('${i}x'), + RadioGroup( + groupValue: controller.currentMultiplier, + onChanged: (val) => controller.setMultiplier(val!), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + for (int i = 1; i <= 3; i++) ...[ + Radio(value: i), + Text('${i}x'), + ], ], - ], + ), ), ], ), diff --git a/material_3_demo/lib/src/component_screen.dart b/material_3_demo/lib/src/component_screen.dart index f8930b980..4d696e3fe 100644 --- a/material_3_demo/lib/src/component_screen.dart +++ b/material_3_demo/lib/src/component_screen.dart @@ -981,35 +981,30 @@ class _RadiosState extends State { return ComponentDecoration( label: 'Radio buttons', tooltipMessage: 'Use RadioListTile or Radio', - child: Column( - children: [ - RadioListTile( - title: const Text('Option 1'), - value: Options.option1, - groupValue: _selectedOption, - onChanged: (value) { - setState(() { - _selectedOption = value; - }); - }, - ), - RadioListTile( - title: const Text('Option 2'), - value: Options.option2, - groupValue: _selectedOption, - onChanged: (value) { - setState(() { - _selectedOption = value; - }); - }, - ), - RadioListTile( - title: const Text('Option 3'), - value: Options.option3, - groupValue: _selectedOption, - onChanged: null, - ), - ], + child: RadioGroup( + groupValue: _selectedOption, + onChanged: (value) { + setState(() { + _selectedOption = value; + }); + }, + child: Column( + children: [ + RadioListTile( + title: const Text('Option 1'), + value: Options.option1, + ), + RadioListTile( + title: const Text('Option 2'), + value: Options.option2, + ), + RadioListTile( + title: const Text('Option 3'), + value: Options.option3, + enabled: false, + ), + ], + ), ), ); } diff --git a/platform_channels/lib/src/add_pet_details.dart b/platform_channels/lib/src/add_pet_details.dart index 756189f24..cc1950462 100644 --- a/platform_channels/lib/src/add_pet_details.dart +++ b/platform_channels/lib/src/add_pet_details.dart @@ -41,40 +41,30 @@ class _AddPetDetailsState extends State { ), body: Padding( padding: const EdgeInsets.all(8.0), - child: Column( - children: [ - const SizedBox(height: 8), - TextField( - controller: breedTextController, - decoration: const InputDecoration( - border: OutlineInputBorder(), - filled: true, - hintText: 'Breed of pet', - labelText: 'Breed', + child: RadioGroup( + groupValue: petType, + onChanged: (value) { + setState(() { + petType = value!; + }); + }, + child: Column( + children: [ + const SizedBox(height: 8), + TextField( + controller: breedTextController, + decoration: const InputDecoration( + border: OutlineInputBorder(), + filled: true, + hintText: 'Breed of pet', + labelText: 'Breed', + ), ), - ), - const SizedBox(height: 8), - RadioListTile( - title: const Text('Dog'), - value: 'Dog', - groupValue: petType, - onChanged: (value) { - setState(() { - petType = value!; - }); - }, - ), - RadioListTile( - title: const Text('Cat'), - value: 'Cat', - groupValue: petType, - onChanged: (value) { - setState(() { - petType = value!; - }); - }, - ), - ], + const SizedBox(height: 8), + RadioListTile(title: const Text('Dog'), value: 'Dog'), + RadioListTile(title: const Text('Cat'), value: 'Cat'), + ], + ), ), ), ); diff --git a/platform_design/lib/widgets.dart b/platform_design/lib/widgets.dart index 7189998c1..cf0b795ee 100644 --- a/platform_design/lib/widgets.dart +++ b/platform_design/lib/widgets.dart @@ -303,18 +303,20 @@ void showChoices(BuildContext context, List choices) { contentPadding: const EdgeInsets.only(top: 12), content: StatefulBuilder( builder: (context, setState) { - return Column( - mainAxisSize: MainAxisSize.min, - children: List.generate(choices.length, (index) { - return RadioListTile( - title: Text(choices[index]), - value: index, - groupValue: selectedRadio, - onChanged: (value) { - setState(() => selectedRadio = value); - }, - ); - }), + return RadioGroup( + groupValue: selectedRadio, + onChanged: (value) { + setState(() => selectedRadio = value); + }, + child: Column( + mainAxisSize: MainAxisSize.min, + children: List.generate(choices.length, (index) { + return RadioListTile( + title: Text(choices[index]), + value: index, + ); + }), + ), ); }, ), diff --git a/platform_view_swift/.gitignore b/platform_view_swift/.gitignore index 2ddde2a5e..63c920314 100644 --- a/platform_view_swift/.gitignore +++ b/platform_view_swift/.gitignore @@ -55,6 +55,7 @@ **/ios/**/profile **/ios/**/xcuserdata **/ios/.generated/ +**/ios/Flutter/ephemeral/ **/ios/Flutter/App.framework **/ios/Flutter/Flutter.framework **/ios/Flutter/Generated.xcconfig diff --git a/tool/flutter_ci_script_beta.sh b/tool/flutter_ci_script_beta.sh index 52174505f..bc2900a37 100755 --- a/tool/flutter_ci_script_beta.sh +++ b/tool/flutter_ci_script_beta.sh @@ -29,18 +29,6 @@ declare -ar PROJECT_NAMES=( "desktop_photo_search/fluent_ui" "desktop_photo_search/material" "dynamic_theme" - # TODO(ewindmill): package:html needs to be replaced by package:web - "experimental/federated_plugin/federated_plugin" - "experimental/federated_plugin/federated_plugin/example" - "experimental/federated_plugin/federated_plugin_macos" - "experimental/federated_plugin/federated_plugin_platform_interface" - "experimental/federated_plugin/federated_plugin_web" - "experimental/federated_plugin/federated_plugin_windows" - # TODO(domesticmouse): Angle brackets will be interpreted as HTML. - # "pedometer" - "pedometer/example" - "experimental/varfont_shader_puzzle" - "experimental/web_dashboard" "flutter_maps_firestore" "form_app" "game_template" @@ -50,8 +38,12 @@ declare -ar PROJECT_NAMES=( "ios_app_clip" # TODO(ewindmill): replace deprecated activeColor with activeThumbColor in 3.33 # "isolate_example" - "material_3_demo" + # TODO(ewindmill) - RadioGroup api changed. + # "material_3_demo" "navigation_and_routing" + # TODO(domesticmouse): Angle brackets will be interpreted as HTML. + # "pedometer" + "pedometer/example" "place_tracker" "platform_channels" "platform_design" diff --git a/tool/flutter_ci_script_master.sh b/tool/flutter_ci_script_master.sh index f56f3f569..89b1f0979 100755 --- a/tool/flutter_ci_script_master.sh +++ b/tool/flutter_ci_script_master.sh @@ -32,18 +32,6 @@ declare -ar PROJECT_NAMES=( "desktop_photo_search/fluent_ui" "desktop_photo_search/material" "dynamic_theme" - "experimental/federated_plugin/federated_plugin" - "experimental/federated_plugin/federated_plugin/example" - "experimental/federated_plugin/federated_plugin_macos" - "experimental/federated_plugin/federated_plugin_platform_interface" - # TODO(ewindmill): package:html needs to be replaced by package:web - # "experimental/federated_plugin/federated_plugin_web" - "experimental/federated_plugin/federated_plugin_windows" - # TODO(domesticmouse): Angle brackets will be interpreted as HTML. - # "pedometer" - "pedometer/example" - "experimental/varfont_shader_puzzle" - "experimental/web_dashboard" "flutter_maps_firestore" "form_app" "game_template" @@ -53,8 +41,12 @@ declare -ar PROJECT_NAMES=( "ios_app_clip" # TODO(ewindmill): replace deprecated activeColor with activeThumbColor in 3.33 # "isolate_example" - "material_3_demo" + # TODO(ewindmill) - RadioGroup api changed. + # "material_3_demo" "navigation_and_routing" + # TODO(domesticmouse): Angle brackets will be interpreted as HTML. + # "pedometer" + "pedometer/example" "place_tracker" "platform_channels" "platform_design" diff --git a/tool/flutter_ci_script_stable.sh b/tool/flutter_ci_script_stable.sh index adad07128..7f65f3df4 100755 --- a/tool/flutter_ci_script_stable.sh +++ b/tool/flutter_ci_script_stable.sh @@ -29,16 +29,6 @@ declare -ar PROJECT_NAMES=( "desktop_photo_search/fluent_ui" "desktop_photo_search/material" "dynamic_theme" - "experimental/federated_plugin/federated_plugin" - "experimental/federated_plugin/federated_plugin/example" - "experimental/federated_plugin/federated_plugin_macos" - "experimental/federated_plugin/federated_plugin_platform_interface" - "experimental/federated_plugin/federated_plugin_web" - "experimental/federated_plugin/federated_plugin_windows" - "pedometer" - "pedometer/example" - "experimental/varfont_shader_puzzle" - "experimental/web_dashboard" "flutter_maps_firestore" "form_app" "game_template" @@ -46,11 +36,13 @@ declare -ar PROJECT_NAMES=( "google_maps" "infinite_list" "ios_app_clip" - "isolate_example" - "material_3_demo" + # "isolate_example" + # "material_3_demo" "navigation_and_routing" + "pedometer" + "pedometer/example" "place_tracker" - "platform_channels" + # "platform_channels" "platform_design" "platform_view_swift" "provider_counter"