Bladeren bron

初始化项目,完成了部分逻辑

Caijinglong 6 jaren geleden
bovenliggende
commit
24e22a5249
69 gewijzigde bestanden met toevoegingen van 1527 en 111 verwijderingen
  1. 0
    1
      .flutter-plugins
  2. 0
    19
      .idea/libraries/Dart_SDK.xml
  3. 0
    8
      .idea/modules.xml
  4. 0
    36
      .idea/workspace.xml
  5. 0
    25
      android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
  6. 0
    3
      android/local.properties
  7. 71
    0
      example/.gitignore
  8. 8
    0
      example/.metadata
  9. 8
    0
      example/README.md
  10. 61
    0
      example/android/app/build.gradle
  11. 39
    0
      example/android/app/src/main/AndroidManifest.xml
  12. 13
    0
      example/android/app/src/main/java/com/example/example/MainActivity.java
  13. 12
    0
      example/android/app/src/main/res/drawable/launch_background.xml
  14. BIN
      example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
  15. BIN
      example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
  16. BIN
      example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
  17. BIN
      example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  18. BIN
      example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  19. 8
    0
      example/android/app/src/main/res/values/styles.xml
  20. 29
    0
      example/android/build.gradle
  21. 1
    0
      example/android/gradle.properties
  22. 6
    0
      example/android/gradle/wrapper/gradle-wrapper.properties
  23. 15
    0
      example/android/settings.gradle
  24. 26
    0
      example/ios/Flutter/AppFrameworkInfo.plist
  25. 2
    0
      example/ios/Flutter/Debug.xcconfig
  26. 2
    0
      example/ios/Flutter/Release.xcconfig
  27. 63
    0
      example/ios/Podfile
  28. 501
    0
      example/ios/Runner.xcodeproj/project.pbxproj
  29. 7
    0
      example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  30. 93
    0
      example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
  31. 10
    0
      example/ios/Runner.xcworkspace/contents.xcworkspacedata
  32. 8
    0
      example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  33. 6
    0
      example/ios/Runner/AppDelegate.h
  34. 13
    0
      example/ios/Runner/AppDelegate.m
  35. 122
    0
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
  36. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
  37. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
  38. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
  39. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
  40. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
  41. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
  42. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
  43. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
  44. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
  45. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
  46. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
  47. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
  48. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
  49. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
  50. BIN
      example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
  51. 23
    0
      example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
  52. BIN
      example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
  53. BIN
      example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
  54. BIN
      example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
  55. 5
    0
      example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md
  56. 37
    0
      example/ios/Runner/Base.lproj/LaunchScreen.storyboard
  57. 26
    0
      example/ios/Runner/Base.lproj/Main.storyboard
  58. 45
    0
      example/ios/Runner/Info.plist
  59. 9
    0
      example/ios/Runner/main.m
  60. 105
    0
      example/lib/main.dart
  61. 71
    0
      example/pubspec.yaml
  62. 29
    0
      example/test/widget_test.dart
  63. 0
    0
      lib/src/engine/lru_cache.dart
  64. 0
    0
      lib/src/error/permission_error.dart
  65. 0
    0
      lib/src/page/not_permission_dialog.dart
  66. 0
    0
      lib/src/page/photo_main_page.dart
  67. 50
    0
      lib/src/provider/i18n_provider.dart
  68. 3
    0
      lib/src/provider/selected_provider.dart
  69. 0
    19
      photo.iml

+ 0
- 1
.flutter-plugins Bestand weergeven

@@ -1 +0,0 @@
1
-photo_manager=/Users/caijinglong/.pub-cache/git/flutter_photo_manager-567b73d36baad10092d72bde41fc5e64e39594c5/

+ 0
- 19
.idea/libraries/Dart_SDK.xml Bestand weergeven

@@ -1,19 +0,0 @@
1
-<component name="libraryTable">
2
-  <library name="Dart SDK">
3
-    <CLASSES>
4
-      <root url="file:///Users/caijinglong/Library/Flutter/flutter/bin/cache/dart-sdk/lib/async" />
5
-      <root url="file:///Users/caijinglong/Library/Flutter/flutter/bin/cache/dart-sdk/lib/collection" />
6
-      <root url="file:///Users/caijinglong/Library/Flutter/flutter/bin/cache/dart-sdk/lib/convert" />
7
-      <root url="file:///Users/caijinglong/Library/Flutter/flutter/bin/cache/dart-sdk/lib/core" />
8
-      <root url="file:///Users/caijinglong/Library/Flutter/flutter/bin/cache/dart-sdk/lib/developer" />
9
-      <root url="file:///Users/caijinglong/Library/Flutter/flutter/bin/cache/dart-sdk/lib/html" />
10
-      <root url="file:///Users/caijinglong/Library/Flutter/flutter/bin/cache/dart-sdk/lib/io" />
11
-      <root url="file:///Users/caijinglong/Library/Flutter/flutter/bin/cache/dart-sdk/lib/isolate" />
12
-      <root url="file:///Users/caijinglong/Library/Flutter/flutter/bin/cache/dart-sdk/lib/math" />
13
-      <root url="file:///Users/caijinglong/Library/Flutter/flutter/bin/cache/dart-sdk/lib/mirrors" />
14
-      <root url="file:///Users/caijinglong/Library/Flutter/flutter/bin/cache/dart-sdk/lib/typed_data" />
15
-    </CLASSES>
16
-    <JAVADOC />
17
-    <SOURCES />
18
-  </library>
19
-</component>

+ 0
- 8
.idea/modules.xml Bestand weergeven

@@ -1,8 +0,0 @@
1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<project version="4">
3
-  <component name="ProjectModuleManager">
4
-    <modules>
5
-      <module fileurl="file://$PROJECT_DIR$/photo.iml" filepath="$PROJECT_DIR$/photo.iml" />
6
-    </modules>
7
-  </component>
8
-</project>

+ 0
- 36
.idea/workspace.xml Bestand weergeven

@@ -1,36 +0,0 @@
1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<project version="4">
3
-  <component name="FileEditorManager">
4
-    <leaf>
5
-      <file leaf-file-name="main.dart" pinned="false" current-in-tab="true">
6
-        <entry file="file://$PROJECT_DIR$/lib/main.dart">
7
-          <provider selected="true" editor-type-id="text-editor">
8
-            <state relative-caret-position="0">
9
-              <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
10
-            </state>
11
-          </provider>
12
-        </entry>
13
-      </file>
14
-    </leaf>
15
-  </component>
16
-  <component name="ToolWindowManager">
17
-    <editor active="true" />
18
-    <layout>
19
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
20
-    </layout>
21
-  </component>
22
-  <component name="ProjectView">
23
-    <navigator currentView="ProjectPane" proportions="" version="1">
24
-    </navigator>
25
-    <panes>
26
-      <pane id="ProjectPane">
27
-        <option name="show-excluded-files" value="false" />
28
-      </pane>
29
-    </panes>
30
-  </component>
31
-  <component name="PropertiesComponent">
32
-    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
33
-    <property name="dart.analysis.tool.window.force.activate" value="true" />
34
-    <property name="show.migrate.to.gradle.popup" value="false" />
35
-  </component>
36
-</project>

+ 0
- 25
android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java Bestand weergeven

@@ -1,25 +0,0 @@
1
-package io.flutter.plugins;
2
-
3
-import io.flutter.plugin.common.PluginRegistry;
4
-import top.kikt.imagescanner.ImageScannerPlugin;
5
-
6
-/**
7
- * Generated file. Do not edit.
8
- */
9
-public final class GeneratedPluginRegistrant {
10
-  public static void registerWith(PluginRegistry registry) {
11
-    if (alreadyRegisteredWith(registry)) {
12
-      return;
13
-    }
14
-    ImageScannerPlugin.registerWith(registry.registrarFor("top.kikt.imagescanner.ImageScannerPlugin"));
15
-  }
16
-
17
-  private static boolean alreadyRegisteredWith(PluginRegistry registry) {
18
-    final String key = GeneratedPluginRegistrant.class.getCanonicalName();
19
-    if (registry.hasPlugin(key)) {
20
-      return true;
21
-    }
22
-    registry.registrarFor(key);
23
-    return false;
24
-  }
25
-}

+ 0
- 3
android/local.properties Bestand weergeven

@@ -1,3 +0,0 @@
1
-sdk.dir=/Users/caijinglong/Library/Android/sdk/
2
-flutter.sdk=/Users/caijinglong/Library/Flutter/flutter
3
-flutter.versionName=0.0.1

