Browse Source

update: 更新gitignore

hwh97 5 years ago
parent
commit
1cec489ae1

+ 0 - 116
.idea/codeStyles/Project.xml

@@ -1,116 +0,0 @@
-<component name="ProjectCodeStyleConfiguration">
-  <code_scheme name="Project" version="173">
-    <codeStyleSettings language="XML">
-      <indentOptions>
-        <option name="CONTINUATION_INDENT_SIZE" value="4" />
-      </indentOptions>
-      <arrangement>
-        <rules>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>xmlns:android</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>^$</XML_NAMESPACE>
-                </AND>
-              </match>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>xmlns:.*</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>^$</XML_NAMESPACE>
-                </AND>
-              </match>
-              <order>BY_NAME</order>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>.*:id</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
-                </AND>
-              </match>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>.*:name</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
-                </AND>
-              </match>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>name</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>^$</XML_NAMESPACE>
-                </AND>
-              </match>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>style</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>^$</XML_NAMESPACE>
-                </AND>
-              </match>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>.*</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>^$</XML_NAMESPACE>
-                </AND>
-              </match>
-              <order>BY_NAME</order>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>.*</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
-                </AND>
-              </match>
-              <order>ANDROID_ATTRIBUTE_ORDER</order>
-            </rule>
-          </section>
-          <section>
-            <rule>
-              <match>
-                <AND>
-                  <NAME>.*</NAME>
-                  <XML_ATTRIBUTE />
-                  <XML_NAMESPACE>.*</XML_NAMESPACE>
-                </AND>
-              </match>
-              <order>BY_NAME</order>
-            </rule>
-          </section>
-        </rules>
-      </arrangement>
-    </codeStyleSettings>
-  </code_scheme>
-</component>

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

@@ -1,19 +0,0 @@
-<component name="libraryTable">
-  <library name="Dart SDK">
-    <CLASSES>
-      <root url="file://C:/flutter/flutter/bin/cache/dart-sdk/lib/async" />
-      <root url="file://C:/flutter/flutter/bin/cache/dart-sdk/lib/collection" />
-      <root url="file://C:/flutter/flutter/bin/cache/dart-sdk/lib/convert" />
-      <root url="file://C:/flutter/flutter/bin/cache/dart-sdk/lib/core" />
-      <root url="file://C:/flutter/flutter/bin/cache/dart-sdk/lib/developer" />
-      <root url="file://C:/flutter/flutter/bin/cache/dart-sdk/lib/html" />
-      <root url="file://C:/flutter/flutter/bin/cache/dart-sdk/lib/io" />
-      <root url="file://C:/flutter/flutter/bin/cache/dart-sdk/lib/isolate" />
-      <root url="file://C:/flutter/flutter/bin/cache/dart-sdk/lib/math" />
-      <root url="file://C:/flutter/flutter/bin/cache/dart-sdk/lib/mirrors" />
-      <root url="file://C:/flutter/flutter/bin/cache/dart-sdk/lib/typed_data" />
-    </CLASSES>
-    <JAVADOC />
-    <SOURCES />
-  </library>
-</component>

+ 0 - 9
.idea/libraries/Flutter_Plugins.xml

@@ -1,9 +0,0 @@
-<component name="libraryTable">
-  <library name="Flutter Plugins" type="FlutterPluginsLibraryType">
-    <CLASSES>
-      <root url="file://$PROJECT_DIR$" />
-    </CLASSES>
-    <JAVADOC />
-    <SOURCES />
-  </library>
-</component>

+ 0 - 9
.idea/libraries/Flutter_for_Android.xml

@@ -1,9 +0,0 @@
-<component name="libraryTable">
-  <library name="Flutter for Android">
-    <CLASSES>
-      <root url="jar://C:/flutter/flutter/bin/cache/artifacts/engine/android-arm/flutter.jar!/" />
-    </CLASSES>
-    <JAVADOC />
-    <SOURCES />
-  </library>
-</component>

+ 0 - 7
.idea/misc.xml

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="Android API 22 Platform" project-jdk-type="Android SDK" />
-  <component name="ProjectType">
-    <option name="id" value="io.flutter" />
-  </component>
-</project>

+ 0 - 10
.idea/modules.xml

@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/flutter_ali_camera.iml" filepath="$PROJECT_DIR$/flutter_ali_camera.iml" />
-      <module fileurl="file://$PROJECT_DIR$/android/flutter_ali_camera_android.iml" filepath="$PROJECT_DIR$/android/flutter_ali_camera_android.iml" />
-      <module fileurl="file://$PROJECT_DIR$/example/android/flutter_ali_camera_example_android.iml" filepath="$PROJECT_DIR$/example/android/flutter_ali_camera_example_android.iml" />
-    </modules>
-  </component>
-</project>

+ 0 - 6
.idea/runConfigurations/example_lib_main_dart.xml

@@ -1,6 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="example/lib/main.dart" type="FlutterRunConfigurationType" factoryName="Flutter" singleton="false">
-    <option name="filePath" value="$PROJECT_DIR$/example/lib/main.dart" />
-    <method v="2" />
-  </configuration>
-</component>

+ 0 - 6
.idea/vcs.xml

@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$" vcs="Git" />
-  </component>
-</project>

+ 0 - 446
.idea/workspace.xml

