diff --git a/.gitignore b/.gitignore index 7c84ebb5..a84290e5 100644 --- a/.gitignore +++ b/.gitignore @@ -84,4 +84,7 @@ unlinked_spec.ds !**/ios/**/default.mode2v3 !**/ios/**/default.pbxuser !**/ios/**/default.perspectivev3 -!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages \ No newline at end of file +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages + +#ignore android key +android/key\.properties diff --git a/android/app/build.gradle b/android/app/build.gradle index 272be835..d0f47d4f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -21,6 +21,12 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} + apply plugin: 'com.android.application' apply plugin: 'io.fabric' apply plugin: 'kotlin-android' @@ -44,16 +50,30 @@ android { targetSdkVersion 28 versionCode flutterVersionCode.toInteger() versionName flutterVersionName - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile file(keystoreProperties['storeFile']) + storePassword keystoreProperties['storePassword'] + } } - 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 + signingConfig signingConfigs.release + + minifyEnabled true + useProguard true + + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } flutter { @@ -61,10 +81,10 @@ flutter { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.1' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' + androidTestImplementation 'androidx.test:runner:1.1.0-alpha4' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4' } apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro new file mode 100644 index 00000000..babebbaf --- /dev/null +++ b/android/app/proguard-rules.pro @@ -0,0 +1,7 @@ +#Flutter Wrapper +-keep class io.flutter.app.** { *; } +-keep class io.flutter.plugin.** { *; } +-keep class io.flutter.util.** { *; } +-keep class io.flutter.view.** { *; } +-keep class io.flutter.** { *; } +-keep class io.flutter.plugins.** { *; } \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index 003cdaa6..4080d4f4 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.2.71' + ext.kotlin_version = '1.3.21' repositories { google() jcenter() @@ -8,7 +8,7 @@ buildscript { dependencies { classpath 'io.fabric.tools:gradle:1.+' - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.3.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:3.2.1' // Google Services plugin } diff --git a/android/gradle.properties b/android/gradle.properties index 8bd86f68..53ae0ae4 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1 +1,3 @@ +android.enableJetifier=true +android.useAndroidX=true org.gradle.jvmargs=-Xmx1536M diff --git a/feather/macos/AppDelegate.swift b/feather/macos/AppDelegate.swift deleted file mode 100644 index a1f9c9bd..00000000 --- a/feather/macos/AppDelegate.swift +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -import Cocoa - -@NSApplicationMain -class AppDelegate: NSObject, NSApplicationDelegate { - @IBOutlet weak var window: NSWindow! - - func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { - return true - } - - - func applicationWillFinishLaunching(_ notification: Notification) { - NSLog("applicationWillFinishLaunching"); - NSAppleEventManager.shared().setEventHandler(self, andSelector: #selector(AppDelegate.handleEvent(_:withReplyEvent:)), forEventClass: AEEventClass(kInternetEventClass), andEventID: AEEventID(kAEGetURL)); - } - -// @objc - (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent -// { -// NSString *param = [[event paramDescriptorForKeyword:keyDirectObject] stringValue]; -// } - @objc func handleEvent(_ event: NSAppleEventDescriptor!, withReplyEvent: NSAppleEventDescriptor!) { - let param:String? = event.paramDescriptor(forKeyword: keyDirectObject)?.stringValue; - NSLog("Param: %@", param!); - let win:MainWindow = self.window as! MainWindow; - win.flutterViewController.receivedUriLaunch(param!); - } - -} - diff --git a/feather/macos/Assets.xcassets/AppIcon.appiconset/Contents.json b/feather/macos/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 8a213cb7..00000000 --- a/feather/macos/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "images" : [ - { - "idiom" : "mac", - "size" : "16x16", - "scale" : "1x" - }, - { - "idiom" : "mac", - "size" : "16x16", - "scale" : "2x" - }, - { - "idiom" : "mac", - "size" : "32x32", - "scale" : "1x" - }, - { - "idiom" : "mac", - "size" : "32x32", - "scale" : "2x" - }, - { - "idiom" : "mac", - "size" : "128x128", - "scale" : "1x" - }, - { - "idiom" : "mac", - "size" : "128x128", - "scale" : "2x" - }, - { - "idiom" : "mac", - "size" : "256x256", - "scale" : "1x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app-icon_512.png", - "scale" : "2x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app-icon_512.png", - "scale" : "1x" - }, - { - "idiom" : "mac", - "size" : "512x512", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/feather/macos/Assets.xcassets/AppIcon.appiconset/app-icon_512.png b/feather/macos/Assets.xcassets/AppIcon.appiconset/app-icon_512.png deleted file mode 100644 index 1f1353c7..00000000 Binary files a/feather/macos/Assets.xcassets/AppIcon.appiconset/app-icon_512.png and /dev/null differ diff --git a/feather/macos/Base.lproj/MainMenu.xib b/feather/macos/Base.lproj/MainMenu.xib deleted file mode 100644 index 28350547..00000000 --- a/feather/macos/Base.lproj/MainMenu.xib +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/feather/macos/FeatherApp-Bridging-Header.h b/feather/macos/FeatherApp-Bridging-Header.h deleted file mode 100644 index f8f76606..00000000 --- a/feather/macos/FeatherApp-Bridging-Header.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import -#import -#import -#import diff --git a/feather/macos/FeatherApp.xcodeproj/project.pbxproj b/feather/macos/FeatherApp.xcodeproj/project.pbxproj deleted file mode 100644 index 6f7e9b7e..00000000 --- a/feather/macos/FeatherApp.xcodeproj/project.pbxproj +++ /dev/null @@ -1,489 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 48; - objects = { - -/* Begin PBXAggregateTarget section */ - 33CC111A2044C6BA0003C045 /* Build Flutter Bundle */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Build Flutter Bundle" */; - buildPhases = ( - 33CC111E2044C6BF0003C045 /* ShellScript */, - ); - dependencies = ( - ); - name = "Build Flutter Bundle"; - productName = FLX; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 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 /* MainWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainWindow.swift */; }; - 33CC112F204626C80003C045 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC112C20461AD40003C045 /* flutter_assets */; }; - 4D277AAF21AE332C00D39356 /* FlutterEmbedderMenubar.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D277AAB21AE332C00D39356 /* FlutterEmbedderMenubar.framework */; }; - 4D277AB121AE332C00D39356 /* FlutterEmbedderColorPanel.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D277AAD21AE332C00D39356 /* FlutterEmbedderColorPanel.framework */; }; - 4D277AB221AE332C00D39356 /* FlutterEmbedderFileChooser.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D277AAE21AE332C00D39356 /* FlutterEmbedderFileChooser.framework */; }; - 4D277AB321AE333A00D39356 /* FlutterEmbedderColorPanel.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = 4D277AAD21AE332C00D39356 /* FlutterEmbedderColorPanel.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 4D277AB421AE333A00D39356 /* FlutterEmbedderFileChooser.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = 4D277AAE21AE332C00D39356 /* FlutterEmbedderFileChooser.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 4D277AB621AE333A00D39356 /* FlutterEmbedderMenubar.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = 4D277AAB21AE332C00D39356 /* FlutterEmbedderMenubar.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 4DCE8BBE2162667F003A471F /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4DCE8BBC2162667F003A471F /* InfoPlist.strings */; }; - 4DD3B527213CB7EE009C4DBB /* SignInView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4DD3B526213CB7EE009C4DBB /* SignInView.xib */; }; - 4DD3B529213CB8CC009C4DBB /* SignInView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DD3B528213CB8CC009C4DBB /* SignInView.swift */; }; - 4DFA41C421AF86FE00052B11 /* FlutterEmbedderMacFeather.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DFA41C321AF86FE00052B11 /* FlutterEmbedderMacFeather.framework */; }; - 4DFA41C621AF883700052B11 /* FlutterEmbedder.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DFA41C521AF883700052B11 /* FlutterEmbedder.framework */; }; - 4DFA41C721AF88D000052B11 /* FlutterEmbedder.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = 4DFA41C521AF883700052B11 /* FlutterEmbedder.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 4DFA41C821AF88D000052B11 /* FlutterEmbedderMacFeather.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = 4DFA41C321AF86FE00052B11 /* FlutterEmbedderMacFeather.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; -/* 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 = ( - 4DFA41C721AF88D000052B11 /* FlutterEmbedder.framework in Bundle Framework */, - 4DFA41C821AF88D000052B11 /* FlutterEmbedderMacFeather.framework in Bundle Framework */, - 4D277AB321AE333A00D39356 /* FlutterEmbedderColorPanel.framework in Bundle Framework */, - 4D277AB421AE333A00D39356 /* FlutterEmbedderFileChooser.framework in Bundle Framework */, - 4D277AB621AE333A00D39356 /* FlutterEmbedderMenubar.framework in Bundle Framework */, - ); - name = "Bundle Framework"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 33CC10ED2044A3C60003C045 /* app_9vzIF7brk1rN.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = app_9vzIF7brk1rN.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; path = 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; path = Info.plist; sourceTree = ""; }; - 33CC11122044BFA00003C045 /* MainWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainWindow.swift; sourceTree = ""; }; - 33CC11162044C3600003C045 /* FeatherApp-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "FeatherApp-Bridging-Header.h"; sourceTree = ""; }; - 33CC112C20461AD40003C045 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = ../../build/flutter_assets; sourceTree = ""; }; - 4D277AAB21AE332C00D39356 /* FlutterEmbedderMenubar.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FlutterEmbedderMenubar.framework; sourceTree = ""; }; - 4D277AAD21AE332C00D39356 /* FlutterEmbedderColorPanel.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FlutterEmbedderColorPanel.framework; sourceTree = ""; }; - 4D277AAE21AE332C00D39356 /* FlutterEmbedderFileChooser.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FlutterEmbedderFileChooser.framework; sourceTree = ""; }; - 4DCE8BBB216265FE003A471F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/MainMenu.strings; sourceTree = ""; }; - 4DCE8BBD2162667F003A471F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 4DD3B526213CB7EE009C4DBB /* SignInView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SignInView.xib; sourceTree = ""; }; - 4DD3B528213CB8CC009C4DBB /* SignInView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInView.swift; sourceTree = ""; }; - 4DFA41C321AF86FE00052B11 /* FlutterEmbedderMacFeather.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FlutterEmbedderMacFeather.framework; sourceTree = ""; }; - 4DFA41C521AF883700052B11 /* FlutterEmbedder.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FlutterEmbedder.framework; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 33CC10EA2044A3C60003C045 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 4D277AAF21AE332C00D39356 /* FlutterEmbedderMenubar.framework in Frameworks */, - 4DFA41C421AF86FE00052B11 /* FlutterEmbedderMacFeather.framework in Frameworks */, - 4DFA41C621AF883700052B11 /* FlutterEmbedder.framework in Frameworks */, - 4D277AB221AE332C00D39356 /* FlutterEmbedderFileChooser.framework in Frameworks */, - 4D277AB121AE332C00D39356 /* FlutterEmbedderColorPanel.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 33CC10E42044A3C60003C045 = { - isa = PBXGroup; - children = ( - 4DD3B526213CB7EE009C4DBB /* SignInView.xib */, - 4DD3B528213CB8CC009C4DBB /* SignInView.swift */, - 33CC10F02044A3C60003C045 /* AppDelegate.swift */, - 33CC11122044BFA00003C045 /* MainWindow.swift */, - 33CC11162044C3600003C045 /* FeatherApp-Bridging-Header.h */, - 33CC11242044D66E0003C045 /* Resources */, - 33CC10EE2044A3C60003C045 /* Products */, - 4DFA41C521AF883700052B11 /* FlutterEmbedder.framework */, - 4DFA41C321AF86FE00052B11 /* FlutterEmbedderMacFeather.framework */, - 4D277AAD21AE332C00D39356 /* FlutterEmbedderColorPanel.framework */, - 4D277AAE21AE332C00D39356 /* FlutterEmbedderFileChooser.framework */, - 4D277AAB21AE332C00D39356 /* FlutterEmbedderMenubar.framework */, - ); - sourceTree = ""; - }; - 33CC10EE2044A3C60003C045 /* Products */ = { - isa = PBXGroup; - children = ( - 33CC10ED2044A3C60003C045 /* app_9vzIF7brk1rN.app */, - ); - name = Products; - sourceTree = ""; - }; - 33CC11242044D66E0003C045 /* Resources */ = { - isa = PBXGroup; - children = ( - 33CC10F22044A3C60003C045 /* Assets.xcassets */, - 33CC10F42044A3C60003C045 /* MainMenu.xib */, - 4DCE8BBC2162667F003A471F /* InfoPlist.strings */, - 33CC10F72044A3C60003C045 /* Info.plist */, - 33CC112C20461AD40003C045 /* flutter_assets */, - ); - name = Resources; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 33CC10EC2044A3C60003C045 /* FeatherApp */ = { - isa = PBXNativeTarget; - buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "FeatherApp" */; - buildPhases = ( - 33CC10E92044A3C60003C045 /* Sources */, - 33CC10EA2044A3C60003C045 /* Frameworks */, - 33CC10EB2044A3C60003C045 /* Resources */, - 33CC110E2044A8840003C045 /* Bundle Framework */, - ); - buildRules = ( - ); - dependencies = ( - 33CC11202044C79F0003C045 /* PBXTargetDependency */, - ); - name = FeatherApp; - productName = FeatherApp; - productReference = 33CC10ED2044A3C60003C045 /* app_9vzIF7brk1rN.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 33CC10E52044A3C60003C045 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 0930; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 33CC10EC2044A3C60003C045 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 0920; - ProvisioningStyle = Automatic; - }; - 33CC111A2044C6BA0003C045 = { - CreatedOnToolsVersion = 9.2; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "FeatherApp" */; - compatibilityVersion = "Xcode 8.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - Base, - en, - ); - mainGroup = 33CC10E42044A3C60003C045; - productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 33CC10EC2044A3C60003C045 /* FeatherApp */, - 33CC111A2044C6BA0003C045 /* Build Flutter Bundle */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 33CC10EB2044A3C60003C045 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, - 4DD3B527213CB7EE009C4DBB /* SignInView.xib in Resources */, - 33CC112F204626C80003C045 /* flutter_assets in Resources */, - 4DCE8BBE2162667F003A471F /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 33CC111E2044C6BF0003C045 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "cd \"$PROJECT_DIR\"/../..\n/Users/rainvisitor/flutter/bin/flutter build bundle"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 33CC10E92044A3C60003C045 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4DD3B529213CB8CC009C4DBB /* SignInView.swift in Sources */, - 33CC11132044BFA00003C045 /* MainWindow.swift in Sources */, - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 33CC111A2044C6BA0003C045 /* Build Flutter Bundle */; - targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 33CC10F52044A3C60003C045 /* Base */, - 4DCE8BBB216265FE003A471F /* en */, - ); - name = MainMenu.xib; - sourceTree = ""; - }; - 4DCE8BBC2162667F003A471F /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 4DCE8BBD2162667F003A471F /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 33CC10F92044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - 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_COMMA = 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_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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = 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_UNDECLARED_SELECTOR = YES; - 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; - 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_COMMA = 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_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_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = 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_UNDECLARED_SELECTOR = YES; - 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_OPTIMIZATION_LEVEL = "-Owholemodule"; - }; - name = Release; - }; - 33CC10FC2044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = "Mac Developer"; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - DEVELOPMENT_TEAM = R7BC26UNC9; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)", - ); - INFOPLIST_FILE = Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10.5; - PRODUCT_BUNDLE_IDENTIFIER = "com.feather-apps.app-9vzIF7brk1rN"; - PRODUCT_NAME = app_9vzIF7brk1rN; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "FeatherApp-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; - }; - name = Debug; - }; - 33CC10FD2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = "Mac Developer"; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - DEVELOPMENT_TEAM = R7BC26UNC9; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)", - ); - INFOPLIST_FILE = Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10.5; - PRODUCT_BUNDLE_IDENTIFIER = "com.feather-apps.app-9vzIF7brk1rN"; - PRODUCT_NAME = app_9vzIF7brk1rN; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "FeatherApp-Bridging-Header.h"; - SWIFT_VERSION = 4.0; - }; - name = Release; - }; - 33CC111C2044C6BA0003C045 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - 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 "FeatherApp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10F92044A3C60003C045 /* Debug */, - 33CC10FA2044A3C60003C045 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "FeatherApp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10FC2044A3C60003C045 /* Debug */, - 33CC10FD2044A3C60003C045 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Build Flutter Bundle" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC111C2044C6BA0003C045 /* Debug */, - 33CC111D2044C6BA0003C045 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 33CC10E52044A3C60003C045 /* Project object */; -} diff --git a/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a6..00000000 --- a/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata.gz b/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata.gz deleted file mode 100644 index 2c8dfd23..00000000 Binary files a/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata.gz and /dev/null differ diff --git a/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d98100..00000000 --- a/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/xcuserdata/mark.xcuserdatad/UserInterfaceState.xcuserstate b/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/xcuserdata/mark.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index cb171f27..00000000 Binary files a/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/xcuserdata/mark.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/xcuserdata/mark.xcuserdatad/UserInterfaceState.xcuserstate.gz b/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/xcuserdata/mark.xcuserdatad/UserInterfaceState.xcuserstate.gz deleted file mode 100644 index 3a3ee82a..00000000 Binary files a/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/xcuserdata/mark.xcuserdatad/UserInterfaceState.xcuserstate.gz and /dev/null differ diff --git a/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/xcuserdata/rainvisitor.xcuserdatad/UserInterfaceState.xcuserstate b/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/xcuserdata/rainvisitor.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index b4684e1e..00000000 Binary files a/feather/macos/FeatherApp.xcodeproj/project.xcworkspace/xcuserdata/rainvisitor.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/feather/macos/FeatherApp.xcodeproj/xcuserdata/rainvisitor.xcuserdatad/xcschemes/xcschememanagement.plist b/feather/macos/FeatherApp.xcodeproj/xcuserdata/rainvisitor.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index dbe51319..00000000 --- a/feather/macos/FeatherApp.xcodeproj/xcuserdata/rainvisitor.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,19 +0,0 @@ - - - - - SchemeUserState - - Build Flutter Bundle.xcscheme_^#shared#^_ - - orderHint - 1 - - FeatherApp.xcscheme_^#shared#^_ - - orderHint - 0 - - - - diff --git a/feather/macos/FlutterEmbedder.framework/FlutterEmbedder b/feather/macos/FlutterEmbedder.framework/FlutterEmbedder deleted file mode 120000 index 349bcbf6..00000000 --- a/feather/macos/FlutterEmbedder.framework/FlutterEmbedder +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/FlutterEmbedder \ No newline at end of file diff --git a/feather/macos/FlutterEmbedder.framework/Headers b/feather/macos/FlutterEmbedder.framework/Headers deleted file mode 120000 index a177d2a6..00000000 --- a/feather/macos/FlutterEmbedder.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/feather/macos/FlutterEmbedder.framework/Modules b/feather/macos/FlutterEmbedder.framework/Modules deleted file mode 120000 index 5736f318..00000000 --- a/feather/macos/FlutterEmbedder.framework/Modules +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Modules \ No newline at end of file diff --git a/feather/macos/FlutterEmbedder.framework/Resources b/feather/macos/FlutterEmbedder.framework/Resources deleted file mode 120000 index 953ee36f..00000000 --- a/feather/macos/FlutterEmbedder.framework/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources \ No newline at end of file diff --git a/feather/macos/FlutterEmbedder.framework/Versions/A/FlutterEmbedder b/feather/macos/FlutterEmbedder.framework/Versions/A/FlutterEmbedder deleted file mode 100755 index 20701e1e..00000000 Binary files a/feather/macos/FlutterEmbedder.framework/Versions/A/FlutterEmbedder and /dev/null differ diff --git a/feather/macos/FlutterEmbedder.framework/Versions/A/Headers/FlutterEmbedder.h b/feather/macos/FlutterEmbedder.framework/Versions/A/Headers/FlutterEmbedder.h deleted file mode 100644 index d1a997ae..00000000 --- a/feather/macos/FlutterEmbedder.framework/Versions/A/Headers/FlutterEmbedder.h +++ /dev/null @@ -1,335 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef FLUTTER_EMBEDDER_H_ -#define FLUTTER_EMBEDDER_H_ - -#include -#include -#include - -#if defined(__cplusplus) -extern "C" { -#endif - -#ifndef FLUTTER_EXPORT -#define FLUTTER_EXPORT -#endif // FLUTTER_EXPORT - -#define FLUTTER_ENGINE_VERSION 1 - -typedef enum { - kSuccess = 0, - kInvalidLibraryVersion, - kInvalidArguments, - kInternalInconsistency, -} FlutterEngineResult; - -typedef enum { - kOpenGL, - kSoftware, -} FlutterRendererType; - -typedef struct _FlutterEngine* FlutterEngine; - -typedef struct { - // horizontal scale factor - double scaleX; - // horizontal skew factor - double skewX; - // horizontal translation - double transX; - // vertical skew factor - double skewY; - // vertical scale factor - double scaleY; - // vertical translation - double transY; - // input x-axis perspective factor - double pers0; - // input y-axis perspective factor - double pers1; - // perspective scale factor - double pers2; -} FlutterTransformation; - -typedef void (*VoidCallback)(void* /* user data */); - -typedef struct { - // Target texture of the active texture unit (example GL_TEXTURE_2D). - uint32_t target; - // The name of the texture. - uint32_t name; - // The texture format (example GL_RGBA8). - uint32_t format; - // User data to be returned on the invocation of the destruction callback. - void* user_data; - // Callback invoked (on an engine managed thread) that asks the embedder to - // collect the texture. - VoidCallback destruction_callback; -} FlutterOpenGLTexture; - -typedef bool (*BoolCallback)(void* /* user data */); -typedef FlutterTransformation (*TransformationCallback)(void* /* user data */); -typedef uint32_t (*UIntCallback)(void* /* user data */); -typedef bool (*SoftwareSurfacePresentCallback)(void* /* user data */, - const void* /* allocation */, - size_t /* row bytes */, - size_t /* height */); -typedef void* (*ProcResolver)(void* /* user data */, const char* /* name */); -typedef bool (*TextureFrameCallback)(void* /* user data */, - int64_t /* texture identifier */, - size_t /* width */, - size_t /* height */, - FlutterOpenGLTexture* /* texture out */); - -typedef struct { - // The size of this struct. Must be sizeof(FlutterOpenGLRendererConfig). - size_t struct_size; - BoolCallback make_current; - BoolCallback clear_current; - BoolCallback present; - UIntCallback fbo_callback; - // This is an optional callback. Flutter will ask the emebdder to create a GL - // context current on a background thread. If the embedder is able to do so, - // Flutter will assume that this context is in the same sharegroup as the main - // rendering context and use this context for asynchronous texture uploads. - // Though optional, it is recommended that all embedders set this callback as - // it will lead to better performance in texture handling. - BoolCallback make_resource_current; - // By default, the renderer config assumes that the FBO does not change for - // the duration of the engine run. If this argument is true, the - // engine will ask the embedder for an updated FBO target (via an fbo_callback - // invocation) after a present call. - bool fbo_reset_after_present; - // The transformation to apply to the render target before any rendering - // operations. This callback is optional. - TransformationCallback surface_transformation; - ProcResolver gl_proc_resolver; - // When the embedder specifies that a texture has a frame available, the - // engine will call this method (on an internal engine managed thread) so that - // external texture details can be supplied to the engine for subsequent - // composition. - TextureFrameCallback gl_external_texture_frame_callback; -} FlutterOpenGLRendererConfig; - -typedef struct { - // The size of this struct. Must be sizeof(FlutterSoftwareRendererConfig). - size_t struct_size; - // The callback presented to the embedder to present a fully populated buffer - // to the user. The pixel format of the buffer is the native 32-bit RGBA - // format. The buffer is owned by the Flutter engine and must be copied in - // this callback if needed. - SoftwareSurfacePresentCallback surface_present_callback; -} FlutterSoftwareRendererConfig; - -typedef struct { - FlutterRendererType type; - union { - FlutterOpenGLRendererConfig open_gl; - FlutterSoftwareRendererConfig software; - }; -} FlutterRendererConfig; - -typedef struct { - // The size of this struct. Must be sizeof(FlutterWindowMetricsEvent). - size_t struct_size; - // Physical width of the window. - size_t width; - // Physical height of the window. - size_t height; - // Scale factor for the physical screen. - double pixel_ratio; -} FlutterWindowMetricsEvent; - -typedef enum { - kCancel, - kUp, - kDown, - kMove, -} FlutterPointerPhase; - -typedef struct { - // The size of this struct. Must be sizeof(FlutterPointerEvent). - size_t struct_size; - FlutterPointerPhase phase; - size_t timestamp; // in microseconds. - double x; - double y; - // An optional device identifier. If this is not specified, it is assumed that - // the embedder has no multitouch capability. - int32_t device; -} FlutterPointerEvent; - -struct _FlutterPlatformMessageResponseHandle; -typedef struct _FlutterPlatformMessageResponseHandle - FlutterPlatformMessageResponseHandle; - -typedef struct { - // The size of this struct. Must be sizeof(FlutterPlatformMessage). - size_t struct_size; - const char* channel; - const uint8_t* message; - const size_t message_size; - // The response handle on which to invoke - // |FlutterEngineSendPlatformMessageResponse| when the response is ready. This - // field is ignored for messages being sent from the embedder to the - // framework. If the embedder ever receives a message with a non-null response - // handle, that handle must always be used with a - // |FlutterEngineSendPlatformMessageResponse| call. If not, this is a memory - // leak. It is not safe to send multiple responses on a single response - // object. - const FlutterPlatformMessageResponseHandle* response_handle; -} FlutterPlatformMessage; - -typedef void (*FlutterPlatformMessageCallback)( - const FlutterPlatformMessage* /* message*/, - void* /* user data */); - -typedef struct { - // The size of this struct. Must be sizeof(FlutterProjectArgs). - size_t struct_size; - // The path to the Flutter assets directory containing project assets. The - // string can be collected after the call to |FlutterEngineRun| returns. The - // string must be NULL terminated. - const char* assets_path; - // The path to the Dart file containing the |main| entry point. - // The string can be collected after the call to |FlutterEngineRun| returns. - // The string must be NULL terminated. - // - // \deprecated As of Dart 2, running from Dart source is no longer supported. - // Dart code should now be compiled to kernel form and will be loaded by from - // |kernel_blob.bin| in the assets directory. This struct member is retained - // for ABI stability. - const char* main_path__unused__; - // The path to the |.packages| for the project. The string can be collected - // after the call to |FlutterEngineRun| returns. The string must be NULL - // terminated. - // - // \deprecated As of Dart 2, running from Dart source is no longer supported. - // Dart code should now be compiled to kernel form and will be loaded by from - // |kernel_blob.bin| in the assets directory. This struct member is retained - // for ABI stability. - const char* packages_path__unused__; - // The path to the icudtl.dat file for the project. The string can be - // collected after the call to |FlutterEngineRun| returns. The string must - // be NULL terminated. - const char* icu_data_path; - // The command line argument count used to initialize the project. - int command_line_argc; - // The command line arguments used to initialize the project. The strings can - // be collected after the call to |FlutterEngineRun| returns. The strings must - // be NULL terminated. - // Note: The first item in the command line (if specificed at all) is - // interpreted as the executable name. So if an engine flag needs to be passed - // into the same, it needs to not be the very first item in the list. The set - // of engine flags are only meant to control unstable features in the engine. - // Deployed applications should not pass any command line arguments at all as - // they may affect engine stability at runtime in the presence of unsanitized - // input. The list of currently recognized engine flags and their descriptions - // can be retrieved from the |switches.h| engine source file. - const char* const* command_line_argv; - // The callback invoked by the engine in order to give the embedder the chance - // to respond to platform messages from the Dart application. The callback - // will be invoked on the thread on which the |FlutterEngineRun| call is made. - FlutterPlatformMessageCallback platform_message_callback; - // The VM snapshot data buffer used in AOT operation. This buffer must be - // mapped in as read-only. For more information refer to the documentation on - // the Wiki at - // https://github.com/flutter/flutter/wiki/Flutter-engine-operation-in-AOT-Mode - const uint8_t* vm_snapshot_data; - // The size of the VM snapshot data buffer. - size_t vm_snapshot_data_size; - // The VM snapshot instructions buffer used in AOT operation. This buffer must - // be mapped in as read-execute. For more information refer to the - // documentation on the Wiki at - // https://github.com/flutter/flutter/wiki/Flutter-engine-operation-in-AOT-Mode - const uint8_t* vm_snapshot_instructions; - // The size of the VM snapshot instructions buffer. - size_t vm_snapshot_instructions_size; - // The isolate snapshot data buffer used in AOT operation. This buffer must be - // mapped in as read-only. For more information refer to the documentation on - // the Wiki at - // https://github.com/flutter/flutter/wiki/Flutter-engine-operation-in-AOT-Mode - const uint8_t* isolate_snapshot_data; - // The size of the isolate snapshot data buffer. - size_t isolate_snapshot_data_size; - // The isolate snapshot instructions buffer used in AOT operation. This buffer - // must be mapped in as read-execute. For more information refer to the - // documentation on the Wiki at - // https://github.com/flutter/flutter/wiki/Flutter-engine-operation-in-AOT-Mode - const uint8_t* isolate_snapshot_instructions; - // The size of the isolate snapshot instructions buffer. - size_t isolate_snapshot_instructions_size; - // The callback invoked by the engine in root isolate scope. Called - // immediately after the root isolate has been created and marked runnable. - VoidCallback root_isolate_create_callback; -} FlutterProjectArgs; - -FLUTTER_EXPORT -FlutterEngineResult FlutterEngineRun(size_t version, - const FlutterRendererConfig* config, - const FlutterProjectArgs* args, - void* user_data, - FlutterEngine* engine_out); - -FLUTTER_EXPORT -FlutterEngineResult FlutterEngineShutdown(FlutterEngine engine); - -FLUTTER_EXPORT -FlutterEngineResult FlutterEngineSendWindowMetricsEvent( - FlutterEngine engine, - const FlutterWindowMetricsEvent* event); - -FLUTTER_EXPORT -FlutterEngineResult FlutterEngineSendPointerEvent( - FlutterEngine engine, - const FlutterPointerEvent* events, - size_t events_count); - -FLUTTER_EXPORT -FlutterEngineResult FlutterEngineSendPlatformMessage( - FlutterEngine engine, - const FlutterPlatformMessage* message); - -FLUTTER_EXPORT -FlutterEngineResult FlutterEngineSendPlatformMessageResponse( - FlutterEngine engine, - const FlutterPlatformMessageResponseHandle* handle, - const uint8_t* data, - size_t data_length); - -// This API is only meant to be used by platforms that need to flush tasks on a -// message loop not controlled by the Flutter engine. This API will be -// deprecated soon. -FLUTTER_EXPORT -FlutterEngineResult __FlutterEngineFlushPendingTasksNow(); - -// Register an external texture with a unique (per engine) identifier. Only -// rendering backends that support external textures accept external texture -// registrations. After the external texture is registered, the application can -// mark that a frame is available by calling -// |FlutterEngineMarkExternalTextureFrameAvailable|. -FLUTTER_EXPORT -FlutterEngineResult FlutterEngineRegisterExternalTexture( - FlutterEngine engine, - int64_t texture_identifier); - -// Unregister a previous texture registration. -FLUTTER_EXPORT -FlutterEngineResult FlutterEngineUnregisterExternalTexture( - FlutterEngine engine, - int64_t texture_identifier); - -// Mark that a new texture frame is available for a given texture identifier. -FLUTTER_EXPORT -FlutterEngineResult FlutterEngineMarkExternalTextureFrameAvailable( - FlutterEngine engine, - int64_t texture_identifier); - -#if defined(__cplusplus) -} // extern "C" -#endif - -#endif // FLUTTER_EMBEDDER_H_ diff --git a/feather/macos/FlutterEmbedder.framework/Versions/A/Modules/module.modulemap b/feather/macos/FlutterEmbedder.framework/Versions/A/Modules/module.modulemap deleted file mode 100644 index 60328fe1..00000000 --- a/feather/macos/FlutterEmbedder.framework/Versions/A/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module FlutterEmbedder { - umbrella header "FlutterEmbedder.h" - - export * - module * { export * } -} diff --git a/feather/macos/FlutterEmbedder.framework/Versions/A/Resources/Info.plist b/feather/macos/FlutterEmbedder.framework/Versions/A/Resources/Info.plist deleted file mode 100644 index 02a4027b..00000000 --- a/feather/macos/FlutterEmbedder.framework/Versions/A/Resources/Info.plist +++ /dev/null @@ -1,28 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - FlutterEmbedder - CFBundleIdentifier - io.flutter.flutter-embedder - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - FlutterEmbedder - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSupportedPlatforms - - MacOSX - - CFBundleVersion - 1 - NSHumanReadableCopyright - Copyright 2013 The Flutter Authors. All rights reserved. - - diff --git a/feather/macos/FlutterEmbedder.framework/Versions/A/Resources/icudtl.dat b/feather/macos/FlutterEmbedder.framework/Versions/A/Resources/icudtl.dat deleted file mode 100644 index d9677abf..00000000 Binary files a/feather/macos/FlutterEmbedder.framework/Versions/A/Resources/icudtl.dat and /dev/null differ diff --git a/feather/macos/FlutterEmbedder.framework/Versions/Current b/feather/macos/FlutterEmbedder.framework/Versions/Current deleted file mode 120000 index 8c7e5a66..00000000 --- a/feather/macos/FlutterEmbedder.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderColorPanel.framework/FlutterEmbedderColorPanel b/feather/macos/FlutterEmbedderColorPanel.framework/FlutterEmbedderColorPanel deleted file mode 120000 index 12360a77..00000000 --- a/feather/macos/FlutterEmbedderColorPanel.framework/FlutterEmbedderColorPanel +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/FlutterEmbedderColorPanel \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderColorPanel.framework/Headers b/feather/macos/FlutterEmbedderColorPanel.framework/Headers deleted file mode 120000 index a177d2a6..00000000 --- a/feather/macos/FlutterEmbedderColorPanel.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderColorPanel.framework/Modules b/feather/macos/FlutterEmbedderColorPanel.framework/Modules deleted file mode 120000 index 5736f318..00000000 --- a/feather/macos/FlutterEmbedderColorPanel.framework/Modules +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Modules \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderColorPanel.framework/Resources b/feather/macos/FlutterEmbedderColorPanel.framework/Resources deleted file mode 120000 index 953ee36f..00000000 --- a/feather/macos/FlutterEmbedderColorPanel.framework/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/FlutterEmbedderColorPanel b/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/FlutterEmbedderColorPanel deleted file mode 100755 index 851ed1c8..00000000 Binary files a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/FlutterEmbedderColorPanel and /dev/null differ diff --git a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/Headers/FLEColorPanelPlugin.h b/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/Headers/FLEColorPanelPlugin.h deleted file mode 100644 index 4fb9fb62..00000000 --- a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/Headers/FLEColorPanelPlugin.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import - -#import - -/** - * A FlutterPlugin to manage macOS's shared NSColorPanel singleton. Owned by - * the FlutterViewController. Responsible for managing the panel's display state - * and sending selected color data to Flutter, via system channels. - */ -@interface FLEColorPanelPlugin : NSObject - -@end diff --git a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/Headers/FlutterEmbedderColorPanel.h b/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/Headers/FlutterEmbedderColorPanel.h deleted file mode 100644 index 72a5d25c..00000000 --- a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/Headers/FlutterEmbedderColorPanel.h +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import "FLEColorPanelPlugin.h" diff --git a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/Modules/module.modulemap b/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/Modules/module.modulemap deleted file mode 100644 index e052ed19..00000000 --- a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module FlutterEmbedderColorPanel { - umbrella header "FlutterEmbedderColorPanel.h" - - export * - module * { export * } -} diff --git a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/Resources/Info.plist b/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/Resources/Info.plist deleted file mode 100644 index 20c61cf5..00000000 --- a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/Resources/Info.plist +++ /dev/null @@ -1,42 +0,0 @@ - - - - - BuildMachineOSBuild - 17G65 - CFBundleDevelopmentRegion - en - CFBundleExecutable - FlutterEmbedderColorPanel - CFBundleIdentifier - com.google.FlutterEmbedderColorPanel - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - FlutterEmbedderColorPanel - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSupportedPlatforms - - MacOSX - - CFBundleVersion - 1 - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 9B55 - DTPlatformVersion - GM - DTSDKBuild - 17B41 - DTSDKName - macosx10.13 - DTXcode - 0910 - DTXcodeBuild - 9B55 - - diff --git a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/_CodeSignature/CodeResources b/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/_CodeSignature/CodeResources deleted file mode 100644 index b33eb0c3..00000000 --- a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/A/_CodeSignature/CodeResources +++ /dev/null @@ -1,165 +0,0 @@ - - - - - files - - Resources/Info.plist - - lDWm2lz41WlzGN5GVYKvN+Dvg+A= - - - files2 - - Headers/FLEColorPanelPlugin.h - - hash - - wuYMqqm06LBgmR/Ryy9/Z76sWyE= - - hash2 - - THw4AdeLFpGVSncji7AHKFk3BZs/uWYnG3X/ip4G2io= - - - Headers/FlutterEmbedderColorPanel.h - - hash - - krDdd7Gn+4ZVxmqeHp0dRPJaq8Q= - - hash2 - - TLGm5riwPKF0UZ8yWaUqdPbWfNy7XLI+asTJducj6aI= - - - Modules/module.modulemap - - hash - - 3DztYnKLgja5CAHFjd3fYwXp6+c= - - hash2 - - +MMHNdRhUj3gYt6OzL5zUV10MUCh+DnwJmOq5FIk5RM= - - - Resources/Info.plist - - hash - - lDWm2lz41WlzGN5GVYKvN+Dvg+A= - - hash2 - - nw0NStaK1D1TzCo0Gi5XptdKHK9QNssgzaiopFSdmNI= - - - - rules - - ^Resources/ - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ - - nested - - weight - 10 - - ^.* - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^Resources/ - - weight - 20 - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^[^/]+$ - - nested - - weight - 10 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - - diff --git a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/Current b/feather/macos/FlutterEmbedderColorPanel.framework/Versions/Current deleted file mode 120000 index 8c7e5a66..00000000 --- a/feather/macos/FlutterEmbedderColorPanel.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderFileChooser.framework/FlutterEmbedderFileChooser b/feather/macos/FlutterEmbedderFileChooser.framework/FlutterEmbedderFileChooser deleted file mode 120000 index 0a7908f4..00000000 --- a/feather/macos/FlutterEmbedderFileChooser.framework/FlutterEmbedderFileChooser +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/FlutterEmbedderFileChooser \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderFileChooser.framework/Headers b/feather/macos/FlutterEmbedderFileChooser.framework/Headers deleted file mode 120000 index a177d2a6..00000000 --- a/feather/macos/FlutterEmbedderFileChooser.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderFileChooser.framework/Modules b/feather/macos/FlutterEmbedderFileChooser.framework/Modules deleted file mode 120000 index 5736f318..00000000 --- a/feather/macos/FlutterEmbedderFileChooser.framework/Modules +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Modules \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderFileChooser.framework/Resources b/feather/macos/FlutterEmbedderFileChooser.framework/Resources deleted file mode 120000 index 953ee36f..00000000 --- a/feather/macos/FlutterEmbedderFileChooser.framework/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/FlutterEmbedderFileChooser b/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/FlutterEmbedderFileChooser deleted file mode 100755 index 6ff04aac..00000000 Binary files a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/FlutterEmbedderFileChooser and /dev/null differ diff --git a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/Headers/FLEFileChooserPlugin.h b/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/Headers/FLEFileChooserPlugin.h deleted file mode 100644 index 7473ab37..00000000 --- a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/Headers/FLEFileChooserPlugin.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import - -#import - -/** - * A FlutterPlugin to handle file choosing affordances. Owned by the FlutterViewController. - * Responsible for creating and showing instances of NSSavePanel or NSOpenPanel and sending - * selected file paths to flutter clients, via system channels. - */ -@interface FLEFileChooserPlugin : NSObject - -@end diff --git a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/Headers/FlutterEmbedderFileChooser.h b/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/Headers/FlutterEmbedderFileChooser.h deleted file mode 100644 index 07b8f2be..00000000 --- a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/Headers/FlutterEmbedderFileChooser.h +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import "FLEFileChooserPlugin.h" diff --git a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/Modules/module.modulemap b/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/Modules/module.modulemap deleted file mode 100644 index 16c92b80..00000000 --- a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module FlutterEmbedderFileChooser { - umbrella header "FlutterEmbedderFileChooser.h" - - export * - module * { export * } -} diff --git a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/Resources/Info.plist b/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/Resources/Info.plist deleted file mode 100644 index 395c4ada..00000000 --- a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/Resources/Info.plist +++ /dev/null @@ -1,42 +0,0 @@ - - - - - BuildMachineOSBuild - 17G65 - CFBundleDevelopmentRegion - en - CFBundleExecutable - FlutterEmbedderFileChooser - CFBundleIdentifier - com.google.FlutterEmbedderFileChooser - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - FlutterEmbedderFileChooser - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSupportedPlatforms - - MacOSX - - CFBundleVersion - 1 - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 9B55 - DTPlatformVersion - GM - DTSDKBuild - 17B41 - DTSDKName - macosx10.13 - DTXcode - 0910 - DTXcodeBuild - 9B55 - - diff --git a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/_CodeSignature/CodeResources b/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/_CodeSignature/CodeResources deleted file mode 100644 index 3a83a983..00000000 --- a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/A/_CodeSignature/CodeResources +++ /dev/null @@ -1,165 +0,0 @@ - - - - - files - - Resources/Info.plist - - DFRRJ1XNFr8hsTcRjUFgl4ry8Yk= - - - files2 - - Headers/FLEFileChooserPlugin.h - - hash - - o7chZmnJ+qfIragP+xmEb3UC50A= - - hash2 - - 6wAZtnWPC7f3ZN8Om2Ml3Ysu8xIeQK0ULkIh9tAoDq0= - - - Headers/FlutterEmbedderFileChooser.h - - hash - - J8d0BRuKDgrMz+Ednay0vgLNtZ8= - - hash2 - - /nsFBdhdAgue64ue4CD05SUarkLJ3l8uVhwMxF/UGUI= - - - Modules/module.modulemap - - hash - - Q0zUkqeIk9RB1nYV2gh5TOxAh1k= - - hash2 - - Wghb5KTXPF9nOL2atqe9NFOJ7GxUWOCQCSlppILYt/0= - - - Resources/Info.plist - - hash - - DFRRJ1XNFr8hsTcRjUFgl4ry8Yk= - - hash2 - - j6623NJ1u6UqS6oXnFxCnW6Ohmf+WPUiQaJXacNhx1Q= - - - - rules - - ^Resources/ - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ - - nested - - weight - 10 - - ^.* - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^Resources/ - - weight - 20 - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^[^/]+$ - - nested - - weight - 10 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - - diff --git a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/Current b/feather/macos/FlutterEmbedderFileChooser.framework/Versions/Current deleted file mode 120000 index 8c7e5a66..00000000 --- a/feather/macos/FlutterEmbedderFileChooser.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/FlutterEmbedderMacFeather b/feather/macos/FlutterEmbedderMacFeather.framework/FlutterEmbedderMacFeather deleted file mode 120000 index a8a2ae9b..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/FlutterEmbedderMacFeather +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/FlutterEmbedderMacFeather \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Headers b/feather/macos/FlutterEmbedderMacFeather.framework/Headers deleted file mode 120000 index a177d2a6..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Modules b/feather/macos/FlutterEmbedderMacFeather.framework/Modules deleted file mode 120000 index 5736f318..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Modules +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Modules \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Resources b/feather/macos/FlutterEmbedderMacFeather.framework/Resources deleted file mode 120000 index 953ee36f..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/FlutterEmbedderMacFeather b/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/FlutterEmbedderMacFeather deleted file mode 100755 index d2e8c6cc..00000000 Binary files a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/FlutterEmbedderMacFeather and /dev/null differ diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEChannels.h b/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEChannels.h deleted file mode 100644 index 3038bc68..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEChannels.h +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import - -/** - * An object encapsulating a method call from Flutter. - */ -@interface FLEMethodCall : NSObject - -/** - * Initializes an FLEMethodCall. If |arguments| is provided, it must be serializable to JSON. - */ -- (nonnull instancetype)initWithMethodName:(nonnull NSString *)name - arguments:(nullable id)arguments NS_DESIGNATED_INITIALIZER; -- (nonnull instancetype)init NS_UNAVAILABLE; - -/** - * The name of the method being called. - */ -@property(readonly, nonatomic, nonnull) NSString *methodName; - -/** - * The arguments to the method being called, if any. - * - * This object must be serializable to JSON. See - * https://docs.flutter.io/flutter/services/JSONMethodCodec-class.html - * for supported types. - */ -@property(readonly, nonatomic, nullable) id arguments; - -@end - -#pragma mark - - -/** - * A method call result callback. Used for sending a method call's response back to the - * Flutter engine. The result must be serializable to JSON. - */ -typedef void (^FLEMethodResult)(id _Nullable result); - -/** - * A constant that can be passed to an FLEMethodResult to indicate that the message is not handled - * (e.g., the method name is unknown). - */ -extern NSString const *_Nonnull FLEMethodNotImplemented; - -/** - * An error object that can be passed to an FLEMethodResult to send an error response to the caller - * on the Flutter side. - */ -@interface FLEMethodError : NSObject - -/** - * Initializes an FLEMethodError. If |details| is provided, it must be serializable to JSON. - */ -- (nonnull instancetype)initWithCode:(nonnull NSString *)code - message:(nullable NSString *)message - details:(nullable id)details NS_DESIGNATED_INITIALIZER; -- (nonnull instancetype)init NS_UNAVAILABLE; - -/** - * The error code, as a string. - */ -@property(readonly, nonatomic, nonnull) NSString *code; - -/** - * A human-readable description of the error. - */ -@property(readonly, nonatomic, nullable) NSString *message; - -/** - * Any additional details or context about the error. - * - * This object must be serializable to JSON. - */ -@property(readonly, nonatomic, nullable) id details; - -@end diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLECodecs.h b/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLECodecs.h deleted file mode 100644 index d4fa7298..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLECodecs.h +++ /dev/null @@ -1,181 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import - -#import "FLEChannels.h" - -/** - * Translates between a binary message and higher-level method call and response/error objects. - */ -@protocol FLEMethodCodec - -/** - * Returns the shared instance of the codec. - */ -+ (nonnull instancetype)sharedInstance; - -/** - * Returns a binary encoding of the given |methodCall|, or nil if the method call cannot be - * serialized by this codec. - */ -- (nullable NSData*)encodeMethodCall:(nonnull FLEMethodCall*)methodCall; - -/** - * Returns the FLEMethodCall encoded in |methodData|, or nil if it cannot be decoded. - */ -- (nullable FLEMethodCall*)decodeMethodCall:(nonnull NSData*)methodData; - -/** - * Returns a binary encoding of |result|. Returns nil if |result| is not a type supported by the - * codec. - */ -- (nullable NSData*)encodeSuccessEnvelope:(nullable id)result; - -/** - * Returns a binary encoding of |error|. Returns nil if the |details| parameter of |error| is not - * a type supported by the codec. - */ -- (nullable NSData*)encodeErrorEnvelope:(nonnull FLEMethodError*)error; - -@end - -/** - * A codec that uses JSON as the encoding format. Method arguments and error details for plugins - * using this codec must be serializable to JSON. - */ -@interface FLEJSONMethodCodec : NSObject -@end - -NS_ASSUME_NONNULL_BEGIN - -typedef NS_ENUM(NSInteger, FLEStandardDataType) { - FLEStandardDataTypeUInt8, - FLEStandardDataTypeInt32, - FLEStandardDataTypeInt64, - FLEStandardDataTypeFloat64, -}; - -@interface FLEStandardWriter : NSObject -- (instancetype )initWithData:(NSMutableData*)data; -- (void)writeByte:(UInt8)value; -- (void)writeBytes:(const void*)bytes length:(NSUInteger)length; -- (void)writeData:(NSData*)data; -- (void)writeSize:(UInt32)size; -- (void)writeAlignment:(UInt8)alignment; -- (void)writeUTF8:(NSString*)value; -- (void)writeValue:(id )value; -@end - -@interface FLEStandardReader : NSObject -- (instancetype )initWithData:(NSData* )data; -- (BOOL)hasMore; -- (UInt8)readByte; -- (void)readBytes:(void*)destination length:(NSUInteger)length; -- (NSData*)readData:(NSUInteger)length; -- (UInt32)readSize; -- (void)readAlignment:(UInt8)alignment; -- (NSString*)readUTF8; -- (id _Nullable )readValue; -- (id _Nullable )readValueOfType:(UInt8)type; -@end - - -@interface FLEStandardReaderWriter : NSObject -- (FLEStandardWriter*)writerWithData:(NSMutableData*)data; -- (FLEStandardReader*)readerWithData:(NSData*)data; -@end - - -/** - * A codec that uses JSON as the encoding format. Method arguments and error details for plugins - * using this codec must be serializable to JSON. - */ -@interface FLEStandardMethodCodec : NSObject -+ (instancetype _Nonnull )codecWithReaderWriter:(FLEStandardReaderWriter* _Nonnull)readerWriter; -@end - -@interface FLEStandardTypedData : NSObject -/** - Creates a `FlutterStandardTypedData` which interprets the specified data - as plain bytes. - - - Parameter data: the byte data. - */ -+ (instancetype)typedDataWithBytes:(NSData*)data; - -/** - Creates a `FlutterStandardTypedData` which interprets the specified data - as 32-bit signed integers. - - - Parameter data: the byte data. The length must be divisible by 4. - */ -+ (instancetype)typedDataWithInt32:(NSData*)data; - -/** - Creates a `FlutterStandardTypedData` which interprets the specified data - as 64-bit signed integers. - - - Parameter data: the byte data. The length must be divisible by 8. - */ -+ (instancetype)typedDataWithInt64:(NSData*)data; - -/** - Creates a `FlutterStandardTypedData` which interprets the specified data - as 64-bit floats. - - - Parameter data: the byte data. The length must be divisible by 8. - */ -+ (instancetype)typedDataWithFloat64:(NSData*)data; - -+ (instancetype)typedDataWithData:(NSData*)data type:(FLEStandardDataType)type; - -/** - The raw underlying data buffer. - */ -@property(readonly, nonatomic) NSData* data; - -/** - The type of the encoded values. - */ -@property(readonly, nonatomic) FLEStandardDataType type; - -/** - The number of value items encoded. - */ -@property(readonly, nonatomic) UInt32 elementCount; - -/** - The number of bytes used by the encoding of a single value item. - */ -@property(readonly, nonatomic) UInt8 elementSize; -@end - -@interface FLEStandardBigInteger : NSObject -/** - Creates a `FlutterStandardBigInteger` from a hexadecimal representation. - - - Parameter hex: a hexadecimal string. - */ -+ (instancetype)bigIntegerWithHex:(NSString*)hex; - -/** - The hexadecimal string representation of this integer. - */ -@property(readonly, nonatomic) NSString* hex; -@end - - -NS_ASSUME_NONNULL_END -// TODO: Implement the other core Flutter codecs. Issue #67. diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEOpenGLContextHandling.h b/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEOpenGLContextHandling.h deleted file mode 100644 index 4d54e6b1..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEOpenGLContextHandling.h +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -/** - * Protocol for views owned by FLEViewController to handle context changes, specifically relating to - * OpenGL context changes. - */ -@protocol FLEOpenGLContextHandling - -/** - * Sets the receiver as the current context object. - */ -- (void)makeCurrentContext; - -/** - * Called when the display is updated. In an NSOpenGLView this is best handled via a flushBuffer - * call. - */ -- (void)onPresent; - -@end diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEPlugin.h b/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEPlugin.h deleted file mode 100644 index d5b57b98..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEPlugin.h +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import - -#import "FLEChannels.h" -#import "FLECodecs.h" - -@class FLEViewController; - -/** - * A plugin is an object that can respond appropriately to Flutter platform messages over a specific - * named system channel. See https://flutter.io/platform-channels/. - * - * Note: This interface will be changing in the future to more closely match the iOS Flutter - * platform message API. It will be a one-time breaking change. - */ -@protocol FLEPlugin - -/** - * A weak reference to the owning controller. May be used to send messages to the Flutter - * framework. - */ -@property(nullable, weak) FLEViewController *controller; - -/** - * The name of the system channel via which this plugin communicates. - */ -@property(nonnull, readonly) NSString *channel; - -/** - * Called when a message is sent from Flutter on this plugin's channel. - * The result callback must be called exactly once, with one of: - * - FLEMethodNotImplemented, if the method call is unknown. - * - An FLEMethodError, if the method call was understood but there was a - * problem handling it. - * - Any other value (including nil) to indicate success. The value will - * be returned to the Flutter caller, and must be serializable to JSON. - * - * If handling the method involves multiple responses to Flutter, follow-up - * messages can be sent by calling the other direction using - * -[FLEViewController invokeMethod:arguments:onChannel:]. - */ -- (void)handleMethodCall:(nonnull FLEMethodCall *)call result:(nonnull FLEMethodResult)result; - -@optional - -/** - * If implemented, returns the codec to use for method calls to this plugin. - * - * If not implemented, the codec is assumed to be FLEJSONMethodCodec. Note that this is different - * from existing Flutter platforms, which default to the standard codec; this is to preserve - * backwards compatibility for FLEPlugin until the breaking change for the platform messages API. - */ -@property(nonnull, readonly) id codec; - -@end diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEReshapeListener.h b/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEReshapeListener.h deleted file mode 100644 index f8557814..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEReshapeListener.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import - -/** - * Protocol for listening to reshape events on this FlutterView. - * Used to notify the underlying Flutter engine of the new screen dimensions. - * Reflected from [NSOpenGLView.reshape]. - */ -@protocol FLEReshapeListener - -- (void)viewDidReshape:(nonnull NSOpenGLView *)view; - -@end diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEView.h b/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEView.h deleted file mode 100644 index 1bf7a3f1..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEView.h +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import -#import - -/** - * View capable of acting as a rendering target and input source for the Flutter - * engine. - */ -@interface FLEView : NSOpenGLView - -/** - * Listener for reshape events. See protocol description. - */ -@property(nonatomic, weak, nullable) IBOutlet id reshapeListener; - -@end diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEViewController.h b/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEViewController.h deleted file mode 100644 index 3d8d6245..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FLEViewController.h +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import - -#import "FLECodecs.h" -#import "FLEOpenGLContextHandling.h" -#import "FLEPlugin.h" -#import "FLEReshapeListener.h" - -/** - * Controls embedder plugins and communication with the underlying Flutter engine, managing a view - * intended to handle key inputs and drawing protocols (see |view|). - * - * Can be launched headless (no managed view), at which point a Dart executable will be run on the - * Flutter engine in non-interactive mode, or with a drawable Flutter canvas. - */ -@interface FLEViewController : NSViewController - -- (void)receivedUriLaunch:(nonnull NSString *)uri; - - -- (void)setCurrentActivityMessage:(nonnull NSString *)message; - -- (void)showSignInView; - -- (void) hideSignInView; - -- (IBAction)signInCancelled:(id _Nonnull )sender; - -/** - * The view this controller manages when launched in interactive mode (headless set to false). Must - * be capable of handling text input events, and the OpenGL context handling protocols. - */ -@property(nullable) NSView *view; - -@property (strong, nullable) IBOutlet NSView *signInView; - -@property (nonatomic, retain, nullable) IBOutlet NSProgressIndicator* activityIndicator; - -@property (weak) IBOutlet NSTextField *currentActivityTextField; - -/** - * Launches the Flutter engine in snapshot mode with the provided configuration. The path argument - * is used to identify the Flutter application the engine should be configured with. See - * https://github.com/flutter/engine/wiki/Custom-Flutter-Engine-Embedders for more information - * on embedding, including the meaning of various possible arguments. - * - * In snapshot mode, the snapshot in the assets directory will be used instead of the original - * dart sources. - */ -- (BOOL)launchEngineWithAssetsPath:(nonnull NSURL *)assets - asHeadless:(BOOL)headless - commandLineArguments:(nonnull NSArray *)arguments; - -/** - * Launches the Flutter engine in source mode with the provided configuration. The path arguments - * are used to identify the Flutter application the engine should be configured with. See - * https://github.com/flutter/engine/wiki/Custom-Flutter-Engine-Embedders for more information - * on embedding, including the meaning of various possible arguments. - * - * In source mode, the Dart source and its dependencies will be read directly from their locations - * on disk. - * TODO: Evaluate whether this mode needs to be present in the long term, and if so reconsider this - * API structure. - */ -- (BOOL)launchEngineWithMainPath:(nonnull NSURL *)main - assetsPath:(nonnull NSURL *)assets - packagesPath:(nonnull NSURL *)packages - asHeadless:(BOOL)headless - commandLineArguments:(nonnull NSArray *)arguments; - -/** - * Adds a plugin to the view controller to handle domain-specific system messages. The plugin's - * channel property will determine which system channel the plugin operates on. Only one plugin - * can operate on a given named channel; if two plugins declare the same channel, the second - * add will return NO. - */ -- (BOOL)addPlugin:(nonnull id)plugin; - -/** - * Sends a platform message to the Flutter engine on |channel|, encoded using |codec|. - * - * // TODO: Move to an API that mirrors the FlutterMethodChannel API. - * // TODO: Support responses. - */ -- (void)invokeMethod:(nonnull NSString *)method - arguments:(nullable id)arguments - onChannel:(nonnull NSString *)channel - withCodec:(nonnull id)codec; - -/** - * Calls invokeMethod:arguments:onChannel:withCodec: using FLEJSONCodec. See the note in - * FLEPlugin.h for why JSON is the default. - */ -- (void)invokeMethod:(nonnull NSString *)method - arguments:(nullable id)arguments - onChannel:(nonnull NSString *)channel; - -@end - -@interface FoobarView : NSView - -@end - diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FlutterEmbedderMacFeather.h b/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FlutterEmbedderMacFeather.h deleted file mode 100644 index 023bff70..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Headers/FlutterEmbedderMacFeather.h +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import "FLEChannels.h" -#import "FLECodecs.h" -#import "FLEOpenGLContextHandling.h" -#import "FLEPlugin.h" -#import "FLEReshapeListener.h" -#import "FLEView.h" -#import "FLEViewController.h" diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Modules/module.modulemap b/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Modules/module.modulemap deleted file mode 100644 index 8f883a17..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module FlutterEmbedderMacFeather { - umbrella header "FlutterEmbedderMacFeather.h" - - export * - module * { export * } -} diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Resources/Info.plist b/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Resources/Info.plist deleted file mode 100644 index 89adb754..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/Resources/Info.plist +++ /dev/null @@ -1,47 +0,0 @@ - - - - - BuildMachineOSBuild - 17G65 - CFBundleDevelopmentRegion - en - CFBundleExecutable - FlutterEmbedderMacFeather - CFBundleIdentifier - com.google.FlutterEmbedderMac - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - FlutterEmbedderMacFeather - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSupportedPlatforms - - MacOSX - - CFBundleVersion - 1 - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 9B55 - DTPlatformVersion - GM - DTSDKBuild - 17B41 - DTSDKName - macosx10.13 - DTXcode - 0910 - DTXcodeBuild - 9B55 - UIDeviceFamily - - 1 - 2 - - - diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/_CodeSignature/CodeResources b/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/_CodeSignature/CodeResources deleted file mode 100644 index a0398173..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/A/_CodeSignature/CodeResources +++ /dev/null @@ -1,231 +0,0 @@ - - - - - files - - Resources/Info.plist - - lktashG4aZTJEhxr605cyYaILHU= - - - files2 - - Headers/FLEChannels.h - - hash - - t5zUbejkzYkcAlKUVsA5M21gDSA= - - hash2 - - 4mKeAe7nF9qt24yrhlHvHuT1v1Ye+wQcW+tGUrKLsTA= - - - Headers/FLECodecs.h - - hash - - JKfA4lXMRWQFJ8hB3iMQrIgmeZI= - - hash2 - - Kzy9bmI1agViqQPBAyCN37rDNEV2YBD26K0b7j74TwI= - - - Headers/FLEOpenGLContextHandling.h - - hash - - rTAR+uM1y9Mt4sqmkBzoCPb1BxE= - - hash2 - - Su0f5dK5dpmByikkCxttjOC846IpAHOto8V/e6pq5WQ= - - - Headers/FLEPlugin.h - - hash - - eKR2qITpnYr6cDxidyt3IlsBWvI= - - hash2 - - dxZ8p/9jfuDU56q+1S8riMHCXA5/4xps6aTLpuCcxkU= - - - Headers/FLEReshapeListener.h - - hash - - LUMi2vMwfxTBRgMWHPm7Z/U030c= - - hash2 - - OmLsafGShz9L3Z8NcLbXXxNEZjFe4bAJTfBM7lDePsI= - - - Headers/FLEView.h - - hash - - aJnsIo9F4+ZiD0o9PpmOmAQ/fYc= - - hash2 - - Nrxc/b+P6qwhXL3zDta40TiZjxDL/xbuNG07Msw0JOM= - - - Headers/FLEViewController.h - - hash - - zr4PgAfxAkxYs7Z5QspOm2AHyy0= - - hash2 - - ebi0gwZS2urwcXilvy6NSdXURspvZnPwuzeMF0b1zks= - - - Headers/FlutterEmbedderMacFeather.h - - hash - - uZ4eKVn+5raNoFuqiAh6O3apwBA= - - hash2 - - ExeJ5QGTx+wHV+e8+kMxHG8bmip0MJilngighyodAYM= - - - Modules/module.modulemap - - hash - - 5eXQcABLV383S4akjJ/z3rJeN+I= - - hash2 - - K2pPIp/B/AGYqEa/CAeWGoXUN3K5PyWMQHd1Xb4WxiM= - - - Resources/Info.plist - - hash - - lktashG4aZTJEhxr605cyYaILHU= - - hash2 - - 5sg11gLbKPSLVK+zGrdT1cGF4rEyzY61kteayQzGUNM= - - - - rules - - ^Resources/ - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ - - nested - - weight - 10 - - ^.* - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^Resources/ - - weight - 20 - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^[^/]+$ - - nested - - weight - 10 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - - diff --git a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/Current b/feather/macos/FlutterEmbedderMacFeather.framework/Versions/Current deleted file mode 120000 index 8c7e5a66..00000000 --- a/feather/macos/FlutterEmbedderMacFeather.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderMenubar.framework/FlutterEmbedderMenubar b/feather/macos/FlutterEmbedderMenubar.framework/FlutterEmbedderMenubar deleted file mode 120000 index e6dbc0be..00000000 --- a/feather/macos/FlutterEmbedderMenubar.framework/FlutterEmbedderMenubar +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/FlutterEmbedderMenubar \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderMenubar.framework/Headers b/feather/macos/FlutterEmbedderMenubar.framework/Headers deleted file mode 120000 index a177d2a6..00000000 --- a/feather/macos/FlutterEmbedderMenubar.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderMenubar.framework/Modules b/feather/macos/FlutterEmbedderMenubar.framework/Modules deleted file mode 120000 index 5736f318..00000000 --- a/feather/macos/FlutterEmbedderMenubar.framework/Modules +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Modules \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderMenubar.framework/Resources b/feather/macos/FlutterEmbedderMenubar.framework/Resources deleted file mode 120000 index 953ee36f..00000000 --- a/feather/macos/FlutterEmbedderMenubar.framework/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources \ No newline at end of file diff --git a/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/FlutterEmbedderMenubar b/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/FlutterEmbedderMenubar deleted file mode 100755 index 303f6793..00000000 Binary files a/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/FlutterEmbedderMenubar and /dev/null differ diff --git a/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/Headers/FLEMenubarPlugin.h b/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/Headers/FLEMenubarPlugin.h deleted file mode 100644 index d751ee99..00000000 --- a/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/Headers/FLEMenubarPlugin.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import - -#import - -/** - * A Flutter plugin to control the native menu bar. - */ -@interface FLEMenubarPlugin : NSObject - -/** - * The menu item that Flutter-provided menus should be inserted after. If unset, Flutter-provided - * menus will be inserted after the application menu (i.e., starting at index 1). - */ -@property(nonatomic) NSMenuItem *insertAfterMenuItem; - -@end diff --git a/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/Headers/FlutterEmbedderMenubar.h b/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/Headers/FlutterEmbedderMenubar.h deleted file mode 100644 index cf7e9cce..00000000 --- a/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/Headers/FlutterEmbedderMenubar.h +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -#import "FLEMenubarPlugin.h" diff --git a/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/Modules/module.modulemap b/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/Modules/module.modulemap deleted file mode 100644 index c0c29431..00000000 --- a/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/Modules/module.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module FlutterEmbedderMenubar { - umbrella header "FlutterEmbedderMenubar.h" - - export * - module * { export * } -} diff --git a/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/Resources/Info.plist b/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/Resources/Info.plist deleted file mode 100644 index cab0d16a..00000000 --- a/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/Resources/Info.plist +++ /dev/null @@ -1,44 +0,0 @@ - - - - - BuildMachineOSBuild - 17G65 - CFBundleDevelopmentRegion - en - CFBundleExecutable - FlutterEmbedderMenubar - CFBundleIdentifier - com.google.FlutterEmbedderMenubar - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - FlutterEmbedderMenubar - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSupportedPlatforms - - MacOSX - - CFBundleVersion - 1 - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 9B55 - DTPlatformVersion - GM - DTSDKBuild - 17B41 - DTSDKName - macosx10.13 - DTXcode - 0910 - DTXcodeBuild - 9B55 - NSHumanReadableCopyright - Copyright © 2018 Google LLC. All rights reserved. - - diff --git a/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/_CodeSignature/CodeResources b/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/_CodeSignature/CodeResources deleted file mode 100644 index 120ff65b..00000000 --- a/feather/macos/FlutterEmbedderMenubar.framework/Versions/A/_CodeSignature/CodeResources +++ /dev/null @@ -1,165 +0,0 @@ - - - - - files - - Resources/Info.plist - - TXRUQhCiny9jnk8/UNXj+9etaOU= - - - files2 - - Headers/FLEMenubarPlugin.h - - hash - - rwuFgTPBsXXvy9UEUts8PcTBhWE= - - hash2 - - /uSrEvzhXQ4pP9BryiYfssFEvZcZheXuHcSy9QRyR6Y= - - - Headers/FlutterEmbedderMenubar.h - - hash - - Owj9VmFcYl/HVCK57y1vsF8wIo4= - - hash2 - - p1KdGuH5TGbguNADO4nlyS8U7cSnLiepIJrvse7J1pQ= - - - Modules/module.modulemap - - hash - - mZ+PUPSHrEMG1DdWmD+PHkzG3Sc= - - hash2 - - tDmy2s0D7II4n3NHSAPHghjgPSfC3Km8SxGjoUtqdAg= - - - Resources/Info.plist - - hash - - TXRUQhCiny9jnk8/UNXj+9etaOU= - - hash2 - - mLPzl+7JZYsBNvyu0K+QDnaV+bIN8NnKQkkhxdvaYtU= - - - - rules - - ^Resources/ - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ - - nested - - weight - 10 - - ^.* - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^Resources/ - - weight - 20 - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^[^/]+$ - - nested - - weight - 10 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - - diff --git a/feather/macos/FlutterEmbedderMenubar.framework/Versions/Current b/feather/macos/FlutterEmbedderMenubar.framework/Versions/Current deleted file mode 120000 index 8c7e5a66..00000000 --- a/feather/macos/FlutterEmbedderMenubar.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/feather/macos/Info.plist b/feather/macos/Info.plist deleted file mode 100644 index b8d0b3a0..00000000 --- a/feather/macos/Info.plist +++ /dev/null @@ -1,36 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - $(PRODUCT_NAME) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0.0 - CFBundleVersion - 1 - LSApplicationCategoryType - - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - Copyright © 2018. All rights reserved. - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/feather/macos/MainWindow.swift b/feather/macos/MainWindow.swift deleted file mode 100644 index abecf89c..00000000 --- a/feather/macos/MainWindow.swift +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2018 Google LLC -// -// 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. - -import Cocoa - -class MainWindow: NSWindow { - @IBOutlet weak var flutterViewController: FLEViewController! - - override func awakeFromNib() { - flutterViewController.add(FLEColorPanelPlugin()) - flutterViewController.add(FLEFileChooserPlugin()) - flutterViewController.add(FLEMenubarPlugin()) - - let assetsPath = Bundle.main.bundlePath + "/Contents/Resources/flutter_assets"; - NSLog("Assets Path: %@", assetsPath); - - let assets = NSURL.fileURL(withPath: assetsPath, isDirectory: true); - // Pass through argument zero, since the Flutter engine expects to be processing a full - // command line string. - var arguments = [CommandLine.arguments[0]]; -#if !DEBUG - arguments.append("--dart-non-checked-mode"); -#endif - flutterViewController.launchEngine( - withAssetsPath: assets, - asHeadless: false, - commandLineArguments: arguments) - - super.awakeFromNib() - } -} - diff --git a/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/AppAuth.xcscheme b/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/AppAuth.xcscheme deleted file mode 100644 index 433364ef..00000000 --- a/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/AppAuth.xcscheme +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/GTMAppAuth.xcscheme b/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/GTMAppAuth.xcscheme deleted file mode 100644 index a2afd835..00000000 --- a/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/GTMAppAuth.xcscheme +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/GTMSessionFetcher.xcscheme b/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/GTMSessionFetcher.xcscheme deleted file mode 100644 index 53315c7a..00000000 --- a/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/GTMSessionFetcher.xcscheme +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/Pods-Example Embedder.xcscheme b/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/Pods-Example Embedder.xcscheme deleted file mode 100644 index 16da6269..00000000 --- a/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/Pods-Example Embedder.xcscheme +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/xcschememanagement.plist b/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 1cb509d5..00000000 --- a/feather/macos/Pods/Pods.xcodeproj/xcuserdata/mark.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,39 +0,0 @@ - - - - - SchemeUserState - - AppAuth.xcscheme - - isShown - - orderHint - 3 - - GTMAppAuth.xcscheme - - isShown - - orderHint - 4 - - GTMSessionFetcher.xcscheme - - isShown - - orderHint - 5 - - Pods-Example Embedder.xcscheme - - isShown - - orderHint - 6 - - - SuppressBuildableAutocreation - - - diff --git a/feather/macos/SignInView.swift b/feather/macos/SignInView.swift deleted file mode 100644 index 37417b11..00000000 --- a/feather/macos/SignInView.swift +++ /dev/null @@ -1,16 +0,0 @@ -import Cocoa - - -class SignInView: NSView { - - override init(frame frameRect: NSRect) { - super.init(frame:frameRect); -// Bundle.main.loadNibNamed(NSNib.Name(rawValue: "SignInView"), owner: self, topLevelObjects: nil); -// self.view.frame = NSMakeRect(0, 0, frame.size.width, frame.size.height); -// self.addSubview(view); - } - - required init?(coder decoder: NSCoder) { - super.init(coder: decoder); - } -} diff --git a/feather/macos/SignInView.xib b/feather/macos/SignInView.xib deleted file mode 100644 index ebda97f5..00000000 --- a/feather/macos/SignInView.xib +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/feather/macos/en.lproj/InfoPlist.strings b/feather/macos/en.lproj/InfoPlist.strings deleted file mode 100644 index e90f884c..00000000 --- a/feather/macos/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -"CFBundleDisplayName" = "NKUST AP"; -"CFBundleName" = "NKUST AP"; diff --git a/feather/macos/en.lproj/MainMenu.strings b/feather/macos/en.lproj/MainMenu.strings deleted file mode 100644 index 74bb6bb9..00000000 --- a/feather/macos/en.lproj/MainMenu.strings +++ /dev/null @@ -1,195 +0,0 @@ - -/* Class = "NSMenuItem"; title = "FeatherApp"; ObjectID = "1Xt-HY-uBw"; */ -"1Xt-HY-uBw.title" = "NKUST AP"; - -/* Class = "NSMenu"; title = "Find"; ObjectID = "1b7-l0-nxx"; */ -"1b7-l0-nxx.title" = "Find"; - -/* Class = "NSMenuItem"; title = "Transformations"; ObjectID = "2oI-Rn-ZJC"; */ -"2oI-Rn-ZJC.title" = "Transformations"; - -/* Class = "NSMenu"; title = "Spelling"; ObjectID = "3IN-sU-3Bg"; */ -"3IN-sU-3Bg.title" = "Spelling"; - -/* Class = "NSMenu"; title = "Speech"; ObjectID = "3rS-ZA-NoH"; */ -"3rS-ZA-NoH.title" = "Speech"; - -/* Class = "NSMenuItem"; title = "Find"; ObjectID = "4EN-yA-p0u"; */ -"4EN-yA-p0u.title" = "Find"; - -/* Class = "NSMenuItem"; title = "Enter Full Screen"; ObjectID = "4J7-dP-txa"; */ -"4J7-dP-txa.title" = "Enter Full Screen"; - -/* Class = "NSMenuItem"; title = "Quit FeatherApp"; ObjectID = "4sb-4s-VLi"; */ -"4sb-4s-VLi.title" = "Quit NKUST AP"; - -/* Class = "NSMenuItem"; title = "Edit"; ObjectID = "5QF-Oa-p0T"; */ -"5QF-Oa-p0T.title" = "Edit"; - -/* Class = "NSMenuItem"; title = "About FeatherApp"; ObjectID = "5kV-Vb-QxS"; */ -"5kV-Vb-QxS.title" = "About NKUST AP"; - -/* Class = "NSMenuItem"; title = "Redo"; ObjectID = "6dh-zS-Vam"; */ -"6dh-zS-Vam.title" = "Redo"; - -/* Class = "NSMenuItem"; title = "Correct Spelling Automatically"; ObjectID = "78Y-hA-62v"; */ -"78Y-hA-62v.title" = "Correct Spelling Automatically"; - -/* Class = "NSMenuItem"; title = "Substitutions"; ObjectID = "9ic-FL-obx"; */ -"9ic-FL-obx.title" = "Substitutions"; - -/* Class = "NSMenuItem"; title = "Smart Copy/Paste"; ObjectID = "9yt-4B-nSM"; */ -"9yt-4B-nSM.title" = "Smart Copy/Paste"; - -/* Class = "NSMenu"; title = "Main Menu"; ObjectID = "AYu-sK-qS6"; */ -"AYu-sK-qS6.title" = "Main Menu"; - -/* Class = "NSMenuItem"; title = "Preferences…"; ObjectID = "BOF-NM-1cW"; */ -"BOF-NM-1cW.title" = "Preferences…"; - -/* Class = "NSTextFieldCell"; title = "Waiting for web browser sign-in..."; ObjectID = "Cjz-n0-fmH"; */ -"Cjz-n0-fmH.title" = "Waiting for web browser sign-in..."; - -/* Class = "NSMenuItem"; title = "Spelling and Grammar"; ObjectID = "Dv1-io-Yv7"; */ -"Dv1-io-Yv7.title" = "Spelling and Grammar"; - -/* Class = "NSMenu"; title = "Substitutions"; ObjectID = "FeM-D8-WVr"; */ -"FeM-D8-WVr.title" = "Substitutions"; - -/* Class = "NSMenuItem"; title = "View"; ObjectID = "H8h-7b-M4v"; */ -"H8h-7b-M4v.title" = "View"; - -/* Class = "NSMenuItem"; title = "Text Replacement"; ObjectID = "HFQ-gK-NFA"; */ -"HFQ-gK-NFA.title" = "Text Replacement"; - -/* Class = "NSMenuItem"; title = "Show Spelling and Grammar"; ObjectID = "HFo-cy-zxI"; */ -"HFo-cy-zxI.title" = "Show Spelling and Grammar"; - -/* Class = "NSMenu"; title = "View"; ObjectID = "HyV-fh-RgO"; */ -"HyV-fh-RgO.title" = "View"; - -/* Class = "NSMenuItem"; title = "Show All"; ObjectID = "Kd2-mp-pUS"; */ -"Kd2-mp-pUS.title" = "Show All"; - -/* Class = "NSMenuItem"; title = "Bring All to Front"; ObjectID = "LE2-aR-0XJ"; */ -"LE2-aR-0XJ.title" = "Bring All to Front"; - -/* Class = "NSMenuItem"; title = "Services"; ObjectID = "NMo-om-nkz"; */ -"NMo-om-nkz.title" = "Services"; - -/* Class = "NSMenuItem"; title = "Minimize"; ObjectID = "OY7-WF-poV"; */ -"OY7-WF-poV.title" = "Minimize"; - -/* Class = "NSMenuItem"; title = "Hide FeatherApp"; ObjectID = "Olw-nP-bQN"; */ -"Olw-nP-bQN.title" = "Hide NKUST AP"; - -/* Class = "NSMenuItem"; title = "Find Previous"; ObjectID = "OwM-mh-QMV"; */ -"OwM-mh-QMV.title" = "Find Previous"; - -/* Class = "NSMenuItem"; title = "Stop Speaking"; ObjectID = "Oyz-dy-DGm"; */ -"Oyz-dy-DGm.title" = "Stop Speaking"; - -/* Class = "NSWindow"; title = "FeatherApp"; ObjectID = "QvC-M9-y7g"; */ -"QvC-M9-y7g.title" = "NKUST AP"; - -/* Class = "NSMenuItem"; title = "Zoom"; ObjectID = "R4o-n2-Eq4"; */ -"R4o-n2-Eq4.title" = "Zoom"; - -/* Class = "NSMenuItem"; title = "Select All"; ObjectID = "Ruw-6m-B2m"; */ -"Ruw-6m-B2m.title" = "Select All"; - -/* Class = "NSMenuItem"; title = "Jump to Selection"; ObjectID = "S0p-oC-mLd"; */ -"S0p-oC-mLd.title" = "Jump to Selection"; - -/* Class = "NSMenu"; title = "Window"; ObjectID = "Td7-aD-5lo"; */ -"Td7-aD-5lo.title" = "Window"; - -/* Class = "NSMenuItem"; title = "Capitalize"; ObjectID = "UEZ-Bs-lqG"; */ -"UEZ-Bs-lqG.title" = "Capitalize"; - -/* Class = "NSMenuItem"; title = "Hide Others"; ObjectID = "Vdr-fp-XzO"; */ -"Vdr-fp-XzO.title" = "Hide Others"; - -/* Class = "NSMenu"; title = "Edit"; ObjectID = "W48-6f-4Dl"; */ -"W48-6f-4Dl.title" = "Edit"; - -/* Class = "NSMenuItem"; title = "Paste and Match Style"; ObjectID = "WeT-3V-zwk"; */ -"WeT-3V-zwk.title" = "Paste and Match Style"; - -/* Class = "NSMenuItem"; title = "Find…"; ObjectID = "Xz5-n4-O0W"; */ -"Xz5-n4-O0W.title" = "Find…"; - -/* Class = "NSMenuItem"; title = "Find and Replace…"; ObjectID = "YEy-JH-Tfz"; */ -"YEy-JH-Tfz.title" = "Find and Replace…"; - -/* Class = "NSMenuItem"; title = "Start Speaking"; ObjectID = "Ynk-f8-cLZ"; */ -"Ynk-f8-cLZ.title" = "Start Speaking"; - -/* Class = "NSMenuItem"; title = "Window"; ObjectID = "aUF-d1-5bR"; */ -"aUF-d1-5bR.title" = "Window"; - -/* Class = "NSMenuItem"; title = "Use Selection for Find"; ObjectID = "buJ-ug-pKt"; */ -"buJ-ug-pKt.title" = "Use Selection for Find"; - -/* Class = "NSMenu"; title = "Transformations"; ObjectID = "c8a-y6-VQd"; */ -"c8a-y6-VQd.title" = "Transformations"; - -/* Class = "NSMenuItem"; title = "Smart Links"; ObjectID = "cwL-P1-jid"; */ -"cwL-P1-jid.title" = "Smart Links"; - -/* Class = "NSMenuItem"; title = "Make Lower Case"; ObjectID = "d9M-CD-aMd"; */ -"d9M-CD-aMd.title" = "Make Lower Case"; - -/* Class = "NSMenuItem"; title = "Undo"; ObjectID = "dRJ-4n-Yzg"; */ -"dRJ-4n-Yzg.title" = "Undo"; - -/* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "fmb-7q-fym"; */ -"fmb-7q-fym.title" = "Cancel"; - -/* Class = "NSMenuItem"; title = "Paste"; ObjectID = "gVA-U4-sdL"; */ -"gVA-U4-sdL.title" = "Paste"; - -/* Class = "NSMenuItem"; title = "Smart Quotes"; ObjectID = "hQb-2v-fYv"; */ -"hQb-2v-fYv.title" = "Smart Quotes"; - -/* Class = "NSMenuItem"; title = "Check Document Now"; ObjectID = "hz2-CU-CR7"; */ -"hz2-CU-CR7.title" = "Check Document Now"; - -/* Class = "NSMenu"; title = "Services"; ObjectID = "hz9-B4-Xy5"; */ -"hz9-B4-Xy5.title" = "Services"; - -/* Class = "NSMenuItem"; title = "Check Grammar With Spelling"; ObjectID = "mK6-2p-4JG"; */ -"mK6-2p-4JG.title" = "Check Grammar With Spelling"; - -/* Class = "NSMenuItem"; title = "Delete"; ObjectID = "pa3-QI-u2k"; */ -"pa3-QI-u2k.title" = "Delete"; - -/* Class = "NSMenuItem"; title = "Find Next"; ObjectID = "q09-fT-Sye"; */ -"q09-fT-Sye.title" = "Find Next"; - -/* Class = "NSMenuItem"; title = "Check Spelling While Typing"; ObjectID = "rbD-Rh-wIN"; */ -"rbD-Rh-wIN.title" = "Check Spelling While Typing"; - -/* Class = "NSMenuItem"; title = "Smart Dashes"; ObjectID = "rgM-f4-ycn"; */ -"rgM-f4-ycn.title" = "Smart Dashes"; - -/* Class = "NSMenuItem"; title = "Data Detectors"; ObjectID = "tRr-pd-1PS"; */ -"tRr-pd-1PS.title" = "Data Detectors"; - -/* Class = "NSMenu"; title = "FeatherApp"; ObjectID = "uQy-DD-JDr"; */ -"uQy-DD-JDr.title" = "NKUST AP"; - -/* Class = "NSMenuItem"; title = "Cut"; ObjectID = "uRl-iY-unG"; */ -"uRl-iY-unG.title" = "Cut"; - -/* Class = "NSMenuItem"; title = "Make Upper Case"; ObjectID = "vmV-6d-7jI"; */ -"vmV-6d-7jI.title" = "Make Upper Case"; - -/* Class = "NSMenuItem"; title = "Copy"; ObjectID = "x3v-GG-iWU"; */ -"x3v-GG-iWU.title" = "Copy"; - -/* Class = "NSMenuItem"; title = "Speech"; ObjectID = "xrE-MZ-jX0"; */ -"xrE-MZ-jX0.title" = "Speech"; - -/* Class = "NSMenuItem"; title = "Show Substitutions"; ObjectID = "z6F-FW-3nz"; */ -"z6F-FW-3nz.title" = "Show Substitutions"; diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 98a53bab..b9dff94f 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -210,6 +210,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, Base, "zh-Hant", @@ -249,11 +250,12 @@ inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", - "${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework", + "${PODS_ROOT}/../.symlinks/flutter/ios-release/Flutter.framework", "${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework", "${BUILT_PRODUCTS_DIR}/Protobuf/Protobuf.framework", "${BUILT_PRODUCTS_DIR}/Reachability/Reachability.framework", "${BUILT_PRODUCTS_DIR}/add_2_calendar/add_2_calendar.framework", + "${BUILT_PRODUCTS_DIR}/app_review/app_review.framework", "${BUILT_PRODUCTS_DIR}/connectivity/connectivity.framework", "${BUILT_PRODUCTS_DIR}/flutter_local_notifications/flutter_local_notifications.framework", "${BUILT_PRODUCTS_DIR}/fluttertoast/fluttertoast.framework", @@ -273,6 +275,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Protobuf.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/add_2_calendar.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/app_review.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/connectivity.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_local_notifications.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/fluttertoast.framework", diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index e0332fa8..fda37f20 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -7,10 +7,6 @@ en zh - NSCalendarsUsageDescription - Feature calendar would be add schedule to calendar app - CFBundleName - ${CFBundleDisplayName} CFBundleDisplayName ${CFBundleDisplayName} CFBundleExecutable @@ -19,12 +15,27 @@ $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 + CFBundleName + ${CFBundleDisplayName} CFBundlePackageType APPL CFBundleShortVersionString $(FLUTTER_BUILD_NAME) CFBundleSignature ???? + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLName + com.nkust.ap.flutter + CFBundleURLSchemes + + nkustap + + + CFBundleVersion $(FLUTTER_BUILD_NUMBER) Fabric @@ -41,8 +52,15 @@ + LSApplicationQueriesSchemes + + fb + fb-messenger + LSRequiresIPhoneOS + NSCalendarsUsageDescription + Feature calendar would be add schedule to calendar app UILaunchStoryboardName LaunchScreen UIMainStoryboardFile diff --git a/lib/api/helper.dart b/lib/api/helper.dart index 05885380..e050de88 100644 --- a/lib/api/helper.dart +++ b/lib/api/helper.dart @@ -47,6 +47,8 @@ class Helper { break; case DioErrorType.CONNECT_TIMEOUT: throw (dioError); + case DioErrorType.SEND_TIMEOUT: + throw (dioError); break; case DioErrorType.RESPONSE: throw (dioError); diff --git a/lib/config/constants.dart b/lib/config/constants.dart index ed3d0292..337f5d55 100644 --- a/lib/config/constants.dart +++ b/lib/config/constants.dart @@ -29,6 +29,7 @@ class Constants { static const PREF_SCORE_DATA = "pref_score_data"; static const PREF_COURSE_DATA = "pref_course_data"; static const PREF_SEMESTER_DATA = "pref_semester_data"; + static const String PREF_LANGUAGE_CODE = 'pref_language_code'; static const PREF_AP_ENABLE = "pref_ap_enable"; static const PREF_BUS_ENABLE = "pref_bus_enable"; diff --git a/lib/main.dart b/lib/main.dart index ea90a366..433be733 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -89,6 +89,7 @@ class MyApp extends StatelessWidget { hintColor: Colors.white, accentColor: Resource.Colors.blue, unselectedWidgetColor: Resource.Colors.grey, + backgroundColor: Colors.black12, inputDecorationTheme: InputDecorationTheme( labelStyle: TextStyle(color: Colors.white), border: diff --git a/lib/pages/home/about/about_us_page.dart b/lib/pages/home/about/about_us_page.dart index 2771d67a..707fb0fd 100644 --- a/lib/pages/home/about/about_us_page.dart +++ b/lib/pages/home/about/about_us_page.dart @@ -118,19 +118,15 @@ class AboutUsPageState extends State IconButton( icon: Image.asset("assets/images/ic_fb.webp"), onPressed: () { - if (Platform.isAndroid) + if (Platform.isAndroid || Platform.isIOS) Utils.launchUrl('fb://page/735951703168873') .catchError((onError) => Utils.launchUrl( 'https://www.facebook.com/NKUST.ITC/')); - else if (Platform.isIOS) - Utils.launchUrl( - 'https://www.facebook.com/NKUST.ITC/'); else Utils.launchUrl( 'https://www.facebook.com/NKUST.ITC/') .catchError((onError) => Utils.showToast(app.platformError)); - ; FA.logAction('fb', 'click'); }, iconSize: 48.0, diff --git a/lib/pages/home/about/open_source_page.dart b/lib/pages/home/about/open_source_page.dart index 2b63d05e..9ba7f962 100644 --- a/lib/pages/home/about/open_source_page.dart +++ b/lib/pages/home/about/open_source_page.dart @@ -354,7 +354,30 @@ class OpenSourcePageState extends State "\n" + "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n" + "\n" + - "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.") + "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."), + _item( + 'app_review', + "MIT License\n" + + "\n" + + "Copyright (c) 2018 Rody Davis\n" + + "\n" + + "Permission is hereby granted, free of charge, to any person obtaining a copy\n" + + "of this software and associated documentation files (the \"Software\"), to deal\n" + + "in the Software without restriction, including without limitation the rights\n" + + "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n" + + "copies of the Software, and to permit persons to whom the Software is\n" + + "furnished to do so, subject to the following conditions:\n" + + "\n" + + "The above copyright notice and this permission notice shall be included in all\n" + + "copies or substantial portions of the Software.\n" + + "\n" + + "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n" + + "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n" + + "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n" + + "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n" + + "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n" + + "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n" + + "SOFTWARE."), ], ), ); diff --git a/lib/pages/home/bus/bus_reservations_page.dart b/lib/pages/home/bus/bus_reservations_page.dart index e2182201..8c568efa 100644 --- a/lib/pages/home/bus/bus_reservations_page.dart +++ b/lib/pages/home/bus/bus_reservations_page.dart @@ -226,8 +226,12 @@ class BusReservationsPageState extends State _cancelBusReservation(BusReservation busReservation) { showDialog( context: context, - builder: (BuildContext context) => ProgressDialog(app.canceling), - barrierDismissible: true); + builder: (BuildContext context) => WillPopScope( + child: ProgressDialog(app.canceling), + onWillPop: () async { + return false; + }), + barrierDismissible: false); Helper.instance .cancelBusReservation(busReservation.cancelKey) .then((response) { diff --git a/lib/pages/home/bus/bus_reserve_page.dart b/lib/pages/home/bus/bus_reserve_page.dart index 68a30485..347583d0 100644 --- a/lib/pages/home/bus/bus_reserve_page.dart +++ b/lib/pages/home/bus/bus_reserve_page.dart @@ -391,8 +391,12 @@ class BusReservePageState extends State _bookingBus(BusTime busTime) { showDialog( context: context, - builder: (BuildContext context) => ProgressDialog(app.reserving), - barrierDismissible: true); + builder: (BuildContext context) => WillPopScope( + child: ProgressDialog(app.reserving), + onWillPop: () async { + return false; + }), + barrierDismissible: false); Helper.instance.bookingBusReservation(busTime.busId).then((response) { //TODO to object String title = ""; @@ -447,8 +451,10 @@ class BusReservePageState extends State title: title, contentWidget: messageWidget, actionText: app.iKnow, - actionFunction: () => - Navigator.of(context, rootNavigator: true).pop('dialog')), + actionFunction: () { + Navigator.of(context, rootNavigator: true).pop('dialog'); + Utils.showAppReviewDialog(context); + }), ); //Utils.showDefaultDialog(context, title, message, app.iKnow, () {}); }).catchError((e) { @@ -483,8 +489,12 @@ class BusReservePageState extends State _cancelBusReservation(BusTime busTime) { showDialog( context: context, - builder: (BuildContext context) => ProgressDialog(app.canceling), - barrierDismissible: true); + builder: (BuildContext context) => WillPopScope( + child: ProgressDialog(app.canceling), + onWillPop: () async { + return false; + }), + barrierDismissible: false); Helper.instance.cancelBusReservation(busTime.cancelKey).then((response) { String title = ""; Widget messageWidget; diff --git a/lib/pages/home/leaves/leave_apply_page.dart b/lib/pages/home/leaves/leave_apply_page.dart index b09cbd88..3d318e14 100644 --- a/lib/pages/home/leaves/leave_apply_page.dart +++ b/lib/pages/home/leaves/leave_apply_page.dart @@ -1,9 +1,12 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:nkust_ap/models/models.dart'; +import 'package:nkust_ap/res/resource.dart' as Resource; import 'package:nkust_ap/utils/global.dart'; import 'package:nkust_ap/widgets/hint_content.dart'; enum _State { loading, finish, error, empty } +enum Leave { normal, sick, official, funeral, maternity } class LeaveApplyPageRoute extends MaterialPageRoute { LeaveApplyPageRoute() @@ -35,6 +38,8 @@ class LeaveApplyPageState extends State AppLocalizations app; + Leave _leave = Leave.normal; + @override void initState() { super.initState(); @@ -69,7 +74,130 @@ class LeaveApplyPageState extends State ), ); default: - return Container(); + return Theme( + data: ThemeData( + accentColor: Resource.Colors.blue, + unselectedWidgetColor: Resource.Colors.grey, + inputDecorationTheme: InputDecorationTheme( + hintStyle: TextStyle(fontSize: 20.0, color: Resource.Colors.blue), + border: UnderlineInputBorder( + borderSide: BorderSide(color: Resource.Colors.blue), + ), + ), + ), + child: ListView( + padding: EdgeInsets.symmetric(vertical: 24), + children: [ + Padding( + padding: EdgeInsets.symmetric(horizontal: 8.0), + child: ConstrainedBox( + constraints: BoxConstraints(minWidth: double.infinity), + child: CupertinoSegmentedControl( + selectedColor: Resource.Colors.blue, + borderColor: Resource.Colors.blue, + groupValue: _leave, + children: { + Leave.normal: Container( + padding: EdgeInsets.symmetric(vertical: 8.0), + child: Text('事假'), + ), + Leave.sick: Container( + padding: EdgeInsets.symmetric(vertical: 8.0), + child: Text('病假'), + ), + Leave.official: Container( + padding: EdgeInsets.symmetric(vertical: 8.0), + child: Text('公假'), + ), + Leave.funeral: Container( + padding: EdgeInsets.symmetric(vertical: 8.0), + child: Text('喪假'), + ), + Leave.maternity: Container( + padding: EdgeInsets.symmetric(vertical: 8.0), + child: Text('產假'), + ), + }, + onValueChanged: (Leave text) { + if (mounted) { + setState(() { + _leave = text; + }); + } + FA.logAction('segment', 'click'); + }, + ), + ), + ), + SizedBox(height: 16), + Divider(color: Resource.Colors.grey, height: 1), + ListTile( + onTap: () {}, + contentPadding: EdgeInsets.symmetric( + horizontal: 24, + vertical: 8, + ), + leading: Icon( + Icons.access_time, + size: 30, + color: Resource.Colors.grey, + ), + trailing: Icon( + Icons.keyboard_arrow_down, + size: 30, + color: Resource.Colors.grey, + ), + title: Text( + "時間", + style: TextStyle(color: Resource.Colors.grey, fontSize: 20), + ), + subtitle: Text( + "2019-04-01~2019-04-05", + style: TextStyle(color: Resource.Colors.grey), + ), + ), + Divider(color: Resource.Colors.grey, height: 1), + ListTile( + onTap: () {}, + contentPadding: EdgeInsets.symmetric( + horizontal: 24, + vertical: 8, + ), + leading: Icon( + Icons.person, + size: 30, + color: Resource.Colors.grey, + ), + trailing: Icon( + Icons.keyboard_arrow_down, + size: 30, + color: Resource.Colors.grey, + ), + title: Text( + "導師", + style: TextStyle(color: Resource.Colors.grey, fontSize: 20), + ), + subtitle: Text( + "朱紹儀", + style: TextStyle(color: Resource.Colors.grey, fontSize: 20), + ), + ), + Divider(color: Resource.Colors.grey, height: 1), + SizedBox(height: 24), + Padding( + padding: EdgeInsets.symmetric(horizontal: 20), + child: TextField( + maxLines: 2, + decoration: InputDecoration( + border: OutlineInputBorder(), + fillColor: Resource.Colors.blue, + labelText: '原因', + ), + ), + ), + ], + ), + ); } } } diff --git a/lib/pages/home/score_page.dart b/lib/pages/home/score_page.dart index e5063cc4..ae6860ae 100644 --- a/lib/pages/home/score_page.dart +++ b/lib/pages/home/score_page.dart @@ -257,10 +257,13 @@ class ScorePageState extends State title: Text(app.picksSemester), children: semesters)).then((int position) { if (position != null) { - selectSemesterIndex = position; - selectSemester = semesterData.semesters[selectSemesterIndex]; _getSemesterScore(); - setState(() {}); + if (mounted) { + setState(() { + selectSemesterIndex = position; + selectSemester = semesterData.semesters[selectSemesterIndex]; + }); + } } }); } diff --git a/lib/pages/home/setting_page.dart b/lib/pages/home/setting_page.dart index e34c73cb..a19dea8c 100644 --- a/lib/pages/home/setting_page.dart +++ b/lib/pages/home/setting_page.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import 'package:app_review/app_review.dart'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:nkust_ap/models/bus_reservations_data.dart'; @@ -38,12 +39,14 @@ class SettingPageState extends State AppLocalizations app; String appVersion = "1.0.0"; + final GlobalKey _scaffoldKey = new GlobalKey(); @override void initState() { super.initState(); FA.setCurrentScreen("SettingPage", "setting_page.dart"); _getPreference(); + Utils.showAppReviewDialog(context); } @override @@ -55,6 +58,7 @@ class SettingPageState extends State Widget build(BuildContext context) { app = AppLocalizations.of(context); return Scaffold( + key: _scaffoldKey, appBar: AppBar( title: Text(app.settings), backgroundColor: Resource.Colors.blue, @@ -108,7 +112,12 @@ class SettingPageState extends State }); FA.logAction('head_photo', 'click'); }), - Container( + _itemSingle(app.language, () { + Utils.showChoseLanguageDialog(context, () { + setState(() {}); + }); + }), + Divider( color: Colors.grey, height: 0.5, ), @@ -119,7 +128,9 @@ class SettingPageState extends State (onError) => Utils.launchUrl( 'https://www.facebook.com/954175941266264/')); else if (Platform.isIOS) - Utils.launchUrl('https://www.facebook.com/954175941266264/'); + Utils.launchUrl('fb-messenger://user-thread/954175941266264') + .catchError((onError) => Utils.launchUrl( + 'https://www.facebook.com/954175941266264/')); else { Utils.launchUrl('https://www.facebook.com/954175941266264/') .catchError((onError) => Utils.showToast(app.platformError)); @@ -184,7 +195,7 @@ class SettingPageState extends State _item(String text, String subText, Function function) => FlatButton( padding: EdgeInsets.symmetric(vertical: 8.0, horizontal: 16.0), - child: Container( + child: SizedBox( width: double.infinity, child: Column( mainAxisSize: MainAxisSize.max, @@ -204,6 +215,24 @@ class SettingPageState extends State onPressed: function, ); + _itemSingle(String text, Function function) => FlatButton( + padding: EdgeInsets.symmetric(vertical: 16.0, horizontal: 16.0), + child: SizedBox( + width: double.infinity, + child: Column( + mainAxisSize: MainAxisSize.max, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + text, + style: TextStyle(fontSize: 16.0), + ), + ], + ), + ), + onPressed: function, + ); + void _setupCourseNotify(BuildContext context) { showDialog( context: context, @@ -316,4 +345,61 @@ class SettingPageState extends State } }); } + + _showBottomSheet(BuildContext context) async { + _scaffoldKey.currentState.showBottomSheet((context) { + return Material( + elevation: 20, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.symmetric(vertical: 8, horizontal: 16), + child: Align( + alignment: Alignment.center, + child: Text( + app.ratingDialogTitle, + style: TextStyle(color: Resource.Colors.blue, fontSize: 20.0), + ), + ), + ), + RichText( + textAlign: TextAlign.center, + text: TextSpan( + style: TextStyle( + color: Resource.Colors.grey, height: 1.3, fontSize: 18.0), + children: [ + TextSpan(text: app.ratingDialogContent), + ]), + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + FlatButton( + onPressed: () { + Navigator.of(context).pop(); + }, + child: Text( + app.later, + style: + TextStyle(color: Resource.Colors.blue, fontSize: 16.0), + ), + ), + FlatButton( + onPressed: () { + AppReview.requestReview; + }, + child: Text( + app.rateNow, + style: + TextStyle(color: Resource.Colors.blue, fontSize: 16.0), + ), + ), + ], + ) + ], + ), + ); + }); + } } diff --git a/lib/pages/login_page.dart b/lib/pages/login_page.dart index c39ce1bf..f5988a09 100644 --- a/lib/pages/login_page.dart +++ b/lib/pages/login_page.dart @@ -360,6 +360,9 @@ class LoginPageState extends State password = encrypter.decrypt64(encryptPassword); } catch (e) { FA.logAESErrorEvent(encryptPassword); + password = encryptPassword; + await prefs.setString(Constants.PREF_PASSWORD, + encrypter.encrypt(encryptPassword).base64); throw e; } } @@ -400,7 +403,7 @@ class LoginPageState extends State if (isRememberPassword) { final encrypter = Encrypter(AES(Constants.key, Constants.iv, mode: AESMode.cbc)); - prefs.setString(Constants.PREF_PASSWORD, + await prefs.setString(Constants.PREF_PASSWORD, encrypter.encrypt(_password.text).base64); } _navigateToFilterObject(context); diff --git a/lib/utils/app_localizations.dart b/lib/utils/app_localizations.dart index cc8c6cf7..d5519e44 100644 --- a/lib/utils/app_localizations.dart +++ b/lib/utils/app_localizations.dart @@ -1,5 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:nkust_ap/config/constants.dart'; +import 'package:shared_preferences/shared_preferences.dart'; class AppLocalizations { AppLocalizations(Locale locale) { @@ -20,7 +22,8 @@ class AppLocalizations { 'en': { 'app_name': 'NKUST AP', 'update_note_title': 'Update Notes', - 'update_note_content': '1.Fix some crash.\n2.Add bus page cancel bus.', + 'update_note_content': + '1.Add feature change app language.\n2.Now can click to facebook app.\n3.Fix some error.', 'splash_content': '我們全都包了\n只剩下學校不包我們', 'share': 'Share', 'teacher_confirm_title': 'Are you a teacher?', @@ -185,7 +188,7 @@ class AppLocalizations { 'The best KUAS Campus App\nKUAS AP\n\nAre you afreshman?\nDon\'t know about school info, telephone numbers, or up coming events?\nBeenhere a few years?\nHave checking class schedule, report card and reserving bus seatsdrove you crazy?\n\nNo more, no more worries, anymore!\n\nKUAS AP lets no matter old or newfellow\nhave control over your life in KUAS!\n\nFrom checking class schedule, report card toyour absence records!\nPlus reserving/canceling bus seats with newest school feeds!\n\n\n\nMuch Simple, Many Convenient, Very instinct, wow!\n\n☆FABULOUS☆', 'about_author_title': 'Made by', 'about_author_content': - '呂紹榕(Louie Lu), 姜尚德(JohnThunder), \nregisterAutumn, 詹濬鍵(Evans), \n陳建霖(HearSilent), \n房志剛(Rainvisitor),林義翔(takidog)', + '呂紹榕(Louie Lu), 姜尚德(JohnThunder), \nregisterAutumn, 詹濬鍵(Evans), \n陳建霖(HearSilent), 陳冠蓁, 徐羽柔\n房志剛(Rainvisitor),林義翔(takidog)', 'about_us': '“Ask not why nobody is doing this. You are \'nobody\'.”\n\nWe did this cause no one did it.\nWe created KUAS Wifi Login, KUASAP and KUAS Gourmet, Course Selection Sim, etc…\nTo bring convenience to everyone\'s on campus!', 'about_recruit_title': 'We Need You !', @@ -268,11 +271,22 @@ class AppLocalizations { 'reserve_deadline': 'Reserve Deadline', 'bus_rule': 'Bus Rule', 'platform_error': 'Current platform can\'t use this feature.', + 'language': 'Language', + 'chose_language_title': 'Language', + 'system_language': 'System Language', + 'traditional_chinese': '繁體中文', + 'english': 'English', + 'rating_dialog_title': 'Rate App', + 'rating_dialog_content': + 'Do you like NKUST APP?\nPlease write a comment and rating on the store\nThis is our motivation!', + 'later': 'LATER', + 'rate_now': 'RATE NOW', }, 'zh': { 'app_name': '高科校務通', 'update_note_title': '更新日誌', - 'update_note_content': '1.修正部分崩潰.\n2.新增校車預定頁面可取消預約', + 'update_note_content': + '1.新增可在App內更換語言\n2.現在可以直接從App跳轉至Facebook相關的App\n3.修正部分錯誤', 'splash_content': '我們全都包了\n只剩下學校不包我們', 'share': '分享', 'teacher_confirm_title': '您是老師嗎?', @@ -418,7 +432,7 @@ class AppLocalizations { 'app_version': 'App 版本', 'about_author_title': '作者群', 'about_author_content': - '呂紹榕(Louie Lu), 姜尚德(JohnThunder), \nregisterAutumn, 詹濬鍵(Evans), \n陳建霖(HearSilent), \n房志剛(Rainvisitor),林義翔(takidog)', + '呂紹榕(Louie Lu), 姜尚德(JohnThunder), \nregisterAutumn, 詹濬鍵(Evans), \n陳建霖(HearSilent), 陳冠蓁, 徐羽柔 \n房志剛(Rainvisitor),林義翔(takidog)', 'about_us': '「不要問為何沒有人做這個,\n先承認你就是『沒有人』」。\n因為,「沒有人」是萬能的。\n\n因為沒有人做這些,所以我們跳下來做。\n先後完成了高應無線通、高應校務通,到後來的高應美食通、模擬選課等等.......\n無非是希望帶給大家更便利的校園生活!', 'about_recruit_title': 'We Need You !', @@ -507,6 +521,15 @@ class AppLocalizations { 'reserve_deadline': '預約截止時間', 'bus_rule': '校車搭乘規則', 'platform_error': '此平台無法使用此功能', + 'language': '語言', + 'chose_language_title': '語言', + 'system_language': '系統語言', + 'traditional_chinese': '繁體中文', + 'english': 'English', + 'rating_dialog_title': '評分', + 'rating_dialog_content': '喜歡高科校務通嗎?\n前往商店給予我們評論\n是我們最大的動力!', + 'later': '稍後再說', + 'rate_now': '現在就去', }, }; @@ -907,7 +930,26 @@ class AppLocalizations { String get busRule => _vocabularies['bus_rule']; String get platformError => _vocabularies['platform_error']; + String get reserveDeadline => _vocabularies['reserve_deadline']; + + String get choseLanguageTitle => _vocabularies['chose_language_title']; + + String get language => _vocabularies['language']; + + String get systemLanguage => _vocabularies['system_language']; + + String get traditionalChinese => _vocabularies['traditional_chinese']; + + String get english => _vocabularies['english']; + + String get ratingDialogTitle => _vocabularies['rating_dialog_title']; + + String get ratingDialogContent => _vocabularies['rating_dialog_content']; + + String get later => _vocabularies['later']; + + String get rateNow => _vocabularies['rate_now']; } class AppLocalizationsDelegate extends LocalizationsDelegate { @@ -918,7 +960,12 @@ class AppLocalizationsDelegate extends LocalizationsDelegate { @override Future load(Locale locale) async { - AppLocalizations localizations = new AppLocalizations(locale); + SharedPreferences preference = await SharedPreferences.getInstance(); + String languageCode = + preference.getString(Constants.PREF_LANGUAGE_CODE) ?? 'system'; + + AppLocalizations localizations = AppLocalizations( + (languageCode == 'system') ? locale : Locale(languageCode)); print('Load ${locale.languageCode}'); diff --git a/lib/utils/firebase_analytics_utils.dart b/lib/utils/firebase_analytics_utils.dart index cd73b32a..10b13abe 100644 --- a/lib/utils/firebase_analytics_utils.dart +++ b/lib/utils/firebase_analytics_utils.dart @@ -31,7 +31,7 @@ class FA { } static Future logApiEvent(String type, int status, - {String message}) async { + {String message = ''}) async { PackageInfo packageInfo = await PackageInfo.fromPlatform(); if (Platform.isIOS || Platform.isAndroid) await analytics.logEvent( @@ -76,7 +76,7 @@ class FA { } static Future logAction(String name, String action, - {String message}) async { + {String message = ''}) async { PackageInfo packageInfo = await PackageInfo.fromPlatform(); if (Platform.isIOS || Platform.isAndroid) await analytics.logEvent( diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index e75f9ed1..8de80905 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import 'package:app_review/app_review.dart'; import 'package:connectivity/connectivity.dart'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; @@ -11,6 +12,7 @@ import 'package:nkust_ap/models/course_data.dart'; import 'package:nkust_ap/res/resource.dart' as Resource; import 'package:nkust_ap/utils/app_localizations.dart'; import 'package:nkust_ap/utils/firebase_analytics_utils.dart'; +import 'package:nkust_ap/widgets/yes_no_dialog.dart'; import 'package:package_info/package_info.dart'; import 'package:share/share.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -25,6 +27,7 @@ class Utils { break; case DioErrorType.CONNECT_TIMEOUT: case DioErrorType.RECEIVE_TIMEOUT: + case DioErrorType.SEND_TIMEOUT: showToast(app.timeoutMessage); break; case DioErrorType.RESPONSE: @@ -296,4 +299,146 @@ class Utils { onSelectNotification: (text) {}); return flutterLocalNotificationsPlugin; } + + static void showChoseLanguageDialog(BuildContext context, Function function) { + var app = AppLocalizations.of(context); + showDialog( + context: context, + builder: (BuildContext context) => SimpleDialog( + title: Text(app.choseLanguageTitle), + children: [ + SimpleDialogOption( + child: Text(app.systemLanguage), + onPressed: () async { + Navigator.pop(context); + SharedPreferences preference = + await SharedPreferences.getInstance(); + preference.setString( + Constants.PREF_LANGUAGE_CODE, 'system'); + AppLocalizations.locale = Localizations.localeOf(context); + function(); + }), + SimpleDialogOption( + child: Text(app.traditionalChinese), + onPressed: () async { + Navigator.pop(context); + SharedPreferences preference = + await SharedPreferences.getInstance(); + preference.setString(Constants.PREF_LANGUAGE_CODE, 'zh'); + AppLocalizations.locale = Locale('zh'); + function(); + }), + SimpleDialogOption( + child: Text(app.english), + onPressed: () async { + SharedPreferences preference = + await SharedPreferences.getInstance(); + preference.setString(Constants.PREF_LANGUAGE_CODE, 'en'); + Navigator.pop(context); + AppLocalizations.locale = Locale('en'); + function(); + }) + ]), + ).then((int position) {}); + } + + static void showAppReviewDialog(BuildContext context) async { + await Future.delayed(Duration(seconds: 1)); + var date = DateTime.now(); + if (date.millisecondsSinceEpoch % 3 == 0) return; + AppLocalizations app = AppLocalizations.of(context); + if (Platform.isAndroid || Platform.isIOS) { + showDialog( + context: context, + builder: (BuildContext context) => YesNoDialog( + title: app.ratingDialogTitle, + contentWidget: RichText( + textAlign: TextAlign.center, + text: TextSpan( + style: TextStyle( + color: Resource.Colors.grey, + height: 1.3, + fontSize: 16.0), + children: [ + TextSpan(text: app.ratingDialogContent), + ]), + ), + leftActionText: app.later, + rightActionText: app.rateNow, + leftActionFunction: null, + rightActionFunction: () { + AppReview.requestReview.then((onValue) { + print(onValue); + }); + }, + ), + ); + } else { + //TODO implement other platform system local notification + } + } + + static void showAppReviewSheet(BuildContext context) async { + // await Future.delayed(Duration(seconds: 1)); + AppLocalizations app = AppLocalizations.of(context); + if (Platform.isAndroid || Platform.isIOS) { + showModalBottomSheet( + context: context, + builder: (BuildContext context) => Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.symmetric(vertical: 8, horizontal: 16), + child: Align( + alignment: Alignment.center, + child: Text( + app.ratingDialogTitle, + style: TextStyle( + color: Resource.Colors.blue, fontSize: 20.0), + ), + ), + ), + RichText( + textAlign: TextAlign.center, + text: TextSpan( + style: TextStyle( + color: Resource.Colors.grey, + height: 1.3, + fontSize: 18.0), + children: [ + TextSpan(text: app.ratingDialogContent), + ]), + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + FlatButton( + onPressed: () { + Navigator.of(context).pop(); + }, + child: Text( + app.later, + style: TextStyle( + color: Resource.Colors.blue, fontSize: 16.0), + ), + ), + FlatButton( + onPressed: () { + AppReview.requestReview; + }, + child: Text( + app.rateNow, + style: TextStyle( + color: Resource.Colors.blue, fontSize: 16.0), + ), + ), + ], + ) + ], + ), + ); + } else { + //TODO implement other platform system local notification + } + } } diff --git a/lib/widgets/yes_no_dialog.dart b/lib/widgets/yes_no_dialog.dart index 5fbb6cc9..564b1ad6 100644 --- a/lib/widgets/yes_no_dialog.dart +++ b/lib/widgets/yes_no_dialog.dart @@ -89,7 +89,7 @@ class YesNoDialog extends StatelessWidget { leftActionText, style: TextStyle( color: Resource.Colors.grey, - fontSize: 18.0, + fontSize: 16.0, ), ), ), @@ -111,7 +111,7 @@ class YesNoDialog extends StatelessWidget { rightActionText, style: TextStyle( color: Resource.Colors.grey, - fontSize: 18.0, + fontSize: 16.0, ), ), ), diff --git a/pubspec.yaml b/pubspec.yaml index 67eaf1a5..2f32b05d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: nkust_ap description: A new Flutter application. -version: 3.1.4+30104 +version: 3.1.7+30107 environment: sdk: ">=2.1.0 <3.0.0" @@ -12,25 +12,26 @@ dependencies: flutter_localizations: sdk: flutter cupertino_icons: ^0.1.2 - shared_preferences: ^0.4.2 - firebase_core: ^0.2.5+1 - firebase_analytics: ^1.1.0 - firebase_remote_config: ^0.0.6+1 - firebase_messaging: ^2.0.2 - url_launcher: ^4.0.1 - package_info: ^0.3.2 - share: ^0.5.3 - connectivity: ^0.3.2 - dio: 2.0.11 - fluttertoast: ^2.2.11 + shared_preferences: ^0.5.1+2 + firebase_core: ^0.3.1+1 + firebase_analytics: ^2.1.0 + firebase_remote_config: ^0.1.0 + firebase_messaging: ^4.0.0+1 + url_launcher: ^5.0.2 + package_info: ^0.4.0+2 + share: ^0.6.0+1 + connectivity: ^0.4.2 + dio: 2.1.0 + fluttertoast: ^3.0.3 tuple: ^1.0.1 carousel_slider: ^1.2.0 - flutter_crashlytics: 0.1.1 + flutter_crashlytics: 0.2.1+1 encrypt: ^2.0.0 - flutter_local_notifications: ^0.4.5 + flutter_local_notifications: ^0.5.2 sprintf: ^4.0.2 add_2_calendar: ^1.2.2 cached_network_image: ^0.7.0 + app_review: ^0.1.0 dev_dependencies: flutter_test: sdk: flutter