+ 71
- 0
example/.gitignore Bestand weergeven

@@ -0,0 +1,71 @@
1
+# Miscellaneous
2
+*.class
3
+*.lock
4
+*.log
5
+*.pyc
6
+*.swp
7
+.DS_Store
8
+.atom/
9
+.buildlog/
10
+.history
11
+.svn/
12
+
13
+# IntelliJ related
14
+*.iml
15
+*.ipr
16
+*.iws
17
+.idea/
18
+
19
+# Visual Studio Code related
20
+.vscode/
21
+
22
+# Flutter/Dart/Pub related
23
+**/doc/api/
24
+.dart_tool/
25
+.flutter-plugins
26
+.packages
27
+.pub-cache/
28
+.pub/
29
+build/
30
+
31
+# Android related
32
+**/android/**/gradle-wrapper.jar
33
+**/android/.gradle
34
+**/android/captures/
35
+**/android/gradlew
36
+**/android/gradlew.bat
37
+**/android/local.properties
38
+**/android/**/GeneratedPluginRegistrant.java
39
+
40
+# iOS/XCode related
41
+**/ios/**/*.mode1v3
42
+**/ios/**/*.mode2v3
43
+**/ios/**/*.moved-aside
44
+**/ios/**/*.pbxuser
45
+**/ios/**/*.perspectivev3
46
+**/ios/**/*sync/
47
+**/ios/**/.sconsign.dblite
48
+**/ios/**/.tags*
49
+**/ios/**/.vagrant/
50
+**/ios/**/DerivedData/
51
+**/ios/**/Icon?
52
+**/ios/**/Pods/
53
+**/ios/**/.symlinks/
54
+**/ios/**/profile
55
+**/ios/**/xcuserdata
56
+**/ios/.generated/
57
+**/ios/Flutter/App.framework
58
+**/ios/Flutter/Flutter.framework
59
+**/ios/Flutter/Generated.xcconfig
60
+**/ios/Flutter/app.flx
61
+**/ios/Flutter/app.zip
62
+**/ios/Flutter/flutter_assets/
63
+**/ios/ServiceDefinitions.json
64
+**/ios/Runner/GeneratedPluginRegistrant.*
65
+
66
+# Exceptions to above rules.
67
+!**/ios/**/default.mode1v3
68
+!**/ios/**/default.mode2v3
69
+!**/ios/**/default.pbxuser
70
+!**/ios/**/default.perspectivev3
71
+!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages

+ 8
- 0
example/.metadata Bestand weergeven

@@ -0,0 +1,8 @@
1
+# This file tracks properties of this Flutter project.
2
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
3
+#
4
+# This file should be version controlled and should not be manually edited.
5
+
6
+version:
7
+  revision: bf7c27095cc4dc07c03d8a6ad2e9e0e28e26227e
8
+  channel: dev

+ 8
- 0
example/README.md Bestand weergeven