@@ -1,446 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ChangeListManager">
-    <list default="true" id="e3e301fb-9bf2-45ae-a867-af8d9f406797" name="Default Changelist" comment="add: first commit">
-      <change afterPath="$PROJECT_DIR$/lib/ali_camera.dart" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Flutter_Plugins.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Flutter_Plugins.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/android/src/main/kotlin/com/i2edu/flutter_ali_camera/AliCameraView.kt" beforeDir="false" afterPath="$PROJECT_DIR$/android/src/main/kotlin/com/i2edu/flutter_ali_camera/AliCameraView.kt" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/android/src/main/kotlin/com/i2edu/flutter_ali_camera/CameraMethodHandler.kt" beforeDir="false" afterPath="$PROJECT_DIR$/android/src/main/kotlin/com/i2edu/flutter_ali_camera/CameraMethodHandler.kt" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/android/src/main/kotlin/com/i2edu/flutter_ali_camera/FlutterAliCameraPlugin.kt" beforeDir="false" afterPath="$PROJECT_DIR$/android/src/main/kotlin/com/i2edu/flutter_ali_camera/FlutterAliCameraPlugin.kt" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/android/src/main/kotlin/com/i2edu/flutter_ali_camera/FlutterState.kt" beforeDir="false" afterPath="$PROJECT_DIR$/android/src/main/kotlin/com/i2edu/flutter_ali_camera/FlutterState.kt" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/android/src/main/kotlin/com/i2edu/flutter_ali_camera/QueuingEventSink.java" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/example/lib/main.dart" beforeDir="false" afterPath="$PROJECT_DIR$/example/lib/main.dart" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/example/pubspec.lock" beforeDir="false" afterPath="$PROJECT_DIR$/example/pubspec.lock" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/example/pubspec.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/example/pubspec.yaml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/lib/camera_option.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/camera_option.dart" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/lib/flutter_ali_camera.dart" beforeDir="false" afterPath="$PROJECT_DIR$/lib/ali_camera_controller.dart" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/test/flutter_ali_camera_test.dart" beforeDir="false" afterPath="$PROJECT_DIR$/test/flutter_ali_camera_test.dart" afterDir="false" />
-    </list>
-    <ignored path="$PROJECT_DIR$/.dart_tool/" />
-    <ignored path="$PROJECT_DIR$/.idea/" />
-    <ignored path="$PROJECT_DIR$/.pub/" />
-    <ignored path="$PROJECT_DIR$/build/" />
-    <ignored path="$PROJECT_DIR$/example/.pub/" />
-    <ignored path="$PROJECT_DIR$/example/build/" />
-    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
-    <option name="SHOW_DIALOG" value="false" />
-    <option name="HIGHLIGHT_CONFLICTS" value="true" />
-    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
-    <option name="LAST_RESOLUTION" value="IGNORE" />
-  </component>
-  <component name="DefaultGradleProjectSettings">
-    <option name="isMigrated" value="true" />
-  </component>
-  <component name="ExecutionTargetManager" SELECTED_TARGET="792QAESFTC6MD" />
-  <component name="FileEditorManager">
-    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://C:/flutter/flutter/packages/flutter/lib/src/material/icon_button.dart">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="39">
-              <caret line="137" column="8" selection-start-line="137" selection-start-column="8" selection-end-line="137" selection-end-column="8" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/example/lib/main.dart">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="44">
-              <caret line="2" selection-start-line="2" selection-end-line="2" />
-              <folding>
-                <element signature="e#518#546#0" />
-                <element signature="e#799#809#0" />
-                <element signature="e#971#1336#0" />
-                <element signature="e#1370#1395#0" />
-                <element signature="e#1522#1699#0" />
-                <element signature="e#969#1235#0" />
-                <element signature="e#1751#2357#0" />
-                <element signature="e#2228#2446#0" />
-                <element signature="e#2408#5021#0" />
-                <element signature="e#2297#2337#0" />
-                <element signature="e#3140#3223#0" />
-                <element signature="e#3233#3544#0" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/ali_camera_controller.dart">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="111">
-              <caret line="66" column="46" selection-start-line="66" selection-start-column="46" selection-end-line="66" selection-end-column="46" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://C:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/path_provider-0.4.1/lib/path_provider.dart">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="159">
-              <caret line="37" column="50" selection-start-line="37" selection-start-column="18" selection-end-line="37" selection-end-column="50" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/camera_option.dart">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="171">
-              <caret line="41" column="6" selection-start-line="41" selection-start-column="6" selection-end-line="41" selection-end-column="6" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://C:/flutter/flutter/packages/flutter/lib/src/services/text_input.dart">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="171">
-              <caret line="584" column="9" selection-start-line="584" selection-start-column="9" selection-end-line="584" selection-end-column="9" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/example/pubspec.yaml">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-751">
-              <caret line="15" selection-start-line="15" selection-end-line="15" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/pubspec.yaml">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-135">
-              <caret line="12" selection-start-line="12" selection-end-line="12" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/ali_camera.dart">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="22">
-              <caret line="1" column="28" selection-start-line="1" selection-start-column="28" selection-end-line="1" selection-end-column="28" />
-              <folding>
-                <element signature="e#0#36#0" expanded="true" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://C:/flutter/flutter/bin/cache/pkg/sky_engine/lib/core/map.dart">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="5566">
-              <caret line="271" column="61" selection-start-line="271" selection-start-column="61" selection-end-line="271" selection-end-column="61" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-    </leaf>
-  </component>
-  <component name="FileTemplateManagerImpl">
-    <option name="RECENT_TEMPLATES">
-      <list>
-        <option value="Dart File" />
-      </list>
-    </option>
-  </component>
-  <component name="FindInProjectRecents">
-    <findStrings>
-      <find>path</find>
-      <find>path</find>
-      <find>{</find>
-      <find>record update</find>
-      <find>record updat</find>
-      <find>progress</find>
-      <find>recordPath</find>
-    </findStrings>
-  </component>
-  <component name="Git.Settings">
-    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
-  </component>
-  <component name="IdeDocumentHistory">
-    <option name="CHANGED_PATHS">
-      <list>
-        <option value="$PROJECT_DIR$/lib/output_option.dart" />
-        <option value="$PROJECT_DIR$/.gitignore" />
-        <option value="$PROJECT_DIR$/lib/flutter_ali_camera.dart" />
-        <option value="$PROJECT_DIR$/lib/ali_camera.dart" />
-        <option value="$PROJECT_DIR$/test/flutter_ali_camera_test.dart" />
-        <option value="$PROJECT_DIR$/lib/camera_option.dart" />
-        <option value="$PROJECT_DIR$/pubspec.yaml" />
-        <option value="$PROJECT_DIR$/example/pubspec.yaml" />
-        <option value="$PROJECT_DIR$/lib/ali_camera_controller.dart" />
-        <option value="$PROJECT_DIR$/example/lib/main.dart" />
-      </list>
-    </option>
-  </component>
-  <component name="ProjectFrameBounds" extendedState="6">
-    <option name="x" value="-53" />
-    <option name="y" value="14" />
-    <option name="width" value="1068" />
-    <option name="height" value="955" />
-  </component>
-  <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
-  <component name="ProjectView">
-    <navigator currentView="ProjectPane" proportions="" version="1">
-      <foldersAlwaysOnTop value="true" />
-    </navigator>
-    <panes>
-      <pane id="ProjectPane">
-        <subPane>
-          <expand>
-            <path>
-              <item name="flutter_ali_camera" type="b2602c69:ProjectViewProjectNode" />
-              <item name="flutter_ali_camera" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="flutter_ali_camera" type="b2602c69:ProjectViewProjectNode" />
-              <item name="flutter_ali_camera" type="462c0819:PsiDirectoryNode" />
-              <item name="example" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="flutter_ali_camera" type="b2602c69:ProjectViewProjectNode" />
-              <item name="flutter_ali_camera" type="462c0819:PsiDirectoryNode" />
-              <item name="ios" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="flutter_ali_camera" type="b2602c69:ProjectViewProjectNode" />
-              <item name="flutter_ali_camera" type="462c0819:PsiDirectoryNode" />
-              <item name="lib" type="462c0819:PsiDirectoryNode" />
-            </path>
-            <path>
-              <item name="flutter_ali_camera" type="b2602c69:ProjectViewProjectNode" />
-              <item name="flutter_ali_camera" type="462c0819:PsiDirectoryNode" />
-              <item name="test" type="462c0819:PsiDirectoryNode" />
-            </path>
-          </expand>
-          <select />
-        </subPane>
-      </pane>
-      <pane id="PackagesPane" />
-      <pane id="Scope" />
-      <pane id="AndroidView" />
-    </panes>
-  </component>
-  <component name="PropertiesComponent">
-    <property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
-    <property name="dart.analysis.tool.window.force.activate" value="false" />
-    <property name="io.flutter.reload.alreadyRun" value="true" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$/example/android" />
-    <property name="show.migrate.to.gradle.popup" value="false" />
-  </component>
-  <component name="RunDashboard">
-    <option name="ruleStates">
-      <list>
-        <RuleState>
-          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
-        </RuleState>
-        <RuleState>
-          <option name="name" value="StatusDashboardGroupingRule" />
-        </RuleState>
-      </list>
-    </option>
-  </component>
-  <component name="SvnConfiguration">
-    <configuration />
-  </component>
-  <component name="TaskManager">
-    <task active="true" id="Default" summary="Default task">
-      <changelist id="e3e301fb-9bf2-45ae-a867-af8d9f406797" name="Default Changelist" comment="" />
-      <created>1585740781897</created>
-      <option name="number" value="Default" />
-      <option name="presentableId" value="Default" />
-      <updated>1585740781897</updated>
-    </task>
-    <servers />
-  </component>
-  <component name="ToolWindowManager">
-    <frame x="-8" y="-8" width="1936" height="1096" extended-state="6" />
-    <editor active="true" />
-    <layout>
-      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.25" />
-      <window_info id="Captures" order="1" side_tool="true" />
-      <window_info id="Structure" order="2" side_tool="true" />
-      <window_info id="Image Layers" order="3" />
-      <window_info id="Designer" order="4" />
-      <window_info id="Build Variants" order="5" side_tool="true" />
-      <window_info id="Resources Explorer" order="6" />
-      <window_info id="Capture Tool" order="7" />
-      <window_info id="Favorites" order="8" side_tool="true" />
-      <window_info anchor="bottom" id="Messages" weight="0.32976446" />
-      <window_info anchor="bottom" id="Dart Analysis" order="0" weight="0.32905984" />
-      <window_info anchor="bottom" id="Run" order="1" weight="0.42184153" />
-      <window_info anchor="bottom" id="TODO" order="2" />
-      <window_info anchor="bottom" id="Android Profiler" order="3" show_stripe_button="false" />
-      <window_info anchor="bottom" id="Logcat" order="4" />
-      <window_info active="true" anchor="bottom" id="Debug" order="5" visible="true" weight="0.32976446" />
-      <window_info anchor="bottom" id="Terminal" order="6" weight="0.32976446" />
-      <window_info anchor="bottom" id="Event Log" order="7" side_tool="true" />
-      <window_info anchor="bottom" id="Version Control" order="8" />
-      <window_info anchor="right" id="Device File Explorer" order="0" side_tool="true" />
-      <window_info anchor="right" id="Capture Analysis" order="1" />
-      <window_info anchor="right" id="Theme Preview" order="2" />
-      <window_info anchor="right" id="Flutter Inspector" order="3" />
-      <window_info anchor="right" id="Word Book" order="4" side_tool="true" />
-      <window_info anchor="right" id="Flutter Outline" order="5" />
-      <window_info anchor="right" id="Palette&#9;" order="6" />
-      <window_info anchor="right" id="Flutter Performance" order="7" />
-    </layout>
-  </component>
-  <component name="editorHistoryManager">
-    <entry file="file://C:/flutter/flutter/bin/cache/pkg/sky_engine/lib/convert/json.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="199">
-          <caret line="18" column="39" selection-start-line="18" selection-start-column="39" selection-end-line="18" selection-end-column="39" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://C:/flutter/flutter/packages/flutter/lib/src/services/binary_messenger.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="265">
-          <caret line="78" column="55" selection-start-line="78" selection-start-column="55" selection-end-line="78" selection-end-column="55" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://C:/flutter/flutter/packages/flutter/lib/src/widgets/platform_view.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="89">
-          <caret line="655" column="20" selection-start-line="655" selection-start-column="6" selection-end-line="655" selection-end-column="23" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://C:/flutter/flutter/packages/flutter/lib/src/rendering/platform_view.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="155">
-          <caret line="219" lean-forward="true" selection-start-line="219" selection-end-line="219" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/ios/Classes/SwiftFlutterAliCameraPlugin.swift">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
-    <entry file="file://$PROJECT_DIR$/.gitignore">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="44">
-          <caret line="2" column="5" selection-start-line="2" selection-start-column="5" selection-end-line="2" selection-end-column="5" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/test/flutter_ali_camera_test.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="44">
-          <caret line="2" column="50" selection-start-line="2" selection-start-column="50" selection-end-line="2" selection-end-column="50" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://C:/flutter/flutter/bin/cache/pkg/sky_engine/lib/core/map.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="5566">
-          <caret line="271" column="61" selection-start-line="271" selection-start-column="61" selection-end-line="271" selection-end-column="61" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://C:/flutter/flutter/packages/flutter/lib/src/material/input_decorator.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="259">
-          <caret line="2352" column="19" selection-start-line="2352" selection-start-column="9" selection-end-line="2352" selection-end-column="19" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/lib/ali_camera.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="22">
-          <caret line="1" column="28" selection-start-line="1" selection-start-column="28" selection-end-line="1" selection-end-column="28" />
-          <folding>
-            <element signature="e#0#36#0" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://C:/flutter/flutter/packages/flutter/lib/src/services/platform_channel.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="171">
-          <caret line="320" column="32" selection-start-line="320" selection-start-column="32" selection-end-line="320" selection-end-column="32" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/example/pubspec.yaml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-751">
-          <caret line="15" selection-start-line="15" selection-end-line="15" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pubspec.yaml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-135">
-          <caret line="12" selection-start-line="12" selection-end-line="12" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://C:/flutter/flutter/packages/flutter/lib/src/services/text_input.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="171">
-          <caret line="584" column="9" selection-start-line="584" selection-start-column="9" selection-end-line="584" selection-end-column="9" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/lib/camera_option.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="171">
-          <caret line="41" column="6" selection-start-line="41" selection-start-column="6" selection-end-line="41" selection-end-column="6" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://C:/flutter/flutter/packages/flutter/lib/src/material/icon_button.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="39">
-          <caret line="137" column="8" selection-start-line="137" selection-start-column="8" selection-end-line="137" selection-end-column="8" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://C:/flutter/flutter/.pub-cache/hosted/pub.flutter-io.cn/path_provider-0.4.1/lib/path_provider.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="159">
-          <caret line="37" column="50" selection-start-line="37" selection-start-column="18" selection-end-line="37" selection-end-column="50" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/lib/ali_camera_controller.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="111">
-          <caret line="66" column="46" selection-start-line="66" selection-start-column="46" selection-end-line="66" selection-end-column="46" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/example/lib/main.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="44">
-          <caret line="2" selection-start-line="2" selection-end-line="2" />
-          <folding>
-            <element signature="e#518#546#0" />
-            <element signature="e#799#809#0" />
-            <element signature="e#971#1336#0" />
-            <element signature="e#1370#1395#0" />
-            <element signature="e#1522#1699#0" />
-            <element signature="e#969#1235#0" />
-            <element signature="e#1751#2357#0" />
-            <element signature="e#2228#2446#0" />
-            <element signature="e#2408#5021#0" />
-            <element signature="e#2297#2337#0" />
-            <element signature="e#3140#3223#0" />
-            <element signature="e#3233#3544#0" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-  </component>
-</project>

+ 1 - 0
example/ios/Flutter/Debug.xcconfig

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

+ 1 - 0
example/ios/Flutter/Release.xcconfig

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

+ 80 - 1
example/ios/Runner.xcodeproj/project.pbxproj

@@ -18,6 +18,7 @@
 		97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
 		97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
 		97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+		F91D63C9AA7C465339878974 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 929D52BAC39E5D0949DD8DFB /* Pods_Runner.framework */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXCopyFilesBuildPhase section */
@@ -43,6 +44,7 @@
 		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
 		7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
 		7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+		929D52BAC39E5D0949DD8DFB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
 		9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
 		9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; };
