diff --git a/.gradle/buildOutputCleanup/built.bin b/.github/issue_template.md
similarity index 100%
rename from .gradle/buildOutputCleanup/built.bin
rename to .github/issue_template.md
diff --git a/lib/widgets/elements/Form/Slider/SliderComponentShape/index.dart b/.github/pull_request_template.md
similarity index 100%
rename from lib/widgets/elements/Form/Slider/SliderComponentShape/index.dart
rename to .github/pull_request_template.md
diff --git a/.gradle/3.5.1/file-changes/last-build.bin b/.gradle/3.5.1/file-changes/last-build.bin
deleted file mode 100644
index f76dd238..00000000
Binary files a/.gradle/3.5.1/file-changes/last-build.bin and /dev/null differ
diff --git a/.gradle/3.5.1/taskHistory/taskHistory.lock b/.gradle/3.5.1/taskHistory/taskHistory.lock
deleted file mode 100644
index 1a1ada52..00000000
Binary files a/.gradle/3.5.1/taskHistory/taskHistory.lock and /dev/null differ
diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties
deleted file mode 100644
index 061d565e..00000000
--- a/.gradle/buildOutputCleanup/cache.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-#Thu Nov 22 22:29:42 CST 2018
-gradle.version=3.5.1
diff --git a/.gradle/buildOutputCleanup/cache.properties.lock b/.gradle/buildOutputCleanup/cache.properties.lock
deleted file mode 100644
index 40fdece9..00000000
--- a/.gradle/buildOutputCleanup/cache.properties.lock
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index 266fb814..0d5ee6f4 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,21 +1,28 @@
-Copyright (c) 2018-present Alibaba Inc.
+BSD License
-Permission is granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+Copyright (c) 2018-present, Alibaba Group Holding Limited. All rights reserved.
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
-THE SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS",
-WITHOUT WARRANTY OF ANY KIND,EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE
\ No newline at end of file
+ * Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ * Neither the name of the copyright holder nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific
+ prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README-en.md b/README-en.md
index 8d12ec7a..98a2683e 100644
--- a/README-en.md
+++ b/README-en.md
@@ -9,7 +9,11 @@
Android download URL:
+<<<<<<< HEAD
+=======
+
+>>>>>>> develop
Iphone download URL:
No
diff --git a/README.md b/README.md
index 48d3a671..076e714b 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,26 @@ Language: [English](https://github.com/alibaba/flutter-go/blob/master/README-en.
## Flutter Go

+<<<<<<< HEAD
+=======
+
+> 帮助开发者快速上手 Flutter **Flutter Go 1.0 Android版已正式发布**
+
+## 版本更新历史
+> 按时间顺序,展示重要的提交更新内容。
+
+[地址](https://github.com/alibaba/flutter-go/blob/develop/CHANGE-LOG.md)
+
+## 开发规范
+> 由于类似 javascript, java, object-c,等开发者的语言习惯不同而产生歧义,我们依据官方提供的 [dart 语言规范](https://www.dartlang.org) 定制。
+
+[<< Flutter Go 开发规范第一版 >>](https://github.com/alibaba/flutter-go/blob/develop/Flutter_Go%20%E4%BB%A3%E7%A0%81%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83.md)
+
+## The Flutter-Go Roadmap(路线图) for 2019
+> 考虑到 Flutter 未来的变化和策略的可变性, roadmap 不排除有一定调整,但总体不会变化太大。
+
+
+>>>>>>> develop
> 帮助开发者快速上手 Flutter **Flutter Go 1.0 Android版已正式发布**
@@ -19,7 +39,11 @@ Language: [English](https://github.com/alibaba/flutter-go/blob/master/README-en.
android下载地址:
+<<<<<<< HEAD
+=======
+
+>>>>>>> develop
iphone下载地址:
暂无
@@ -52,7 +76,11 @@ flutter优点主要包括:
#### Flutter Go 的优势
+<<<<<<< HEAD
- 详解常用widget多达 **140+** 个
+=======
+- 详解常用 widget 多达 **140+** 个
+>>>>>>> develop
- 配套 Demo 详解 widget 常规用法
- 集中整合 widget 案例,一个 APP 搞定所有常用 widget 的用法
- 持续迭代 ‘追新’ 官方版本
@@ -96,7 +124,23 @@ flutter优点主要包括:
+### 版权说明
+- 感谢大家对 `flutter go` 的支持和下载,但近期发现,有类似直接被发布到苹果 app store 上的行为,并未注明真实来源,copyright 和 项目的 github 地址,以及开发者的版权相关信息( 包括删除"首页栏的版权声明"和"关于我们"的行为 );
+
+- 上述行为,打击了 `flutter go` 开发者的积极性,同时干扰了 flutter go app 的正常发布渠道,基于 app 开源项目的发布特殊性,特更新 [LICENSE](LICENSE) 「 开源许可证 」,由 MIT 协议 更改为 BSD 协议, 同时建议不要随意发布到公共渠道的应用商店,影响官方 `flutter go` 的app版本迭代;
+
+- 大家可以继续放心的开源使用,但是要求注意和遵守以下许可前提:
+```
+ * 版权声明样式
+ //Copyright (c) 2018-present, Alibaba Group Holding Limited. All rights reserved.
+
+ * 源代码的重新分发必须保留上述版权声明,条件清单和免责声明。
+
+ * 二进制形式的再分发必须复制上述版权声明,此条件列表以及文档中的以下免责声明和/或随分发提供的其他材料。
+```
+- 由于本开源项目是供大家学习和交流 flutter 之用,里面耗费了开发人员大量的心血,精力和热情,请尊重开发者的劳动成果,以及相关许可证之规定;
+
+- 大家的互相信任,尊重与支持,才是开源社区前进的动力和来源.
+
Powered by [阿里拍卖前端团队](https://github.com/alibaba-paimai-frontend)
-
-
diff --git a/android/.gitignore b/android/.gitignore
deleted file mode 100644
index 65b7315a..00000000
--- a/android/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-*.iml
-*.class
-.gradle
-/local.properties
-/.idea/workspace.xml
-/.idea/libraries
-.DS_Store
-/build
-/captures
-GeneratedPluginRegistrant.java
diff --git a/android/.project b/android/.project
deleted file mode 100644
index 3964dd3f..00000000
--- a/android/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- android
- Project android created by Buildship.
-
-
-
-
- org.eclipse.buildship.core.gradleprojectbuilder
-
-
-
-
-
- org.eclipse.buildship.core.gradleprojectnature
-
-
diff --git a/android/.settings/org.eclipse.buildship.core.prefs b/android/.settings/org.eclipse.buildship.core.prefs
deleted file mode 100644
index e8895216..00000000
--- a/android/.settings/org.eclipse.buildship.core.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-connection.project.dir=
-eclipse.preferences.version=1
diff --git a/android/app/.classpath b/android/app/.classpath
deleted file mode 100644
index eb19361b..00000000
--- a/android/app/.classpath
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/android/app/.project b/android/app/.project
deleted file mode 100644
index ac485d7c..00000000
--- a/android/app/.project
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
- app
- Project app created by Buildship.
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
- org.eclipse.buildship.core.gradleprojectbuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
- org.eclipse.buildship.core.gradleprojectnature
-
-
diff --git a/android/app/.settings/org.eclipse.buildship.core.prefs b/android/app/.settings/org.eclipse.buildship.core.prefs
deleted file mode 100644
index b1886adb..00000000
--- a/android/app/.settings/org.eclipse.buildship.core.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-connection.project.dir=..
-eclipse.preferences.version=1
diff --git a/android/app/bin/build.gradle b/android/app/bin/build.gradle
deleted file mode 100644
index 4b2420a5..00000000
--- a/android/app/bin/build.gradle
+++ /dev/null
@@ -1,61 +0,0 @@
-def localProperties = new Properties()
-def localPropertiesFile = rootProject.file('local.properties')
-if (localPropertiesFile.exists()) {
- localPropertiesFile.withReader('UTF-8') { reader ->
- localProperties.load(reader)
- }
-}
-
-def flutterRoot = localProperties.getProperty('flutter.sdk')
-if (flutterRoot == null) {
- throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
-}
-
-def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
-if (flutterVersionCode == null) {
- flutterVersionCode = '1'
-}
-
-def flutterVersionName = localProperties.getProperty('flutter.versionName')
-if (flutterVersionName == null) {
- flutterVersionName = '1.0'
-}
-
-apply plugin: 'com.android.application'
-apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
-
-android {
- compileSdkVersion 27
-
- lintOptions {
- disable 'InvalidPackage'
- }
-
- defaultConfig {
- // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
- applicationId "com.example.flutterrookiebook"
- minSdkVersion 16
- targetSdkVersion 27
- versionCode flutterVersionCode.toInteger()
- versionName flutterVersionName
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
- }
-
- buildTypes {
- release {
- // TODO: Add your own signing config for the release build.
- // Signing with the debug keys for now, so `flutter run --release` works.
- signingConfig signingConfigs.debug
- }
- }
-}
-
-flutter {
- source '../..'
-}
-
-dependencies {
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'com.android.support.test:runner:1.0.2'
- androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
-}
diff --git a/android/app/bin/src/main/AndroidManifest.xml b/android/app/bin/src/main/AndroidManifest.xml
deleted file mode 100644
index d7921ff6..00000000
--- a/android/app/bin/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/bin/src/main/res/drawable/launch_background.xml b/android/app/bin/src/main/res/drawable/launch_background.xml
deleted file mode 100644
index 304732f8..00000000
--- a/android/app/bin/src/main/res/drawable/launch_background.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/android/app/bin/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/bin/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index db77bb4b..00000000
Binary files a/android/app/bin/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/bin/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/bin/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 17987b79..00000000
Binary files a/android/app/bin/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/bin/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/bin/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 09d43914..00000000
Binary files a/android/app/bin/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/bin/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/bin/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index d5f1c8d3..00000000
Binary files a/android/app/bin/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/bin/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/bin/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 4d6372ee..00000000
Binary files a/android/app/bin/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/android/app/bin/src/main/res/values/styles.xml b/android/app/bin/src/main/res/values/styles.xml
deleted file mode 100644
index 00fa4417..00000000
--- a/android/app/bin/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 3eef3030..b723070c 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -25,8 +25,19 @@ apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+def keystoreProperties = new Properties()
+def keystorePropertiesFile = rootProject.file('key.properties')
+if (keystorePropertiesFile.exists()) {
+ keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
+}
+
+
android {
- compileSdkVersion 27
+ compileSdkVersion 28
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
@@ -38,21 +49,32 @@ android {
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+<<<<<<< HEAD
applicationId "com.ali.fluttergo"
+=======
+ applicationId "com.alibaba.fluttergo"
+>>>>>>> develop
minSdkVersion 16
- targetSdkVersion 27
+ targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
- buildTypes {
+ signingConfigs {
release {
- // TODO: Add your own signing config for the release build.
- // Signing with the debug keys for now, so `flutter run --release` works.
- signingConfig signingConfigs.debug
+ keyAlias keystoreProperties['keyAlias']
+ keyPassword keystoreProperties['keyPassword']
+ storeFile file(keystoreProperties['storeFile'])
+ storePassword keystoreProperties['storePassword']
}
}
+ buildTypes {
+ release {
+ signingConfig signingConfigs.release
+ }
+ }
+
}
flutter {
@@ -62,6 +84,20 @@ flutter {
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation 'junit:junit:4.12'
- androidTestImplementation 'com.android.support.test:runner:1.0.2'
- androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+ androidTestImplementation 'androidx.test:runner:1.1.1'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
+ //firebase
+ implementation 'com.google.firebase:firebase-core:16.0.8'
+ //Crashlytics SDK
+ implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9'
+ // 性能监控
+ ///implementation 'com.google.firebase:firebase-perf:16.2.3'
+ // 登陆
+ ////implementation 'com.google.firebase:firebase-auth:16.0.3'
}
+//firebase
+apply plugin: 'com.google.gms.google-services'
+//Crashlytics SDK
+apply plugin: 'io.fabric'
+// 性能监控
+///apply plugin: 'com.google.firebase.firebase-perf'
\ No newline at end of file
diff --git a/android/app/google-services.json b/android/app/google-services.json
new file mode 100644
index 00000000..06bce26c
--- /dev/null
+++ b/android/app/google-services.json
@@ -0,0 +1,40 @@
+{
+ "project_info": {
+ "project_number": "611157827052",
+ "firebase_url": "https://alibaba-flutter-go.firebaseio.com",
+ "project_id": "alibaba-flutter-go",
+ "storage_bucket": "alibaba-flutter-go.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:611157827052:android:c6129e5eff2f125d",
+ "android_client_info": {
+ "package_name": "com.alibaba.fluttergo"
+ }
+ },
+ "oauth_client": [
+ {
+ "client_id": "611157827052-iiuevj8qu56alpqh47v37j9sd4e40di7.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ],
+ "api_key": [
+ {
+ "current_key": "AIzaSyA9chxDIuds7gmPQTJPpDpoXyN9rDTdvhU"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": [
+ {
+ "client_id": "611157827052-iiuevj8qu56alpqh47v37j9sd4e40di7.apps.googleusercontent.com",
+ "client_type": 3
+ }
+ ]
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
diff --git a/android/app/release/output.json b/android/app/release/output.json
new file mode 100644
index 00000000..16e1b0c5
--- /dev/null
+++ b/android/app/release/output.json
@@ -0,0 +1 @@
+[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"0.0.5","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
\ No newline at end of file
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
index 6c60789b..3d7121ec 100644
--- a/android/app/src/debug/AndroidManifest.xml
+++ b/android/app/src/debug/AndroidManifest.xml
@@ -1,5 +1,9 @@
+=======
+ package="com.alibaba.fluttergo">
+>>>>>>> develop
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 97b1e4ee..5d2aa0fb 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,5 +1,9 @@
+=======
+ package="com.alibaba.fluttergo">
+>>>>>>> develop
-
+=======
+ android:src="@drawable/splash" />
+>>>>>>> develop
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/spalsh.png b/android/app/src/main/res/mipmap-xxxhdpi/spalsh.png
new file mode 100644
index 00000000..dc63fc0e
Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/spalsh.png differ
diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml
index 6c60789b..3d7121ec 100644
--- a/android/app/src/profile/AndroidManifest.xml
+++ b/android/app/src/profile/AndroidManifest.xml
@@ -1,5 +1,9 @@
+=======
+ package="com.alibaba.fluttergo">
+>>>>>>> develop
diff --git a/android/build.gradle b/android/build.gradle
index 01352d98..b60a516d 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,12 +1,30 @@
buildscript {
+<<<<<<< HEAD
ext.kotlin_version = '1.2.71'
+=======
+ ext.kotlin_version = '1.3.0'
+>>>>>>> develop
repositories {
google()
jcenter()
+ //Crashlytics SDK
+ maven {
+ url 'https://maven.fabric.io/public'
+ }
}
dependencies {
+<<<<<<< HEAD
classpath 'com.android.tools.build:gradle:3.2.0'
+=======
+ classpath 'com.android.tools.build:gradle:3.3.0'
+ //firebase
+ classpath 'com.google.gms:google-services:4.2.0'
+ //Crashlytics SDK
+ classpath 'io.fabric.tools:gradle:1.26.1'
+ // 性能监控
+ ///classpath 'com.google.firebase:firebase-plugins:1.1.5'
+>>>>>>> develop
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
@@ -15,6 +33,10 @@ allprojects {
repositories {
google()
jcenter()
+ //Crashlytics SDK
+ maven {
+ url 'https://maven.google.com/'
+ }
}
}
diff --git a/android/gradle.properties b/android/gradle.properties
index 8bd86f68..678cd624 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1 +1,3 @@
org.gradle.jvmargs=-Xmx1536M
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 03824124..c2bcac0e 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
diff --git a/android/key.properties b/android/key.properties
new file mode 100644
index 00000000..0be86790
--- /dev/null
+++ b/android/key.properties
@@ -0,0 +1,4 @@
+storePassword=fluttergo123
+keyPassword=fluttergo123
+keyAlias=key
+storeFile=/Users/xj.deng/key.jks
\ No newline at end of file
diff --git a/assets/images/ali_connors.png b/assets/images/ali_connors.png
new file mode 100644
index 00000000..b7e34322
Binary files /dev/null and b/assets/images/ali_connors.png differ
diff --git a/flutter_01.png b/flutter_01.png
new file mode 100644
index 00000000..16a118fc
Binary files /dev/null and b/flutter_01.png differ
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 8c3f0e89..5f24a571 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -29,6 +29,7 @@
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 94722E5C22511D3600F63900 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 94722E5B22511D3600F63900 /* GoogleService-Info.plist */; };
9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
@@ -78,6 +79,7 @@
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
+ 94722E5B22511D3600F63900 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; };
@@ -87,6 +89,8 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ A9941E6EA19A9CEF6B117A70 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
+ CBA6E34746642008D95A119D /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
DDA792F029EDD7A11295D192 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
@@ -129,6 +133,8 @@
0C172CA58CDB230D5DA80034 /* Pods */ = {
isa = PBXGroup;
children = (
+ CBA6E34746642008D95A119D /* Pods-Runner.debug.xcconfig */,
+ A9941E6EA19A9CEF6B117A70 /* Pods-Runner.release.xcconfig */,
);
name = Pods;
sourceTree = "";
@@ -178,6 +184,7 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
+ 94722E5B22511D3600F63900 /* GoogleService-Info.plist */,
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
97C146FA1CF9000F007C117D /* Main.storyboard */,
@@ -236,7 +243,8 @@
TargetAttributes = {
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
- DevelopmentTeam = RDJKXT446D;
+ DevelopmentTeam = 4WLT68XRNA;
+ ProvisioningStyle = Manual;
};
};
};
@@ -245,6 +253,7 @@
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
+ English,
en,
Base,
);
@@ -282,6 +291,10 @@
0828E49B220692B500A59437 /* iPad Landscape@2x.png in Resources */,
0828E495220692B500A59437 /* iPhone Portrait-Retina 4.png in Resources */,
0828E498220692B500A59437 /* iPhone XS Max Portrait.png in Resources */,
+<<<<<<< HEAD
+=======
+ 94722E5C22511D3600F63900 /* GoogleService-Info.plist in Resources */,
+>>>>>>> develop
0828E496220692B500A59437 /* iPad Portrait.png in Resources */,
0828E49C220692B500A59437 /* iPhone Landscape-Retina HD 5.5.png in Resources */,
);
@@ -309,15 +322,11 @@
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",
);
@@ -345,15 +354,11 @@
buildActionMask = 2147483647;
files = (
);
- inputFileListPaths = (
- );
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
"${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework",
);
name = "[CP] Embed Pods Frameworks";
- outputFileListPaths = (
- );
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
);
@@ -509,8 +514,12 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = Launch2;
+<<<<<<< HEAD
+=======
+ CODE_SIGN_STYLE = Manual;
+>>>>>>> develop
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = RDJKXT446D;
+ DEVELOPMENT_TEAM = 4WLT68XRNA;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@@ -522,8 +531,13 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
+<<<<<<< HEAD
PRODUCT_BUNDLE_IDENTIFIER = com.ali.flutterRookieBook;
+=======
+ PRODUCT_BUNDLE_IDENTIFIER = com.alibaba.fluttergo;
+>>>>>>> develop
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "FlutterGO-alibaba-develop";
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
@@ -534,8 +548,13 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = Launch2;
+<<<<<<< HEAD
+=======
+ CODE_SIGN_IDENTITY = "iPhone Distribution";
+ CODE_SIGN_STYLE = Manual;
+>>>>>>> develop
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = RDJKXT446D;
+ DEVELOPMENT_TEAM = 4WLT68XRNA;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@@ -547,8 +566,13 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
+<<<<<<< HEAD
PRODUCT_BUNDLE_IDENTIFIER = com.ali.flutterRookieBook;
+=======
+ PRODUCT_BUNDLE_IDENTIFIER = com.alibaba.fluttergo;
+>>>>>>> develop
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = FlutterGO_alibaba_distribution_ad_hoc;
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index ba1a9822..04305270 100644
--- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -42,7 +42,7 @@
-
-
-
- IDEDidComputeMac32BitWarning
-
-
-
diff --git a/ios/Runner/AppDelegate.m b/ios/Runner/AppDelegate.m
index 7feb3d13..7474c39b 100644
--- a/ios/Runner/AppDelegate.m
+++ b/ios/Runner/AppDelegate.m
@@ -1,10 +1,15 @@
#include "AppDelegate.h"
#include "GeneratedPluginRegistrant.h"
+@import Firebase;//增加 firebase 支持
+
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+
+ [FIRApp configure];//增加 firebase 支持
+
[GeneratedPluginRegistrant registerWithRegistry:self];
// Override point for customization after application launch.
[NSThread sleepForTimeInterval:2];
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024*1024@as.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024*1024@as.png
new file mode 100644
index 00000000..08914f3d
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024*1024@as.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/120*120@2x-1.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/120*120@2x-1.png
new file mode 100644
index 00000000..055f3bcd
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/120*120@2x-1.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/120*120@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/120*120@2x.png
new file mode 100644
index 00000000..055f3bcd
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/120*120@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/152*152.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/152*152.png
new file mode 100644
index 00000000..943f238d
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/152*152.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/167*167.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/167*167.png
new file mode 100644
index 00000000..32cd3ce8
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/167*167.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/180*180@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/180*180@3x.png
new file mode 100644
index 00000000..d9e78f38
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/180*180@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/20*20.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/20*20.png
new file mode 100644
index 00000000..647ecd69
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/20*20.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/29*29@1x-2.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/29*29@1x-2.png
new file mode 100644
index 00000000..6e15bb66
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/29*29@1x-2.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/29*29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/29*29@1x.png
new file mode 100644
index 00000000..6e15bb66
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/29*29@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/40*40@1x-1.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40*40@1x-1.png
new file mode 100644
index 00000000..d2feff96
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40*40@1x-1.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/40*40@1x-2.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40*40@1x-2.png
new file mode 100644
index 00000000..d2feff96
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40*40@1x-2.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/40*40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40*40@1x.png
new file mode 100644
index 00000000..d2feff96
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40*40@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/58*58@2x-1.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/58*58@2x-1.png
new file mode 100644
index 00000000..dc39ef7d
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/58*58@2x-1.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/58*58@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/58*58@2x.png
new file mode 100644
index 00000000..dc39ef7d
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/58*58@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/60*60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/60*60@3x.png
new file mode 100644
index 00000000..962f2ef7
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/60*60@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/76*76.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/76*76.png
new file mode 100644
index 00000000..e2dbdfbb
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/76*76.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/80*80@2x-1.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/80*80@2x-1.png
new file mode 100644
index 00000000..97274408
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/80*80@2x-1.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/80*80@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/80*80@2x.png
new file mode 100644
index 00000000..97274408
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/80*80@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/87*87.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/87*87.png
new file mode 100644
index 00000000..5cce3c2f
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/87*87.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
index d36b1fab..7fbfe11e 100644
--- a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -3,115 +3,115 @@
{
"size" : "20x20",
"idiom" : "iphone",
- "filename" : "Icon-App-20x20@2x.png",
+ "filename" : "40*40@1x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
- "filename" : "Icon-App-20x20@3x.png",
+ "filename" : "60*60@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
- "filename" : "Icon-App-29x29@1x.png",
+ "filename" : "29*29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
- "filename" : "Icon-App-29x29@2x.png",
+ "filename" : "58*58@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
- "filename" : "Icon-App-29x29@3x.png",
+ "filename" : "87*87.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
- "filename" : "Icon-App-40x40@2x.png",
+ "filename" : "80*80@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
- "filename" : "Icon-App-40x40@3x.png",
+ "filename" : "120*120@2x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
- "filename" : "Icon-App-60x60@2x.png",
+ "filename" : "120*120@2x-1.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
- "filename" : "Icon-App-60x60@3x.png",
+ "filename" : "180*180@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
- "filename" : "Icon-App-20x20@1x.png",
+ "filename" : "20*20.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
- "filename" : "Icon-App-20x20@2x.png",
+ "filename" : "40*40@1x-2.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
- "filename" : "Icon-App-29x29@1x.png",
+ "filename" : "29*29@1x-2.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
- "filename" : "Icon-App-29x29@2x.png",
+ "filename" : "58*58@2x-1.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
- "filename" : "Icon-App-40x40@1x.png",
+ "filename" : "40*40@1x-1.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
- "filename" : "Icon-App-40x40@2x.png",
+ "filename" : "80*80@2x-1.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
- "filename" : "Icon-App-76x76@1x.png",
+ "filename" : "76*76.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
- "filename" : "Icon-App-76x76@2x.png",
+ "filename" : "152*152.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
- "filename" : "Icon-App-83.5x83.5@2x.png",
+ "filename" : "167*167.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
- "filename" : "Icon-App-1024x1024@1x.png",
+ "filename" : "1024*1024@as.png",
"scale" : "1x"
}
],
@@ -119,4 +119,4 @@
"version" : 1,
"author" : "xcode"
}
-}
+}
\ No newline at end of file
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
deleted file mode 100644
index 3d43d11e..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
deleted file mode 100644
index 28c6bf03..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
deleted file mode 100644
index 2ccbfd96..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
deleted file mode 100644
index f091b6b0..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
deleted file mode 100644
index 4cde1211..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
deleted file mode 100644
index d0ef06e7..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
deleted file mode 100644
index dcdc2306..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
deleted file mode 100644
index 2ccbfd96..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
deleted file mode 100644
index c8f9ed8f..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
deleted file mode 100644
index a6d6b860..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
deleted file mode 100644
index a6d6b860..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
deleted file mode 100644
index 75b2d164..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
deleted file mode 100644
index c4df70d3..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
deleted file mode 100644
index 6a84f41e..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
deleted file mode 100644
index d0e1f585..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ
diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist
new file mode 100644
index 00000000..4f83dfab
--- /dev/null
+++ b/ios/Runner/GoogleService-Info.plist
@@ -0,0 +1,36 @@
+
+
+
+
+ CLIENT_ID
+ 611157827052-0n777p43lrtr2dpo7gco5o3lffu7a7r4.apps.googleusercontent.com
+ REVERSED_CLIENT_ID
+ com.googleusercontent.apps.611157827052-0n777p43lrtr2dpo7gco5o3lffu7a7r4
+ API_KEY
+ AIzaSyDztt5Q9D7plAc8VqNtHumAci6BaoOiTg4
+ GCM_SENDER_ID
+ 611157827052
+ PLIST_VERSION
+ 1
+ BUNDLE_ID
+ com.alibaba.fluttergo
+ PROJECT_ID
+ alibaba-flutter-go
+ STORAGE_BUCKET
+ alibaba-flutter-go.appspot.com
+ IS_ADS_ENABLED
+
+ IS_ANALYTICS_ENABLED
+
+ IS_APPINVITE_ENABLED
+
+ IS_GCM_ENABLED
+
+ IS_SIGNIN_ENABLED
+
+ GOOGLE_APP_ID
+ 1:611157827052:ios:c6129e5eff2f125d
+ DATABASE_URL
+ https://alibaba-flutter-go.firebaseio.com
+
+
\ No newline at end of file
diff --git a/ios/Runner/Images.xcassets/LaunchImage-2.launchimage/Contents.json b/ios/Runner/Images.xcassets/LaunchImage-2.launchimage/Contents.json
index 5a296668..8c30dd6e 100644
--- a/ios/Runner/Images.xcassets/LaunchImage-2.launchimage/Contents.json
+++ b/ios/Runner/Images.xcassets/LaunchImage-2.launchimage/Contents.json
@@ -3,6 +3,7 @@
{
"orientation" : "portrait",
"idiom" : "ipad",
+<<<<<<< HEAD
"minimum-system-version" : "7.0",
"extent" : "full-screen",
"scale" : "2x"
@@ -12,11 +13,16 @@
"idiom" : "ipad",
"minimum-system-version" : "7.0",
"extent" : "full-screen",
+=======
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+>>>>>>> develop
"scale" : "1x"
},
{
"orientation" : "landscape",
"idiom" : "ipad",
+<<<<<<< HEAD
"minimum-system-version" : "7.0",
"extent" : "full-screen",
"scale" : "2x"
@@ -40,6 +46,25 @@
"minimum-system-version" : "7.0",
"extent" : "full-screen",
"scale" : "1x"
+=======
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "1x"
+ },
+ {
+ "orientation" : "portrait",
+ "idiom" : "ipad",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+ },
+ {
+ "orientation" : "landscape",
+ "idiom" : "ipad",
+ "extent" : "full-screen",
+ "minimum-system-version" : "7.0",
+ "scale" : "2x"
+>>>>>>> develop
}
],
"info" : {
diff --git a/lib/blocs/bak/search_api.dart b/lib/blocs/bak/search_api.dart
new file mode 100644
index 00000000..0548d34e
--- /dev/null
+++ b/lib/blocs/bak/search_api.dart
@@ -0,0 +1,35 @@
+/**
+ * Created with Android Studio.
+ * User: 一晟
+ * Date: 2019/4/28
+ * Time: 3:20 PM
+ * email: zhu.yan@alibaba-inc.com
+ * tartget: FlatButton 的示例
+ */
+import 'dart:async';
+import 'package:dio/dio.dart';
+import 'dart:convert';
+import './search_result.dart';
+import 'package:html/parser.dart' show parse;
+
+var dio = new Dio();
+class Api {
+ Future> search(name) async {
+ print('=========>>>');
+ var response = await dio.get("https://www.so.com/s?ie=utf-8&q=$name");
+// var document = parse(response.data);
+// var app = document.querySelectorAll('.res-title a');
+ List res = [];
+// app.forEach((f) {
+// res.add(
+// SearchResult(
+// title: f.text,
+// source: f.attributes["data-url"] ?? f.attributes["href"],
+// ),
+// );
+// });
+ return res;
+ }
+}
+
+Api api = Api();
\ No newline at end of file
diff --git a/lib/blocs/bak/search_bloc.dart b/lib/blocs/bak/search_bloc.dart
new file mode 100644
index 00000000..08d526c8
--- /dev/null
+++ b/lib/blocs/bak/search_bloc.dart
@@ -0,0 +1,35 @@
+/**
+ * Created with Android Studio.
+ * User: 一晟
+ * Date: 2019/4/28
+ * Time: 7:17 PM
+ * email: zhu.yan@alibaba-inc.com
+ * tartget:
+ */
+import 'dart:async';
+import 'package:bloc/bloc.dart';
+
+import './search_event.dart';
+import './search_state.dart';
+import './search_api.dart';
+
+
+/// 这里导入api类与上面的SearchEvent与SearchState文件
+
+class SearchBloc extends Bloc {
+ @override
+ SearchState get initialState => SearchUninitialized();
+
+ @override
+ Stream mapEventToState(SearchEvent event,) async* {
+ if (event is SearchFetch) {
+ try {
+ yield SearchLoading();
+ final res = await api.search(event.query);
+ yield SearchLoaded(res: res);
+ } catch (_) {
+ yield SearchError();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/lib/blocs/bak/search_event.dart b/lib/blocs/bak/search_event.dart
new file mode 100644
index 00000000..0ecc0b44
--- /dev/null
+++ b/lib/blocs/bak/search_event.dart
@@ -0,0 +1,18 @@
+/**
+ * Created with Android Studio.
+ * User: 一晟
+ * Date: 2019/4/28
+ * Time: 7:18 PM
+ * email: zhu.yan@alibaba-inc.com
+ * tartget:
+ */
+abstract class SearchEvent {}
+
+class SearchFetch extends SearchEvent {
+ final String query;
+
+ SearchFetch({this.query});
+
+ @override
+ String toString() => 'SearchFetch:获取搜索结果事件';
+}
\ No newline at end of file
diff --git a/lib/blocs/bak/search_result.dart b/lib/blocs/bak/search_result.dart
new file mode 100644
index 00000000..8001e49a
--- /dev/null
+++ b/lib/blocs/bak/search_result.dart
@@ -0,0 +1,14 @@
+/**
+ * Created with Android Studio.
+ * User: 一晟
+ * Date: 2019/4/28
+ * Time: 7:11 PM
+ * email: zhu.yan@alibaba-inc.com
+ * tartget:
+ */
+class SearchResult {
+ String title;
+ String source;
+
+ SearchResult({this.title, this.source});
+}
\ No newline at end of file
diff --git a/lib/blocs/bak/search_state.dart b/lib/blocs/bak/search_state.dart
new file mode 100644
index 00000000..85d85791
--- /dev/null
+++ b/lib/blocs/bak/search_state.dart
@@ -0,0 +1,37 @@
+/**
+ * Created with Android Studio.
+ * User: 一晟
+ * Date: 2019/4/28
+ * Time: 7:13 PM
+ * email: zhu.yan@alibaba-inc.com
+ * tartget:
+ */
+import './search_result.dart';
+
+abstract class SearchState {}
+
+class SearchError extends SearchState {
+ @override
+ String toString() => 'SearchError:获取失败';
+}
+
+class SearchUninitialized extends SearchState {
+ @override
+ String toString() => 'SearchUninitialized:未初始化';
+}
+
+class SearchLoading extends SearchState {
+ @override
+ String toString() => 'SearchLoading :正在加载';
+}
+
+class SearchLoaded extends SearchState {
+ final List res;
+
+ SearchLoaded({
+ this.res,
+ });
+
+ @override
+ String toString() => 'SearchLoaded:加载完毕';
+}
\ No newline at end of file
diff --git a/lib/blocs/bak/search_widget.dart b/lib/blocs/bak/search_widget.dart
new file mode 100644
index 00000000..1e29848a
--- /dev/null
+++ b/lib/blocs/bak/search_widget.dart
@@ -0,0 +1,80 @@
+/**
+ * Created with Android Studio.
+ * User: 一晟
+ * Date: 2019/4/28
+ * Time: 7:19 PM
+ * email: zhu.yan@alibaba-inc.com
+ * tartget:
+ */
+import 'package:flutter/material.dart';
+import 'package:flutter_bloc/flutter_bloc.dart';
+//import 'package:suiyi/blocs/search/bloc.dart';
+import './search_event.dart';
+import './search_state.dart';
+import './search_bloc.dart';
+
+
+class SearchWidget extends StatefulWidget {
+ final SearchDelegate delegate;
+ final String query;
+ SearchWidget({this.delegate, this.query});
+ @override
+ _SearchWidgetState createState() => _SearchWidgetState();
+}
+
+class _SearchWidgetState extends State {
+ final SearchBloc _search = SearchBloc();
+ String old;
+ @override
+ void dispose() {
+ _search.dispose();
+ super.dispose();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ print('1:${old}');
+ print('2:${widget.query}');
+ if (old != widget.query) {
+ _search.dispatch(SearchFetch(query: widget.query));
+ old = widget.query;
+ }
+ return BlocBuilder(
+ bloc: _search,
+ builder: (BuildContext context, SearchState state) {
+ print('-------${state}');
+ if (state is SearchUninitialized || state is SearchLoading) {
+ return Center(
+ child: CircularProgressIndicator(),
+ );
+ } else if (state is SearchError) {
+ return Center(
+ child: Text('获取失败'),
+ );
+ } else if (state is SearchLoaded) {
+ return ListView.builder(
+ itemBuilder: (BuildContext context, int index) {
+ return ListTile(
+ dense: true,
+ leading: Icon(
+ Icons.bookmark_border,
+ size: 32,
+ ),
+ title: Text(
+ state.res[index].title,
+ overflow: TextOverflow.ellipsis,
+ ),
+ subtitle: Text(state.res[index].source),
+ onTap: () {
+ // 在这里对选中的结果进行解析,因为我目前是用golang实现的,所以就没贴代码了。
+ print(state.res[index].source);
+ },
+ );
+ },
+ itemCount: state.res.length,
+ );
+ }
+ },
+ );
+ }
+}
\ No newline at end of file
diff --git a/lib/blocs/industry_api.dart b/lib/blocs/industry_api.dart
new file mode 100644
index 00000000..fc8b2967
--- /dev/null
+++ b/lib/blocs/industry_api.dart
@@ -0,0 +1,71 @@
+/**
+ * Created with Android Studio.
+ * User: 一晟
+ * Date: 2019/4/28
+ * Time: 3:20 PM
+ * email: zhu.yan@alibaba-inc.com
+ * tartget: FlatButton 的示例
+ */
+import 'dart:async';
+import 'package:dio/dio.dart';
+import 'dart:convert';
+import 'package:html/parser.dart' show parse;
+import './industry_model.dart';
+import './search_result.dart';
+
+var dio = new Dio();
+//class Api2 {
+// /// 关键字提示(起点)
+// Future> suggestion(String query) async {
+//// http.Response response = await http.get(
+//// "https://www.qidian.com/ajax/Search/AutoComplete?siteid=1&query=$query");
+// var response = await dio.get("https://www.qidian.com/ajax/Search/AutoComplete?siteid=1&query=$query", data: {});
+// //var response = await dio.get("https://www.so.com/s?ie=utf-8&q=$query");
+// print('1=====>${query}');
+// print('2=====>${response.data}');
+// //var data = Suggestion.fromJson(json.decode(response.body));
+// //var data = Suggestion.fromJson(json.decode(response.data));
+// var data = Suggestion.fromJson(json.decode(response.data));
+// List suggestion = [];
+// data.suggestions.forEach((k) {
+// //print('=====>${k.value}');
+// suggestion.add(k.value);
+// });
+//
+// return Future.delayed(Duration(seconds:2), () {
+// return suggestion;
+// });
+// //return suggestion;
+// }
+//}
+class Api {
+ /// 关键字提示(起点)
+ Future> suggestion(String query) async {
+// http.Response response = await http.get(
+// "https://www.qidian.com/ajax/Search/AutoComplete?siteid=1&query=$query");
+ /// var response = await dio.get("https://www.qidian.com/ajax/Search/AutoComplete?siteid=1&query=$query", data: {});
+ var response = await dio.get("https://www.so.com/s?ie=utf-8&q=$query flutter");
+ var document = parse(response.data);
+ var app = document.querySelectorAll('.res-title a');
+ ///print('1=====>${query}');
+ ///print('2=====>${response.data}');
+ ////print('3=====>${app}');
+ List res = [];
+ app.forEach((f) {
+ ///print('f==>${f}');
+ res.add(
+ SearchResult(
+ title: f.text,
+ source: f.attributes["data-url"] ?? f.attributes["href"],
+ ),
+ );
+ });
+
+ return Future.delayed(Duration(seconds:2), () {
+ return res;
+ });
+ //return suggestion;
+ }
+}
+
+Api api = Api();
\ No newline at end of file
diff --git a/lib/blocs/industry_bloc.dart b/lib/blocs/industry_bloc.dart
new file mode 100644
index 00000000..3bcd464c
--- /dev/null
+++ b/lib/blocs/industry_bloc.dart
@@ -0,0 +1,41 @@
+/**
+ * Created with Android Studio.
+ * User: 一晟
+ * Date: 2019/4/28
+ * Time: 5:19 PM
+ * email: zhu.yan@alibaba-inc.com
+ * tartget:
+ */
+import 'dart:async';
+import 'package:bloc/bloc.dart';
+import './industry_api.dart';
+import './industry_event.dart';
+import './industry_state.dart';
+
+class SuggestionBloc extends Bloc {
+ @override
+ SuggestionState get initialState => SuggestionUninitialized();
+ @override
+ Stream mapEventToState(SuggestionEvent event)async* {
+ //Stream mapEventToState(SuggestionState currentState, SuggestionEvent event,) async* {
+ if (event is SuggestionFetch) {
+ //print('event==>${event}');
+ try {
+ yield SuggestionLoading();
+ final res = await api.suggestion(event.query);
+ print('res====>${res}');
+ yield SuggestionLoaded(res: res);
+ } catch (_) {
+ yield SuggestionError();
+ }
+ }
+ if (event is SuggestionClearFetch) {
+ //print('event==>${event}');
+ try {
+ yield SuggestionUninitialized();
+ } catch (_) {
+ yield SuggestionError();
+ }
+ }
+ }
+}
diff --git a/lib/blocs/industry_event.dart b/lib/blocs/industry_event.dart
new file mode 100644
index 00000000..641720b2
--- /dev/null
+++ b/lib/blocs/industry_event.dart
@@ -0,0 +1,26 @@
+/**
+ * Created with Android Studio.
+ * User: 一晟
+ * Date: 2019/4/28
+ * Time: 3:35 PM
+ * email: zhu.yan@alibaba-inc.com
+ */
+abstract class SuggestionEvent {}
+
+class SuggestionFetch extends SuggestionEvent {
+ final String query;
+
+ SuggestionFetch({this.query});
+
+ @override
+ String toString() => 'SuggestionFetch:获取关键字提示事件';
+}
+
+class SuggestionClearFetch extends SuggestionEvent {
+ final String query;
+
+ SuggestionClearFetch({this.query});
+
+ @override
+ String toString() => 'SuggestionClearFetch:清空界面';
+}
\ No newline at end of file
diff --git a/lib/blocs/industry_main.dart b/lib/blocs/industry_main.dart
new file mode 100644
index 00000000..22dfbc0a
--- /dev/null
+++ b/lib/blocs/industry_main.dart
@@ -0,0 +1,79 @@
+/**
+ * Created with Android Studio.
+ * User: 一晟
+ * Date: 2019/4/28
+ * Time: 3:52 PM
+ * email: zhu.yan@alibaba-inc.com
+ */
+import 'package:flutter/material.dart';
+import 'package:flutter_bloc/flutter_bloc.dart';
+import './industry_bloc.dart';
+import './industry_event.dart';
+import './industry_state.dart';
+
+final SuggestionBloc suggestion = SuggestionBloc();
+
+class IndustryPage extends StatefulWidget {
+ final Function itemTitle;
+ IndustryPage({Key key,this.itemTitle}) : super(key: key);
+
+ @override
+ _IndustryState createState() => _IndustryState();
+}
+
+class _IndustryState extends State {
+ @override
+ Widget build(BuildContext context) {
+ return Material(
+ child: Column(
+ children: [
+// TextField(
+// autofocus: true,
+// textAlign: TextAlign.center,
+// onSubmitted: (text) {
+// print('onSubmitted:${text}');
+// suggestion.dispatch(SuggestionFetch(query: text));
+// },
+// ),
+ Expanded(
+ child: BlocBuilder(
+ bloc: suggestion,
+ builder: (BuildContext context, SuggestionState state) {
+ print('BlocBuilder----${state}');
+ if (state is SuggestionUninitialized) {
+ return Center(
+ child: Text('暂无内容'),
+ );
+ } else if (state is SuggestionLoading) {
+ return Center(
+ child: CircularProgressIndicator(),
+ );
+ } else if (state is SuggestionError) {
+ return Center(
+ child: Text('出现错误'),
+ );
+ } else if (state is SuggestionLoaded) {
+ if (state.res.length == 0) {
+ return Center(
+ child: Text('没有适合的结果,更换查询条件试试'),
+ );
+ }else {
+ if (widget.itemTitle is Function) {
+ return widget.itemTitle(state);
+ }
+ }
+ }
+ },
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+
+ @override
+ void dispose() {
+ //suggestion.dispose();//添加这个第二次进入会失灵
+ super.dispose();
+ }
+}
\ No newline at end of file
diff --git a/lib/blocs/industry_model.dart b/lib/blocs/industry_model.dart
new file mode 100644
index 00000000..ea6cb081
--- /dev/null
+++ b/lib/blocs/industry_model.dart
@@ -0,0 +1,72 @@
+/**
+ * Created with Android Studio.
+ * User: 一晟
+ * Date: 2019/4/28
+ * Time: 3:19 PM
+ * email: zhu.yan@alibaba-inc.com
+ */
+class Suggestion {
+ String query;
+ List suggestions;
+ int code;
+
+ Suggestion({this.query, this.suggestions, this.code});
+
+ Suggestion.fromJson(Map json) {
+ query = json['query'];
+ if (json['suggestions'] != null) {
+ suggestions = new List();
+ json['suggestions'].forEach((v) {
+ suggestions.add(new Suggestions.fromJson(v));
+ });
+ }
+ code = json['code'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['query'] = this.query;
+ if (this.suggestions != null) {
+ data['suggestions'] = this.suggestions.map((v) => v.toJson()).toList();
+ }
+ data['code'] = this.code;
+ return data;
+ }
+}
+
+class Suggestions {
+ Data data;
+ String value;
+
+ Suggestions({this.data, this.value});
+
+ Suggestions.fromJson(Map json) {
+ data = json['data'] != null ? new Data.fromJson(json['data']) : null;
+ value = json['value'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ if (this.data != null) {
+ data['data'] = this.data.toJson();
+ }
+ data['value'] = this.value;
+ return data;
+ }
+}
+
+class Data {
+ String category;
+
+ Data({this.category});
+
+ Data.fromJson(Map json) {
+ category = json['category'];
+ }
+
+ Map toJson() {
+ final Map data = new Map();
+ data['category'] = this.category;
+ return data;
+ }
+}
\ No newline at end of file
diff --git a/lib/blocs/industry_state.dart b/lib/blocs/industry_state.dart
new file mode 100644
index 00000000..b129830c
--- /dev/null
+++ b/lib/blocs/industry_state.dart
@@ -0,0 +1,34 @@
+/**
+ * Created with Android Studio.
+ * User: 一晟
+ * Date: 2019/4/28
+ * Time: 3:37 PM
+ * email: zhu.yan@alibaba-inc.com
+ */
+abstract class SuggestionState {}
+
+class SuggestionError extends SuggestionState {
+ @override
+ String toString() => 'SuggestionError:获取失败';
+}
+
+class SuggestionUninitialized extends SuggestionState {
+ @override
+ String toString() => 'SuggestionUninitialized:未初始化';
+}
+
+class SuggestionLoading extends SuggestionState {
+ @override
+ String toString() => 'SuggestionLoading :正在加载';
+}
+
+class SuggestionLoaded extends SuggestionState {
+ final List res;
+
+ SuggestionLoaded({
+ this.res,
+ });
+
+ @override
+ String toString() => 'SuggestionLoaded:加载完毕';
+}
diff --git a/lib/blocs/search_result.dart b/lib/blocs/search_result.dart
new file mode 100644
index 00000000..8001e49a
--- /dev/null
+++ b/lib/blocs/search_result.dart
@@ -0,0 +1,14 @@
+/**
+ * Created with Android Studio.
+ * User: 一晟
+ * Date: 2019/4/28
+ * Time: 7:11 PM
+ * email: zhu.yan@alibaba-inc.com
+ * tartget:
+ */
+class SearchResult {
+ String title;
+ String source;
+
+ SearchResult({this.title, this.source});
+}
\ No newline at end of file
diff --git a/lib/common/Style.dart b/lib/common/Style.dart
deleted file mode 100644
index 31d9bb8d..00000000
--- a/lib/common/Style.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-import 'package:flutter/material.dart';
-
-//颜色配置
-class AppColor{
- static const int white = 0xFFFFFFFF;
- static const int mainTextColor = 0xFF121917;
- static const int subTextColor = 0xff959595;
-}
-
-//文本设置
-class AppText{
- static const middleSize = 16.0;
-
- static const middleText = TextStyle(
- color: Color(AppColor.mainTextColor),
- fontSize: middleSize,
- );
-
- static const middleSubText = TextStyle(
- color: Color(AppColor.subTextColor),
- fontSize: middleSize,
- );
-}
-class WidgetDemoColor {
- static const int fontColor = 0xFF607173;
- static const int iconColor = 0xFF607173;
- static const int borderColor = 0xFFEFEFEF;
-
-}
diff --git a/lib/common/event_bus.dart b/lib/common/event_bus.dart
deleted file mode 100644
index faf20edc..00000000
--- a/lib/common/event_bus.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-import 'package:event_bus/event_bus.dart';
-
-EventBus eventBus = new EventBus();
-
-class MyEvent {
- String text;
- MyEvent(this.text);
-}
diff --git a/lib/common/example_code_parser.dart b/lib/common/example_code_parser.dart
deleted file mode 100644
index a045816d..00000000
--- a/lib/common/example_code_parser.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * @Author: 一凨
- * @Date: 2019-01-14 11:42:36
- * @Last Modified by: 一凨
- * @Last Modified time: 2019-01-14 16:53:11
- */
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:async';
-import '../routers/application.dart';
-import 'package:flutter/services.dart';
-import 'package:url_launcher/url_launcher.dart';
-import 'package:flutter/material.dart';
-
-
-Map _exampleCode;
-String _code;
-
-void _launchURL(String url) async {
- if (await canLaunch(url)) {
- await launch(url);
- } else {
- throw 'Could not launch $url';
- }
-}
-
-Future getExampleCode(context,String filePath, AssetBundle bundle) async {
- if (_exampleCode == null) await _parseExampleCode(context,filePath, bundle);
- return _code;
-}
-
-Future _parseExampleCode(context,String filePath, AssetBundle bundle) async {
- String code;
- try {
- code = await bundle.loadString('lib/widgets/$filePath');
- } catch (err) {
- Navigator.of(context).pop();
- _launchURL(Application.github['widgetsURL'] + filePath);
- }
- _code = code;
-}
diff --git a/lib/common/full_screen_code_dialog.dart b/lib/common/full_screen_code_dialog.dart
deleted file mode 100644
index ee098740..00000000
--- a/lib/common/full_screen_code_dialog.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * @Author: 一凨
- * @Date: 2019-01-14 11:42:32
- * @Last Modified by: 一凨
- * @Last Modified time: 2019-01-14 14:42:00
- */
-import 'package:flutter/material.dart';
-import 'example_code_parser.dart';
-import 'syntax_highlighter.dart';
-
-class FullScreenCodeDialog extends StatefulWidget {
- const FullScreenCodeDialog({this.filePath});
-
- final String filePath;
- _FullScreenCodeDialogState createState() => _FullScreenCodeDialogState();
-}
-
-class _FullScreenCodeDialogState extends State {
- String _exampleCode;
-
- @override
- void didChangeDependencies() {
- getExampleCode(context,'${widget.filePath}', DefaultAssetBundle.of(context))
- .then((String code) {
- if (mounted) {
- setState(() {
- _exampleCode = code ?? 'Example code not found';
- });
- }
- });
- super.didChangeDependencies();
- }
-
- @override
- Widget build(BuildContext context) {
- final SyntaxHighlighterStyle style =
- Theme.of(context).brightness == Brightness.dark
- ? SyntaxHighlighterStyle.darkThemeStyle()
- : SyntaxHighlighterStyle.lightThemeStyle();
-
- Widget body;
- if (_exampleCode == null) {
- body = const Center(child: CircularProgressIndicator());
- } else {
- body = SingleChildScrollView(
- child: Padding(
- padding: const EdgeInsets.all(16.0),
- child: RichText(
- text: TextSpan(
- style: const TextStyle(fontFamily: 'monospace', fontSize: 10.0),
- children: [
- DartSyntaxHighlighter(style).format(_exampleCode)
- ]),
- ),
- ),
- );
- }
-
- return Scaffold(
- appBar: AppBar(
- leading: IconButton(
- icon: const Icon(
- Icons.clear,
- semanticLabel: 'Close',
- ),
- onPressed: () {
- Navigator.pop(context);
- }),
- title: const Text('Example code'),
- ),
- body: body);
- }
-}
diff --git a/lib/common/high_light_code.dart b/lib/common/high_light_code.dart
deleted file mode 100644
index 1ac0fdcd..00000000
--- a/lib/common/high_light_code.dart
+++ /dev/null
@@ -1,359 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:flutter/material.dart';
-import 'package:string_scanner/string_scanner.dart';
-
-/// final SyntaxHighlighterStyle style = SyntaxHighlighterStyle.lightThemeStyle();
-/// DartSyntaxHighlighter(style).format(source)
-
-class SyntaxHighlighterStyle {
- SyntaxHighlighterStyle({
- this.baseStyle,
- this.numberStyle,
- this.commentStyle,
- this.keywordStyle,
- this.stringStyle,
- this.punctuationStyle,
- this.classStyle,
- this.constantStyle
- });
-
- static SyntaxHighlighterStyle lightThemeStyle() {
- return SyntaxHighlighterStyle(
- baseStyle: const TextStyle(color: Color(0xFF000000)),
- numberStyle: const TextStyle(color: Color(0xFF1565C0)),
- commentStyle: const TextStyle(color: Color(0xFF9E9E9E)),
- keywordStyle: const TextStyle(color: Color(0xFF9C27B0)),
- stringStyle: const TextStyle(color: Color(0xFF43A047)),
- punctuationStyle: const TextStyle(color: Color(0xFF000000)),
- classStyle: const TextStyle(color: Color(0xFF512DA8)),
- constantStyle: const TextStyle(color: Color(0xFF795548))
- );
- }
-
- static SyntaxHighlighterStyle darkThemeStyle() {
- return SyntaxHighlighterStyle(
- baseStyle: const TextStyle(color: Color(0xFFFFFFFF)),
- numberStyle: const TextStyle(color: Color(0xFF1565C0)),
- commentStyle: const TextStyle(color: Color(0xFF9E9E9E)),
- keywordStyle: const TextStyle(color: Color(0xFF80CBC4)),
- stringStyle: const TextStyle(color: Color(0xFF009688)),
- punctuationStyle: const TextStyle(color: Color(0xFFFFFFFF)),
- classStyle: const TextStyle(color: Color(0xFF009688)),
- constantStyle: const TextStyle(color: Color(0xFF795548))
- );
- }
-
- final TextStyle baseStyle;
- final TextStyle numberStyle;
- final TextStyle commentStyle;
- final TextStyle keywordStyle;
- final TextStyle stringStyle;
- final TextStyle punctuationStyle;
- final TextStyle classStyle;
- final TextStyle constantStyle;
-}
-
-abstract class Highlighter { // ignore: one_member_abstracts
- TextSpan format(String src);
-}
-
-class DartSyntaxHighlighter extends Highlighter {
- DartSyntaxHighlighter([this._style]) {
- _spans = <_HighlightSpan>[];
- _style ??= SyntaxHighlighterStyle.darkThemeStyle();
- }
-
- SyntaxHighlighterStyle _style;
-
- static const List _keywords = [
- 'abstract', 'as', 'assert', 'async', 'await', 'break', 'case', 'catch',
- 'class', 'const', 'continue', 'default', 'deferred', 'do', 'dynamic', 'else',
- 'enum', 'export', 'external', 'extends', 'factory', 'false', 'final',
- 'finally', 'for', 'get', 'if', 'implements', 'import', 'in', 'is', 'library',
- 'new', 'null', 'operator', 'part', 'rethrow', 'return', 'set', 'static',
- 'super', 'switch', 'sync', 'this', 'throw', 'true', 'try', 'typedef', 'var',
- 'void', 'while', 'with', 'yield'
- ];
-
- static const List _builtInTypes = [
- 'int', 'double', 'num', 'bool'
- ];
-
- String _src;
- StringScanner _scanner;
-
- List<_HighlightSpan> _spans;
-
- @override
- TextSpan format(String src) {
- _src = src;
- _scanner = StringScanner(_src);
-
- if (_generateSpans()) {
- // Successfully parsed the code
- final List formattedText = [];
- int currentPosition = 0;
-
- for (_HighlightSpan span in _spans) {
- if (currentPosition != span.start)
- formattedText.add(TextSpan(text: _src.substring(currentPosition, span.start)));
-
- formattedText.add(TextSpan(style: span.textStyle(_style), text: span.textForSpan(_src)));
-
- currentPosition = span.end;
- }
-
- if (currentPosition != _src.length)
- formattedText.add(TextSpan(text: _src.substring(currentPosition, _src.length)));
-
- return TextSpan(style: _style.baseStyle, children: formattedText);
- } else {
- // Parsing failed, return with only basic formatting
- return TextSpan(style: _style.baseStyle, text: src);
- }
- }
-
- bool _generateSpans() {
- int lastLoopPosition = _scanner.position;
-
- while (!_scanner.isDone) {
- // Skip White space
- _scanner.scan(RegExp(r'\s+'));
-
- // Block comments
- if (_scanner.scan(RegExp(r'/\*(.|\n)*\*/'))) {
- _spans.add(_HighlightSpan(
- _HighlightType.comment,
- _scanner.lastMatch.start,
- _scanner.lastMatch.end
- ));
- continue;
- }
-
- // Line comments
- if (_scanner.scan('//')) {
- final int startComment = _scanner.lastMatch.start;
-
- bool eof = false;
- int endComment;
- if (_scanner.scan(RegExp(r'.*\n'))) {
- endComment = _scanner.lastMatch.end - 1;
- } else {
- eof = true;
- endComment = _src.length;
- }
-
- _spans.add(_HighlightSpan(
- _HighlightType.comment,
- startComment,
- endComment
- ));
-
- if (eof)
- break;
-
- continue;
- }
-
- // Raw r"String"
- if (_scanner.scan(RegExp(r'r".*"'))) {
- _spans.add(_HighlightSpan(
- _HighlightType.string,
- _scanner.lastMatch.start,
- _scanner.lastMatch.end
- ));
- continue;
- }
-
- // Raw r'String'
- if (_scanner.scan(RegExp(r"r'.*'"))) {
- _spans.add(_HighlightSpan(
- _HighlightType.string,
- _scanner.lastMatch.start,
- _scanner.lastMatch.end
- ));
- continue;
- }
-
- // Multiline """String"""
- if (_scanner.scan(RegExp(r'"""(?:[^"\\]|\\(.|\n))*"""'))) {
- _spans.add(_HighlightSpan(
- _HighlightType.string,
- _scanner.lastMatch.start,
- _scanner.lastMatch.end
- ));
- continue;
- }
-
- // Multiline '''String'''
- if (_scanner.scan(RegExp(r"'''(?:[^'\\]|\\(.|\n))*'''"))) {
- _spans.add(_HighlightSpan(
- _HighlightType.string,
- _scanner.lastMatch.start,
- _scanner.lastMatch.end
- ));
- continue;
- }
-
- // "String"
- if (_scanner.scan(RegExp(r'"(?:[^"\\]|\\.)*"'))) {
- _spans.add(_HighlightSpan(
- _HighlightType.string,
- _scanner.lastMatch.start,
- _scanner.lastMatch.end
- ));
- continue;
- }
-
- // 'String'
- if (_scanner.scan(RegExp(r"'(?:[^'\\]|\\.)*'"))) {
- _spans.add(_HighlightSpan(
- _HighlightType.string,
- _scanner.lastMatch.start,
- _scanner.lastMatch.end
- ));
- continue;
- }
-
- // Double
- if (_scanner.scan(RegExp(r'\d+\.\d+'))) {
- _spans.add(_HighlightSpan(
- _HighlightType.number,
- _scanner.lastMatch.start,
- _scanner.lastMatch.end
- ));
- continue;
- }
-
- // Integer
- if (_scanner.scan(RegExp(r'\d+'))) {
- _spans.add(_HighlightSpan(
- _HighlightType.number,
- _scanner.lastMatch.start,
- _scanner.lastMatch.end)
- );
- continue;
- }
-
- // Punctuation
- if (_scanner.scan(RegExp(r'[\[\]{}().!=<>&\|\?\+\-\*/%\^~;:,]'))) {
- _spans.add(_HighlightSpan(
- _HighlightType.punctuation,
- _scanner.lastMatch.start,
- _scanner.lastMatch.end
- ));
- continue;
- }
-
- // Meta data
- if (_scanner.scan(RegExp(r'@\w+'))) {
- _spans.add(_HighlightSpan(
- _HighlightType.keyword,
- _scanner.lastMatch.start,
- _scanner.lastMatch.end
- ));
- continue;
- }
-
- // Words
- if (_scanner.scan(RegExp(r'\w+'))) {
- _HighlightType type;
-
- String word = _scanner.lastMatch[0];
- if (word.startsWith('_'))
- word = word.substring(1);
-
- if (_keywords.contains(word))
- type = _HighlightType.keyword;
- else if (_builtInTypes.contains(word))
- type = _HighlightType.keyword;
- else if (_firstLetterIsUpperCase(word))
- type = _HighlightType.klass;
- else if (word.length >= 2 && word.startsWith('k') && _firstLetterIsUpperCase(word.substring(1)))
- type = _HighlightType.constant;
-
- if (type != null) {
- _spans.add(_HighlightSpan(
- type,
- _scanner.lastMatch.start,
- _scanner.lastMatch.end
- ));
- }
- }
-
- // Check if this loop did anything
- if (lastLoopPosition == _scanner.position) {
- // Failed to parse this file, abort gracefully
- return false;
- }
- lastLoopPosition = _scanner.position;
- }
-
- _simplify();
- return true;
- }
-
- void _simplify() {
- for (int i = _spans.length - 2; i >= 0; i -= 1) {
- if (_spans[i].type == _spans[i + 1].type && _spans[i].end == _spans[i + 1].start) {
- _spans[i] = _HighlightSpan(
- _spans[i].type,
- _spans[i].start,
- _spans[i + 1].end
- );
- _spans.removeAt(i + 1);
- }
- }
- }
-
- bool _firstLetterIsUpperCase(String str) {
- if (str.isNotEmpty) {
- final String first = str.substring(0, 1);
- return first == first.toUpperCase();
- }
- return false;
- }
-}
-
-enum _HighlightType {
- number,
- comment,
- keyword,
- string,
- punctuation,
- klass,
- constant
-}
-
-class _HighlightSpan {
- _HighlightSpan(this.type, this.start, this.end);
- final _HighlightType type;
- final int start;
- final int end;
-
- String textForSpan(String src) {
- return src.substring(start, end);
- }
-
- TextStyle textStyle(SyntaxHighlighterStyle style) {
- if (type == _HighlightType.number)
- return style.numberStyle;
- else if (type == _HighlightType.comment)
- return style.commentStyle;
- else if (type == _HighlightType.keyword)
- return style.keywordStyle;
- else if (type == _HighlightType.string)
- return style.stringStyle;
- else if (type == _HighlightType.punctuation)
- return style.punctuationStyle;
- else if (type == _HighlightType.klass)
- return style.classStyle;
- else if (type == _HighlightType.constant)
- return style.constantStyle;
- else
- return style.baseStyle;
- }
-}
diff --git a/lib/common/icon_names.dart b/lib/common/icon_names.dart
deleted file mode 100644
index 7d75b841..00000000
--- a/lib/common/icon_names.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * Created with Android Studio.
- * User: 一晟
- * Date: 2018/11/23
- * Time: 上午2:14
- * email: zhu.yan@alibaba-inc.com
- * tartget: FlatButton 的示例
- */
-import 'package:flutter/material.dart';
-
-
-class IconNames {
- static List names = [Icons.ac_unit,Icons.access_alarm,Icons.access_alarms,Icons.access_time,Icons.accessibility,Icons.accessibility_new,Icons.accessible,Icons.accessible_forward,Icons.account_balance,Icons.account_balance_wallet,Icons.account_box,Icons.account_circle,Icons.adb,Icons.add,Icons.add_a_photo,Icons.add_alarm,Icons.add_alert,Icons.add_box,Icons.add_call,Icons.add_circle,Icons.add_circle_outline,Icons.add_comment,Icons.add_location,Icons.add_photo_alternate,Icons.add_shopping_cart,Icons.add_to_home_screen,Icons.add_to_photos,Icons.add_to_queue,Icons.adjust,Icons.airline_seat_flat,Icons.airline_seat_flat_angled,Icons.airline_seat_individual_suite,Icons.airline_seat_legroom_extra,Icons.airline_seat_legroom_normal,Icons.airline_seat_legroom_reduced,Icons.airline_seat_recline_extra,Icons.airline_seat_recline_normal,Icons.airplanemode_active,Icons.airplanemode_inactive,Icons.airplay,Icons.airport_shuttle,Icons.alarm,Icons.alarm_add,Icons.alarm_off,Icons.alarm_on,Icons.album,Icons.all_inclusive,Icons.all_out,Icons.alternate_email,Icons.android,Icons.announcement,Icons.apps,Icons.archive,Icons.arrow_back,Icons.arrow_back_ios,Icons.arrow_downward,Icons.arrow_drop_down,Icons.arrow_drop_down_circle,Icons.arrow_drop_up,Icons.arrow_forward,Icons.arrow_forward_ios,Icons.arrow_left,Icons.arrow_right,Icons.arrow_upward,Icons.art_track,Icons.aspect_ratio,Icons.assessment,Icons.assignment,Icons.assignment_ind,Icons.assignment_late,Icons.assignment_return,Icons.assignment_returned,Icons.assignment_turned_in,Icons.assistant,Icons.assistant_photo,Icons.atm,Icons.attach_file,Icons.attach_money,Icons.attachment,Icons.audiotrack,Icons.autorenew,Icons.av_timer,Icons.backspace,Icons.backup,Icons.battery_alert,Icons.battery_charging_full,Icons.battery_full,Icons.battery_std,Icons.battery_unknown,Icons.beach_access,Icons.beenhere,Icons.block,Icons.bluetooth,Icons.bluetooth_audio,Icons.bluetooth_connected,Icons.bluetooth_disabled,Icons.bluetooth_searching,Icons.blur_circular,Icons.blur_linear,Icons.blur_off,Icons.blur_on,Icons.book,Icons.bookmark,Icons.bookmark_border,Icons.border_all,Icons.border_bottom,Icons.border_clear,Icons.border_color,Icons.border_horizontal,Icons.border_inner,Icons.border_left,Icons.border_outer,Icons.border_right,Icons.border_style,Icons.border_top,Icons.border_vertical,Icons.branding_watermark,Icons.brightness_1,Icons.brightness_2,Icons.brightness_3,Icons.brightness_4,Icons.brightness_5,Icons.brightness_6,Icons.brightness_7,Icons.brightness_auto,Icons.brightness_high,Icons.brightness_low,Icons.brightness_medium,Icons.broken_image,Icons.brush,Icons.bubble_chart,Icons.bug_report,Icons.build,Icons.burst_mode,Icons.business,Icons.business_center,Icons.cached,Icons.cake,Icons.calendar_today,Icons.calendar_view_day,Icons.call,Icons.call_end,Icons.call_made,Icons.call_merge,Icons.call_missed,Icons.call_missed_outgoing,Icons.call_received,Icons.call_split,Icons.call_to_action,Icons.camera,Icons.camera_alt,Icons.camera_enhance,Icons.camera_front,Icons.camera_rear,Icons.camera_roll,Icons.cancel,Icons.card_giftcard,Icons.card_membership,Icons.card_travel,Icons.casino,Icons.cast,Icons.cast_connected,Icons.category,Icons.center_focus_strong,Icons.center_focus_weak,Icons.change_history,Icons.chat,Icons.chat_bubble,Icons.chat_bubble_outline,Icons.check,Icons.check_box,Icons.check_box_outline_blank,Icons.check_circle,Icons.check_circle_outline,Icons.chevron_left,Icons.chevron_right,Icons.child_care,Icons.child_friendly,Icons.chrome_reader_mode,Icons.class_,Icons.clear,Icons.clear_all,Icons.close,Icons.closed_caption,Icons.cloud,Icons.cloud_circle,Icons.cloud_done,Icons.cloud_download,Icons.cloud_off,Icons.cloud_queue,Icons.cloud_upload,Icons.code,Icons.collections,Icons.collections_bookmark,Icons.color_lens,Icons.colorize,Icons.comment,Icons.compare,Icons.compare_arrows,Icons.computer,Icons.confirmation_number,Icons.contact_mail,Icons.contact_phone,Icons.contacts,Icons.content_copy,Icons.content_cut,Icons.content_paste,Icons.control_point,Icons.control_point_duplicate,Icons.copyright,Icons.create,Icons.create_new_folder,Icons.credit_card,Icons.crop,Icons.crop_3_2,Icons.crop_5_4,Icons.crop_7_5,Icons.crop_16_9,Icons.crop_din,Icons.crop_free,Icons.crop_landscape,Icons.crop_original,Icons.crop_portrait,Icons.crop_rotate,Icons.crop_square,Icons.dashboard,Icons.data_usage,Icons.date_range,Icons.dehaze,Icons.delete,Icons.delete_forever,Icons.delete_outline,Icons.delete_sweep,Icons.departure_board,Icons.description,Icons.desktop_mac,Icons.desktop_windows,Icons.details,Icons.developer_board,Icons.developer_mode,Icons.device_hub,Icons.device_unknown,Icons.devices,Icons.devices_other,Icons.dialer_sip,Icons.dialpad,Icons.directions,Icons.directions_bike,Icons.directions_boat,Icons.directions_bus,Icons.directions_car,Icons.directions_railway,Icons.directions_run,Icons.directions_subway,Icons.directions_transit,Icons.directions_walk,Icons.disc_full,Icons.dns,Icons.do_not_disturb,Icons.do_not_disturb_alt,Icons.do_not_disturb_off,Icons.do_not_disturb_on,Icons.dock,Icons.domain,Icons.done,Icons.done_all,Icons.done_outline,Icons.donut_large,Icons.donut_small,Icons.drafts,Icons.drag_handle,Icons.drive_eta,Icons.dvr,Icons.edit,Icons.edit_attributes,Icons.edit_location,Icons.eject,Icons.email,Icons.enhanced_encryption,Icons.equalizer,Icons.error,Icons.error_outline,Icons.euro_symbol,Icons.ev_station,Icons.event,Icons.event_available,Icons.event_busy,Icons.event_note,Icons.event_seat,Icons.exit_to_app,Icons.expand_less,Icons.expand_more,Icons.explicit,Icons.explore,Icons.exposure,Icons.exposure_neg_1,Icons.exposure_neg_2,Icons.exposure_plus_1,Icons.exposure_plus_2,Icons.exposure_zero,Icons.extension,Icons.face,Icons.fast_forward,Icons.fast_rewind,Icons.fastfood,Icons.favorite,Icons.favorite_border,Icons.featured_play_list,Icons.featured_video,Icons.feedback,Icons.fiber_dvr,Icons.fiber_manual_record,Icons.fiber_new,Icons.fiber_pin,Icons.fiber_smart_record,Icons.file_download,Icons.file_upload,Icons.filter,Icons.filter_1,Icons.filter_2,Icons.filter_3,Icons.filter_4,Icons.filter_5,Icons.filter_6,Icons.filter_7,Icons.filter_8,Icons.filter_9,Icons.filter_9_plus,Icons.filter_b_and_w,Icons.filter_center_focus,Icons.filter_drama,Icons.filter_frames,Icons.filter_hdr,Icons.filter_list,Icons.filter_none,Icons.filter_tilt_shift,Icons.filter_vintage,Icons.find_in_page,Icons.find_replace,Icons.fingerprint,Icons.first_page,Icons.fitness_center,Icons.flag,Icons.flare,Icons.flash_auto,Icons.flash_off,Icons.flash_on,Icons.flight,Icons.flight_land,Icons.flight_takeoff,Icons.flip,Icons.flip_to_back,Icons.flip_to_front,Icons.folder,Icons.folder_open,Icons.folder_shared,Icons.folder_special,Icons.font_download,Icons.format_align_center,Icons.format_align_justify,Icons.format_align_left,Icons.format_align_right,Icons.format_bold,Icons.format_clear,Icons.format_color_fill,Icons.format_color_reset,Icons.format_color_text,Icons.format_indent_decrease,Icons.format_indent_increase,Icons.format_italic,Icons.format_line_spacing,Icons.format_list_bulleted,Icons.format_list_numbered,Icons.format_list_numbered_rtl,Icons.format_paint,Icons.format_quote,Icons.format_shapes,Icons.format_size,Icons.format_strikethrough,Icons.format_textdirection_l_to_r,Icons.format_textdirection_r_to_l,Icons.format_underlined,Icons.forum,Icons.forward,Icons.forward_5,Icons.forward_10,Icons.forward_30,Icons.four_k,Icons.free_breakfast,Icons.fullscreen,Icons.fullscreen_exit,Icons.functions,Icons.g_translate,Icons.gamepad,Icons.games,Icons.gavel,Icons.gesture,Icons.get_app,Icons.gif,Icons.golf_course,Icons.gps_fixed,Icons.gps_not_fixed,Icons.gps_off,Icons.grade,Icons.gradient,Icons.grain,Icons.graphic_eq,Icons.grid_off,Icons.grid_on,Icons.group,Icons.group_add,Icons.group_work,Icons.hd,Icons.hdr_off,Icons.hdr_on,Icons.hdr_strong,Icons.hdr_weak,Icons.headset,Icons.headset_mic,Icons.headset_off,Icons.healing,Icons.hearing,Icons.help,Icons.help_outline,Icons.high_quality,Icons.highlight,Icons.highlight_off,Icons.history,Icons.home,Icons.hot_tub,Icons.hotel,Icons.hourglass_empty,Icons.hourglass_full,Icons.http,Icons.https,Icons.image,Icons.image_aspect_ratio,Icons.import_contacts,Icons.import_export,Icons.important_devices,Icons.inbox,Icons.indeterminate_check_box,Icons.info,Icons.info_outline,Icons.input,Icons.insert_chart,Icons.insert_comment,Icons.insert_drive_file,Icons.insert_emoticon,Icons.insert_invitation,Icons.insert_link,Icons.insert_photo,Icons.invert_colors,Icons.invert_colors_off,Icons.iso,Icons.keyboard,Icons.keyboard_arrow_down,Icons.keyboard_arrow_left,Icons.keyboard_arrow_right,Icons.keyboard_arrow_up,Icons.keyboard_backspace,Icons.keyboard_capslock,Icons.keyboard_hide,Icons.keyboard_return,Icons.keyboard_tab,Icons.keyboard_voice,Icons.kitchen,Icons.label,Icons.label_important,Icons.label_outline,Icons.landscape,Icons.language,Icons.laptop,Icons.laptop_chromebook,Icons.laptop_mac,Icons.laptop_windows,Icons.last_page,Icons.launch,Icons.layers,Icons.layers_clear,Icons.leak_add,Icons.leak_remove,Icons.lens,Icons.library_add,Icons.library_books,Icons.library_music,Icons.lightbulb_outline,Icons.line_style,Icons.line_weight,Icons.linear_scale,Icons.link,Icons.link_off,Icons.linked_camera,Icons.list,Icons.live_help,Icons.live_tv,Icons.local_activity,Icons.local_airport,Icons.local_atm,Icons.local_bar,Icons.local_cafe,Icons.local_car_wash,Icons.local_convenience_store,Icons.local_dining,Icons.local_drink,Icons.local_florist,Icons.local_gas_station,Icons.local_grocery_store,Icons.local_hospital,Icons.local_hotel,Icons.local_laundry_service,Icons.local_library,Icons.local_mall,Icons.local_movies,Icons.local_offer,Icons.local_parking,Icons.local_pharmacy,Icons.local_phone,Icons.local_pizza,Icons.local_play,Icons.local_post_office,Icons.local_printshop,Icons.local_see,Icons.local_shipping,Icons.local_taxi,Icons.location_city,Icons.location_disabled,Icons.location_off,Icons.location_on,Icons.location_searching,Icons.lock,Icons.lock_open,Icons.lock_outline,Icons.looks,Icons.looks_3,Icons.looks_4,Icons.looks_5,Icons.looks_6,Icons.looks_one,Icons.looks_two,Icons.loop,Icons.loupe,Icons.low_priority,Icons.loyalty,Icons.mail,Icons.mail_outline,Icons.map,Icons.markunread,Icons.markunread_mailbox,Icons.maximize,Icons.memory,Icons.menu,Icons.merge_type,Icons.message,Icons.mic,Icons.mic_none,Icons.mic_off,Icons.minimize,Icons.missed_video_call,Icons.mms,Icons.mobile_screen_share,Icons.mode_comment,Icons.mode_edit,Icons.monetization_on,Icons.money_off,Icons.monochrome_photos,Icons.mood,Icons.mood_bad,Icons.more,Icons.more_horiz,Icons.more_vert,Icons.motorcycle,Icons.mouse,Icons.move_to_inbox,Icons.movie,Icons.movie_creation,Icons.movie_filter,Icons.multiline_chart,Icons.music_note,Icons.music_video,Icons.my_location,Icons.nature,Icons.nature_people,Icons.navigate_before,Icons.navigate_next,Icons.navigation,Icons.near_me,Icons.network_cell,Icons.network_check,Icons.network_locked,Icons.network_wifi,Icons.new_releases,Icons.next_week,Icons.nfc,Icons.no_encryption,Icons.no_sim,Icons.not_interested,Icons.not_listed_location,Icons.note,Icons.note_add,Icons.notification_important,Icons.notifications,Icons.notifications_active,Icons.notifications_none,Icons.notifications_off,Icons.notifications_paused,Icons.offline_bolt,Icons.offline_pin,Icons.ondemand_video,Icons.opacity,Icons.open_in_browser,Icons.open_in_new,Icons.open_with,Icons.outlined_flag,Icons.pages,Icons.pageview,Icons.palette,Icons.pan_tool,Icons.panorama,Icons.panorama_fish_eye,Icons.panorama_horizontal,Icons.panorama_vertical,Icons.panorama_wide_angle,Icons.party_mode,Icons.pause,Icons.pause_circle_filled,Icons.pause_circle_outline,Icons.payment,Icons.people,Icons.people_outline,Icons.perm_camera_mic,Icons.perm_contact_calendar,Icons.perm_data_setting,Icons.perm_device_information,Icons.perm_identity,Icons.perm_media,Icons.perm_phone_msg,Icons.perm_scan_wifi,Icons.person,Icons.person_add,Icons.person_outline,Icons.person_pin,Icons.person_pin_circle,Icons.personal_video,Icons.pets,Icons.phone,Icons.phone_android,Icons.phone_bluetooth_speaker,Icons.phone_forwarded,Icons.phone_in_talk,Icons.phone_iphone,Icons.phone_locked,Icons.phone_missed,Icons.phone_paused,Icons.phonelink,Icons.phonelink_erase,Icons.phonelink_lock,Icons.phonelink_off,Icons.phonelink_ring,Icons.phonelink_setup,Icons.photo,Icons.photo_album,Icons.photo_camera,Icons.photo_filter,Icons.photo_library,Icons.photo_size_select_actual,Icons.photo_size_select_large,Icons.photo_size_select_small,Icons.picture_as_pdf,Icons.picture_in_picture,Icons.picture_in_picture_alt,Icons.pie_chart,Icons.pie_chart_outlined,Icons.pin_drop,Icons.place,Icons.play_arrow,Icons.play_circle_filled,Icons.play_circle_outline,Icons.play_for_work,Icons.playlist_add,Icons.playlist_add_check,Icons.playlist_play,Icons.plus_one,Icons.poll,Icons.polymer,Icons.pool,Icons.portable_wifi_off,Icons.portrait,Icons.power,Icons.power_input,Icons.power_settings_new,Icons.pregnant_woman,Icons.present_to_all,Icons.print,Icons.priority_high,Icons.public,Icons.publish,Icons.query_builder,Icons.question_answer,Icons.queue,Icons.queue_music,Icons.queue_play_next,Icons.radio,Icons.radio_button_checked,Icons.radio_button_unchecked,Icons.rate_review,Icons.receipt,Icons.recent_actors,Icons.record_voice_over,Icons.redeem,Icons.redo,Icons.refresh,Icons.remove,Icons.remove_circle,Icons.remove_circle_outline,Icons.remove_from_queue,Icons.remove_red_eye,Icons.remove_shopping_cart,Icons.reorder,Icons.repeat,Icons.repeat_one,Icons.replay,Icons.replay_5,Icons.replay_10,Icons.replay_30,Icons.reply,Icons.reply_all,Icons.report,Icons.report_off,Icons.report_problem,Icons.restaurant,Icons.restaurant_menu,Icons.restore,Icons.restore_from_trash,Icons.restore_page,Icons.ring_volume,Icons.room,Icons.room_service,Icons.rotate_90_degrees_ccw,Icons.rotate_left,Icons.rotate_right,Icons.rounded_corner,Icons.router,Icons.rowing,Icons.rss_feed,Icons.rv_hookup,Icons.satellite,Icons.save,Icons.save_alt,Icons.scanner,Icons.scatter_plot,Icons.schedule,Icons.school,Icons.score,Icons.screen_lock_landscape,Icons.screen_lock_portrait,Icons.screen_lock_rotation,Icons.screen_rotation,Icons.screen_share,Icons.sd_card,Icons.sd_storage,Icons.search,Icons.security,Icons.select_all,Icons.send,Icons.sentiment_dissatisfied,Icons.sentiment_neutral,Icons.sentiment_satisfied,Icons.sentiment_very_dissatisfied,Icons.sentiment_very_satisfied,Icons.settings,Icons.settings_applications,Icons.settings_backup_restore,Icons.settings_bluetooth,Icons.settings_brightness,Icons.settings_cell,Icons.settings_ethernet,Icons.settings_input_antenna,Icons.settings_input_component,Icons.settings_input_composite,Icons.settings_input_hdmi,Icons.settings_input_svideo,Icons.settings_overscan,Icons.settings_phone,Icons.settings_power,Icons.settings_remote,Icons.settings_system_daydream,Icons.settings_voice,Icons.share,Icons.shop,Icons.shop_two,Icons.shopping_basket,Icons.shopping_cart,Icons.short_text,Icons.show_chart,Icons.shuffle,Icons.shutter_speed,Icons.signal_cellular_4_bar,Icons.signal_cellular_connected_no_internet_4_bar,Icons.signal_cellular_no_sim,Icons.signal_cellular_null,Icons.signal_cellular_off,Icons.signal_wifi_4_bar,Icons.signal_wifi_4_bar_lock,Icons.signal_wifi_off,Icons.sim_card,Icons.sim_card_alert,Icons.skip_next,Icons.skip_previous,Icons.slideshow,Icons.slow_motion_video,Icons.smartphone,Icons.smoke_free,Icons.smoking_rooms,Icons.sms,Icons.sms_failed,Icons.snooze,Icons.sort,Icons.sort_by_alpha,Icons.spa,Icons.space_bar,Icons.speaker,Icons.speaker_group,Icons.speaker_notes,Icons.speaker_notes_off,Icons.speaker_phone,Icons.spellcheck,Icons.star,Icons.star_border,Icons.star_half,Icons.stars,Icons.stay_current_landscape,Icons.stay_current_portrait,Icons.stay_primary_landscape,Icons.stay_primary_portrait,Icons.stop,Icons.stop_screen_share,Icons.storage,Icons.store,Icons.store_mall_directory,Icons.straighten,Icons.streetview,Icons.strikethrough_s,Icons.style,Icons.subdirectory_arrow_left,Icons.subdirectory_arrow_right,Icons.subject,Icons.subscriptions,Icons.subtitles,Icons.subway,Icons.supervised_user_circle,Icons.supervisor_account,Icons.surround_sound,Icons.swap_calls,Icons.swap_horiz,Icons.swap_horizontal_circle,Icons.swap_vert,Icons.swap_vertical_circle,Icons.switch_camera,Icons.switch_video,Icons.sync,Icons.sync_disabled,Icons.sync_problem,Icons.system_update,Icons.system_update_alt,Icons.tab,Icons.tab_unselected,Icons.table_chart,Icons.tablet,Icons.tablet_android,Icons.tablet_mac,Icons.tag_faces,Icons.tap_and_play,Icons.terrain,Icons.text_fields,Icons.text_format,Icons.text_rotate_up,Icons.text_rotate_vertical,Icons.text_rotation_angledown,Icons.text_rotation_angleup,Icons.text_rotation_down,Icons.text_rotation_none,Icons.textsms,Icons.texture,Icons.theaters,Icons.threed_rotation,Icons.threesixty,Icons.thumb_down,Icons.thumb_up,Icons.thumbs_up_down,Icons.time_to_leave,Icons.timelapse,Icons.timeline,Icons.timer,Icons.timer_3,Icons.timer_10,Icons.timer_off,Icons.title,Icons.toc,Icons.today,Icons.toll,Icons.tonality,Icons.touch_app,Icons.toys,Icons.track_changes,Icons.traffic,Icons.train,Icons.tram,Icons.transfer_within_a_station,Icons.transform,Icons.transit_enterexit,Icons.translate,Icons.trending_down,Icons.trending_flat,Icons.trending_up,Icons.trip_origin,Icons.tune,Icons.turned_in,Icons.turned_in_not,Icons.tv,Icons.unarchive,Icons.undo,Icons.unfold_less,Icons.unfold_more,Icons.update,Icons.usb,Icons.verified_user,Icons.vertical_align_bottom,Icons.vertical_align_center,Icons.vertical_align_top,Icons.vibration,Icons.video_call,Icons.video_label,Icons.video_library,Icons.videocam,Icons.videocam_off,Icons.videogame_asset,Icons.view_agenda,Icons.view_array,Icons.view_carousel,Icons.view_column,Icons.view_comfy,Icons.view_compact,Icons.view_day,Icons.view_headline,Icons.view_list,Icons.view_module,Icons.view_quilt,Icons.view_stream,Icons.view_week,Icons.vignette,Icons.visibility,Icons.visibility_off,Icons.voice_chat,Icons.voicemail,Icons.volume_down,Icons.volume_mute,Icons.volume_off,Icons.volume_up,Icons.vpn_key,Icons.vpn_lock,Icons.wallpaper,Icons.warning,Icons.watch,Icons.watch_later,Icons.wb_auto,Icons.wb_cloudy,Icons.wb_incandescent,Icons.wb_iridescent,Icons.wb_sunny,Icons.wc,Icons.web,Icons.web_asset,Icons.weekend,Icons.whatshot,Icons.widgets,Icons.wifi,Icons.wifi_lock,Icons.wifi_tethering,Icons.work,Icons.wrap_text,Icons.youtube_searched_for,Icons.zoom_in,Icons.zoom_out,Icons.zoom_out_map];
-}
\ No newline at end of file
diff --git a/lib/common/list_view_item.dart b/lib/common/list_view_item.dart
deleted file mode 100644
index 7580cc0e..00000000
--- a/lib/common/list_view_item.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * @Author: 一凨
- * @Date: 2019-01-14 17:53:54
- * @Last Modified by: 一凨
- * @Last Modified time: 2019-01-14 17:57:51
- */
-import 'package:flutter/material.dart';
-import '../routers/application.dart';
-import '../routers/routers.dart';
-import 'dart:core';
-
-
-class ListViewItem extends StatelessWidget {
- final String itemUrl;
- final String itemTitle;
- final String data;
-
- const ListViewItem({Key key, this.itemUrl, this.itemTitle, this.data})
- : super(key: key);
-
-
- @override
- Widget build(BuildContext context) {
- return Card(
- color: Colors.white,
- elevation: 4.0,
- margin: new EdgeInsets.symmetric(horizontal: 10.0, vertical: 6.0),
- child: ListTile(
- onTap: () {
- // _launchURL(itemUrl, context);
- Application.router.navigateTo(context, '${Routes.webViewPage}?title=${Uri.encodeComponent(itemTitle)}&url=${Uri.encodeComponent(itemUrl)}');
- },
- title: Padding(
- child: Text(
- itemTitle,
- style: TextStyle(color: Colors.black, fontSize: 15.0),
- ),
- padding: EdgeInsets.only(top: 10.0),
- ),
- subtitle: Row(
- children: [
- Padding(
- child: Text(data,
- style: TextStyle(color: Colors.black54, fontSize: 10.0)),
- padding: EdgeInsets.only(top: 10.0, bottom: 10.0),
- )
- ],
- ),
- trailing:
- Icon(Icons.keyboard_arrow_right, color: Colors.grey, size: 30.0),
- ),
- );
- }
-}
diff --git a/lib/common/net_utils.dart b/lib/common/net_utils.dart
deleted file mode 100644
index d5dbcdc6..00000000
--- a/lib/common/net_utils.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-import 'package:dio/dio.dart';
-import 'dart:async';
-
-var dio = new Dio();
-
-class NetUtils {
-
- static Future get(String url,{Map params}) async{
- var response = await dio.get(url, data: params);
- return response.data;
- }
-
- static Future post(String url,Map params) async{
- var response = await dio.post(url, data: params);
- return response.data;
- }
-}
\ No newline at end of file
diff --git a/lib/common/provider.dart b/lib/common/provider.dart
deleted file mode 100644
index 6704fc9d..00000000
--- a/lib/common/provider.dart
+++ /dev/null
@@ -1,91 +0,0 @@
-import 'dart:async';
-import 'dart:io';
-import 'dart:typed_data';
-import 'package:path/path.dart';
-import 'package:sqflite/sqflite.dart';
-import 'package:flutter/services.dart' show rootBundle;
-//const createSql = {
-// 'cat': """
-// CREATE TABLE "cat" (
-// `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
-// `name` TEXT NOT NULL UNIQUE,
-// `depth` INTEGER NOT NULL DEFAULT 1,
-// `parentId` INTEGER NOT NULL,
-// `desc` TEXT
-// );
-// """,
-// 'collectio': """
-// CREATE TABLE collection (id INTEGER PRIMARY KEY NOT NULL UNIQUE, name TEXT NOT NULL, router TEXT);
-// """,
-// 'widget': """
-// CREATE TABLE widget (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, name TEXT NOT NULL, cnName TEXT NOT NULL, image TEXT NOT NULL, doc TEXT, demo TEXT, catId INTEGER NOT NULL REFERENCES cat (id), owner TEXT);
-// """;
-//};
-
-class Provider {
- static Database db;
-
- // 获取数据库中所有的表
- Future getTables() async {
- if (db == null) {
- return Future.value([]);
- }
- List tables = await db.rawQuery('SELECT name FROM sqlite_master WHERE type = "table"');
- List targetList = [];
- tables.forEach((item) {
- targetList.add(item['name']);
- });
- return targetList;
- }
-
- // 检查数据库中, 表是否完整, 在部份android中, 会出现表丢失的情况
- Future checkTableIsRight() async {
- List expectTables = ['cat', 'widget', 'collection'];
-
- List tables = await getTables();
-
- for(int i = 0; i < expectTables.length; i++) {
- if (!tables.contains(expectTables[i])) {
- return false;
- }
- }
- return true;
-
- }
-
- //初始化数据库
-
- Future init(bool isCreate) async {
- //Get a location using getDatabasesPath
- String databasesPath = await getDatabasesPath();
- String path = join(databasesPath, 'flutter.db');
-
- try {
- db = await openDatabase(path);
- } catch (e) {
- print("Error $e");
- }
- bool tableIsRight = await this.checkTableIsRight();
-
- if (!tableIsRight) {
- // 关闭上面打开的db,否则无法执行open
- db.close();
- // Delete the database
- await deleteDatabase(path);
- ByteData data = await rootBundle.load(join("assets", "app.db"));
- List bytes =
- data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
- await new File(path).writeAsBytes(bytes);
-
- db = await openDatabase(path, version: 1,
- onCreate: (Database db, int version) async {
- print('db created version is $version');
- }, onOpen: (Database db) async {
- print('new db opened');
- });
- } else {
- print("Opening existing database");
- }
- }
-
-}
diff --git a/lib/common/sql.dart b/lib/common/sql.dart
deleted file mode 100644
index b6dd620a..00000000
--- a/lib/common/sql.dart
+++ /dev/null
@@ -1,98 +0,0 @@
-import './provider.dart';
-import 'dart:async';
-import 'package:sqflite/sqflite.dart';
-
-
-
-
-class BaseModel{
- Database db;
- final String table = '';
- var query;
- BaseModel(this.db){
- query = db.query;
- }
-}
-
-class Sql extends BaseModel {
- final String tableName;
- Sql.setTable(String name)
- : tableName = name,
- super(Provider.db);
-
- // sdf
- Future get() async{
- return await this.query(tableName);
- }
- String getTableName () {
- return tableName;
- }
-
- Future delete(String value,String key) async{
- return await this.db.delete(tableName,where:'$key = ?',whereArgs:[value]);
- }
-
- Future getByCondition({Map conditions}) async {
- if (conditions == null || conditions.isEmpty) {
- return this.get();
- }
- String stringConditions = '';
-
- int index = 0;
- conditions.forEach((key, value) {
- if (value == null) {
- return ;
- }
- if (value.runtimeType == String) {
- stringConditions = '$stringConditions $key = "$value"';
- }
- if (value.runtimeType == int) {
- stringConditions = '$stringConditions $key = $value';
- }
-
- if (index >= 0 && index < conditions.length -1) {
- stringConditions = '$stringConditions and';
- }
- index++;
- });
- // print("this is string condition for sql > $stringConditions");
- return await this.query(tableName, where: stringConditions);
- }
- Future