@@ -0,0 +1,8 @@
1
+# example
2
+
3
+A new Flutter project.
4
+
5
+## Getting Started
6
+
7
+For help getting started with Flutter, view our online
8
+[documentation](https://flutter.io/).

+ 61
- 0
example/android/app/build.gradle Bestand weergeven

@@ -0,0 +1,61 @@
1
+def localProperties = new Properties()
2
+def localPropertiesFile = rootProject.file('local.properties')
3
+if (localPropertiesFile.exists()) {
4
+    localPropertiesFile.withReader('UTF-8') { reader ->
5
+        localProperties.load(reader)
6
+    }
7
+}
8
+
9
+def flutterRoot = localProperties.getProperty('flutter.sdk')
10
+if (flutterRoot == null) {
11
+    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12
+}
13
+
14
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15
+if (flutterVersionCode == null) {
16
+    flutterVersionCode = '1'
17
+}
18
+
19
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
20
+if (flutterVersionName == null) {
21
+    flutterVersionName = '1.0'
22
+}
23
+
24
+apply plugin: 'com.android.application'
25
+apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
26
+
27
+android {
28
+    compileSdkVersion 27
29
+
30
+    lintOptions {
31
+        disable 'InvalidPackage'
32
+    }
33
+
34
+    defaultConfig {
35
+        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
36
+        applicationId "com.example.example"
37
+        minSdkVersion 16
38
+        targetSdkVersion 27
39
+        versionCode flutterVersionCode.toInteger()
40
+        versionName flutterVersionName
41
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
42
+    }
43
+
44
+    buildTypes {
45
+        release {
46
+            // TODO: Add your own signing config for the release build.
47
+            // Signing with the debug keys for now, so `flutter run --release` works.
48
+            signingConfig signingConfigs.debug
49
+        }
50
+    }
51
+}
52
+
53
+flutter {
54
+    source '../..'
55
+}
56
+
57
+dependencies {
58
+    testImplementation 'junit:junit:4.12'
59
+    androidTestImplementation 'com.android.support.test:runner:1.0.2'
60
+    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
61
+}

+ 39
- 0
example/android/app/src/main/AndroidManifest.xml Bestand weergeven

@@ -0,0 +1,39 @@
1
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
+    package="com.example.example">
3
+
4
+    <!-- The INTERNET permission is required for development. Specifically,
5
+         flutter needs it to communicate with the running application
6
+         to allow setting breakpoints, to provide hot reload, etc.
7
+    -->
8
+    <uses-permission android:name="android.permission.INTERNET"/>
9
+
10
+    <!-- io.flutter.app.FlutterApplication is an android.app.Application that
11
+         calls FlutterMain.startInitialization(this); in its onCreate method.
12
+         In most cases you can leave this as-is, but you if you want to provide
13
+         additional functionality it is fine to subclass or reimplement
14
+         FlutterApplication and put your custom class here. -->
15
+    <application
16
+        android:name="io.flutter.app.FlutterApplication"
17
+        android:label="example"
18
+        android:icon="@mipmap/ic_launcher">
19
+        <activity
20
+            android:name=".MainActivity"
21
+            android:launchMode="singleTop"
22
+            android:theme="@style/LaunchTheme"
23
+            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density"
24
+            android:hardwareAccelerated="true"
25
+            android:windowSoftInputMode="adjustResize">
26
+            <!-- This keeps the window background of the activity showing
27
+                 until Flutter renders its first frame. It can be removed if
28
+                 there is no splash screen (such as the default splash screen
29
+                 defined in @style/LaunchTheme). -->
30
+            <meta-data
31
+                android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
32
+                android:value="true" />
33
+            <intent-filter>
34
+                <action android:name="android.intent.action.MAIN"/>
35
+                <category android:name="android.intent.category.LAUNCHER"/>
36
+            </intent-filter>
37
+        </activity>
38
+    </application>
39
+</manifest>

+ 13
- 0
example/android/app/src/main/java/com/example/example/MainActivity.java Bestand weergeven

@@ -0,0 +1,13 @@
1
+package com.example.example;
2
+
3
+import android.os.Bundle;
4
+import io.flutter.app.FlutterActivity;
5
+import io.flutter.plugins.GeneratedPluginRegistrant;
6
+
7
+public class MainActivity extends FlutterActivity {
8
+  @Override
9
+  protected void onCreate(Bundle savedInstanceState) {
10
+    super.onCreate(savedInstanceState);
11
+    GeneratedPluginRegistrant.registerWith(this);
12
+  }
13
+}

+ 12
- 0
example/android/app/src/main/res/drawable/launch_background.xml Bestand weergeven

@@ -0,0 +1,12 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Modify this file to customize your launch splash screen -->
3
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
4
+    <item android:drawable="@android:color/white" />
5
+
6
+    <!-- You can insert your own image assets here -->
7
+    <!-- <item>
8
+        <bitmap
9
+            android:gravity="center"
10
+            android:src="@mipmap/launch_image" />
11
+    </item> -->
12
+</layer-list>

BIN
example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png Bestand weergeven


BIN
example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png Bestand weergeven


BIN
example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png Bestand weergeven


BIN
example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png Bestand weergeven


BIN
example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png Bestand weergeven


+ 8
- 0
example/android/app/src/main/res/values/styles.xml Bestand weergeven

@@ -0,0 +1,8 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<resources>
3
+    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
4
+        <!-- Show a splash screen on the activity. Automatically removed when
5
+             Flutter draws its first frame -->
6
+        <item name="android:windowBackground">@drawable/launch_background</item>
7
+    </style>
8
+</resources>

+ 29
- 0
example/android/build.gradle Bestand weergeven

@@ -0,0 +1,29 @@
1
+buildscript {
2
+    repositories {
3
+        google()
4
+        jcenter()
5
+    }
6
+
7
+    dependencies {
8
+        classpath 'com.android.tools.build:gradle:3.1.2'
9
+    }
10
+}
11
+
12
+allprojects {
13
+    repositories {
14
+        google()
15
+        jcenter()
16
+    }
17
+}
18
+
19
+rootProject.buildDir = '../build'
20
+subprojects {
21
+    project.buildDir = "${rootProject.buildDir}/${project.name}"
22
+}
23
+subprojects {
24
+    project.evaluationDependsOn(':app')
25
+}
26
+
27
+task clean(type: Delete) {
28
+    delete rootProject.buildDir
29
+}

+ 1
- 0
example/android/gradle.properties Bestand weergeven

@@ -0,0 +1 @@
1
+org.gradle.jvmargs=-Xmx1536M

+ 6
- 0
example/android/gradle/wrapper/gradle-wrapper.properties Bestand weergeven

@@ -0,0 +1,6 @@
1
+#Fri Jun 23 08:50:38 CEST 2017
2
+distributionBase=GRADLE_USER_HOME
3
+distributionPath=wrapper/dists
4
+zipStoreBase=GRADLE_USER_HOME
5
+zipStorePath=wrapper/dists
6
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

+ 15
- 0
example/android/settings.gradle Bestand weergeven

@@ -0,0 +1,15 @@
1
+include ':app'
2
+
3
+def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
4
+
5
+def plugins = new Properties()
6
+def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
7
+if (pluginsFile.exists()) {
8
+    pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
9
+}
10
+
11
+plugins.each { name, path ->
12
+    def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
13
+    include ":$name"
14
+    project(":$name").projectDir = pluginDirectory
15
+}

+ 26
- 0
example/ios/Flutter/AppFrameworkInfo.plist Bestand weergeven

@@ -0,0 +1,26 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+  <key>CFBundleDevelopmentRegion</key>
6
+  <string>en</string>
7
+  <key>CFBundleExecutable</key>
8
+  <string>App</string>
9
+  <key>CFBundleIdentifier</key>
10
+  <string>io.flutter.flutter.app</string>
11
+  <key>CFBundleInfoDictionaryVersion</key>
12
+  <string>6.0</string>
13
+  <key>CFBundleName</key>
14
+  <string>App</string>
15
+  <key>CFBundlePackageType</key>
16
+  <string>FMWK</string>
17
+  <key>CFBundleShortVersionString</key>
18
+  <string>1.0</string>
19
+  <key>CFBundleSignature</key>
20
+  <string>????</string>
21
+  <key>CFBundleVersion</key>
22
+  <string>1.0</string>
23
+  <key>MinimumOSVersion</key>
24
+  <string>8.0</string>
25
+</dict>
26
+</plist>

+ 2
- 0
example/ios/Flutter/Debug.xcconfig Bestand weergeven

@@ -0,0 +1,2 @@
1
+#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2
+#include "Generated.xcconfig"

+ 2
- 0
example/ios/Flutter/Release.xcconfig Bestand weergeven

@@ -0,0 +1,2 @@
1
+#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2
+#include "Generated.xcconfig"

+ 63
- 0
example/ios/Podfile Bestand weergeven

@@ -0,0 +1,63 @@
1
+# Uncomment this line to define a global platform for your project
2
+# platform :ios, '9.0'
3
+
4
+# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5
+ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6
+
7
+def parse_KV_file(file, separator='=')
8
+  file_abs_path = File.expand_path(file)
9
+  if !File.exists? file_abs_path
10
+    return [];
11
+  end
12
+  pods_ary = []
13
+  skip_line_start_symbols = ["#", "/"]
14
+  File.foreach(file_abs_path) { |line|
15
+      next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
16
+      plugin = line.split(pattern=separator)
17
+      if plugin.length == 2
18
+        podname = plugin[0].strip()
19
+        path = plugin[1].strip()
20
+        podpath = File.expand_path("#{path}", file_abs_path)
21
+        pods_ary.push({:name => podname, :path => podpath});
22
+      else
23
+        puts "Invalid plugin specification: #{line}"
24
+      end
25
+  }
26
+  return pods_ary
27
+end
28
+
29
+target 'Runner' do
30
+  # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
31
+  # referring to absolute paths on developers' machines.
32
+  system('rm -rf .symlinks')
33
+  system('mkdir -p .symlinks/plugins')
34
+
35
+  # Flutter Pods
36
+  generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
37
+  if generated_xcode_build_settings.empty?
38
+    puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first."
39
+  end
40
+  generated_xcode_build_settings.map { |p|
41
+    if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
42
+      symlink = File.join('.symlinks', 'flutter')
43
+      File.symlink(File.dirname(p[:path]), symlink)
44
+      pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
45
+    end
46
+  }
47
+
48
+  # Plugin Pods
49
+  plugin_pods = parse_KV_file('../.flutter-plugins')
50
+  plugin_pods.map { |p|
51
+    symlink = File.join('.symlinks', 'plugins', p[:name])
52
+    File.symlink(p[:path], symlink)
53
+    pod p[:name], :path => File.join(symlink, 'ios')
54
+  }
55
+end
56
+
57
+post_install do |installer|
58
+  installer.pods_project.targets.each do |target|
59
+    target.build_configurations.each do |config|
60
+      config.build_settings['ENABLE_BITCODE'] = 'NO'
61
+    end
62
+  end
63
+end

+ 501
- 0
example/ios/Runner.xcodeproj/project.pbxproj Bestand weergeven

@@ -0,0 +1,501 @@
1
+// !$*UTF8*$!
2
+{
3
+	archiveVersion = 1;
4
+	classes = {
5
+	};
6
+	objectVersion = 46;
7
+	objects = {
8
+
9
+/* Begin PBXBuildFile section */
10
+		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
11
+		2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; };
12
+		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
13
+		3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
14
+		3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
15
+		9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
16
+		9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
17
+		9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
18
+		978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
19
+		97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
20
+		97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
21
+		97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
22
+		97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
23
+		F1F41F4DCF67837579E0EB42 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B01AC60EFE8E04B0E4D3E1C1 /* libPods-Runner.a */; };
24
+/* End PBXBuildFile section */
25
+
26
+/* Begin PBXCopyFilesBuildPhase section */
27
+		9705A1C41CF9048500538489 /* Embed Frameworks */ = {
28
+			isa = PBXCopyFilesBuildPhase;
29
+			buildActionMask = 2147483647;
30
+			dstPath = "";
31
+			dstSubfolderSpec = 10;
32
+			files = (
33
+				3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
34
+				9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
35
+			);
36
+			name = "Embed Frameworks";
37
+			runOnlyForDeploymentPostprocessing = 0;
38
+		};
39
+/* End PBXCopyFilesBuildPhase section */
40
+
41
+/* Begin PBXFileReference section */
42
+		1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
43
+		1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
44
+		2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; };
45
+		3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
46
+		3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
47
+		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
48
+		7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
49
+		7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
50
+		9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
51
+		9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
52
+		9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; };
53
+		97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
54
+		97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
55
+		97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
56
+		97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
57
+		97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
58
+		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
59
+		B01AC60EFE8E04B0E4D3E1C1 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
60
+/* End PBXFileReference section */
61
+
62
+/* Begin PBXFrameworksBuildPhase section */
63
+		97C146EB1CF9000F007C117D /* Frameworks */ = {
64
+			isa = PBXFrameworksBuildPhase;
65
+			buildActionMask = 2147483647;
66
+			files = (
67
+				9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
68
+				3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
69
+				F1F41F4DCF67837579E0EB42 /* libPods-Runner.a in Frameworks */,
70
+			);
71
+			runOnlyForDeploymentPostprocessing = 0;
72
+		};
73
+/* End PBXFrameworksBuildPhase section */
74
+
75
+/* Begin PBXGroup section */
76
+		5CA87AA23185EF26B0BDF0EC /* Pods */ = {
77
+			isa = PBXGroup;
78
+			children = (
79
+			);
80
+			name = Pods;
81
+			sourceTree = "<group>";
82
+		};
83
+		9740EEB11CF90186004384FC /* Flutter */ = {
84
+			isa = PBXGroup;
85
+			children = (
86
+				2D5378251FAA1A9400D5DBA9 /* flutter_assets */,
87
+				3B80C3931E831B6300D905FE /* App.framework */,
88
+				3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
89
+				9740EEBA1CF902C7004384FC /* Flutter.framework */,
90
+				9740EEB21CF90195004384FC /* Debug.xcconfig */,
91
+				7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
92
+				9740EEB31CF90195004384FC /* Generated.xcconfig */,
93
+			);
94
+			name = Flutter;
95
+			sourceTree = "<group>";
96
+		};
97
+		97C146E51CF9000F007C117D = {
98
+			isa = PBXGroup;
99
+			children = (
100
+				9740EEB11CF90186004384FC /* Flutter */,
101
+				97C146F01CF9000F007C117D /* Runner */,
102
+				97C146EF1CF9000F007C117D /* Products */,
103
+				5CA87AA23185EF26B0BDF0EC /* Pods */,
104
+				C74FBCC187FD75D483219296 /* Frameworks */,
105
+			);
106
+			sourceTree = "<group>";
107
+		};
108
+		97C146EF1CF9000F007C117D /* Products */ = {
109
+			isa = PBXGroup;
110
+			children = (
111
+				97C146EE1CF9000F007C117D /* Runner.app */,
112
+			);
113
+			name = Products;
114
+			sourceTree = "<group>";
115
+		};
116
+		97C146F01CF9000F007C117D /* Runner */ = {
117
+			isa = PBXGroup;
118
+			children = (
119
+				7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
120
+				7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
121
+				97C146FA1CF9000F007C117D /* Main.storyboard */,
122
+				97C146FD1CF9000F007C117D /* Assets.xcassets */,
123
+				97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
124
+				97C147021CF9000F007C117D /* Info.plist */,
125
+				97C146F11CF9000F007C117D /* Supporting Files */,
126
+				1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
127
+				1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
128
+			);
129
+			path = Runner;
130
+			sourceTree = "<group>";
131
+		};
132
+		97C146F11CF9000F007C117D /* Supporting Files */ = {
133
+			isa = PBXGroup;
134
+			children = (
135
+				97C146F21CF9000F007C117D /* main.m */,
136
+			);
137
+			name = "Supporting Files";
138
+			sourceTree = "<group>";
139
+		};
140
+		C74FBCC187FD75D483219296 /* Frameworks */ = {
141
+			isa = PBXGroup;
142
+			children = (
143
+				B01AC60EFE8E04B0E4D3E1C1 /* libPods-Runner.a */,
144
+			);
145
+			name = Frameworks;
146
+			sourceTree = "<group>";
147
+		};
148
+/* End PBXGroup section */
149
+
150
+/* Begin PBXNativeTarget section */
151
+		97C146ED1CF9000F007C117D /* Runner */ = {
152
+			isa = PBXNativeTarget;
153
+			buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
154
+			buildPhases = (
155
+				A5808EB70AE398D55DAAB482 /* [CP] Check Pods Manifest.lock */,
156
+				9740EEB61CF901F6004384FC /* Run Script */,
157
+				97C146EA1CF9000F007C117D /* Sources */,
158
+				97C146EB1CF9000F007C117D /* Frameworks */,
159
+				97C146EC1CF9000F007C117D /* Resources */,
160
+				9705A1C41CF9048500538489 /* Embed Frameworks */,
161
+				3B06AD1E1E4923F5004D2608 /* Thin Binary */,
162
+				0844198878D85C0576400BDE /* [CP] Embed Pods Frameworks */,
163
+			);
164
+			buildRules = (
165
+			);
166
+			dependencies = (
167
+			);
168
+			name = Runner;
169
+			productName = Runner;
170
+			productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
171
+			productType = "com.apple.product-type.application";
172
+		};
173
+/* End PBXNativeTarget section */
174
+
175
+/* Begin PBXProject section */
176
+		97C146E61CF9000F007C117D /* Project object */ = {
177
+			isa = PBXProject;
178
+			attributes = {
179
+				LastUpgradeCheck = 0910;
180
+				ORGANIZATIONNAME = "The Chromium Authors";
181
+				TargetAttributes = {
182
+					97C146ED1CF9000F007C117D = {
183
+						CreatedOnToolsVersion = 7.3.1;
184
+					};
185
+				};
186
+			};
187
+			buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
188
+			compatibilityVersion = "Xcode 3.2";
189
+			developmentRegion = English;
190
+			hasScannedForEncodings = 0;
191
+			knownRegions = (
192
+				en,
193
+				Base,
194
+			);
195
+			mainGroup = 97C146E51CF9000F007C117D;
196
+			productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
197
+			projectDirPath = "";
198
+			projectRoot = "";
199
+			targets = (
200
+				97C146ED1CF9000F007C117D /* Runner */,
201
+			);
202
+		};
203
+/* End PBXProject section */
204
+
205
+/* Begin PBXResourcesBuildPhase section */
206
+		97C146EC1CF9000F007C117D /* Resources */ = {
207
+			isa = PBXResourcesBuildPhase;
208
+			buildActionMask = 2147483647;
209
+			files = (
210
+				97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
211
+				3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
212
+				9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
213
+				97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
214
+				2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */,
215
+				97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
216
+			);
217
+			runOnlyForDeploymentPostprocessing = 0;
218
+		};
219
+/* End PBXResourcesBuildPhase section */
220
+
221
+/* Begin PBXShellScriptBuildPhase section */
222
+		0844198878D85C0576400BDE /* [CP] Embed Pods Frameworks */ = {
223
+			isa = PBXShellScriptBuildPhase;
224
+			buildActionMask = 2147483647;
225
+			files = (
226
+			);
227
+			inputFileListPaths = (
228
+			);
229
+			inputPaths = (
230
+				"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
231
+				"${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework",
232
+			);
233
+			name = "[CP] Embed Pods Frameworks";
234
+			outputFileListPaths = (
235
+			);
236
+			outputPaths = (
237
+				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
238
+			);
239
+			runOnlyForDeploymentPostprocessing = 0;
240
+			shellPath = /bin/sh;
241
+			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
242
+			showEnvVarsInLog = 0;
243
+		};
244
+		3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
245
+			isa = PBXShellScriptBuildPhase;
246
+			buildActionMask = 2147483647;
247
+			files = (
248
+			);
249
+			inputPaths = (
250
+			);
251
+			name = "Thin Binary";
252
+			outputPaths = (
253
+			);
254
+			runOnlyForDeploymentPostprocessing = 0;
255
+			shellPath = /bin/sh;
256
+			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
257
+		};
258
+		9740EEB61CF901F6004384FC /* Run Script */ = {
259
+			isa = PBXShellScriptBuildPhase;
260
+			buildActionMask = 2147483647;
261
+			files = (
262
+			);
263
+			inputPaths = (
264
+			);
265
+			name = "Run Script";
266
+			outputPaths = (
267
+			);
268
+			runOnlyForDeploymentPostprocessing = 0;
269
+			shellPath = /bin/sh;
270
+			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
271
+		};
272
+		A5808EB70AE398D55DAAB482 /* [CP] Check Pods Manifest.lock */ = {
273
+			isa = PBXShellScriptBuildPhase;
274
+			buildActionMask = 2147483647;
275
+			files = (
276
+			);
277
+			inputFileListPaths = (
278
+			);
279
+			inputPaths = (
280
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
281
+				"${PODS_ROOT}/Manifest.lock",
282
+			);
283
+			name = "[CP] Check Pods Manifest.lock";
284
+			outputFileListPaths = (
285
+			);
286
+			outputPaths = (
287
+				"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
288
+			);
289
+			runOnlyForDeploymentPostprocessing = 0;
290
+			shellPath = /bin/sh;
291
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
292
+			showEnvVarsInLog = 0;
293
+		};
294
+/* End PBXShellScriptBuildPhase section */
295
+
296
+/* Begin PBXSourcesBuildPhase section */
297
+		97C146EA1CF9000F007C117D /* Sources */ = {
298
+			isa = PBXSourcesBuildPhase;
299
+			buildActionMask = 2147483647;
300
+			files = (
301
+				978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */,
302
+				97C146F31CF9000F007C117D /* main.m in Sources */,
303
+				1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
304
+			);
305
+			runOnlyForDeploymentPostprocessing = 0;
306
+		};
307
+/* End PBXSourcesBuildPhase section */
308
+
309
+/* Begin PBXVariantGroup section */
310
+		97C146FA1CF9000F007C117D /* Main.storyboard */ = {
311
+			isa = PBXVariantGroup;
312
+			children = (
313
+				97C146FB1CF9000F007C117D /* Base */,
314
+			);
315
+			name = Main.storyboard;
316
+			sourceTree = "<group>";
317
+		};
318
+		97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
319
+			isa = PBXVariantGroup;
320
+			children = (
321
+				97C147001CF9000F007C117D /* Base */,
322
+			);
323
+			name = LaunchScreen.storyboard;
324
+			sourceTree = "<group>";
325
+		};
326
+/* End PBXVariantGroup section */
327
+
328
+/* Begin XCBuildConfiguration section */
329
+		97C147031CF9000F007C117D /* Debug */ = {
330
+			isa = XCBuildConfiguration;
331
+			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
332
+			buildSettings = {
333
+				ALWAYS_SEARCH_USER_PATHS = NO;
334
+				CLANG_ANALYZER_NONNULL = YES;
335
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
336
+				CLANG_CXX_LIBRARY = "libc++";
337
+				CLANG_ENABLE_MODULES = YES;
338
+				CLANG_ENABLE_OBJC_ARC = YES;
339
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
340
+				CLANG_WARN_BOOL_CONVERSION = YES;
341
+				CLANG_WARN_COMMA = YES;
342
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
343
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
344
+				CLANG_WARN_EMPTY_BODY = YES;
345
+				CLANG_WARN_ENUM_CONVERSION = YES;
346
+				CLANG_WARN_INFINITE_RECURSION = YES;
347
+				CLANG_WARN_INT_CONVERSION = YES;
348
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
349
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
350
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
351
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
352
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
353
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
354
+				CLANG_WARN_UNREACHABLE_CODE = YES;
355
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
356
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
357
+				COPY_PHASE_STRIP = NO;
358
+				DEBUG_INFORMATION_FORMAT = dwarf;
359
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
360
+				ENABLE_TESTABILITY = YES;
361
+				GCC_C_LANGUAGE_STANDARD = gnu99;
362
+				GCC_DYNAMIC_NO_PIC = NO;
363
+				GCC_NO_COMMON_BLOCKS = YES;
364
+				GCC_OPTIMIZATION_LEVEL = 0;
365
+				GCC_PREPROCESSOR_DEFINITIONS = (
366
+					"DEBUG=1",
367
+					"$(inherited)",
368
+				);
369
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
370
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
371
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
372
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
373
+				GCC_WARN_UNUSED_FUNCTION = YES;
374
+				GCC_WARN_UNUSED_VARIABLE = YES;
375
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
376
+				MTL_ENABLE_DEBUG_INFO = YES;
377
+				ONLY_ACTIVE_ARCH = YES;
378
+				SDKROOT = iphoneos;
379
+				TARGETED_DEVICE_FAMILY = "1,2";
380
+			};
381
+			name = Debug;
382
+		};
383
+		97C147041CF9000F007C117D /* Release */ = {
384
+			isa = XCBuildConfiguration;
385
+			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
386
+			buildSettings = {
387
+				ALWAYS_SEARCH_USER_PATHS = NO;
388
+				CLANG_ANALYZER_NONNULL = YES;
389
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
390
+				CLANG_CXX_LIBRARY = "libc++";
391
+				CLANG_ENABLE_MODULES = YES;
392
+				CLANG_ENABLE_OBJC_ARC = YES;
393
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
394
+				CLANG_WARN_BOOL_CONVERSION = YES;
395
+				CLANG_WARN_COMMA = YES;
396
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
397
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
398
+				CLANG_WARN_EMPTY_BODY = YES;
399
+				CLANG_WARN_ENUM_CONVERSION = YES;
400
+				CLANG_WARN_INFINITE_RECURSION = YES;
401
+				CLANG_WARN_INT_CONVERSION = YES;
402
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
403
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
404
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
405
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
406
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
407
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
408
+				CLANG_WARN_UNREACHABLE_CODE = YES;
409
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
410
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
411
+				COPY_PHASE_STRIP = NO;
412
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
413
+				ENABLE_NS_ASSERTIONS = NO;
414
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
415
+				GCC_C_LANGUAGE_STANDARD = gnu99;
416
+				GCC_NO_COMMON_BLOCKS = YES;
417
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
418
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
419
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
420
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
421
+				GCC_WARN_UNUSED_FUNCTION = YES;
422
+				GCC_WARN_UNUSED_VARIABLE = YES;
423
+				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
424
+				MTL_ENABLE_DEBUG_INFO = NO;
425
+				SDKROOT = iphoneos;
426
+				TARGETED_DEVICE_FAMILY = "1,2";
427
+				VALIDATE_PRODUCT = YES;
428
+			};
429
+			name = Release;
430
+		};
431
+		97C147061CF9000F007C117D /* Debug */ = {
432
+			isa = XCBuildConfiguration;
433
+			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
434
+			buildSettings = {
435
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
436
+				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
437
+				ENABLE_BITCODE = NO;
438
+				FRAMEWORK_SEARCH_PATHS = (
439
+					"$(inherited)",
440
+					"$(PROJECT_DIR)/Flutter",
441
+				);
442
+				INFOPLIST_FILE = Runner/Info.plist;
443
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
444
+				LIBRARY_SEARCH_PATHS = (
445
+					"$(inherited)",
446
+					"$(PROJECT_DIR)/Flutter",
447
+				);
448
+				PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
449
+				PRODUCT_NAME = "$(TARGET_NAME)";
450
+				VERSIONING_SYSTEM = "apple-generic";
451
+			};
452
+			name = Debug;
453
+		};
454
+		97C147071CF9000F007C117D /* Release */ = {
455
+			isa = XCBuildConfiguration;
456
+			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
457
+			buildSettings = {
458
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
459
+				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
460
+				ENABLE_BITCODE = NO;
461
+				FRAMEWORK_SEARCH_PATHS = (
462
+					"$(inherited)",
463
+					"$(PROJECT_DIR)/Flutter",
464
+				);
465
+				INFOPLIST_FILE = Runner/Info.plist;
466
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
467
+				LIBRARY_SEARCH_PATHS = (
468
+					"$(inherited)",
469
+					"$(PROJECT_DIR)/Flutter",
470
+				);
471
+				PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
472
+				PRODUCT_NAME = "$(TARGET_NAME)";
473
+				VERSIONING_SYSTEM = "apple-generic";
474
+			};
475
+			name = Release;
476
+		};
477
+/* End XCBuildConfiguration section */
478
+
479
+/* Begin XCConfigurationList section */
480
+		97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
481
+			isa = XCConfigurationList;
482
+			buildConfigurations = (
483
+				97C147031CF9000F007C117D /* Debug */,
484
+				97C147041CF9000F007C117D /* Release */,
485
+			);
486
+			defaultConfigurationIsVisible = 0;
487
+			defaultConfigurationName = Release;
488
+		};
489
+		97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
490
+			isa = XCConfigurationList;
491
+			buildConfigurations = (
492
+				97C147061CF9000F007C117D /* Debug */,
493
+				97C147071CF9000F007C117D /* Release */,
494
+			);
495
+			defaultConfigurationIsVisible = 0;
496
+			defaultConfigurationName = Release;
497
+		};
498
+/* End XCConfigurationList section */
499
+	};
500
+	rootObject = 97C146E61CF9000F007C117D /* Project object */;
501
+}