@@ -52,6 +54,9 @@
 		97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
 		97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
 		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		A88AF7FDBAB4BBE1176FFF4F /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
+		C7B32AF3F21E4C2A7D8AA8A9 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
+		DA1FFA9B867DFC63798FC7F1 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -61,12 +66,31 @@
 			files = (
 				9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
 				3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
+				F91D63C9AA7C465339878974 /* Pods_Runner.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
+		352B3158C413903F6EE50D38 /* Pods */ = {
+			isa = PBXGroup;
+			children = (
+				C7B32AF3F21E4C2A7D8AA8A9 /* Pods-Runner.debug.xcconfig */,
+				DA1FFA9B867DFC63798FC7F1 /* Pods-Runner.release.xcconfig */,
+				A88AF7FDBAB4BBE1176FFF4F /* Pods-Runner.profile.xcconfig */,
+			);
+			path = Pods;
+			sourceTree = "<group>";
+		};
+		771ABFC950C636E35AC135EF /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				929D52BAC39E5D0949DD8DFB /* Pods_Runner.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
 		9740EEB11CF90186004384FC /* Flutter */ = {
 			isa = PBXGroup;
 			children = (
@@ -86,7 +110,8 @@
 				9740EEB11CF90186004384FC /* Flutter */,
 				97C146F01CF9000F007C117D /* Runner */,
 				97C146EF1CF9000F007C117D /* Products */,
-				CF3B75C9A7D2FA2A4C99F110 /* Frameworks */,
+				352B3158C413903F6EE50D38 /* Pods */,
+				771ABFC950C636E35AC135EF /* Frameworks */,
 			);
 			sourceTree = "<group>";
 		};
@@ -129,12 +154,14 @@
 			isa = PBXNativeTarget;
 			buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
 			buildPhases = (
+				C023E04C78FE087C6748E4CE /* [CP] Check Pods Manifest.lock */,
 				9740EEB61CF901F6004384FC /* Run Script */,
 				97C146EA1CF9000F007C117D /* Sources */,
 				97C146EB1CF9000F007C117D /* Frameworks */,
 				97C146EC1CF9000F007C117D /* Resources */,
 				9705A1C41CF9048500538489 /* Embed Frameworks */,
 				3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+				C9BC344A8AFAA2D0B8364DF3 /* [CP] Embed Pods Frameworks */,
 			);
 			buildRules = (
 			);
@@ -156,6 +183,8 @@
 				TargetAttributes = {
 					97C146ED1CF9000F007C117D = {
 						CreatedOnToolsVersion = 7.3.1;
+						DevelopmentTeam = LRXRX75D5X;
+						LastSwiftMigration = 1160;
 					};
 				};
 			};