+ 7
- 0
example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata Bestand weergeven

@@ -0,0 +1,7 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Workspace
3
+   version = "1.0">
4
+   <FileRef
5
+      location = "group:Runner.xcodeproj">
6
+   </FileRef>
7
+</Workspace>

+ 93
- 0
example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme Bestand weergeven

@@ -0,0 +1,93 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Scheme
3
+   LastUpgradeVersion = "0910"
4
+   version = "1.3">
5
+   <BuildAction
6
+      parallelizeBuildables = "YES"
7
+      buildImplicitDependencies = "YES">
8
+      <BuildActionEntries>
9
+         <BuildActionEntry
10
+            buildForTesting = "YES"
11
+            buildForRunning = "YES"
12
+            buildForProfiling = "YES"
13
+            buildForArchiving = "YES"
14
+            buildForAnalyzing = "YES">
15
+            <BuildableReference
16
+               BuildableIdentifier = "primary"
17
+               BlueprintIdentifier = "97C146ED1CF9000F007C117D"
18
+               BuildableName = "Runner.app"
19
+               BlueprintName = "Runner"
20
+               ReferencedContainer = "container:Runner.xcodeproj">
21
+            </BuildableReference>
22
+         </BuildActionEntry>
23
+      </BuildActionEntries>
24
+   </BuildAction>
25
+   <TestAction
26
+      buildConfiguration = "Debug"
27
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29
+      language = ""
30
+      shouldUseLaunchSchemeArgsEnv = "YES">
31
+      <Testables>
32
+      </Testables>
33
+      <MacroExpansion>
34
+         <BuildableReference
35
+            BuildableIdentifier = "primary"
36
+            BlueprintIdentifier = "97C146ED1CF9000F007C117D"
37
+            BuildableName = "Runner.app"
38
+            BlueprintName = "Runner"
39
+            ReferencedContainer = "container:Runner.xcodeproj">
40
+         </BuildableReference>
41
+      </MacroExpansion>
42
+      <AdditionalOptions>
43
+      </AdditionalOptions>
44
+   </TestAction>
45
+   <LaunchAction
46
+      buildConfiguration = "Debug"
47
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
48
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
49
+      language = ""
50
+      launchStyle = "0"
51
+      useCustomWorkingDirectory = "NO"
52
+      ignoresPersistentStateOnLaunch = "NO"
53
+      debugDocumentVersioning = "YES"
54
+      debugServiceExtension = "internal"
55
+      allowLocationSimulation = "YES">
56
+      <BuildableProductRunnable
57
+         runnableDebuggingMode = "0">
58
+         <BuildableReference
59
+            BuildableIdentifier = "primary"
60
+            BlueprintIdentifier = "97C146ED1CF9000F007C117D"
61
+            BuildableName = "Runner.app"
62
+            BlueprintName = "Runner"
63
+            ReferencedContainer = "container:Runner.xcodeproj">
64
+         </BuildableReference>
65
+      </BuildableProductRunnable>
66
+      <AdditionalOptions>
67
+      </AdditionalOptions>
68
+   </LaunchAction>
69
+   <ProfileAction
70
+      buildConfiguration = "Release"
71
+      shouldUseLaunchSchemeArgsEnv = "YES"
72
+      savedToolIdentifier = ""
73
+      useCustomWorkingDirectory = "NO"
74
+      debugDocumentVersioning = "YES">
75
+      <BuildableProductRunnable
76
+         runnableDebuggingMode = "0">
77
+         <BuildableReference
78
+            BuildableIdentifier = "primary"
79
+            BlueprintIdentifier = "97C146ED1CF9000F007C117D"
80
+            BuildableName = "Runner.app"
81
+            BlueprintName = "Runner"
82
+            ReferencedContainer = "container:Runner.xcodeproj">
83
+         </BuildableReference>
84
+      </BuildableProductRunnable>
85
+   </ProfileAction>
86
+   <AnalyzeAction
87
+      buildConfiguration = "Debug">
88
+   </AnalyzeAction>
89
+   <ArchiveAction
90
+      buildConfiguration = "Release"
91
+      revealArchiveInOrganizer = "YES">
92
+   </ArchiveAction>
93
+</Scheme>

+ 10
- 0
example/ios/Runner.xcworkspace/contents.xcworkspacedata Bestand weergeven

@@ -0,0 +1,10 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Workspace
3
+   version = "1.0">
4
+   <FileRef
5
+      location = "group:Runner.xcodeproj">
6
+   </FileRef>
7
+   <FileRef
8
+      location = "group:Pods/Pods.xcodeproj">
9
+   </FileRef>
10
+</Workspace>

+ 8
- 0
example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings Bestand weergeven

@@ -0,0 +1,8 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>BuildSystemType</key>
6
+	<string>Original</string>
7
+</dict>
8
+</plist>

+ 6
- 0
example/ios/Runner/AppDelegate.h Bestand weergeven

@@ -0,0 +1,6 @@
1
+#import <Flutter/Flutter.h>
2
+#import <UIKit/UIKit.h>
3
+
4
+@interface AppDelegate : FlutterAppDelegate
5
+
6
+@end

+ 13
- 0
example/ios/Runner/AppDelegate.m Bestand weergeven

@@ -0,0 +1,13 @@
1
+#include "AppDelegate.h"
2
+#include "GeneratedPluginRegistrant.h"
3
+
4
+@implementation AppDelegate
5
+
6
+- (BOOL)application:(UIApplication *)application
7
+    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
8
+  [GeneratedPluginRegistrant registerWithRegistry:self];
9
+  // Override point for customization after application launch.
10
+  return [super application:application didFinishLaunchingWithOptions:launchOptions];
11
+}
12
+
13
+@end