@@ -220,6 +249,43 @@
 			shellPath = /bin/sh;
 			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
 		};
+		C023E04C78FE087C6748E4CE /* [CP] Check Pods Manifest.lock */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+			);
+			inputPaths = (
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+				"${PODS_ROOT}/Manifest.lock",
+			);
+			name = "[CP] Check Pods Manifest.lock";
+			outputFileListPaths = (
+			);
+			outputPaths = (
+				"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+			showEnvVarsInLog = 0;
+		};
+		C9BC344A8AFAA2D0B8364DF3 /* [CP] Embed Pods Frameworks */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "[CP] Embed Pods Frameworks";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
 /* End PBXShellScriptBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
@@ -311,7 +377,9 @@
 			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+				DEVELOPMENT_TEAM = LRXRX75D5X;
 				ENABLE_BITCODE = NO;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -325,6 +393,8 @@
 				);
 				PRODUCT_BUNDLE_IDENTIFIER = com.i2edu.flutterAliCameraExample;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "Runner-Bridging-Header.h";
+				SWIFT_VERSION = 5.0;
 				VERSIONING_SYSTEM = "apple-generic";
 			};
 			name = Profile;
@@ -441,7 +511,9 @@
 			baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+				DEVELOPMENT_TEAM = LRXRX75D5X;
 				ENABLE_BITCODE = NO;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -455,6 +527,9 @@
 				);
 				PRODUCT_BUNDLE_IDENTIFIER = com.i2edu.flutterAliCameraExample;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "Runner-Bridging-Header.h";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+				SWIFT_VERSION = 5.0;
 				VERSIONING_SYSTEM = "apple-generic";
 			};
 			name = Debug;
@@ -464,7 +539,9 @@
 			baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ENABLE_MODULES = YES;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+				DEVELOPMENT_TEAM = LRXRX75D5X;
 				ENABLE_BITCODE = NO;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -478,6 +555,8 @@
 				);
 				PRODUCT_BUNDLE_IDENTIFIER = com.i2edu.flutterAliCameraExample;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_OBJC_BRIDGING_HEADER = "Runner-Bridging-Header.h";
+				SWIFT_VERSION = 5.0;
 				VERSIONING_SYSTEM = "apple-generic";
 			};
 			name = Release;

+ 3 - 0
example/ios/Runner.xcworkspace/contents.xcworkspacedata

@@ -4,4 +4,7 @@
    <FileRef
       location = "group:Runner.xcodeproj">
    </FileRef>
+   <FileRef
+      location = "group:Pods/Pods.xcodeproj">
+   </FileRef>
 </Workspace>

+ 28 - 70
example/pubspec.lock

@@ -1,62 +1,48 @@
 # Generated by pub
 # See https://dart.dev/tools/pub/glossary#lockfile
 packages:
-  archive:
-    dependency: transitive
-    description:
-      name: archive
-      url: "https://pub.flutter-io.cn"
-    source: hosted
-    version: "2.0.11"
-  args:
-    dependency: transitive
-    description:
-      name: args
-      url: "https://pub.flutter-io.cn"
-    source: hosted
-    version: "1.5.2"
   async:
     dependency: transitive
     description:
       name: async
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.4.0"
+    version: "2.4.2"
   boolean_selector:
     dependency: transitive
     description:
       name: boolean_selector
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.0.5"
-  charcode:
+    version: "2.0.0"
+  characters:
     dependency: transitive
     description:
-      name: charcode
+      name: characters
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.1.2"
-  collection:
+    version: "1.0.0"
+  charcode:
     dependency: transitive
     description:
-      name: collection
+      name: charcode
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.14.11"
-  convert:
+    version: "1.1.3"
+  clock:
     dependency: transitive
     description:
-      name: convert
+      name: clock
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.1.1"
-  crypto:
+    version: "1.0.1"
+  collection:
     dependency: transitive
     description:
-      name: crypto
+      name: collection
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.1.3"
+    version: "1.14.13"
   cupertino_icons:
     dependency: "direct main"
     description:
@@ -64,6 +50,13 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.1.3"
+  fake_async:
+    dependency: transitive
+    description:
+      name: fake_async
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "1.1.0"
   flutter:
     dependency: "direct main"
     description: flutter
@@ -81,20 +74,13 @@ packages:
     description: flutter
     source: sdk
     version: "0.0.0"
-  image:
-    dependency: transitive
-    description:
-      name: image
-      url: "https://pub.flutter-io.cn"
-    source: hosted
-    version: "2.1.4"
   matcher:
     dependency: transitive
     description:
       name: matcher
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.12.6"
+    version: "0.12.8"
   meta:
     dependency: transitive
     description:
@@ -108,7 +94,7 @@ packages:
       name: path
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.6.4"
+    version: "1.7.0"
   path_provider:
     dependency: "direct main"
     description:
@@ -116,27 +102,6 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.4.1"
-  pedantic:
-    dependency: transitive
-    description:
-      name: pedantic
-      url: "https://pub.flutter-io.cn"
-    source: hosted
-    version: "1.8.0+1"
-  petitparser:
-    dependency: transitive
-    description:
-      name: petitparser
-      url: "https://pub.flutter-io.cn"
-    source: hosted
-    version: "2.4.0"
-  quiver:
-    dependency: transitive
-    description:
-      name: quiver
-      url: "https://pub.flutter-io.cn"
-    source: hosted
-    version: "2.0.5"
   sky_engine:
     dependency: transitive
     description: flutter
@@ -148,14 +113,14 @@ packages:
       name: source_span
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.5.5"
+    version: "1.7.0"
   stack_trace:
     dependency: transitive
     description:
       name: stack_trace
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.9.3"
+    version: "1.9.5"
   stream_channel:
     dependency: transitive
     description:
@@ -183,14 +148,14 @@ packages:
       name: test_api
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "0.2.11"
+    version: "0.2.17"
   typed_data:
     dependency: transitive
     description:
       name: typed_data
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "1.1.6"
+    version: "1.2.0"
   vector_math:
     dependency: transitive
     description:
@@ -198,13 +163,6 @@ packages:
       url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.8"
-  xml:
-    dependency: transitive
-    description:
-      name: xml
-      url: "https://pub.flutter-io.cn"
-    source: hosted
-    version: "3.5.0"
 sdks:
-  dart: ">=2.4.0 <3.0.0"
+  dart: ">=2.9.0-14.0.dev <3.0.0"
   flutter: ">=0.1.4 <2.0.0"

+ 0 - 19
flutter_ali_camera.iml

@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" inherit-compiler-output="true">
-    <exclude-output />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/lib" isTestSource="false" />
-      <excludeFolder url="file://$MODULE_DIR$/.dart_tool" />
-      <excludeFolder url="file://$MODULE_DIR$/.idea" />
-      <excludeFolder url="file://$MODULE_DIR$/.pub" />
-      <excludeFolder url="file://$MODULE_DIR$/build" />
-      <excludeFolder url="file://$MODULE_DIR$/example/.dart_tool" />
-      <excludeFolder url="file://$MODULE_DIR$/example/.pub" />
-      <excludeFolder url="file://$MODULE_DIR$/example/build" />
-    </content>
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" name="Dart SDK" level="project" />
-    <orderEntry type="library" name="Flutter Plugins" level="project" />
-  </component>
-</module>

+ 0 - 317
ios/Classes/CameraViewFactory.swift

@@ -1,317 +0,0 @@
-import Foundation
-import Flutter
-import UIKit
-import AliyunVideoSDKPro
-public class CameraViewFactory: NSObject, FlutterPlatformViewFactory {
-    var messenger: FlutterBinaryMessenger!
-    public func create(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any?) -> FlutterPlatformView {
-        return CameraView(withFrame: frame, viewIdentifier: viewId, arguments: args, binaryMessenger: messenger)
-    }
-    @objc public init(messenger: (NSObject & FlutterBinaryMessenger)?) {
-        super.init()
-        self.messenger = messenger
-    }
-    
-    public func createArgsCodec() -> FlutterMessageCodec & NSObjectProtocol {
-        return FlutterStandardMessageCodec.sharedInstance()
-    }
-    
-}
-public class CameraView: NSObject, FlutterPlatformView, AliyunIRecorderDelegate, AliyunIPlayerCallback, AliyunIExporterCallback, AliyunIRenderCallback {
-    public func playerDidEnd() {
-        
-    }
-    
-    public func playProgress(_ playSec: Double, streamProgress streamSec: Double) {
-        
-    }
-    
-    public func playError(_ errorCode: Int32) {
-        
-    }
-    
-    public func seekDidEnd() {
-        
-    }
-    
-    public func playerDidStart() {
-        
-    }
-    
-    
-    fileprivate var viewId: Int64!
-    fileprivate var cameraView: UIView!
-    fileprivate var channel: FlutterMethodChannel!
-    fileprivate var recordPath: String?
-    fileprivate var taskPath: String?
-    fileprivate var recorder: AliyunIRecorder!
-    fileprivate var composeResult: FlutterResult?
-    public init(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any?, binaryMessenger: FlutterBinaryMessenger) {
-        super.init()
-        
-        self.viewId = viewId
-       
-        self.cameraView = UIView()
-        self.cameraView.frame = UIScreen.main.bounds
-        self.channel = FlutterMethodChannel(name: "flutter_ali_camera_\(viewId)", binaryMessenger: binaryMessenger)
-        self.channel.setMethodCallHandler({
-            [weak self]
-            (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
-            if let this = self {
-                this.onMethodCall(call: call, result: result)
-            }
-        })
-    }
-    
-    
-    public func view() -> UIView {
-        return self.cameraView
-    }
-    func onMethodCall(call: FlutterMethodCall, result: @escaping FlutterResult) {
-        let args = call.arguments as? [String: Any]
-        let method = call.method
-       if call.method == "initializeSdk" {
-//            initSdk(result)
-            result(true)
-        } else if call.method == "cleanAudioData" {
-            let videoId = args!["videoId"] as! String
-            let pathAudio = args!["pathAudio"] as! String
-            deleteFileWithPrefix(folderPath: pathAudio, prefix: "\(videoId)_")
-            result(true)
-        } else if call.method == "getFilterParentPath" {
-            print("path \(Bundle.main.path(forResource: "icon", ofType: "png"))")
-            let url = Bundle.main.bundlePath
-            result("\(url)/filter/")
-        } else if method == "startPreview" {
-            initCameraView()
-            recorder?.clipManager?.deleteAllPart()
-            recorder?.startPreview(withPositon: AliyunIRecorderCameraPosition.front)
-            result(true)
-        } else 
-        if method == "startPreview" {
-            initCameraView()
-            recorder?.clipManager?.deleteAllPart()
-            recorder?.startPreview(withPositon: AliyunIRecorderCameraPosition.front)
-            result(true)
-        } else if method == "setRecordPath" {
-            self.recordPath = args!["path"] as? String
-            self.taskPath = args!["taskPath"] as? String
-            result(true)
-        } else if method == "onStop" {
-            onStop()
-            result(true)
-        } else if method == "onResume" {
-            recorder?.startPreview(withPositon: AliyunIRecorderCameraPosition.front)
-            result(true)
-        } else if method == "onDestory" {
-            onStop()
-            onDestory()
-            result(true)
-        } else if method == "switchCamera" {
-            recorder.switchCameraPosition()
-            result(true)
-        } else if method == "setBeautyLevel" {
-            let level =  args!["level"] as! Int
-            recorder.beautifyStatus = (level == 0)
-            recorder.beautifyValue =  Int32(level)
-            result(true)
-        } else if method == "startRecord" {
-            let maxDuration = args!["maxDuration"] as! Int
-            let videoId = args!["videoId"] as! String
-            let index = args!["index"] as! Int
-            let fileName = args!["fileName"] as! String
-            if recorder?.clipManager?.videoAbsolutePaths != nil && recorder?.clipManager?.videoAbsolutePaths.count != 0 {
-                recorder?.clipManager?.deletePart()
-            }
-            clearCacheVideo(videoId: videoId, index: index)
-            recorder?.outputPath = self.recordPath! + "\(fileName).mp4"
-            recorder?.clipManager?.maxDuration = CGFloat(Float(maxDuration) / 1000.0)
-            recorder?.startRecording()
-            result(true)
-        } else if method == "stopRecord" {
-            recorder?.stopRecording()
-            result(true)
-        } else if method == "finishRecord" {
-            recorder?.finishRecording()
-            result(true)
-        } else if method == "setFilter" {
-            let path: String? = args?["path"] as? String
-            if path == nil || path?.count == 0 {
-                // delete filter
-                recorder?.deleteFilter()
-                return
-            }
-            recorder?.apply(AliyunEffectFilter.init(file: path))
-        } else if method == "startCompose" {
-            let outputPath = args!["outputPath"] as! String
-            let bgmPath = args!["bgmPath"] as! String
-            let paths = args!["paths"] as! [String]
-            let durations = args!["durations"] as! [Int]
-            composeResult = result
-            startCompose(outputPath: outputPath, bgmPath: bgmPath, paths: paths, durations: durations)
-        } else if method == "create"{
-            result(FlutterMethodNotImplemented)
-        }
-    }
-    private func initCameraView() {
-        recorder = AliyunIRecorder.init(delegate: self, videoSize: CGSize(width: 720, height: 1280))
-        recorder?.preview = self.cameraView
-        recorder?.taskPath = self.taskPath
-        recorder?.clipManager?.maxDuration = 0
-    }
-    
-    private func onStop() {
-        recorder?.stopRecording()
-        recorder?.stopPreview()
-    }
-    
-    private func onDestory() {
-        recorder?.destroy()
-        recorder = nil
-        cameraView = nil
-    }
-    
-    var editor: AliyunEditor?
-    private func startCompose(outputPath: String, bgmPath: String, paths: [String], durations: [Int]) {
-        AliyunVideoSDKInfo.print()
-        if durations.count != paths.count {
-            return
-        }
-//        AliyunVideoSDKInfo.setLogLevel(AlivcLogLevel.debug)
-        
-        let importer = AliyunImporter.init(path: self.taskPath, outputSize: CGSize(width: 480, height: 720))
-        let param = AliyunVideoParam.init()
-        param.fps = 30
-        param.gop = 30
-        param.videoQuality = AliyunVideoQuality.medium
-        param.scaleMode = AliyunScaleMode.fill
-        // 编码模式
-        param.codecType = AliyunVideoCodecType.hardware
-        importer?.setVideoParam(param)
-        for index in 0..<paths.count {
-            print("paths: \(paths[index])")
-            // 取出有效的document地址
-            let documentRance: Range = paths[index].range(of: "/Documents/")!
-            let distance: Int = paths[index].distance(from: paths[index].startIndex, to: documentRance.upperBound)
-            let truePath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0] + paths[index].subString(from: distance - 1)
-            print("true path: \(truePath)")
-            
-            importer?.addMediaClip(AliyunClip.init(videoPath: truePath, animDuration: 0))
-        }
-        importer?.generateProjectConfigure()
-        editor = AliyunEditor.init(path: self.taskPath, preview: nil)
-        editor?.apply(AliyunEffectMusic.init(file: bgmPath))
-        editor?.delegate = self
-        editor?.startEdit()
-        
-        let exporter = editor?.getExporter()
-        exporter?.startExport(outputPath)
-    }
-    
-    private func clearCacheVideo(videoId: String, index: Int) {
-        deleteFileWithPrefix(folderPath: self.recordPath!, prefix: "\(videoId)_\(index)_")
-    }
-    
-    private func deleteFileWithPrefix(folderPath: String, prefix: String) {
-        let manager = FileManager.default
-        let files:[String] = try! manager.contentsOfDirectory(atPath: folderPath)
-        
-        for file in files{
-            do {
-                if file.hasPrefix(prefix) {
-                    try manager.removeItem(atPath: folderPath + "/\(file)")
-                }
-            } catch {
-                print("faild to delete")
-            }
-        }
-    }
-    
-    public func recorderDeviceAuthorization(_ status: AliyunIRecorderDeviceAuthor) {
-        if status == AliyunIRecorderDeviceAuthor.enabled {
-            print("sdk enabled")
-        } else {
-            print("sdk disabled")
-        }
-    }
-    
-    public func recorderVideoDuration(_ duration: CGFloat) {
-        print("recorderVideoDuration:\(duration)")
-        channel.invokeMethod("recordProgress", arguments: ["progress": Int(duration * 1000)])
-    }
-    
-    public func recoderError(_ error: Error!) {
-        print("recoderError")
-        recorder?.finishRecording()
-    }
-    
-    public func recorderDidStopWithMaxDuration() {
-        print("recorderDidStopWithMaxDuration")
-        recorder?.finishRecording()
-    }
-    
-    public func recorderDidFinishRecording() {
-        channel.invokeMethod("recordProgress", arguments: ["progress":  Int((recorder?.clipManager?.maxDuration ?? 0) * 1000), "path": recorder?.outputPath])
-    }
-    public func exporterDidCancel() {
-        
-    }
-    
-    public func exportProgress(_ progress: Float) {
-        print("exportProgress")
-    }
-    
-    public func exportError(_ errorCode: Int32) {
-        print("export error : \(errorCode)")
-        composeResult?(false)
-    }
-    
-    public func exporterDidStart() {
-        print("exporterDidStart")
-    }
-       
-    public func exporterDidEnd(_ outputPath: String!) {
-        composeResult?(true)
-    }
-}
-extension String {
-  func toInt() -> Int? {
-      return Int(self)
-  }
-  func toFloat() -> Float? {
-      return Float(self)
-  }
-  func toDouble() -> Double? {
-      return Double(self)
-  }
-  //MARK:- 去除字符串两端的空白字符
-  func trim() -> String {
-      return self.trimmingCharacters(in: CharacterSet.whitespaces)
-  }
-  func subString(to: Int) -> String {
-    var to = to
-    if to > self.count {
-        to = self.count
-    }
-    return String(self.prefix(to))
-}
-  func subString(from: Int) -> String {
-    if from >= self.count {
-        return ""
-    }
-    let startIndex = self.index(self.startIndex, offsetBy: from)
-    let endIndex = self.endIndex
-    return String(self[startIndex..<endIndex])
-}
- func subString(start: Int, end: Int) -> String {
-    if start < end {
-        let startIndex = self.index(self.startIndex, offsetBy: start)
-        let endIndex = self.index(self.startIndex, offsetBy: end)
-        
-        return String(self[startIndex..<endIndex])
-    }
-    return ""
- }
-    
-    
-}

+ 0 - 169
ios/Classes/CameraViewFactory1.swift

@@ -1,169 +0,0 @@
-//
-//  CameraViewFactory1.swift
-//  Pods
-//
-//  Created by jiajunzhou on 2020/4/5.
-//
-import Foundation
-import Flutter
-import UIKit
-import AliyunVideoSDKPro
-public class CameraViewFactory1 :NSObject,FlutterPlatformViewFactory{
-    var messenger: FlutterBinaryMessenger!
-    public func create(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any?) -> FlutterPlatformView {
-       return CameraView1(withFrame: frame, viewIdentifier: viewId, arguments: args, binaryMessenger: messenger)
-    }
-    @objc public init(messenger: (NSObject & FlutterBinaryMessenger)?) {
-        super.init()
-        self.messenger = messenger
-    }
-    
-}
-public class CameraView1: NSObject, FlutterPlatformView,AliyunIRecorderDelegate{
-    public func recorderDeviceAuthorization(_ status: AliyunIRecorderDeviceAuthor) {
-          if status == AliyunIRecorderDeviceAuthor.enabled {
-                        print("sdk enabled")
-                    } else {
-                        print("sdk disabled")
-                    }
-    }
-    public func recorderDidStopRecording(){
-        print("recorderDidStopRecording.....");
-    }
-        
-//   调用stopRecording停止录制后,SDK内部会执行保存视频相关操作,收到AliyunIRecorderDelegate的- (void)recorderDidStopRecording回调后才能继续执行其他操作。
-//    startRecording和stopRecording需要成对出现,可以调用一次或多次,对应SDK内部会生成一段或多段临时视频文件。
-   
-    
-    
-    public func view() -> UIView {
-        return self.cameraView
-    }
-    fileprivate var viewId: Int64!
-       fileprivate var cameraView: UIView!
-       fileprivate var channel: FlutterMethodChannel!
-       fileprivate var recordPath: String?
-       fileprivate var taskPath: String?
-       fileprivate var recorder: AliyunIRecorder!
-       fileprivate var composeResult: FlutterResult?
-    //初始设置参数
-                var videoWidth : Int!
-                 var videoHeight : Int!
-                 var fps : Int!
-                 var videoCodecs : Int!
-                 var crf : Int!
-                 var encoderFps : Int!
-                 var quality : Int!
-                 var videoBitrate : Int!
-                 var gop : Int!
-    var first :Bool = true;
-    public init(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any?, binaryMessenger: FlutterBinaryMessenger) {
-         super.init()
-         
-         self.viewId = viewId
-        
-         self.cameraView = UIView()
-         self.cameraView.frame = UIScreen.main.bounds
-         self.channel = FlutterMethodChannel(name: "flutter_ali_camera", binaryMessenger: binaryMessenger)
-         self.channel.setMethodCallHandler({
-             [weak self]
-             (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
-             if let this = self {
-                 this.onMethodCall(call: call, result: result)
-             }
-         })
-     }
-    func onMethodCall(call: FlutterMethodCall, result: @escaping FlutterResult) {
-        if(call.method=="initializeSdk"){
-            result(true);
-        }
-        else if(call.method=="create"){
-            let args = call.arguments as? [String: Any]
-            var dics = args!["recordOption"] as?  Dictionary<String, Int>
-             self.videoHeight = dics!["videoHeight"]
-             self.videoWidth = dics!["videoWidth"]
-             self.fps = dics!["fps"]
-             self.videoCodecs = dics!["videoCodecs"]
-             self.crf = dics!["crf"]
-             self.encoderFps = dics!["encoderFps"]
-             self.quality = dics!["quality"]
-             self.videoBitrate = dics!["videoBitrate"]
-             self.gop = dics!["gop"]
-            
-//                 recorder = AliyunIRecorder.init(delegate: self, videoSize: CGSize(width: 720 , height: 1080))
-//                       recorder?.preview = self.cameraView
-//                       recorder?.taskPath = self.taskPath
-//                       recorder?.clipManager?.maxDuration = 0
-                 
-               result(true);
-        }else if(call.method=="startPreview"){
-            if(first){
-                first=false;
-                recorder = AliyunIRecorder.init(delegate: self, videoSize: CGSize(width: videoWidth , height: videoHeight))
-                    recorder?.preview = self.cameraView
-                    recorder?.taskPath = self.taskPath
-                    recorder?.clipManager?.maxDuration = 0
-                    recorder?.clipManager?.deleteAllPart()
-                    recorder.beautifyStatus = true
-            }
-        
-                recorder?.startPreview(withPositon: AliyunIRecorderCameraPosition.front)
-         
-        }
-        else if(call.method=="stopPreview"){
-            onStop();
-              result(true);
-        }
-        else if(call.method=="setBeauty"){
-            
-            let args = call.arguments as?  Dictionary<String, Int>
-            let  level =  args!["level"] as! Int
-            recorder.beautifyValue =  Int32(level)
-        }
-        else if(call.method=="switchCamera"){
-            recorder.switchCameraPosition();
-            result(true);
-        }
-        else if(call.method=="setFilter"){
-            //未验证
-            let args = call.arguments as?  Dictionary<String, String>
-            let path = args?["path"]
-            if path == nil || path?.count == 0 {
-              // delete filter
-            recorder?.deleteFilter()
-               return
-            }
-         recorder?.apply(AliyunEffectFilter.init(file: path))
-        }
-        else if(call.method=="startRecord"){
-            let args = call.arguments as?  Dictionary<String, Int>
-            let maxDuration = args!["max"] as! Int
-            var fileName = args!["recordPath"] as! String
-            print("fileNamefileNamefileName=="+fileName)
-            recorder?.outputPath = fileName
-         
-            recorder?.clipManager?.maxDuration = CGFloat(Float(maxDuration) / 1000.0)
-            recorder?.startRecording()
-        }
-        else if(call.method=="startCompose"){
-            
-        }
-        else if(call.method=="recordUpdate"){
-            
-        }
-        else if(call.method=="onDestroy"){
-            
-        }
-        else {
-            result(FlutterMethodNotImplemented)
-        }
-    }
-    
-    
-
-    private func onStop() {
-        recorder?.stopRecording()
-        recorder?.stopPreview()
-    }
-    
-}

+ 6 - 16
ios/Classes/FlutterAliCameraPlugin.m

@@ -1,22 +1,12 @@
 #import "FlutterAliCameraPlugin.h"
-#import <flutter_ali_camera/flutter_ali_camera-Swift.h>
-#if __has_include(<flutter_ali_camera/flutter_ali_camera-Swift.h>)
-#import <flutter_ali_camera/flutter_ali_camera-Swift.h>
-#else
-// Support project import fallback if the generated compatibility header
-// is not copied when this plugin is created as a library.
-// https://forums.swift.org/t/swift-static-libraries-dont-copy-generated-objective-c-header/19816
-#import "flutter_ali_camera-Swift.h"
-#endif
+
 @implementation FlutterAliCameraPlugin
 + (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
-//  FlutterMethodChannel* channel = [FlutterMethodChannel
-//      methodChannelWithName:@"flutter_ali_camera"
-//            binaryMessenger:[registrar messenger]];
-//  FlutterAliCameraPlugin* instance = [[FlutterAliCameraPlugin alloc] init];
-// [registrar addMethodCallDelegate:instance channel:channel];
-//    [registrar registerViewFactory:[[CameraViewFactory1 alloc]initWithMessenger:[registrar messenger]]  withId:@"com.i2edu.cameraLib"];
-     [SwiftFlutterAliCameraPlugin registerWithRegistrar:registrar];
+  FlutterMethodChannel* channel = [FlutterMethodChannel
+      methodChannelWithName:@"flutter_ali_camera"
+            binaryMessenger:[registrar messenger]];
+  FlutterAliCameraPlugin* instance = [[FlutterAliCameraPlugin alloc] init];
+  [registrar addMethodCallDelegate:instance channel:channel];
 }
 
 - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {

+ 4 - 20
ios/Classes/SwiftFlutterAliCameraPlugin.swift

@@ -1,30 +1,14 @@
 import Flutter
 import UIKit
-import AliyunVideoSDKPro
-
-
 
 public class SwiftFlutterAliCameraPlugin: NSObject, FlutterPlugin {
-    public func recorderDeviceAuthorization(_ status: AliyunIRecorderDeviceAuthor) {
-       
-    }
-    
-    var messenger: FlutterBinaryMessenger!
-
-  
   public static func register(with registrar: FlutterPluginRegistrar) {
-//    let channel = FlutterMethodChannel(name: "flutter_ali_camera", binaryMessenger: registrar.messenger())
-//    let instance = SwiftFlutterAliCameraPlugin()
-//    registrar.addMethodCallDelegate(instance, channel: channel)
-    registrar.register(CameraViewFactory1(messenger: registrar.messenger() as! NSObject & FlutterBinaryMessenger), withId: "com.i2edu.cameraLib")
+    let channel = FlutterMethodChannel(name: "flutter_ali_camera", binaryMessenger: registrar.messenger())
+    let instance = SwiftFlutterAliCameraPlugin()
+    registrar.addMethodCallDelegate(instance, channel: channel)
   }
 
-     
-    
   public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
- 
+    result("iOS " + UIDevice.current.systemVersion)
   }
-    
-
-    
 }

+ 1 - 1
ios/flutter_ali_camera.podspec

@@ -20,7 +20,7 @@ A new Flutter plugin.
   s.swift_version = '5.0'
   s.frameworks = 'ImageIO', 'CoreMedia', 'CoreVideo', 'VideoToolBox', 'MediaPlayer', 'OpenAL', 'CoreLocation', 'QuartzCore', 'CoreGraphics'
   s.libraries = 'z', 'c++', 'c', 'sqlite3', 'iconv', 'resolv'
-  s.dependency 'AliyunVideoSDKStd', ' ~> 3.15.0'
+  s.dependency 'AliyunVideoSDKStd', ' ~> 3.16.0'
   s.dependency 'QuCore-ThirdParty', ' ~> 3.15.0'
   s.dependency 'AlivcConan', '~> 1.0.3'
   s.dependency 'VODUpload'