+ 122
- 0
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json Bestand weergeven

@@ -0,0 +1,122 @@
1
+{
2
+  "images" : [
3
+    {
4
+      "size" : "20x20",
5
+      "idiom" : "iphone",
6
+      "filename" : "Icon-App-20x20@2x.png",
7
+      "scale" : "2x"
8
+    },
9
+    {
10
+      "size" : "20x20",
11
+      "idiom" : "iphone",
12
+      "filename" : "Icon-App-20x20@3x.png",
13
+      "scale" : "3x"
14
+    },
15
+    {
16
+      "size" : "29x29",
17
+      "idiom" : "iphone",
18
+      "filename" : "Icon-App-29x29@1x.png",
19
+      "scale" : "1x"
20
+    },
21
+    {
22
+      "size" : "29x29",
23
+      "idiom" : "iphone",
24
+      "filename" : "Icon-App-29x29@2x.png",
25
+      "scale" : "2x"
26
+    },
27
+    {
28
+      "size" : "29x29",
29
+      "idiom" : "iphone",
30
+      "filename" : "Icon-App-29x29@3x.png",
31
+      "scale" : "3x"
32
+    },
33
+    {
34
+      "size" : "40x40",
35
+      "idiom" : "iphone",
36
+      "filename" : "Icon-App-40x40@2x.png",
37
+      "scale" : "2x"
38
+    },
39
+    {
40
+      "size" : "40x40",
41
+      "idiom" : "iphone",
42
+      "filename" : "Icon-App-40x40@3x.png",
43
+      "scale" : "3x"
44
+    },
45
+    {
46
+      "size" : "60x60",
47
+      "idiom" : "iphone",
48
+      "filename" : "Icon-App-60x60@2x.png",
49
+      "scale" : "2x"
50
+    },
51
+    {
52
+      "size" : "60x60",
53
+      "idiom" : "iphone",
54
+      "filename" : "Icon-App-60x60@3x.png",
55
+      "scale" : "3x"
56
+    },
57
+    {
58
+      "size" : "20x20",
59
+      "idiom" : "ipad",
60
+      "filename" : "Icon-App-20x20@1x.png",
61
+      "scale" : "1x"
62
+    },
63
+    {
64
+      "size" : "20x20",
65
+      "idiom" : "ipad",
66
+      "filename" : "Icon-App-20x20@2x.png",
67
+      "scale" : "2x"
68
+    },
69
+    {
70
+      "size" : "29x29",
71
+      "idiom" : "ipad",
72
+      "filename" : "Icon-App-29x29@1x.png",
73
+      "scale" : "1x"
74
+    },
75
+    {
76
+      "size" : "29x29",
77
+      "idiom" : "ipad",
78
+      "filename" : "Icon-App-29x29@2x.png",
79
+      "scale" : "2x"
80
+    },
81
+    {
82
+      "size" : "40x40",
83
+      "idiom" : "ipad",
84
+      "filename" : "Icon-App-40x40@1x.png",
85
+      "scale" : "1x"
86
+    },
87
+    {
88
+      "size" : "40x40",
89
+      "idiom" : "ipad",
90
+      "filename" : "Icon-App-40x40@2x.png",
91
+      "scale" : "2x"
92
+    },
93
+    {
94
+      "size" : "76x76",
95
+      "idiom" : "ipad",
96
+      "filename" : "Icon-App-76x76@1x.png",
97
+      "scale" : "1x"
98
+    },
99
+    {
100
+      "size" : "76x76",
101
+      "idiom" : "ipad",
102
+      "filename" : "Icon-App-76x76@2x.png",
103
+      "scale" : "2x"
104
+    },
105
+    {
106
+      "size" : "83.5x83.5",
107
+      "idiom" : "ipad",
108
+      "filename" : "Icon-App-83.5x83.5@2x.png",
109
+      "scale" : "2x"
110
+    },
111
+    {
112
+      "size" : "1024x1024",
113
+      "idiom" : "ios-marketing",
114
+      "filename" : "Icon-App-1024x1024@1x.png",
115
+      "scale" : "1x"
116
+    }
117
+  ],
118
+  "info" : {
119
+    "version" : 1,
120
+    "author" : "xcode"
121
+  }
122
+}

BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png Bestand weergeven


+ 23
- 0
example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json Bestand weergeven

@@ -0,0 +1,23 @@
1
+{
2
+  "images" : [
3
+    {
4
+      "idiom" : "universal",
5
+      "filename" : "LaunchImage.png",
6
+      "scale" : "1x"
7
+    },
8
+    {
9
+      "idiom" : "universal",
10
+      "filename" : "LaunchImage@2x.png",
11
+      "scale" : "2x"
12
+    },
13
+    {
14
+      "idiom" : "universal",
15
+      "filename" : "LaunchImage@3x.png",
16
+      "scale" : "3x"
17
+    }
18
+  ],
19
+  "info" : {
20
+    "version" : 1,
21
+    "author" : "xcode"
22
+  }
23
+}

BIN
example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png Bestand weergeven


BIN
example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png Bestand weergeven


+ 5
- 0
example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md Bestand weergeven

@@ -0,0 +1,5 @@
1
+# Launch Screen Assets
2
+
3
+You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4
+
5
+You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.

+ 37
- 0
example/ios/Runner/Base.lproj/LaunchScreen.storyboard Bestand weergeven

@@ -0,0 +1,37 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
3
+    <dependencies>
4
+        <deployment identifier="iOS"/>
5
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
6
+    </dependencies>
7
+    <scenes>
8
+        <!--View Controller-->
9
+        <scene sceneID="EHf-IW-A2E">
10
+            <objects>
11
+                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
12
+                    <layoutGuides>
13
+                        <viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
14
+                        <viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
15
+                    </layoutGuides>
16
+                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
17
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
18
+                        <subviews>
19
+                            <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
20
+                            </imageView>
21
+                        </subviews>
22
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
23
+                        <constraints>
24
+                            <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
25
+                            <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
26
+                        </constraints>
27
+                    </view>
28
+                </viewController>
29
+                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
30
+            </objects>
31
+            <point key="canvasLocation" x="53" y="375"/>
32
+        </scene>
33
+    </scenes>
34
+    <resources>
35
+        <image name="LaunchImage" width="168" height="185"/>
36
+    </resources>
37
+</document>

+ 26
- 0
example/ios/Runner/Base.lproj/Main.storyboard Bestand weergeven

@@ -0,0 +1,26 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
3
+    <dependencies>
4
+        <deployment identifier="iOS"/>
5
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
6
+    </dependencies>
7
+    <scenes>
8
+        <!--Flutter View Controller-->
9
+        <scene sceneID="tne-QT-ifu">
10
+            <objects>
11
+                <viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
12
+                    <layoutGuides>
13
+                        <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
14
+                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
15
+                    </layoutGuides>
16
+                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
17
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
18
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
19
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
20
+                    </view>
21
+                </viewController>
22
+                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
23
+            </objects>
24
+        </scene>
25
+    </scenes>
26
+</document>

+ 45
- 0
example/ios/Runner/Info.plist Bestand weergeven

@@ -0,0 +1,45 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>CFBundleDevelopmentRegion</key>
6
+	<string>en</string>
7
+	<key>CFBundleExecutable</key>
8
+	<string>$(EXECUTABLE_NAME)</string>
9
+	<key>CFBundleIdentifier</key>
10
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11
+	<key>CFBundleInfoDictionaryVersion</key>
12
+	<string>6.0</string>
13
+	<key>CFBundleName</key>
14
+	<string>example</string>
15
+	<key>CFBundlePackageType</key>
16
+	<string>APPL</string>
17
+	<key>CFBundleShortVersionString</key>
18
+	<string>$(FLUTTER_BUILD_NAME)</string>
19
+	<key>CFBundleSignature</key>
20
+	<string>????</string>
21
+	<key>CFBundleVersion</key>
22
+	<string>$(FLUTTER_BUILD_NUMBER)</string>
23
+	<key>LSRequiresIPhoneOS</key>
24
+	<true/>
25
+	<key>UILaunchStoryboardName</key>
26
+	<string>LaunchScreen</string>
27
+	<key>UIMainStoryboardFile</key>
28
+	<string>Main</string>
29
+	<key>UISupportedInterfaceOrientations</key>
30
+	<array>
31
+		<string>UIInterfaceOrientationPortrait</string>
32
+		<string>UIInterfaceOrientationLandscapeLeft</string>
33
+		<string>UIInterfaceOrientationLandscapeRight</string>
34
+	</array>
35
+	<key>UISupportedInterfaceOrientations~ipad</key>
36
+	<array>
37
+		<string>UIInterfaceOrientationPortrait</string>
38
+		<string>UIInterfaceOrientationPortraitUpsideDown</string>
39
+		<string>UIInterfaceOrientationLandscapeLeft</string>
40
+		<string>UIInterfaceOrientationLandscapeRight</string>
41
+	</array>
42
+	<key>UIViewControllerBasedStatusBarAppearance</key>
43
+	<false/>
44
+</dict>
45
+</plist>

+ 9
- 0
example/ios/Runner/main.m Bestand weergeven

@@ -0,0 +1,9 @@
1
+#import <Flutter/Flutter.h>
2
+#import <UIKit/UIKit.h>
3
+#import "AppDelegate.h"
4
+
5
+int main(int argc, char* argv[]) {
6
+  @autoreleasepool {
7
+    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
8
+  }
9
+}

+ 105
- 0
example/lib/main.dart Bestand weergeven

@@ -0,0 +1,105 @@
1
+import 'package:flutter/material.dart';
2
+import 'package:photo/photo.dart';
3
+
4
+void main() => runApp(new MyApp());
5
+
6
+class MyApp extends StatelessWidget {
7
+  // This widget is the root of your application.
8
+  @override
9
+  Widget build(BuildContext context) {
10
+    return new MaterialApp(
11
+      title: 'Flutter Demo',
12
+      theme: new ThemeData(
13
+        // This is the theme of your application.
14
+        //
15
+        // Try running your application with "flutter run". You'll see the
16
+        // application has a blue toolbar. Then, without quitting the app, try
17
+        // changing the primarySwatch below to Colors.green and then invoke
18
+        // "hot reload" (press "r" in the console where you ran "flutter run",
19
+        // or press Run > Flutter Hot Reload in IntelliJ). Notice that the
20
+        // counter didn't reset back to zero; the application is not restarted.
21
+        primarySwatch: Colors.blue,
22
+      ),
23
+      home: new MyHomePage(title: 'Flutter Demo Home Page'),
24
+    );
25
+  }
26
+}
27
+
28
+class MyHomePage extends StatefulWidget {
29
+  MyHomePage({Key key, this.title}) : super(key: key);
30
+
31
+  // This widget is the home page of your application. It is stateful, meaning
32
+  // that it has a State object (defined below) that contains fields that affect
33
+  // how it looks.
34
+
35
+  // This class is the configuration for the state. It holds the values (in this
36
+  // case the title) provided by the parent (in this case the App widget) and
37
+  // used by the build method of the State. Fields in a Widget subclass are
38
+  // always marked "final".
39
+
40
+  final String title;
41
+
42
+  @override
43
+  _MyHomePageState createState() => new _MyHomePageState();
44
+}
45
+
46
+class _MyHomePageState extends State<MyHomePage> {
47
+  int _counter = 0;
48
+
49
+  void _incrementCounter() {
50
+    PhotoPicker.pickImage(
51
+      context: context,
52
+    );
53
+  }
54
+
55
+  @override
56
+  Widget build(BuildContext context) {
57
+    // This method is rerun every time setState is called, for instance as done
58
+    // by the _incrementCounter method above.
59
+    //
60
+    // The Flutter framework has been optimized to make rerunning build methods
61
+    // fast, so that you can just rebuild anything that needs updating rather
62
+    // than having to individually change instances of widgets.
63
+    return new Scaffold(
64
+      appBar: new AppBar(
65
+        // Here we take the value from the MyHomePage object that was created by
66
+        // the App.build method, and use it to set our appbar title.
67
+        title: new Text(widget.title),
68
+      ),
69
+      body: new Center(
70
+        // Center is a layout widget. It takes a single child and positions it
71
+        // in the middle of the parent.
72
+        child: new Column(
73
+          // Column is also layout widget. It takes a list of children and
74
+          // arranges them vertically. By default, it sizes itself to fit its
75
+          // children horizontally, and tries to be as tall as its parent.
76
+          //
77
+          // Invoke "debug paint" (press "p" in the console where you ran
78
+          // "flutter run", or select "Toggle Debug Paint" from the Flutter tool
79
+          // window in IntelliJ) to see the wireframe for each widget.
80
+          //
81
+          // Column has various properties to control how it sizes itself and
82
+          // how it positions its children. Here we use mainAxisAlignment to
83
+          // center the children vertically; the main axis here is the vertical
84
+          // axis because Columns are vertical (the cross axis would be
85
+          // horizontal).
86
+          mainAxisAlignment: MainAxisAlignment.center,
87
+          children: <Widget>[
88
+            new Text(
89
+              'You have pushed the button this many times:',
90
+            ),
91
+            new Text(
92
+              '$_counter',
93
+              style: Theme.of(context).textTheme.display1,
94
+            ),
95
+          ],
96
+        ),
97
+      ),
98
+      floatingActionButton: new FloatingActionButton(
99
+        onPressed: _incrementCounter,
100
+        tooltip: 'Increment',
101
+        child: new Icon(Icons.add),
102
+      ), // This trailing comma makes auto-formatting nicer for build methods.
103
+    );
104
+  }
105
+}

+ 71
- 0
example/pubspec.yaml Bestand weergeven

@@ -0,0 +1,71 @@
1
+name: example
2
+description: A new Flutter project.
3
+
4
+# The following defines the version and build number for your application.
5
+# A version number is three numbers separated by dots, like 1.2.43
6
+# followed by an optional build number separated by a +.
7
+# Both the version and the builder number may be overridden in flutter
8
+# build by specifying --build-name and --build-number, respectively.
9
+# Read more about versioning at semver.org.
10
+version: 1.0.0+1
11
+
12
+environment:
13
+  sdk: ">=2.0.0-dev.68.0 <3.0.0"
14
+
15
+dependencies:
16
+  flutter:
17
+    sdk: flutter
18
+
19
+  # The following adds the Cupertino Icons font to your application.
20
+  # Use with the CupertinoIcons class for iOS style icons.
21
+  cupertino_icons: ^0.1.2
22
+
23
+  photo:
24
+    path: ../
25
+
26
+dev_dependencies:
27
+  flutter_test:
28
+    sdk: flutter
29
+
30
+
31
+# For information on the generic Dart part of this file, see the
32
+# following page: https://www.dartlang.org/tools/pub/pubspec
33
+
34
+# The following section is specific to Flutter.
35
+flutter:
36
+
37
+  # The following line ensures that the Material Icons font is
38
+  # included with your application, so that you can use the icons in
39
+  # the material Icons class.
40
+  uses-material-design: true
41
+
42
+  # To add assets to your application, add an assets section, like this:
43
+  # assets:
44
+  #  - images/a_dot_burr.jpeg
45
+  #  - images/a_dot_ham.jpeg
46
+
47
+  # An image asset can refer to one or more resolution-specific "variants", see
48
+  # https://flutter.io/assets-and-images/#resolution-aware.
49
+
50
+  # For details regarding adding assets from package dependencies, see
51
+  # https://flutter.io/assets-and-images/#from-packages
52
+
53
+  # To add custom fonts to your application, add a fonts section here,
54
+  # in this "flutter" section. Each entry in this list should have a
55
+  # "family" key with the font family name, and a "fonts" key with a
56
+  # list giving the asset and other descriptors for the font. For
57
+  # example:
58
+  # fonts:
59
+  #   - family: Schyler
60
+  #     fonts:
61
+  #       - asset: fonts/Schyler-Regular.ttf
62
+  #       - asset: fonts/Schyler-Italic.ttf
63
+  #         style: italic
64
+  #   - family: Trajan Pro
65
+  #     fonts:
66
+  #       - asset: fonts/TrajanPro.ttf
67
+  #       - asset: fonts/TrajanPro_Bold.ttf
68
+  #         weight: 700
69
+  #
70
+  # For details regarding fonts from package dependencies,
71
+  # see https://flutter.io/custom-fonts/#from-packages

+ 29
- 0
example/test/widget_test.dart Bestand weergeven

@@ -0,0 +1,29 @@
1
+// This is a basic Flutter widget test.
2
+// To perform an interaction with a widget in your test, use the WidgetTester utility that Flutter
3
+// provides. For example, you can send tap and scroll gestures. You can also use WidgetTester to
4
+// find child widgets in the widget tree, read text, and verify that the values of widget properties
5
+// are correct.
6
+
7
+import 'package:flutter/material.dart';
8
+import 'package:flutter_test/flutter_test.dart';
9
+
10
+import 'package:example/main.dart';
11
+
12
+void main() {
13
+  testWidgets('Counter increments smoke test', (WidgetTester tester) async {
14
+    // Build our app and trigger a frame.
15
+    await tester.pumpWidget(new MyApp());
16
+
17
+    // Verify that our counter starts at 0.
18
+    expect(find.text('0'), findsOneWidget);
19
+    expect(find.text('1'), findsNothing);
20
+
21
+    // Tap the '+' icon and trigger a frame.
22
+    await tester.tap(find.byIcon(Icons.add));
23
+    await tester.pump();
24
+
25
+    // Verify that our counter has incremented.
26
+    expect(find.text('0'), findsNothing);
27
+    expect(find.text('1'), findsOneWidget);
28
+  });
29
+}

+ 0
- 0
lib/src/engine/lru_cache.dart Bestand weergeven


+ 0
- 0
lib/src/error/permission_error.dart Bestand weergeven


+ 0
- 0
lib/src/page/not_permission_dialog.dart Bestand weergeven


+ 0
- 0
lib/src/page/photo_main_page.dart Bestand weergeven


+ 50
- 0
lib/src/provider/i18n_provider.dart Bestand weergeven

@@ -0,0 +1,50 @@
1
+import 'package:photo/src/entity/options.dart';
2
+import 'package:photo/src/provider/SelectedProvider.dart';
3
+
4
+abstract class I18nProvider {
5
+
6
+  String getTitleText(Options options);
7
+
8
+  String getSureText(Options options, SelectedProvider selectedProvider);
9
+
10
+  String getPreviewText(Options options, SelectedProvider selectedProvider);
11
+
12
+  static I18nProvider chinese = _CNProvider();
13
+
14
+  static I18nProvider english = _ENProvider();
15
+
16
+}
17
+
18
+class _CNProvider extends I18nProvider {
19
+  @override
20
+  String getTitleText(Options options) {
21
+    return "图片选择";
22
+  }
23
+
24
+  @override
25
+  String getPreviewText(Options options, SelectedProvider selectedProvider) {
26
+    return "预览(${selectedProvider.selectedCount})";
27
+  }
28
+
29
+  @override
30
+  String getSureText(Options options, SelectedProvider selectedProvider) {
31
+    return "确定(${selectedProvider.selectedCount}/${options.maxSelected})";
32
+  }
33
+}
34
+
35
+class _ENProvider extends I18nProvider {
36
+  @override
37
+  String getTitleText(Options options) {
38
+    return "image picker";
39
+  }
40
+
41
+  @override
42
+  String getPreviewText(Options options, SelectedProvider selectedProvider) {
43
+    return "preview(${selectedProvider.selectedCount})";
44
+  }
45
+
46
+  @override
47
+  String getSureText(Options options, SelectedProvider selectedProvider) {
48
+    return "sure(${selectedProvider.selectedCount}/${options.maxSelected})";
49
+  }
50
+}

+ 3
- 0
lib/src/provider/selected_provider.dart Bestand weergeven

@@ -0,0 +1,3 @@
1
+abstract class SelectedProvider {
2
+  int get selectedCount;
3
+}

+ 0
- 19
photo.iml Bestand weergeven

@@ -1,19 +0,0 @@
1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<module type="JAVA_MODULE" version="4">
3
-  <component name="NewModuleRootManager" inherit-compiler-output="true">
4
-    <exclude-output />
5
-    <content url="file://$MODULE_DIR$">
6
-      <sourceFolder url="file://$MODULE_DIR$/lib" isTestSource="false" />
7
-      <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
8
-      <excludeFolder url="file://$MODULE_DIR$/.dart_tool" />
9
-      <excludeFolder url="file://$MODULE_DIR$/.idea" />
10
-      <excludeFolder url="file://$MODULE_DIR$/.pub" />
11
-      <excludeFolder url="file://$MODULE_DIR$/build" />
12
-    </content>
13
-    <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" />
14
-    <orderEntry type="sourceFolder" forTests="false" />
15
-    <orderEntry type="library" name="Dart Packages" level="project" />
16
-    <orderEntry type="library" name="Dart SDK" level="project" />
17
-    <orderEntry type="library" name="Flutter Plugins" level="project" />
18
-  </component>
19
-</module>