Showing
90 changed files
with
3358 additions
and
568 deletions
Too many changes to show.
To preserve performance only 90 of 90+ files are displayed.
| @@ -5,10 +5,16 @@ | @@ -5,10 +5,16 @@ | ||
| 5 | "version": "0.2.0", | 5 | "version": "0.2.0", |
| 6 | "configurations": [ | 6 | "configurations": [ |
| 7 | { | 7 | { |
| 8 | +<<<<<<< HEAD | ||
| 8 | "name": "Flutter", | 9 | "name": "Flutter", |
| 9 | "type": "dart", | 10 | "type": "dart", |
| 10 | "request": "launch", | 11 | "request": "launch", |
| 11 | "program": "lib/main.dart" | 12 | "program": "lib/main.dart" |
| 13 | +======= | ||
| 14 | + "name": "oneKey_wdn", | ||
| 15 | + "request": "launch", | ||
| 16 | + "type": "dart" | ||
| 17 | +>>>>>>> v1.4+ | ||
| 12 | } | 18 | } |
| 13 | ] | 19 | ] |
| 14 | } | 20 | } |
| 1 | { | 1 | { |
| 2 | + "agcgw":{ | ||
| 3 | + "backurl":"connect-drcn.dbankcloud.cn", | ||
| 4 | + "url":"connect-drcn.hispace.hicloud.com" | ||
| 5 | + }, | ||
| 2 | "client":{ | 6 | "client":{ |
| 3 | - "cp_id":"260086000252264275", | ||
| 4 | - "product_id":"9105385871708598142", | ||
| 5 | - "client_id":"326681575729136832", | ||
| 6 | - "client_secret":"A8D20078A192C1BD87C6B3EB5B597EF654901AE981E64701D66131A4E56A3AE9", | ||
| 7 | - "app_id":"101934783", | 7 | + "cp_id":"890086000102028635", |
| 8 | + "product_id":"736430079244628022", | ||
| 9 | + "client_id":"447630859449664704", | ||
| 10 | + "client_secret":"C7F0060C796F3C59EC7928525D6B09D66139F06EDA5C3C6B772583D34A946BBB", | ||
| 11 | + "app_id":"102832405", | ||
| 8 | "package_name":"com.naji.one_key", | 12 | "package_name":"com.naji.one_key", |
| 9 | - "api_key":"CV6kBSEh4lAr9VF9v+geTdQebNtGEGQ4HcgN1igodItOCuGghaF1do+cxeVplpcEpe3pf3nwbkChLzCvkxtHvQOaPkTs" | 13 | + "api_key":"CgB6e3x9K3RbzJwcAdFaQxGHXy+cqz0hCk6o/By+YxTV++JZtUgxAHKZNq4t1vOpQFjD/FSlkuuPdEiHm5dQ7Cd0" |
| 14 | + }, | ||
| 15 | + "service":{ | ||
| 16 | + "analytics":{ | ||
| 17 | + "collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn", | ||
| 18 | + "resource_id":"p1", | ||
| 19 | + "channel_id":"" | ||
| 20 | + }, | ||
| 21 | + "cloudstorage":{ | ||
| 22 | + "storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn" | ||
| 23 | + }, | ||
| 24 | + "ml":{ | ||
| 25 | + "mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn" | ||
| 26 | + } | ||
| 10 | }, | 27 | }, |
| 28 | + "region":"CN", | ||
| 11 | "configuration_version":"1.0" | 29 | "configuration_version":"1.0" |
| 12 | } | 30 | } |
| @@ -11,14 +11,14 @@ if (flutterRoot == null) { | @@ -11,14 +11,14 @@ if (flutterRoot == null) { | ||
| 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") | 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") |
| 12 | } | 12 | } |
| 13 | 13 | ||
| 14 | -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') | 14 | +def flutterVersionCode = "146" |
| 15 | if (flutterVersionCode == null) { | 15 | if (flutterVersionCode == null) { |
| 16 | - flutterVersionCode = '1' | 16 | + flutterVersionCode = '146' |
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | -def flutterVersionName = localProperties.getProperty('flutter.versionName') | 19 | +def flutterVersionName = "1.4.6" |
| 20 | if (flutterVersionName == null) { | 20 | if (flutterVersionName == null) { |
| 21 | - flutterVersionName = '1.0' | 21 | + flutterVersionName = '1.4.6' |
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | apply plugin: 'com.android.application' | 24 | apply plugin: 'com.android.application' |
| @@ -41,7 +41,7 @@ android { | @@ -41,7 +41,7 @@ android { | ||
| 41 | defaultConfig { | 41 | defaultConfig { |
| 42 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). | 42 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). |
| 43 | applicationId "com.naji.one_key" | 43 | applicationId "com.naji.one_key" |
| 44 | - minSdkVersion 17 | 44 | + minSdkVersion 21 |
| 45 | targetSdkVersion 28 | 45 | targetSdkVersion 28 |
| 46 | versionCode flutterVersionCode.toInteger() | 46 | versionCode flutterVersionCode.toInteger() |
| 47 | versionName flutterVersionName | 47 | versionName flutterVersionName |
| @@ -49,21 +49,16 @@ android { | @@ -49,21 +49,16 @@ android { | ||
| 49 | 49 | ||
| 50 | ndk { | 50 | ndk { |
| 51 | //选择要添加的对应 cpu 类型的 .so 库。 | 51 | //选择要添加的对应 cpu 类型的 .so 库。 |
| 52 | - abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a' | 52 | + abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | manifestPlaceholders = [ | 55 | manifestPlaceholders = [ |
| 56 | - JPUSH_PKGNAME : applicationId, | ||
| 57 | - JPUSH_APPKEY : "27ceb79c44af41ad99202f7a", // NOTE: JPush 上注册的包名对应的 Appkey. | ||
| 58 | - JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可. | ||
| 59 | - HUAWEI_APPID:"101934783",//华为平台注册的appid | ||
| 60 | - XIAOMI_APPKEY : "5811835841457", // 小米平台注册的appkey | ||
| 61 | - XIAOMI_APPID : "2882303761518358457", // 小米平台注册的appid | ||
| 62 | - OPPO_APPKEY : "94d77d10e7bb4c60bcf18a84c8ca8bdd", // OPPO平台注册的appkey | ||
| 63 | - OPPO_APPID : "30260281", // OPPO平台注册的appid | ||
| 64 | - OPPO_APPSECRET: "9b7e372f93794593953f93f118619570",//OPPO平台注册的appsecret | ||
| 65 | -// VIVO_APPKEY : "5811835841457", // VIVO平台注册的appkey | ||
| 66 | -// VIVO_APPID : "2882303761518358457", // VIVO平台注册的appid | 56 | + XG_ACCESS_ID : '1500012875', |
| 57 | + XG_ACCESS_KEY : 'AVR2GJERH0HC', | ||
| 58 | + HW_APPID : '102832405', | ||
| 59 | + VIVO_APPID: "103886384", | ||
| 60 | + VIVO_APPKEY:"5a04e5c3485c0b19a2911c95dcaff5d2", | ||
| 61 | + PACKAGE_NAME : "com.naji.one_key",// 小米通道 | ||
| 67 | ] | 62 | ] |
| 68 | } | 63 | } |
| 69 | 64 | ||
| @@ -86,12 +81,17 @@ android { | @@ -86,12 +81,17 @@ android { | ||
| 86 | buildTypes { | 81 | buildTypes { |
| 87 | release { | 82 | release { |
| 88 | minifyEnabled true | 83 | minifyEnabled true |
| 89 | - proguardFiles 'proguard-rules.pro' | 84 | + // TODO: Add your own signing config for the release build. |
| 85 | + // Signing with the debug keys for now, so `flutter run --release` works. | ||
| 86 | + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | ||
| 90 | signingConfig signingConfigs.release | 87 | signingConfig signingConfigs.release |
| 91 | } | 88 | } |
| 92 | debug{ | 89 | debug{ |
| 93 | - minifyEnabled false | ||
| 94 | - signingConfig signingConfigs.debug | 90 | + minifyEnabled true |
| 91 | + // TODO: Add your own signing config for the release build. | ||
| 92 | + // Signing with the debug keys for now, so `flutter run --release` works. | ||
| 93 | + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | ||
| 94 | + signingConfig signingConfigs.release | ||
| 95 | } | 95 | } |
| 96 | } | 96 | } |
| 97 | } | 97 | } |
| @@ -105,17 +105,8 @@ dependencies { | @@ -105,17 +105,8 @@ dependencies { | ||
| 105 | testImplementation 'junit:junit:4.12' | 105 | testImplementation 'junit:junit:4.12' |
| 106 | androidTestImplementation 'androidx.test:runner:1.1.1' | 106 | androidTestImplementation 'androidx.test:runner:1.1.1' |
| 107 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' | 107 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' |
| 108 | - | ||
| 109 | - //华为推送 | ||
| 110 | - implementation 'cn.jiguang.sdk.plugin:huawei:3.5.4' | ||
| 111 | - implementation 'com.huawei.hms:push:3.0.3.301' | ||
| 112 | - | ||
| 113 | - //小米推送 | ||
| 114 | - implementation 'cn.jiguang.sdk.plugin:xiaomi:3.5.4' | ||
| 115 | - | ||
| 116 | -// //OPPO推送 | ||
| 117 | -// implementation 'cn.jiguang.sdk.plugin:oppo:3.4.0' | ||
| 118 | -// | ||
| 119 | -// //vivo推送 | ||
| 120 | -// implementation 'cn.jiguang.sdk.plugin:vivo:3.5.4' | 108 | + implementation 'com.tencent.tpns:huawei:1.2.0.3-release'// 华为推送 |
| 109 | + implementation 'com.tencent.tpns:xiaomi:1.2.0.3-release' // 小米推送 | ||
| 110 | + implementation 'com.tencent.tpns:oppo:1.2.0.3-release' // OPPO 推送 | ||
| 111 | + implementation 'com.tencent.tpns:vivo:1.2.0.3-release' // vivo 推送 | ||
| 121 | } | 112 | } |
android/app/proguard-rules.pro
0 → 100644
| 1 | + | ||
| 2 | +-keep public class * extends android.app.Service | ||
| 3 | +-keep public class * extends android.content.BroadcastReceiver | ||
| 4 | +-keep class com.tencent.android.tpush.** {*;} | ||
| 5 | +-keep class com.tencent.tpns.baseapi.** {*;} | ||
| 6 | +-keep class com.tencent.tpns.mqttchannel.** {*;} | ||
| 7 | +-keep class com.tencent.tpns.dataacquisition.** {*;} | ||
| 8 | + | ||
| 9 | +-keep class com.tencent.bigdata.baseapi.** {*;} | ||
| 10 | +-keep class com.tencent.bigdata.mqttchannel.** {*;} | ||
| 11 | + | ||
| 12 | +#-ignorewarning | ||
| 13 | +-keepattributes *Annotation* | ||
| 14 | +-keepattributes Exceptions | ||
| 15 | +-keepattributes InnerClasses | ||
| 16 | +-keepattributes Signature | ||
| 17 | +-keepattributes SourceFile,LineNumberTable | ||
| 18 | +-keep class com.hianalytics.android.**{*;} | ||
| 19 | +-keep class com.huawei.updatesdk.**{*;} | ||
| 20 | +-keep class com.huawei.hms.**{*;} | ||
| 21 | +-keep class com.huawei.android.hms.agent.**{*;} | ||
| 22 | + | ||
| 23 | +-keep class com.xiaomi.**{*;} | ||
| 24 | +-keep public class * extends com.xiaomi.mipush.sdk.PushMessageReceiver | ||
| 25 | + | ||
| 26 | +-dontwarn com.meizu.cloud.pushsdk.** | ||
| 27 | +-keep class com.meizu.cloud.pushsdk.**{*;} | ||
| 28 | + | ||
| 29 | +-dontwarn com.vivo.push.** | ||
| 30 | +-keep class com.vivo.push.**{*; } | ||
| 31 | +-keep class com.vivo.vms.**{*; } | ||
| 32 | +-keep class com.tencent.android.vivopush.VivoPushMessageReceiver{*;} | ||
| 33 | + | ||
| 34 | +-keep public class * extends android.app.Service | ||
| 35 | +-keep class com.heytap.mcssdk.** {*;} | ||
| 36 | +-keep class com.heytap.msp.push.** { *;} | ||
| 37 | + |
| 1 | -<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 2 | - package="com.naji.one_key"> | ||
| 3 | - <!-- Flutter needs it to communicate with the running application | ||
| 4 | - to allow setting breakpoints, to provide hot reload, etc. | ||
| 5 | - --> | ||
| 6 | - <uses-permission android:name="android.permission.INTERNET"/> | ||
| 7 | -</manifest> |
| 1 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | 1 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
| 2 | + xmlns:tools="http://schemas.android.com/tools" | ||
| 2 | package="com.naji.one_key"> | 3 | package="com.naji.one_key"> |
| 3 | <!-- io.flutter.app.FlutterApplication is an android.app.Application that | 4 | <!-- io.flutter.app.FlutterApplication is an android.app.Application that |
| 4 | calls FlutterMain.startInitialization(this); in its onCreate method. | 5 | calls FlutterMain.startInitialization(this); in its onCreate method. |
| 5 | In most cases you can leave this as-is, but you if you want to provide | 6 | In most cases you can leave this as-is, but you if you want to provide |
| 6 | additional functionality it is fine to subclass or reimplement | 7 | additional functionality it is fine to subclass or reimplement |
| 7 | FlutterApplication and put your custom class here. --> | 8 | FlutterApplication and put your custom class here. --> |
| 9 | + | ||
| 10 | + <uses-permission android:name="android.permission.READ_CONTACTS" /> | ||
| 11 | + <uses-permission android:name="android.permission.WRITE_CONTACTS" /> | ||
| 12 | + <uses-permission android:name="android.permission.READ_CONTACTS"/> | ||
| 13 | + <uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/> | ||
| 8 | <application | 14 | <application |
| 9 | android:name="io.flutter.app.FlutterApplication" | 15 | android:name="io.flutter.app.FlutterApplication" |
| 10 | android:label="一键订" | 16 | android:label="一键订" |
| 17 | + tools:replace="android:label" | ||
| 11 | android:icon="@mipmap/ic_launcher"> | 18 | android:icon="@mipmap/ic_launcher"> |
| 12 | <activity | 19 | <activity |
| 13 | android:name=".MainActivity" | 20 | android:name=".MainActivity" |
| @@ -18,25 +25,37 @@ | @@ -18,25 +25,37 @@ | ||
| 18 | android:windowSoftInputMode="adjustResize" | 25 | android:windowSoftInputMode="adjustResize" |
| 19 | android:exported="true" | 26 | android:exported="true" |
| 20 | > | 27 | > |
| 28 | + <meta-data | ||
| 29 | + android:name="io.flutter.app.android.SplashScreenUntilFirstFrame" | ||
| 30 | + android:value="true" /> | ||
| 31 | + | ||
| 32 | + <meta-data | ||
| 33 | + android:name="io.flutter.embedding.android.SplashScreenDrawable" | ||
| 34 | + android:resource="@drawable/launch_background" /> | ||
| 35 | + | ||
| 21 | <intent-filter> | 36 | <intent-filter> |
| 22 | <action android:name="android.intent.action.MAIN"/> | 37 | <action android:name="android.intent.action.MAIN"/> |
| 23 | <category android:name="android.intent.category.LAUNCHER"/> | 38 | <category android:name="android.intent.category.LAUNCHER"/> |
| 24 | <action android:name="android.intent.action.VIEW"/> | 39 | <action android:name="android.intent.action.VIEW"/> |
| 25 | <category android:name="android.intent.category.DEFAULT"/> | 40 | <category android:name="android.intent.category.DEFAULT"/> |
| 26 | </intent-filter> | 41 | </intent-filter> |
| 27 | - </activity> | ||
| 28 | 42 | ||
| 29 | - <service | ||
| 30 | - android:name="cn.jpush.android.service.PluginHuaweiPlatformsService" | ||
| 31 | - android:exported="false"> | 43 | + <!-- 通知栏跳转intent --> |
| 32 | <intent-filter> | 44 | <intent-filter> |
| 33 | - <action android:name="com.huawei.push.action.MESSAGING_EVENT" /> | 45 | + <action android:name="android.intent.action.VIEW"/> |
| 46 | + <category android:name="android.intent.category.DEFAULT"/> | ||
| 47 | + <data | ||
| 48 | + android:scheme="xgscheme" | ||
| 49 | + android:host="com.naji.book" | ||
| 50 | + android:path="/book_detail" /> | ||
| 34 | </intent-filter> | 51 | </intent-filter> |
| 35 | - </service> | 52 | + </activity> |
| 53 | + | ||
| 36 | <!-- Don't delete the meta-data below. | 54 | <!-- Don't delete the meta-data below. |
| 37 | This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> | 55 | This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> |
| 38 | <meta-data | 56 | <meta-data |
| 39 | android:name="flutterEmbedding" | 57 | android:name="flutterEmbedding" |
| 40 | android:value="2" /> | 58 | android:value="2" /> |
| 59 | + | ||
| 41 | </application> | 60 | </application> |
| 42 | </manifest> | 61 | </manifest> |
| 1 | package com.naji.one_key | 1 | package com.naji.one_key |
| 2 | 2 | ||
| 3 | -import android.os.Bundle | ||
| 4 | -import android.os.PersistableBundle | ||
| 5 | -import android.util.Log | ||
| 6 | import androidx.annotation.NonNull; | 3 | import androidx.annotation.NonNull; |
| 7 | import io.flutter.embedding.android.FlutterActivity | 4 | import io.flutter.embedding.android.FlutterActivity |
| 8 | import io.flutter.embedding.engine.FlutterEngine | 5 | import io.flutter.embedding.engine.FlutterEngine |
| 9 | import io.flutter.plugins.GeneratedPluginRegistrant | 6 | import io.flutter.plugins.GeneratedPluginRegistrant |
| 7 | +import android.os.Bundle | ||
| 8 | +import android.util.Log | ||
| 9 | +import io.flutter.plugin.common.MethodChannel | ||
| 10 | +import io.flutter.plugin.common.MethodCall | ||
| 10 | 11 | ||
| 11 | class MainActivity: FlutterActivity() { | 12 | class MainActivity: FlutterActivity() { |
| 12 | 13 | ||
| 13 | - override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { | ||
| 14 | - super.onCreate(savedInstanceState, persistentState) | ||
| 15 | - Log.d("Push-Data",this.intent.data.toString()); | ||
| 16 | - } | 14 | + private var TAG = "| com.naji.book |" |
| 15 | + | ||
| 16 | + // 通道名称 | ||
| 17 | + private var CHANNEL = "com.naji/book" | ||
| 18 | + | ||
| 19 | + // native端的Intent数据 | ||
| 20 | + private var intentMap = mutableMapOf<String, String>() | ||
| 17 | 21 | ||
| 18 | override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { | 22 | override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { |
| 19 | GeneratedPluginRegistrant.registerWith(flutterEngine); | 23 | GeneratedPluginRegistrant.registerWith(flutterEngine); |
| 20 | } | 24 | } |
| 25 | + | ||
| 26 | + override fun onCreate(savedInstanceState: Bundle?) { | ||
| 27 | + super.onCreate(savedInstanceState) | ||
| 28 | + // flutter版本更新后使用 getFlutterEngine().getDartExecutor().getBinaryMessenger()代替 getFlutterView() | ||
| 29 | + val channel = MethodChannel(getFlutterEngine()?.getDartExecutor()?.getBinaryMessenger(), CHANNEL) | ||
| 30 | + | ||
| 31 | + // 这里要获取启动时的intent | ||
| 32 | + val uri = intent.data | ||
| 33 | + val paramsMap = mutableMapOf<String, String>() | ||
| 34 | + if (uri != null) { | ||
| 35 | + val set = uri.queryParameterNames | ||
| 36 | + for (name in set) { | ||
| 37 | + val value = uri.getQueryParameter(name) | ||
| 38 | + paramsMap[name.toString()] = value.toString() | ||
| 39 | + } | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + intentMap = paramsMap | ||
| 43 | + | ||
| 44 | + channel.setMethodCallHandler { call, result -> | ||
| 45 | + Log.i(TAG,intentMap.toString()); | ||
| 46 | + when (call.method) { | ||
| 47 | + "getIntent" -> get_intent(call, result) | ||
| 48 | + } | ||
| 49 | + } | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + // 获取intent | ||
| 53 | + private fun get_intent(call: MethodCall, result: MethodChannel.Result) { | ||
| 54 | + Log.i(TAG, "调用${call.method}方法") | ||
| 55 | + result.success(intentMap) | ||
| 56 | + } | ||
| 21 | } | 57 | } |
android/app/src/main/res/raw/tts_all.mp3
0 → 100644
No preview for this file type
android/app/src/main/res/raw/tts_cancel.mp3
0 → 100644
No preview for this file type
android/app/tpns-configs.json
0 → 100644
android/settings_aar.gradle
0 → 100644
| 1 | +include ':app' |
assets/arr_right_gray.png
0 → 100644
230 Bytes
assets/bg_error.png
0 → 100644
32.9 KB
assets/calender_narmol.png
0 → 100644
1.41 KB
assets/calender_select.png
0 → 100644
1.11 KB
assets/close.png
0 → 100644
1.07 KB
assets/empty_search.png
0 → 100644
107 KB
assets/icon_refuse_book.png
0 → 100644
2.2 KB
assets/mine_radio_nor.png
0 → 100644
932 Bytes
assets/mine_radio_sel.png
0 → 100644
2.1 KB
assets/more_narmol.png
0 → 100644
1.03 KB
assets/more_select.png
0 → 100644
734 Bytes
assets/phone_list.png
0 → 100644
5.97 KB
assets/select.png
0 → 100644
1.84 KB
assets/tablemanage_default.png
0 → 100644
2.06 KB
assets/tablemanage_selected.png
0 → 100644
2.52 KB
assets/tts_all.mp3
0 → 100644
No preview for this file type
assets/tts_cancel.mp3
0 → 100644
No preview for this file type
assets/unselect.png
0 → 100644
2.07 KB
ios/Flutter/.last_build_id
0 → 100644
| 1 | +7babc7873f8d177769b987ba4c6c2911 |
ios/Flutter/AppFrameworkInfo.plist
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
| 3 | +<plist version="1.0"> | ||
| 4 | +<dict> | ||
| 5 | + <key>CFBundleDevelopmentRegion</key> | ||
| 6 | + <string>$(DEVELOPMENT_LANGUAGE)</string> | ||
| 7 | + <key>CFBundleExecutable</key> | ||
| 8 | + <string>App</string> | ||
| 9 | + <key>CFBundleIdentifier</key> | ||
| 10 | + <string>io.flutter.flutter.app</string> | ||
| 11 | + <key>CFBundleInfoDictionaryVersion</key> | ||
| 12 | + <string>6.0</string> | ||
| 13 | + <key>CFBundleName</key> | ||
| 14 | + <string>App</string> | ||
| 15 | + <key>CFBundlePackageType</key> | ||
| 16 | + <string>FMWK</string> | ||
| 17 | + <key>CFBundleShortVersionString</key> | ||
| 18 | + <string>1.0</string> | ||
| 19 | + <key>CFBundleSignature</key> | ||
| 20 | + <string>????</string> | ||
| 21 | + <key>CFBundleVersion</key> | ||
| 22 | + <string>1.0</string> | ||
| 23 | + <key>MinimumOSVersion</key> | ||
| 24 | + <string>8.0</string> | ||
| 25 | +</dict> | ||
| 26 | +</plist> |
ios/Flutter/Debug.xcconfig
0 → 100644
ios/Flutter/Release.xcconfig
0 → 100644
| @@ -10,6 +10,7 @@ project 'Runner', { | @@ -10,6 +10,7 @@ project 'Runner', { | ||
| 10 | 'Release' => :release, | 10 | 'Release' => :release, |
| 11 | } | 11 | } |
| 12 | 12 | ||
| 13 | +<<<<<<< HEAD | ||
| 13 | def parse_KV_file(file, separator='=') | 14 | def parse_KV_file(file, separator='=') |
| 14 | file_abs_path = File.expand_path(file) | 15 | file_abs_path = File.expand_path(file) |
| 15 | if !File.exists? file_abs_path | 16 | if !File.exists? file_abs_path |
| @@ -86,5 +87,34 @@ post_install do |installer| | @@ -86,5 +87,34 @@ post_install do |installer| | ||
| 86 | target.build_configurations.each do |config| | 87 | target.build_configurations.each do |config| |
| 87 | config.build_settings['ENABLE_BITCODE'] = 'NO' | 88 | config.build_settings['ENABLE_BITCODE'] = 'NO' |
| 88 | end | 89 | end |
| 90 | +======= | ||
| 91 | +def flutter_root | ||
| 92 | + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) | ||
| 93 | + unless File.exist?(generated_xcode_build_settings_path) | ||
| 94 | + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" | ||
| 95 | + end | ||
| 96 | + | ||
| 97 | + File.foreach(generated_xcode_build_settings_path) do |line| | ||
| 98 | + matches = line.match(/FLUTTER_ROOT\=(.*)/) | ||
| 99 | + return matches[1].strip if matches | ||
| 100 | + end | ||
| 101 | + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" | ||
| 102 | +end | ||
| 103 | + | ||
| 104 | +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) | ||
| 105 | + | ||
| 106 | +flutter_ios_podfile_setup | ||
| 107 | + | ||
| 108 | +target 'Runner' do | ||
| 109 | + use_frameworks! | ||
| 110 | + use_modular_headers! | ||
| 111 | + | ||
| 112 | + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) | ||
| 113 | +end | ||
| 114 | + | ||
| 115 | +post_install do |installer| | ||
| 116 | + installer.pods_project.targets.each do |target| | ||
| 117 | + flutter_additional_ios_build_settings(target) | ||
| 118 | +>>>>>>> v1.4+ | ||
| 89 | end | 119 | end |
| 90 | end | 120 | end |
| 1 | PODS: | 1 | PODS: |
| 2 | - audioplayers (0.0.1): | 2 | - audioplayers (0.0.1): |
| 3 | - Flutter | 3 | - Flutter |
| 4 | +<<<<<<< HEAD | ||
| 4 | - Bugly (2.5.5) | 5 | - Bugly (2.5.5) |
| 5 | - Flutter (1.0.0) | 6 | - Flutter (1.0.0) |
| 7 | +======= | ||
| 8 | + - Bugly (2.5.71) | ||
| 9 | + - connectivity (0.0.1): | ||
| 10 | + - Flutter | ||
| 11 | + - Reachability | ||
| 12 | + - contacts_service (0.2.2): | ||
| 13 | + - Flutter | ||
| 14 | + - device_info (0.0.1): | ||
| 15 | + - Flutter | ||
| 16 | + - easy_contact_picker (0.0.1): | ||
| 17 | + - Flutter | ||
| 18 | + - Flutter (1.0.0) | ||
| 19 | + - flutter_app_badger (0.0.1): | ||
| 20 | + - Flutter | ||
| 21 | +>>>>>>> v1.4+ | ||
| 6 | - flutter_bugly (0.0.1): | 22 | - flutter_bugly (0.0.1): |
| 7 | - Bugly | 23 | - Bugly |
| 8 | - Flutter | 24 | - Flutter |
| @@ -12,6 +28,7 @@ PODS: | @@ -12,6 +28,7 @@ PODS: | ||
| 12 | - Flutter | 28 | - Flutter |
| 13 | - fluwx (0.0.1): | 29 | - fluwx (0.0.1): |
| 14 | - Flutter | 30 | - Flutter |
| 31 | +<<<<<<< HEAD | ||
| 15 | - WechatOpenSDK (= 1.8.6.2) | 32 | - WechatOpenSDK (= 1.8.6.2) |
| 16 | - FMDB (2.7.5): | 33 | - FMDB (2.7.5): |
| 17 | - FMDB/standard (= 2.7.5) | 34 | - FMDB/standard (= 2.7.5) |
| @@ -27,10 +44,27 @@ PODS: | @@ -27,10 +44,27 @@ PODS: | ||
| 27 | - shared_preferences_macos (0.0.1): | 44 | - shared_preferences_macos (0.0.1): |
| 28 | - Flutter | 45 | - Flutter |
| 29 | - shared_preferences_web (0.0.1): | 46 | - shared_preferences_web (0.0.1): |
| 47 | +======= | ||
| 48 | + - WechatOpenSDK (= 1.8.7.1) | ||
| 49 | + - FMDB (2.7.5): | ||
| 50 | + - FMDB/standard (= 2.7.5) | ||
| 51 | + - FMDB/standard (2.7.5) | ||
| 52 | + - install_plugin (0.0.1): | ||
| 53 | + - Flutter | ||
| 54 | + - package_info (0.0.1): | ||
| 55 | + - Flutter | ||
| 56 | + - path_provider (0.0.1): | ||
| 57 | + - Flutter | ||
| 58 | + - "permission_handler (4.4.0+hotfix.4)": | ||
| 59 | + - Flutter | ||
| 60 | + - Reachability (3.2) | ||
| 61 | + - shared_preferences (0.0.1): | ||
| 62 | +>>>>>>> v1.4+ | ||
| 30 | - Flutter | 63 | - Flutter |
| 31 | - sqflite (0.0.1): | 64 | - sqflite (0.0.1): |
| 32 | - Flutter | 65 | - Flutter |
| 33 | - FMDB (~> 2.7.2) | 66 | - FMDB (~> 2.7.2) |
| 67 | +<<<<<<< HEAD | ||
| 34 | - url_launcher (0.0.1): | 68 | - url_launcher (0.0.1): |
| 35 | - Flutter | 69 | - Flutter |
| 36 | - url_launcher_macos (0.0.1): | 70 | - url_launcher_macos (0.0.1): |
| @@ -42,10 +76,31 @@ PODS: | @@ -42,10 +76,31 @@ PODS: | ||
| 42 | DEPENDENCIES: | 76 | DEPENDENCIES: |
| 43 | - audioplayers (from `.symlinks/plugins/audioplayers/ios`) | 77 | - audioplayers (from `.symlinks/plugins/audioplayers/ios`) |
| 44 | - Flutter (from `Flutter`) | 78 | - Flutter (from `Flutter`) |
| 79 | +======= | ||
| 80 | + - TPNS-iOS (1.2.7.2) | ||
| 81 | + - tpns_flutter_plugin (1.0.4): | ||
| 82 | + - Flutter | ||
| 83 | + - TPNS-iOS (= 1.2.7.2) | ||
| 84 | + - url_launcher (0.0.1): | ||
| 85 | + - Flutter | ||
| 86 | + - webview_flutter (0.0.1): | ||
| 87 | + - Flutter | ||
| 88 | + - WechatOpenSDK (1.8.7.1) | ||
| 89 | + | ||
| 90 | +DEPENDENCIES: | ||
| 91 | + - audioplayers (from `.symlinks/plugins/audioplayers/ios`) | ||
| 92 | + - connectivity (from `.symlinks/plugins/connectivity/ios`) | ||
| 93 | + - contacts_service (from `.symlinks/plugins/contacts_service/ios`) | ||
| 94 | + - device_info (from `.symlinks/plugins/device_info/ios`) | ||
| 95 | + - easy_contact_picker (from `.symlinks/plugins/easy_contact_picker/ios`) | ||
| 96 | + - Flutter (from `Flutter`) | ||
| 97 | + - flutter_app_badger (from `.symlinks/plugins/flutter_app_badger/ios`) | ||
| 98 | +>>>>>>> v1.4+ | ||
| 45 | - flutter_bugly (from `.symlinks/plugins/flutter_bugly/ios`) | 99 | - flutter_bugly (from `.symlinks/plugins/flutter_bugly/ios`) |
| 46 | - flutter_statusbarcolor (from `.symlinks/plugins/flutter_statusbarcolor/ios`) | 100 | - flutter_statusbarcolor (from `.symlinks/plugins/flutter_statusbarcolor/ios`) |
| 47 | - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) | 101 | - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) |
| 48 | - fluwx (from `.symlinks/plugins/fluwx/ios`) | 102 | - fluwx (from `.symlinks/plugins/fluwx/ios`) |
| 103 | +<<<<<<< HEAD | ||
| 49 | - path_provider (from `.symlinks/plugins/path_provider/ios`) | 104 | - path_provider (from `.symlinks/plugins/path_provider/ios`) |
| 50 | - path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`) | 105 | - path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`) |
| 51 | - permission_handler (from `.symlinks/plugins/permission_handler/ios`) | 106 | - permission_handler (from `.symlinks/plugins/permission_handler/ios`) |
| @@ -56,18 +111,49 @@ DEPENDENCIES: | @@ -56,18 +111,49 @@ DEPENDENCIES: | ||
| 56 | - url_launcher (from `.symlinks/plugins/url_launcher/ios`) | 111 | - url_launcher (from `.symlinks/plugins/url_launcher/ios`) |
| 57 | - url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`) | 112 | - url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`) |
| 58 | - url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`) | 113 | - url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`) |
| 114 | +======= | ||
| 115 | + - install_plugin (from `.symlinks/plugins/install_plugin/ios`) | ||
| 116 | + - package_info (from `.symlinks/plugins/package_info/ios`) | ||
| 117 | + - path_provider (from `.symlinks/plugins/path_provider/ios`) | ||
| 118 | + - permission_handler (from `.symlinks/plugins/permission_handler/ios`) | ||
| 119 | + - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`) | ||
| 120 | + - sqflite (from `.symlinks/plugins/sqflite/ios`) | ||
| 121 | + - tpns_flutter_plugin (from `.symlinks/plugins/tpns_flutter_plugin/ios`) | ||
| 122 | + - url_launcher (from `.symlinks/plugins/url_launcher/ios`) | ||
| 123 | + - webview_flutter (from `.symlinks/plugins/webview_flutter/ios`) | ||
| 124 | +>>>>>>> v1.4+ | ||
| 59 | 125 | ||
| 60 | SPEC REPOS: | 126 | SPEC REPOS: |
| 61 | trunk: | 127 | trunk: |
| 62 | - Bugly | 128 | - Bugly |
| 63 | - FMDB | 129 | - FMDB |
| 130 | +<<<<<<< HEAD | ||
| 131 | +======= | ||
| 132 | + - Reachability | ||
| 133 | + - TPNS-iOS | ||
| 134 | +>>>>>>> v1.4+ | ||
| 64 | - WechatOpenSDK | 135 | - WechatOpenSDK |
| 65 | 136 | ||
| 66 | EXTERNAL SOURCES: | 137 | EXTERNAL SOURCES: |
| 67 | audioplayers: | 138 | audioplayers: |
| 68 | :path: ".symlinks/plugins/audioplayers/ios" | 139 | :path: ".symlinks/plugins/audioplayers/ios" |
| 140 | +<<<<<<< HEAD | ||
| 141 | + Flutter: | ||
| 142 | + :path: Flutter | ||
| 143 | +======= | ||
| 144 | + connectivity: | ||
| 145 | + :path: ".symlinks/plugins/connectivity/ios" | ||
| 146 | + contacts_service: | ||
| 147 | + :path: ".symlinks/plugins/contacts_service/ios" | ||
| 148 | + device_info: | ||
| 149 | + :path: ".symlinks/plugins/device_info/ios" | ||
| 150 | + easy_contact_picker: | ||
| 151 | + :path: ".symlinks/plugins/easy_contact_picker/ios" | ||
| 69 | Flutter: | 152 | Flutter: |
| 70 | :path: Flutter | 153 | :path: Flutter |
| 154 | + flutter_app_badger: | ||
| 155 | + :path: ".symlinks/plugins/flutter_app_badger/ios" | ||
| 156 | +>>>>>>> v1.4+ | ||
| 71 | flutter_bugly: | 157 | flutter_bugly: |
| 72 | :path: ".symlinks/plugins/flutter_bugly/ios" | 158 | :path: ".symlinks/plugins/flutter_bugly/ios" |
| 73 | flutter_statusbarcolor: | 159 | flutter_statusbarcolor: |
| @@ -76,14 +162,24 @@ EXTERNAL SOURCES: | @@ -76,14 +162,24 @@ EXTERNAL SOURCES: | ||
| 76 | :path: ".symlinks/plugins/fluttertoast/ios" | 162 | :path: ".symlinks/plugins/fluttertoast/ios" |
| 77 | fluwx: | 163 | fluwx: |
| 78 | :path: ".symlinks/plugins/fluwx/ios" | 164 | :path: ".symlinks/plugins/fluwx/ios" |
| 165 | +<<<<<<< HEAD | ||
| 79 | path_provider: | 166 | path_provider: |
| 80 | :path: ".symlinks/plugins/path_provider/ios" | 167 | :path: ".symlinks/plugins/path_provider/ios" |
| 81 | path_provider_macos: | 168 | path_provider_macos: |
| 82 | :path: ".symlinks/plugins/path_provider_macos/ios" | 169 | :path: ".symlinks/plugins/path_provider_macos/ios" |
| 170 | +======= | ||
| 171 | + install_plugin: | ||
| 172 | + :path: ".symlinks/plugins/install_plugin/ios" | ||
| 173 | + package_info: | ||
| 174 | + :path: ".symlinks/plugins/package_info/ios" | ||
| 175 | + path_provider: | ||
| 176 | + :path: ".symlinks/plugins/path_provider/ios" | ||
| 177 | +>>>>>>> v1.4+ | ||
| 83 | permission_handler: | 178 | permission_handler: |
| 84 | :path: ".symlinks/plugins/permission_handler/ios" | 179 | :path: ".symlinks/plugins/permission_handler/ios" |
| 85 | shared_preferences: | 180 | shared_preferences: |
| 86 | :path: ".symlinks/plugins/shared_preferences/ios" | 181 | :path: ".symlinks/plugins/shared_preferences/ios" |
| 182 | +<<<<<<< HEAD | ||
| 87 | shared_preferences_macos: | 183 | shared_preferences_macos: |
| 88 | :path: ".symlinks/plugins/shared_preferences_macos/ios" | 184 | :path: ".symlinks/plugins/shared_preferences_macos/ios" |
| 89 | shared_preferences_web: | 185 | shared_preferences_web: |
| @@ -119,5 +215,44 @@ SPEC CHECKSUMS: | @@ -119,5 +215,44 @@ SPEC CHECKSUMS: | ||
| 119 | WechatOpenSDK: 8b3ba4239193d1112205c139c94e21934e8f369a | 215 | WechatOpenSDK: 8b3ba4239193d1112205c139c94e21934e8f369a |
| 120 | 216 | ||
| 121 | PODFILE CHECKSUM: e45c292f618eeca3034958d33b444b6e1249b55f | 217 | PODFILE CHECKSUM: e45c292f618eeca3034958d33b444b6e1249b55f |
| 218 | +======= | ||
| 219 | + sqflite: | ||
| 220 | + :path: ".symlinks/plugins/sqflite/ios" | ||
| 221 | + tpns_flutter_plugin: | ||
| 222 | + :path: ".symlinks/plugins/tpns_flutter_plugin/ios" | ||
| 223 | + url_launcher: | ||
| 224 | + :path: ".symlinks/plugins/url_launcher/ios" | ||
| 225 | + webview_flutter: | ||
| 226 | + :path: ".symlinks/plugins/webview_flutter/ios" | ||
| 227 | + | ||
| 228 | +SPEC CHECKSUMS: | ||
| 229 | + audioplayers: 84f968cea3f2deab00ec4f8ff53358b3c0b3992c | ||
| 230 | + Bugly: fd066c75c4a0eca1440f9b6a84bd37d51bfc85ac | ||
| 231 | + connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467 | ||
| 232 | + contacts_service: 849e1f84281804c8bfbec1b4c3eedcb23c5d3eca | ||
| 233 | + device_info: d7d233b645a32c40dfdc212de5cf646ca482f175 | ||
| 234 | + easy_contact_picker: 9ab9dc70e8ddde6e76a19ffc482d7bf899868730 | ||
| 235 | + Flutter: 0e3d915762c693b495b44d77113d4970485de6ec | ||
| 236 | + flutter_app_badger: 65de4d6f0c34a891df49e6cfb8a1c0496426fa68 | ||
| 237 | + flutter_bugly: c9800f4d5bc5bdc27ffdde3417a26ba44266e0c3 | ||
| 238 | + flutter_statusbarcolor: 8afb1071ed8c58be929f1e32b36c629771fd2259 | ||
| 239 | + fluttertoast: b644586ef3b16f67fae9a1f8754cef6b2d6b634b | ||
| 240 | + fluwx: 07a55ed66bf3a4961e836a2a411b02dcada32902 | ||
| 241 | + FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a | ||
| 242 | + install_plugin: a13e7ddd2bab0c701b48cd359c26d0394125b6fb | ||
| 243 | + package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 | ||
| 244 | + path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c | ||
| 245 | + permission_handler: 8278954f2382902f63f00dd8828769c0bd6d511b | ||
| 246 | + Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 | ||
| 247 | + shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d | ||
| 248 | + sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0 | ||
| 249 | + TPNS-iOS: 9b35473a4a0d07f2c2730ea1e66c6749c2b98095 | ||
| 250 | + tpns_flutter_plugin: 8dbbee157aab91a878f64d056c1383726a6c5c4d | ||
| 251 | + url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef | ||
| 252 | + webview_flutter: d2b4d6c66968ad042ad94cbb791f5b72b4678a96 | ||
| 253 | + WechatOpenSDK: 6a4d1436c15b3b5fe2a0bd383f3046010186da44 | ||
| 254 | + | ||
| 255 | +PODFILE CHECKSUM: a75497545d4391e2d394c3668e20cfb1c2bbd4aa | ||
| 256 | +>>>>>>> v1.4+ | ||
| 122 | 257 | ||
| 123 | COCOAPODS: 1.9.3 | 258 | COCOAPODS: 1.9.3 |
ios/Runner.xcodeproj/project.pbxproj
0 → 100644
| 1 | +// !$*UTF8*$! | ||
| 2 | +{ | ||
| 3 | + archiveVersion = 1; | ||
| 4 | + classes = { | ||
| 5 | + }; | ||
| 6 | + objectVersion = 46; | ||
| 7 | + objects = { | ||
| 8 | + | ||
| 9 | +/* Begin PBXBuildFile section */ | ||
| 10 | + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; | ||
| 11 | + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; | ||
| 12 | + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; | ||
| 13 | + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; | ||
| 14 | + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; | ||
| 15 | + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; | ||
| 16 | + A7F352227F0F121A53D9A543 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F11082C59A1D00E83E0934D /* Pods_Runner.framework */; }; | ||
| 17 | +/* End PBXBuildFile section */ | ||
| 18 | + | ||
| 19 | +/* Begin PBXCopyFilesBuildPhase section */ | ||
| 20 | + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { | ||
| 21 | + isa = PBXCopyFilesBuildPhase; | ||
| 22 | + buildActionMask = 2147483647; | ||
| 23 | + dstPath = ""; | ||
| 24 | + dstSubfolderSpec = 10; | ||
| 25 | + files = ( | ||
| 26 | + ); | ||
| 27 | + name = "Embed Frameworks"; | ||
| 28 | + runOnlyForDeploymentPostprocessing = 0; | ||
| 29 | + }; | ||
| 30 | +/* End PBXCopyFilesBuildPhase section */ | ||
| 31 | + | ||
| 32 | +/* Begin PBXFileReference section */ | ||
| 33 | + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; | ||
| 34 | + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; | ||
| 35 | + 22513BD076488FBD50F0303F /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; }; | ||
| 36 | + 2DCAB49DF131E02F3BAF38E1 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; }; | ||
| 37 | + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; | ||
| 38 | + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; | ||
| 39 | + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; | ||
| 40 | + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; | ||
| 41 | + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; }; | ||
| 42 | + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; }; | ||
| 43 | + 97C146EE1CF9000F007C117D /* 一键订.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "一键订.app"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
| 44 | + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; | ||
| 45 | + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; | ||
| 46 | + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; | ||
| 47 | + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | ||
| 48 | + 9F11082C59A1D00E83E0934D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | ||
| 49 | + CC19436D18202E6CAD07F931 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; }; | ||
| 50 | + EE6AF8FF2457DB720005E3B9 /* RunnerProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RunnerProfile.entitlements; sourceTree = "<group>"; }; | ||
| 51 | + EE6AF9002457DC0C0005E3B9 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; }; | ||
| 52 | +/* End PBXFileReference section */ | ||
| 53 | + | ||
| 54 | +/* Begin PBXFrameworksBuildPhase section */ | ||
| 55 | + 97C146EB1CF9000F007C117D /* Frameworks */ = { | ||
| 56 | + isa = PBXFrameworksBuildPhase; | ||
| 57 | + buildActionMask = 2147483647; | ||
| 58 | + files = ( | ||
| 59 | + A7F352227F0F121A53D9A543 /* Pods_Runner.framework in Frameworks */, | ||
| 60 | + ); | ||
| 61 | + runOnlyForDeploymentPostprocessing = 0; | ||
| 62 | + }; | ||
| 63 | +/* End PBXFrameworksBuildPhase section */ | ||
| 64 | + | ||
| 65 | +/* Begin PBXGroup section */ | ||
| 66 | + 5F6C37E5A77D3FF43D0DBCC2 /* Pods */ = { | ||
| 67 | + isa = PBXGroup; | ||
| 68 | + children = ( | ||
| 69 | + 22513BD076488FBD50F0303F /* Pods-Runner.debug.xcconfig */, | ||
| 70 | + 2DCAB49DF131E02F3BAF38E1 /* Pods-Runner.release.xcconfig */, | ||
| 71 | + CC19436D18202E6CAD07F931 /* Pods-Runner.profile.xcconfig */, | ||
| 72 | + ); | ||
| 73 | + path = Pods; | ||
| 74 | + sourceTree = "<group>"; | ||
| 75 | + }; | ||
| 76 | + 8074F3926F79FEBA9CA1E157 /* Frameworks */ = { | ||
| 77 | + isa = PBXGroup; | ||
| 78 | + children = ( | ||
| 79 | + 9F11082C59A1D00E83E0934D /* Pods_Runner.framework */, | ||
| 80 | + ); | ||
| 81 | + name = Frameworks; | ||
| 82 | + sourceTree = "<group>"; | ||
| 83 | + }; | ||
| 84 | + 9740EEB11CF90186004384FC /* Flutter */ = { | ||
| 85 | + isa = PBXGroup; | ||
| 86 | + children = ( | ||
| 87 | + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, | ||
| 88 | + 9740EEB21CF90195004384FC /* Debug.xcconfig */, | ||
| 89 | + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, | ||
| 90 | + 9740EEB31CF90195004384FC /* Generated.xcconfig */, | ||
| 91 | + ); | ||
| 92 | + name = Flutter; | ||
| 93 | + sourceTree = "<group>"; | ||
| 94 | + }; | ||
| 95 | + 97C146E51CF9000F007C117D = { | ||
| 96 | + isa = PBXGroup; | ||
| 97 | + children = ( | ||
| 98 | + 9740EEB11CF90186004384FC /* Flutter */, | ||
| 99 | + 97C146F01CF9000F007C117D /* Runner */, | ||
| 100 | + 97C146EF1CF9000F007C117D /* Products */, | ||
| 101 | + 5F6C37E5A77D3FF43D0DBCC2 /* Pods */, | ||
| 102 | + 8074F3926F79FEBA9CA1E157 /* Frameworks */, | ||
| 103 | + ); | ||
| 104 | + sourceTree = "<group>"; | ||
| 105 | + }; | ||
| 106 | + 97C146EF1CF9000F007C117D /* Products */ = { | ||
| 107 | + isa = PBXGroup; | ||
| 108 | + children = ( | ||
| 109 | + 97C146EE1CF9000F007C117D /* 一键订.app */, | ||
| 110 | + ); | ||
| 111 | + name = Products; | ||
| 112 | + sourceTree = "<group>"; | ||
| 113 | + }; | ||
| 114 | + 97C146F01CF9000F007C117D /* Runner */ = { | ||
| 115 | + isa = PBXGroup; | ||
| 116 | + children = ( | ||
| 117 | + EE6AF9002457DC0C0005E3B9 /* Runner.entitlements */, | ||
| 118 | + EE6AF8FF2457DB720005E3B9 /* RunnerProfile.entitlements */, | ||
| 119 | + 97C146FA1CF9000F007C117D /* Main.storyboard */, | ||
| 120 | + 97C146FD1CF9000F007C117D /* Assets.xcassets */, | ||
| 121 | + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, | ||
| 122 | + 97C147021CF9000F007C117D /* Info.plist */, | ||
| 123 | + 97C146F11CF9000F007C117D /* Supporting Files */, | ||
| 124 | + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, | ||
| 125 | + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, | ||
| 126 | + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, | ||
| 127 | + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, | ||
| 128 | + ); | ||
| 129 | + path = Runner; | ||
| 130 | + sourceTree = "<group>"; | ||
| 131 | + }; | ||
| 132 | + 97C146F11CF9000F007C117D /* Supporting Files */ = { | ||
| 133 | + isa = PBXGroup; | ||
| 134 | + children = ( | ||
| 135 | + ); | ||
| 136 | + name = "Supporting Files"; | ||
| 137 | + sourceTree = "<group>"; | ||
| 138 | + }; | ||
| 139 | +/* End PBXGroup section */ | ||
| 140 | + | ||
| 141 | +/* Begin PBXNativeTarget section */ | ||
| 142 | + 97C146ED1CF9000F007C117D /* Runner */ = { | ||
| 143 | + isa = PBXNativeTarget; | ||
| 144 | + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; | ||
| 145 | + buildPhases = ( | ||
| 146 | + 9C09FB22D919B3DDAB7B4DE4 /* [CP] Check Pods Manifest.lock */, | ||
| 147 | + 9740EEB61CF901F6004384FC /* Run Script */, | ||
| 148 | + 97C146EA1CF9000F007C117D /* Sources */, | ||
| 149 | + 97C146EB1CF9000F007C117D /* Frameworks */, | ||
| 150 | + 97C146EC1CF9000F007C117D /* Resources */, | ||
| 151 | + 9705A1C41CF9048500538489 /* Embed Frameworks */, | ||
| 152 | + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, | ||
| 153 | + 9B9871E299FA5648CFE77D1A /* [CP] Embed Pods Frameworks */, | ||
| 154 | + ); | ||
| 155 | + buildRules = ( | ||
| 156 | + ); | ||
| 157 | + dependencies = ( | ||
| 158 | + ); | ||
| 159 | + name = Runner; | ||
| 160 | + productName = Runner; | ||
| 161 | + productReference = 97C146EE1CF9000F007C117D /* 一键订.app */; | ||
| 162 | + productType = "com.apple.product-type.application"; | ||
| 163 | + }; | ||
| 164 | +/* End PBXNativeTarget section */ | ||
| 165 | + | ||
| 166 | +/* Begin PBXProject section */ | ||
| 167 | + 97C146E61CF9000F007C117D /* Project object */ = { | ||
| 168 | + isa = PBXProject; | ||
| 169 | + attributes = { | ||
| 170 | + LastUpgradeCheck = 1020; | ||
| 171 | + ORGANIZATIONNAME = "The Chromium Authors"; | ||
| 172 | + TargetAttributes = { | ||
| 173 | + 97C146ED1CF9000F007C117D = { | ||
| 174 | + CreatedOnToolsVersion = 7.3.1; | ||
| 175 | + DevelopmentTeam = 8J59HM8B82; | ||
| 176 | + LastSwiftMigration = 1100; | ||
| 177 | + ProvisioningStyle = Automatic; | ||
| 178 | + }; | ||
| 179 | + }; | ||
| 180 | + }; | ||
| 181 | + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; | ||
| 182 | + compatibilityVersion = "Xcode 3.2"; | ||
| 183 | + developmentRegion = en; | ||
| 184 | + hasScannedForEncodings = 0; | ||
| 185 | + knownRegions = ( | ||
| 186 | + en, | ||
| 187 | + Base, | ||
| 188 | + ); | ||
| 189 | + mainGroup = 97C146E51CF9000F007C117D; | ||
| 190 | + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; | ||
| 191 | + projectDirPath = ""; | ||
| 192 | + projectRoot = ""; | ||
| 193 | + targets = ( | ||
| 194 | + 97C146ED1CF9000F007C117D /* Runner */, | ||
| 195 | + ); | ||
| 196 | + }; | ||
| 197 | +/* End PBXProject section */ | ||
| 198 | + | ||
| 199 | +/* Begin PBXResourcesBuildPhase section */ | ||
| 200 | + 97C146EC1CF9000F007C117D /* Resources */ = { | ||
| 201 | + isa = PBXResourcesBuildPhase; | ||
| 202 | + buildActionMask = 2147483647; | ||
| 203 | + files = ( | ||
| 204 | + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, | ||
| 205 | + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, | ||
| 206 | + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, | ||
| 207 | + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, | ||
| 208 | + ); | ||
| 209 | + runOnlyForDeploymentPostprocessing = 0; | ||
| 210 | + }; | ||
| 211 | +/* End PBXResourcesBuildPhase section */ | ||
| 212 | + | ||
| 213 | +/* Begin PBXShellScriptBuildPhase section */ | ||
| 214 | + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { | ||
| 215 | + isa = PBXShellScriptBuildPhase; | ||
| 216 | + buildActionMask = 2147483647; | ||
| 217 | + files = ( | ||
| 218 | + ); | ||
| 219 | + inputPaths = ( | ||
| 220 | + ); | ||
| 221 | + name = "Thin Binary"; | ||
| 222 | + outputPaths = ( | ||
| 223 | + ); | ||
| 224 | + runOnlyForDeploymentPostprocessing = 0; | ||
| 225 | + shellPath = /bin/sh; | ||
| 226 | + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; | ||
| 227 | + }; | ||
| 228 | + 9740EEB61CF901F6004384FC /* Run Script */ = { | ||
| 229 | + isa = PBXShellScriptBuildPhase; | ||
| 230 | + buildActionMask = 2147483647; | ||
| 231 | + files = ( | ||
| 232 | + ); | ||
| 233 | + inputPaths = ( | ||
| 234 | + ); | ||
| 235 | + name = "Run Script"; | ||
| 236 | + outputPaths = ( | ||
| 237 | + ); | ||
| 238 | + runOnlyForDeploymentPostprocessing = 0; | ||
| 239 | + shellPath = /bin/sh; | ||
| 240 | + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; | ||
| 241 | + }; | ||
| 242 | + 9B9871E299FA5648CFE77D1A /* [CP] Embed Pods Frameworks */ = { | ||
| 243 | + isa = PBXShellScriptBuildPhase; | ||
| 244 | + buildActionMask = 2147483647; | ||
| 245 | + files = ( | ||
| 246 | + ); | ||
| 247 | + inputPaths = ( | ||
| 248 | + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", | ||
| 249 | + "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", | ||
| 250 | + "${PODS_ROOT}/../Flutter/Flutter.framework", | ||
| 251 | + "${BUILT_PRODUCTS_DIR}/Reachability/Reachability.framework", | ||
| 252 | + "${BUILT_PRODUCTS_DIR}/audioplayers/audioplayers.framework", | ||
| 253 | + "${BUILT_PRODUCTS_DIR}/connectivity/connectivity.framework", | ||
| 254 | + "${BUILT_PRODUCTS_DIR}/contacts_service/contacts_service.framework", | ||
| 255 | + "${BUILT_PRODUCTS_DIR}/device_info/device_info.framework", | ||
| 256 | + "${BUILT_PRODUCTS_DIR}/easy_contact_picker/easy_contact_picker.framework", | ||
| 257 | + "${BUILT_PRODUCTS_DIR}/flutter_app_badger/flutter_app_badger.framework", | ||
| 258 | + "${BUILT_PRODUCTS_DIR}/flutter_statusbarcolor/flutter_statusbarcolor.framework", | ||
| 259 | + "${BUILT_PRODUCTS_DIR}/fluttertoast/fluttertoast.framework", | ||
| 260 | + "${BUILT_PRODUCTS_DIR}/install_plugin/install_plugin.framework", | ||
| 261 | + "${BUILT_PRODUCTS_DIR}/package_info/package_info.framework", | ||
| 262 | + "${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework", | ||
| 263 | + "${BUILT_PRODUCTS_DIR}/shared_preferences/shared_preferences.framework", | ||
| 264 | + "${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework", | ||
| 265 | + "${BUILT_PRODUCTS_DIR}/url_launcher/url_launcher.framework", | ||
| 266 | + "${BUILT_PRODUCTS_DIR}/webview_flutter/webview_flutter.framework", | ||
| 267 | + ); | ||
| 268 | + name = "[CP] Embed Pods Frameworks"; | ||
| 269 | + outputPaths = ( | ||
| 270 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", | ||
| 271 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", | ||
| 272 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework", | ||
| 273 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/audioplayers.framework", | ||
| 274 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/connectivity.framework", | ||
| 275 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/contacts_service.framework", | ||
| 276 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info.framework", | ||
| 277 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/easy_contact_picker.framework", | ||
| 278 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_app_badger.framework", | ||
| 279 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_statusbarcolor.framework", | ||
| 280 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/fluttertoast.framework", | ||
| 281 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/install_plugin.framework", | ||
| 282 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info.framework", | ||
| 283 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework", | ||
| 284 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences.framework", | ||
| 285 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework", | ||
| 286 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher.framework", | ||
| 287 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/webview_flutter.framework", | ||
| 288 | + ); | ||
| 289 | + runOnlyForDeploymentPostprocessing = 0; | ||
| 290 | + shellPath = /bin/sh; | ||
| 291 | + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; | ||
| 292 | + showEnvVarsInLog = 0; | ||
| 293 | + }; | ||
| 294 | + 9C09FB22D919B3DDAB7B4DE4 /* [CP] Check Pods Manifest.lock */ = { | ||
| 295 | + isa = PBXShellScriptBuildPhase; | ||
| 296 | + buildActionMask = 2147483647; | ||
| 297 | + files = ( | ||
| 298 | + ); | ||
| 299 | + inputFileListPaths = ( | ||
| 300 | + ); | ||
| 301 | + inputPaths = ( | ||
| 302 | + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", | ||
| 303 | + "${PODS_ROOT}/Manifest.lock", | ||
| 304 | + ); | ||
| 305 | + name = "[CP] Check Pods Manifest.lock"; | ||
| 306 | + outputFileListPaths = ( | ||
| 307 | + ); | ||
| 308 | + outputPaths = ( | ||
| 309 | + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", | ||
| 310 | + ); | ||
| 311 | + runOnlyForDeploymentPostprocessing = 0; | ||
| 312 | + shellPath = /bin/sh; | ||
| 313 | + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; | ||
| 314 | + showEnvVarsInLog = 0; | ||
| 315 | + }; | ||
| 316 | +/* End PBXShellScriptBuildPhase section */ | ||
| 317 | + | ||
| 318 | +/* Begin PBXSourcesBuildPhase section */ | ||
| 319 | + 97C146EA1CF9000F007C117D /* Sources */ = { | ||
| 320 | + isa = PBXSourcesBuildPhase; | ||
| 321 | + buildActionMask = 2147483647; | ||
| 322 | + files = ( | ||
| 323 | + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, | ||
| 324 | + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, | ||
| 325 | + ); | ||
| 326 | + runOnlyForDeploymentPostprocessing = 0; | ||
| 327 | + }; | ||
| 328 | +/* End PBXSourcesBuildPhase section */ | ||
| 329 | + | ||
| 330 | +/* Begin PBXVariantGroup section */ | ||
| 331 | + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { | ||
| 332 | + isa = PBXVariantGroup; | ||
| 333 | + children = ( | ||
| 334 | + 97C146FB1CF9000F007C117D /* Base */, | ||
| 335 | + ); | ||
| 336 | + name = Main.storyboard; | ||
| 337 | + sourceTree = "<group>"; | ||
| 338 | + }; | ||
| 339 | + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { | ||
| 340 | + isa = PBXVariantGroup; | ||
| 341 | + children = ( | ||
| 342 | + 97C147001CF9000F007C117D /* Base */, | ||
| 343 | + ); | ||
| 344 | + name = LaunchScreen.storyboard; | ||
| 345 | + sourceTree = "<group>"; | ||
| 346 | + }; | ||
| 347 | +/* End PBXVariantGroup section */ | ||
| 348 | + | ||
| 349 | +/* Begin XCBuildConfiguration section */ | ||
| 350 | + 249021D3217E4FDB00AE95B9 /* Profile */ = { | ||
| 351 | + isa = XCBuildConfiguration; | ||
| 352 | + buildSettings = { | ||
| 353 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
| 354 | + CLANG_ANALYZER_NONNULL = YES; | ||
| 355 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | ||
| 356 | + CLANG_CXX_LIBRARY = "libc++"; | ||
| 357 | + CLANG_ENABLE_MODULES = YES; | ||
| 358 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
| 359 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
| 360 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
| 361 | + CLANG_WARN_COMMA = YES; | ||
| 362 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
| 363 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
| 364 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
| 365 | + CLANG_WARN_EMPTY_BODY = YES; | ||
| 366 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
| 367 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
| 368 | + CLANG_WARN_INT_CONVERSION = YES; | ||
| 369 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
| 370 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
| 371 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
| 372 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
| 373 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
| 374 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
| 375 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
| 376 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
| 377 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
| 378 | + CODE_SIGN_IDENTITY = "iPhone Developer: 亚光 盖 (78U98359LM)"; | ||
| 379 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Naji (Beijing) Technology Co., Ltd. (8J59HM8B82)"; | ||
| 380 | + COPY_PHASE_STRIP = NO; | ||
| 381 | + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||
| 382 | + ENABLE_NS_ASSERTIONS = NO; | ||
| 383 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
| 384 | + GCC_C_LANGUAGE_STANDARD = gnu99; | ||
| 385 | + GCC_NO_COMMON_BLOCKS = YES; | ||
| 386 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
| 387 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
| 388 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
| 389 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
| 390 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
| 391 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
| 392 | + IPHONEOS_DEPLOYMENT_TARGET = 8.0; | ||
| 393 | + MTL_ENABLE_DEBUG_INFO = NO; | ||
| 394 | + PROVISIONING_PROFILE_SPECIFIER = "Push Development Profile"; | ||
| 395 | + SDKROOT = iphoneos; | ||
| 396 | + SUPPORTED_PLATFORMS = iphoneos; | ||
| 397 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
| 398 | + VALIDATE_PRODUCT = YES; | ||
| 399 | + }; | ||
| 400 | + name = Profile; | ||
| 401 | + }; | ||
| 402 | + 249021D4217E4FDB00AE95B9 /* Profile */ = { | ||
| 403 | + isa = XCBuildConfiguration; | ||
| 404 | + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; | ||
| 405 | + buildSettings = { | ||
| 406 | + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
| 407 | + CLANG_ENABLE_MODULES = YES; | ||
| 408 | + CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements; | ||
| 409 | + CODE_SIGN_IDENTITY = "iPhone Developer"; | ||
| 410 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; | ||
| 411 | + CODE_SIGN_STYLE = Automatic; | ||
| 412 | + CURRENT_PROJECT_VERSION = 146; | ||
| 413 | + DEVELOPMENT_TEAM = 8J59HM8B82; | ||
| 414 | + ENABLE_BITCODE = NO; | ||
| 415 | + FRAMEWORK_SEARCH_PATHS = ( | ||
| 416 | + "$(inherited)", | ||
| 417 | + "$(PROJECT_DIR)/Flutter", | ||
| 418 | + ); | ||
| 419 | + INFOPLIST_FILE = Runner/Info.plist; | ||
| 420 | + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | ||
| 421 | + LIBRARY_SEARCH_PATHS = ( | ||
| 422 | + "$(inherited)", | ||
| 423 | + "$(PROJECT_DIR)/Flutter", | ||
| 424 | + ); | ||
| 425 | + MARKETING_VERSION = 1.4.6; | ||
| 426 | + PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine; | ||
| 427 | + PRODUCT_NAME = "一键订"; | ||
| 428 | + PROVISIONING_PROFILE_SPECIFIER = ""; | ||
| 429 | + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | ||
| 430 | + SWIFT_VERSION = 5.0; | ||
| 431 | + VERSIONING_SYSTEM = "apple-generic"; | ||
| 432 | + }; | ||
| 433 | + name = Profile; | ||
| 434 | + }; | ||
| 435 | + 97C147031CF9000F007C117D /* Debug */ = { | ||
| 436 | + isa = XCBuildConfiguration; | ||
| 437 | + buildSettings = { | ||
| 438 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
| 439 | + CLANG_ANALYZER_NONNULL = YES; | ||
| 440 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | ||
| 441 | + CLANG_CXX_LIBRARY = "libc++"; | ||
| 442 | + CLANG_ENABLE_MODULES = YES; | ||
| 443 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
| 444 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
| 445 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
| 446 | + CLANG_WARN_COMMA = YES; | ||
| 447 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
| 448 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
| 449 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
| 450 | + CLANG_WARN_EMPTY_BODY = YES; | ||
| 451 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
| 452 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
| 453 | + CLANG_WARN_INT_CONVERSION = YES; | ||
| 454 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
| 455 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
| 456 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
| 457 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
| 458 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
| 459 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
| 460 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
| 461 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
| 462 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
| 463 | + CODE_SIGN_IDENTITY = "iPhone Developer: 亚光 盖 (78U98359LM)"; | ||
| 464 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: 亚光 盖 (78U98359LM)"; | ||
| 465 | + COPY_PHASE_STRIP = NO; | ||
| 466 | + DEBUG_INFORMATION_FORMAT = dwarf; | ||
| 467 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
| 468 | + ENABLE_TESTABILITY = YES; | ||
| 469 | + GCC_C_LANGUAGE_STANDARD = gnu99; | ||
| 470 | + GCC_DYNAMIC_NO_PIC = NO; | ||
| 471 | + GCC_NO_COMMON_BLOCKS = YES; | ||
| 472 | + GCC_OPTIMIZATION_LEVEL = 0; | ||
| 473 | + GCC_PREPROCESSOR_DEFINITIONS = ( | ||
| 474 | + "DEBUG=1", | ||
| 475 | + "$(inherited)", | ||
| 476 | + ); | ||
| 477 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
| 478 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
| 479 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
| 480 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
| 481 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
| 482 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
| 483 | + IPHONEOS_DEPLOYMENT_TARGET = 8.0; | ||
| 484 | + MTL_ENABLE_DEBUG_INFO = YES; | ||
| 485 | + ONLY_ACTIVE_ARCH = YES; | ||
| 486 | + PROVISIONING_PROFILE_SPECIFIER = "Push Development Profile"; | ||
| 487 | + SDKROOT = iphoneos; | ||
| 488 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
| 489 | + }; | ||
| 490 | + name = Debug; | ||
| 491 | + }; | ||
| 492 | + 97C147041CF9000F007C117D /* Release */ = { | ||
| 493 | + isa = XCBuildConfiguration; | ||
| 494 | + buildSettings = { | ||
| 495 | + ALWAYS_SEARCH_USER_PATHS = NO; | ||
| 496 | + CLANG_ANALYZER_NONNULL = YES; | ||
| 497 | + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; | ||
| 498 | + CLANG_CXX_LIBRARY = "libc++"; | ||
| 499 | + CLANG_ENABLE_MODULES = YES; | ||
| 500 | + CLANG_ENABLE_OBJC_ARC = YES; | ||
| 501 | + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | ||
| 502 | + CLANG_WARN_BOOL_CONVERSION = YES; | ||
| 503 | + CLANG_WARN_COMMA = YES; | ||
| 504 | + CLANG_WARN_CONSTANT_CONVERSION = YES; | ||
| 505 | + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | ||
| 506 | + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | ||
| 507 | + CLANG_WARN_EMPTY_BODY = YES; | ||
| 508 | + CLANG_WARN_ENUM_CONVERSION = YES; | ||
| 509 | + CLANG_WARN_INFINITE_RECURSION = YES; | ||
| 510 | + CLANG_WARN_INT_CONVERSION = YES; | ||
| 511 | + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | ||
| 512 | + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | ||
| 513 | + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | ||
| 514 | + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | ||
| 515 | + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | ||
| 516 | + CLANG_WARN_STRICT_PROTOTYPES = YES; | ||
| 517 | + CLANG_WARN_SUSPICIOUS_MOVE = YES; | ||
| 518 | + CLANG_WARN_UNREACHABLE_CODE = YES; | ||
| 519 | + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | ||
| 520 | + CODE_SIGN_IDENTITY = "iPhone Developer: 亚光 盖 (78U98359LM)"; | ||
| 521 | + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Naji (Beijing) Technology Co., Ltd. (8J59HM8B82)"; | ||
| 522 | + COPY_PHASE_STRIP = NO; | ||
| 523 | + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | ||
| 524 | + ENABLE_NS_ASSERTIONS = NO; | ||
| 525 | + ENABLE_STRICT_OBJC_MSGSEND = YES; | ||
| 526 | + GCC_C_LANGUAGE_STANDARD = gnu99; | ||
| 527 | + GCC_NO_COMMON_BLOCKS = YES; | ||
| 528 | + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||
| 529 | + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | ||
| 530 | + GCC_WARN_UNDECLARED_SELECTOR = YES; | ||
| 531 | + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||
| 532 | + GCC_WARN_UNUSED_FUNCTION = YES; | ||
| 533 | + GCC_WARN_UNUSED_VARIABLE = YES; | ||
| 534 | + IPHONEOS_DEPLOYMENT_TARGET = 8.0; | ||
| 535 | + MTL_ENABLE_DEBUG_INFO = NO; | ||
| 536 | + PROVISIONING_PROFILE_SPECIFIER = "Push Development Profile"; | ||
| 537 | + SDKROOT = iphoneos; | ||
| 538 | + SUPPORTED_PLATFORMS = iphoneos; | ||
| 539 | + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; | ||
| 540 | + TARGETED_DEVICE_FAMILY = "1,2"; | ||
| 541 | + VALIDATE_PRODUCT = YES; | ||
| 542 | + }; | ||
| 543 | + name = Release; | ||
| 544 | + }; | ||
| 545 | + 97C147061CF9000F007C117D /* Debug */ = { | ||
| 546 | + isa = XCBuildConfiguration; | ||
| 547 | + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; | ||
| 548 | + buildSettings = { | ||
| 549 | + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
| 550 | + CLANG_ENABLE_MODULES = YES; | ||
| 551 | + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | ||
| 552 | + CODE_SIGN_IDENTITY = "iPhone Developer"; | ||
| 553 | + CODE_SIGN_STYLE = Automatic; | ||
| 554 | + CURRENT_PROJECT_VERSION = 146; | ||
| 555 | + DEVELOPMENT_TEAM = 8J59HM8B82; | ||
| 556 | + ENABLE_BITCODE = NO; | ||
| 557 | + FRAMEWORK_SEARCH_PATHS = ( | ||
| 558 | + "$(inherited)", | ||
| 559 | + "$(PROJECT_DIR)/Flutter", | ||
| 560 | + ); | ||
| 561 | + INFOPLIST_FILE = Runner/Info.plist; | ||
| 562 | + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | ||
| 563 | + LIBRARY_SEARCH_PATHS = ( | ||
| 564 | + "$(inherited)", | ||
| 565 | + "$(PROJECT_DIR)/Flutter", | ||
| 566 | + ); | ||
| 567 | + MARKETING_VERSION = 1.4.6; | ||
| 568 | + PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine; | ||
| 569 | + PRODUCT_NAME = "一键订"; | ||
| 570 | + PROVISIONING_PROFILE_SPECIFIER = ""; | ||
| 571 | + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | ||
| 572 | + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||
| 573 | + SWIFT_VERSION = 5.0; | ||
| 574 | + VERSIONING_SYSTEM = "apple-generic"; | ||
| 575 | + }; | ||
| 576 | + name = Debug; | ||
| 577 | + }; | ||
| 578 | + 97C147071CF9000F007C117D /* Release */ = { | ||
| 579 | + isa = XCBuildConfiguration; | ||
| 580 | + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; | ||
| 581 | + buildSettings = { | ||
| 582 | + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||
| 583 | + CLANG_ENABLE_MODULES = YES; | ||
| 584 | + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; | ||
| 585 | + CODE_SIGN_IDENTITY = "iPhone Developer"; | ||
| 586 | + CODE_SIGN_STYLE = Automatic; | ||
| 587 | + CURRENT_PROJECT_VERSION = 146; | ||
| 588 | + DEVELOPMENT_TEAM = 8J59HM8B82; | ||
| 589 | + ENABLE_BITCODE = NO; | ||
| 590 | + FRAMEWORK_SEARCH_PATHS = ( | ||
| 591 | + "$(inherited)", | ||
| 592 | + "$(PROJECT_DIR)/Flutter", | ||
| 593 | + ); | ||
| 594 | + INFOPLIST_FILE = Runner/Info.plist; | ||
| 595 | + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; | ||
| 596 | + LIBRARY_SEARCH_PATHS = ( | ||
| 597 | + "$(inherited)", | ||
| 598 | + "$(PROJECT_DIR)/Flutter", | ||
| 599 | + ); | ||
| 600 | + MARKETING_VERSION = 1.4.6; | ||
| 601 | + PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine; | ||
| 602 | + PRODUCT_NAME = "一键订"; | ||
| 603 | + PROVISIONING_PROFILE_SPECIFIER = ""; | ||
| 604 | + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | ||
| 605 | + SWIFT_VERSION = 5.0; | ||
| 606 | + VERSIONING_SYSTEM = "apple-generic"; | ||
| 607 | + }; | ||
| 608 | + name = Release; | ||
| 609 | + }; | ||
| 610 | +/* End XCBuildConfiguration section */ | ||
| 611 | + | ||
| 612 | +/* Begin XCConfigurationList section */ | ||
| 613 | + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { | ||
| 614 | + isa = XCConfigurationList; | ||
| 615 | + buildConfigurations = ( | ||
| 616 | + 97C147031CF9000F007C117D /* Debug */, | ||
| 617 | + 97C147041CF9000F007C117D /* Release */, | ||
| 618 | + 249021D3217E4FDB00AE95B9 /* Profile */, | ||
| 619 | + ); | ||
| 620 | + defaultConfigurationIsVisible = 0; | ||
| 621 | + defaultConfigurationName = Release; | ||
| 622 | + }; | ||
| 623 | + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { | ||
| 624 | + isa = XCConfigurationList; | ||
| 625 | + buildConfigurations = ( | ||
| 626 | + 97C147061CF9000F007C117D /* Debug */, | ||
| 627 | + 97C147071CF9000F007C117D /* Release */, | ||
| 628 | + 249021D4217E4FDB00AE95B9 /* Profile */, | ||
| 629 | + ); | ||
| 630 | + defaultConfigurationIsVisible = 0; | ||
| 631 | + defaultConfigurationName = Release; | ||
| 632 | + }; | ||
| 633 | +/* End XCConfigurationList section */ | ||
| 634 | + }; | ||
| 635 | + rootObject = 97C146E61CF9000F007C117D /* Project object */; | ||
| 636 | +} |
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<Scheme | ||
| 3 | + LastUpgradeVersion = "1020" | ||
| 4 | + version = "1.3"> | ||
| 5 | + <BuildAction | ||
| 6 | + parallelizeBuildables = "YES" | ||
| 7 | + buildImplicitDependencies = "YES"> | ||
| 8 | + <BuildActionEntries> | ||
| 9 | + <BuildActionEntry | ||
| 10 | + buildForTesting = "YES" | ||
| 11 | + buildForRunning = "YES" | ||
| 12 | + buildForProfiling = "YES" | ||
| 13 | + buildForArchiving = "YES" | ||
| 14 | + buildForAnalyzing = "YES"> | ||
| 15 | + <BuildableReference | ||
| 16 | + BuildableIdentifier = "primary" | ||
| 17 | + BlueprintIdentifier = "97C146ED1CF9000F007C117D" | ||
| 18 | + BuildableName = "一键订.app" | ||
| 19 | + BlueprintName = "Runner" | ||
| 20 | + ReferencedContainer = "container:Runner.xcodeproj"> | ||
| 21 | + </BuildableReference> | ||
| 22 | + </BuildActionEntry> | ||
| 23 | + </BuildActionEntries> | ||
| 24 | + </BuildAction> | ||
| 25 | + <TestAction | ||
| 26 | + buildConfiguration = "Debug" | ||
| 27 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
| 28 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
| 29 | + shouldUseLaunchSchemeArgsEnv = "YES"> | ||
| 30 | + <MacroExpansion> | ||
| 31 | + <BuildableReference | ||
| 32 | + BuildableIdentifier = "primary" | ||
| 33 | + BlueprintIdentifier = "97C146ED1CF9000F007C117D" | ||
| 34 | + BuildableName = "一键订.app" | ||
| 35 | + BlueprintName = "Runner" | ||
| 36 | + ReferencedContainer = "container:Runner.xcodeproj"> | ||
| 37 | + </BuildableReference> | ||
| 38 | + </MacroExpansion> | ||
| 39 | + <Testables> | ||
| 40 | + </Testables> | ||
| 41 | + </TestAction> | ||
| 42 | + <LaunchAction | ||
| 43 | + buildConfiguration = "Debug" | ||
| 44 | + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" | ||
| 45 | + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" | ||
| 46 | + launchStyle = "0" | ||
| 47 | + useCustomWorkingDirectory = "NO" | ||
| 48 | + ignoresPersistentStateOnLaunch = "NO" | ||
| 49 | + debugDocumentVersioning = "YES" | ||
| 50 | + debugServiceExtension = "internal" | ||
| 51 | + allowLocationSimulation = "YES"> | ||
| 52 | + <BuildableProductRunnable | ||
| 53 | + runnableDebuggingMode = "0"> | ||
| 54 | + <BuildableReference | ||
| 55 | + BuildableIdentifier = "primary" | ||
| 56 | + BlueprintIdentifier = "97C146ED1CF9000F007C117D" | ||
| 57 | + BuildableName = "一键订.app" | ||
| 58 | + BlueprintName = "Runner" | ||
| 59 | + ReferencedContainer = "container:Runner.xcodeproj"> | ||
| 60 | + </BuildableReference> | ||
| 61 | + </BuildableProductRunnable> | ||
| 62 | + </LaunchAction> | ||
| 63 | + <ProfileAction | ||
| 64 | + buildConfiguration = "Profile" | ||
| 65 | + shouldUseLaunchSchemeArgsEnv = "YES" | ||
| 66 | + savedToolIdentifier = "" | ||
| 67 | + useCustomWorkingDirectory = "NO" | ||
| 68 | + debugDocumentVersioning = "YES"> | ||
| 69 | + <BuildableProductRunnable | ||
| 70 | + runnableDebuggingMode = "0"> | ||
| 71 | + <BuildableReference | ||
| 72 | + BuildableIdentifier = "primary" | ||
| 73 | + BlueprintIdentifier = "97C146ED1CF9000F007C117D" | ||
| 74 | + BuildableName = "一键订.app" | ||
| 75 | + BlueprintName = "Runner" | ||
| 76 | + ReferencedContainer = "container:Runner.xcodeproj"> | ||
| 77 | + </BuildableReference> | ||
| 78 | + </BuildableProductRunnable> | ||
| 79 | + </ProfileAction> | ||
| 80 | + <AnalyzeAction | ||
| 81 | + buildConfiguration = "Debug"> | ||
| 82 | + </AnalyzeAction> | ||
| 83 | + <ArchiveAction | ||
| 84 | + buildConfiguration = "Release" | ||
| 85 | + revealArchiveInOrganizer = "YES"> | ||
| 86 | + </ArchiveAction> | ||
| 87 | +</Scheme> |
ios/Runner/AppDelegate.swift
0 → 100644
| 1 | +import UIKit | ||
| 2 | +import Flutter | ||
| 3 | + | ||
| 4 | +@UIApplicationMain | ||
| 5 | +@objc class AppDelegate: FlutterAppDelegate { | ||
| 6 | + override func application( | ||
| 7 | + _ application: UIApplication, | ||
| 8 | + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? | ||
| 9 | + ) -> Bool { | ||
| 10 | + let controller = self.window.rootViewController as! FlutterViewController | ||
| 11 | + let channel = FlutterMethodChannel.init(name: "com.naji/book", binaryMessenger: controller as! FlutterBinaryMessenger) | ||
| 12 | + channel.setMethodCallHandler { (call, result) in | ||
| 13 | + if call.method == "getIntent" { | ||
| 14 | + // let para = call.arguments | ||
| 15 | + // print(para!) | ||
| 16 | + let userInfo = launchOptions?[UIApplication.LaunchOptionsKey.remoteNotification]; | ||
| 17 | + | ||
| 18 | + result(userInfo); | ||
| 19 | + }else{ | ||
| 20 | + result(FlutterMethodNotImplemented) | ||
| 21 | + } | ||
| 22 | + } | ||
| 23 | + GeneratedPluginRegistrant.register(with: self) | ||
| 24 | + return super.application(application, didFinishLaunchingWithOptions: launchOptions) | ||
| 25 | + } | ||
| 26 | +} |
137 KB
866 Bytes
1.82 KB
2.65 KB
1.27 KB
2.61 KB
4.1 KB
1.82 KB
6.36 KB
2.65 KB
6.36 KB
3.47 KB
8.97 KB
10.4 KB
ios/Runner/Info.plist
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
| 3 | +<plist version="1.0"> | ||
| 4 | +<dict> | ||
| 5 | + <key>CFBundleDevelopmentRegion</key> | ||
| 6 | + <string>$(DEVELOPMENT_LANGUAGE)</string> | ||
| 7 | + <key>CFBundleDisplayName</key> | ||
| 8 | + <string>$(PRODUCT_NAME)</string> | ||
| 9 | + <key>CFBundleExecutable</key> | ||
| 10 | + <string>$(EXECUTABLE_NAME)</string> | ||
| 11 | + <key>CFBundleIdentifier</key> | ||
| 12 | + <string>com.naji.reserveLine</string> | ||
| 13 | + <key>CFBundleInfoDictionaryVersion</key> | ||
| 14 | + <string>6.0</string> | ||
| 15 | + <key>CFBundleName</key> | ||
| 16 | + <string>Runner</string> | ||
| 17 | + <key>CFBundlePackageType</key> | ||
| 18 | + <string>APPL</string> | ||
| 19 | + <key>CFBundleShortVersionString</key> | ||
| 20 | + <string>$(MARKETING_VERSION)</string> | ||
| 21 | + <key>CFBundleSignature</key> | ||
| 22 | + <string>????</string> | ||
| 23 | + <key>CFBundleURLTypes</key> | ||
| 24 | + <array> | ||
| 25 | + <dict> | ||
| 26 | + <key>CFBundleTypeRole</key> | ||
| 27 | + <string>Editor</string> | ||
| 28 | + <key>CFBundleURLName</key> | ||
| 29 | + <string>weixin</string> | ||
| 30 | + <key>CFBundleURLSchemes</key> | ||
| 31 | + <array> | ||
| 32 | + <string>wx85aa3cdd0f791e65</string> | ||
| 33 | + </array> | ||
| 34 | + </dict> | ||
| 35 | + </array> | ||
| 36 | + <key>CFBundleVersion</key> | ||
| 37 | + <string>$(CURRENT_PROJECT_VERSION)</string> | ||
| 38 | + <key>LSApplicationCategoryType</key> | ||
| 39 | + <string></string> | ||
| 40 | + <key>LSApplicationQueriesSchemes</key> | ||
| 41 | + <array> | ||
| 42 | + <string>weixinULAPI</string> | ||
| 43 | + <string>wechat</string> | ||
| 44 | + <string>weixin</string> | ||
| 45 | + </array> | ||
| 46 | + <key>LSRequiresIPhoneOS</key> | ||
| 47 | + <true/> | ||
| 48 | + <key>NSAppTransportSecurity</key> | ||
| 49 | + <dict> | ||
| 50 | + <key>NSAllowsArbitraryLoads</key> | ||
| 51 | + <true/> | ||
| 52 | + </dict> | ||
| 53 | + <key>NSAppleMusicUsageDescription</key> | ||
| 54 | + <string>需要您的同意,APP才能访问媒体资料库</string> | ||
| 55 | + <key>NSCalendarsUsageDescription</key> | ||
| 56 | + <string>需要您的同意,APP才能访问日历</string> | ||
| 57 | + <key>NSContactsUsageDescription</key> | ||
| 58 | + <string>需要您的同意,APP才能访问通讯录</string> | ||
| 59 | + <key>NSLocationAlwaysUsageDescription</key> | ||
| 60 | + <string>需要您的同意,APP才能始终访问位置</string> | ||
| 61 | + <key>NSLocationWhenInUseUsageDescription</key> | ||
| 62 | + <string>需要您的同意,APP才能在使用期间访问位置</string> | ||
| 63 | + <key>NSMotionUsageDescription</key> | ||
| 64 | + <string>需要您的同意,APP才能访问运动与健身</string> | ||
| 65 | + <key>NSSpeechRecognitionUsageDescription</key> | ||
| 66 | + <string>需要您的同意,APP才能访问语音识别</string> | ||
| 67 | + <key>UILaunchStoryboardName</key> | ||
| 68 | + <string>LaunchScreen</string> | ||
| 69 | + <key>UIMainStoryboardFile</key> | ||
| 70 | + <string>Main</string> | ||
| 71 | + <key>UISupportedInterfaceOrientations</key> | ||
| 72 | + <array> | ||
| 73 | + <string>UIInterfaceOrientationPortrait</string> | ||
| 74 | + <string>UIInterfaceOrientationLandscapeRight</string> | ||
| 75 | + </array> | ||
| 76 | + <key>UISupportedInterfaceOrientations~ipad</key> | ||
| 77 | + <array> | ||
| 78 | + <string>UIInterfaceOrientationPortrait</string> | ||
| 79 | + <string>UIInterfaceOrientationPortraitUpsideDown</string> | ||
| 80 | + <string>UIInterfaceOrientationLandscapeLeft</string> | ||
| 81 | + <string>UIInterfaceOrientationLandscapeRight</string> | ||
| 82 | + </array> | ||
| 83 | + <key>UIViewControllerBasedStatusBarAppearance</key> | ||
| 84 | + <false/> | ||
| 85 | + <key>XG_ACCESS_ID</key> | ||
| 86 | + <string>1600012876</string> | ||
| 87 | + <key>XG_ACCESS_KEY</key> | ||
| 88 | + <string>INUIMFK21WGH</string> | ||
| 89 | + <key>io.flutter.embedded_views_preview</key> | ||
| 90 | + <true/> | ||
| 91 | +</dict> | ||
| 92 | +</plist> |
ios/Runner/Runner.entitlements
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
| 3 | +<plist version="1.0"> | ||
| 4 | +<dict> | ||
| 5 | + <key>aps-environment</key> | ||
| 6 | + <string>development</string> | ||
| 7 | + <key>com.apple.developer.associated-domains</key> | ||
| 8 | + <array> | ||
| 9 | + <string>applinks:xt04.colorcun.com</string> | ||
| 10 | + </array> | ||
| 11 | +</dict> | ||
| 12 | +</plist> |
ios/Runner/RunnerProfile.entitlements
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
| 3 | +<plist version="1.0"> | ||
| 4 | +<dict> | ||
| 5 | + <key>aps-environment</key> | ||
| 6 | + <string>development</string> | ||
| 7 | + <key>com.apple.developer.associated-domains</key> | ||
| 8 | + <array> | ||
| 9 | + <string>applinks:xt04.colorcun.com</string> | ||
| 10 | + </array> | ||
| 11 | +</dict> | ||
| 12 | +</plist> |
| 1 | import 'package:fluro/fluro.dart'; | 1 | import 'package:fluro/fluro.dart'; |
| 2 | -import 'package:flutter/material.dart'; | 2 | +import 'package:flutter/material.dart' hide Router; |
| 3 | import 'package:get_it/get_it.dart'; | 3 | import 'package:get_it/get_it.dart'; |
| 4 | import 'package:shared_preferences/shared_preferences.dart'; | 4 | import 'package:shared_preferences/shared_preferences.dart'; |
| 5 | 5 | ||
| @@ -23,4 +23,4 @@ class App{ | @@ -23,4 +23,4 @@ class App{ | ||
| 23 | getIt.registerSingleton(NavigateService()); | 23 | getIt.registerSingleton(NavigateService()); |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | -} | ||
| 26 | +} |
lib/constant/error.dart
0 → 100644
lib/constant/state.dart
0 → 100644
| 1 | +import 'dart:io'; | ||
| 2 | + | ||
| 3 | +import 'package:common_utils/common_utils.dart'; | ||
| 1 | import 'package:dio/dio.dart'; | 4 | import 'package:dio/dio.dart'; |
| 2 | import 'package:fluro/fluro.dart'; | 5 | import 'package:fluro/fluro.dart'; |
| 3 | -import 'package:flutter/material.dart'; | 6 | +import 'package:flutter/material.dart' hide Router; |
| 7 | +import 'package:flutter_bugly/flutter_bugly.dart'; | ||
| 4 | import 'package:flutter_easyrefresh/ball_pulse_footer.dart'; | 8 | import 'package:flutter_easyrefresh/ball_pulse_footer.dart'; |
| 5 | import 'package:flutter_easyrefresh/easy_refresh.dart'; | 9 | import 'package:flutter_easyrefresh/easy_refresh.dart'; |
| 6 | import 'package:flutter_easyrefresh/material_header.dart'; | 10 | import 'package:flutter_easyrefresh/material_header.dart'; |
| 7 | import 'package:fluwx/fluwx.dart'; | 11 | import 'package:fluwx/fluwx.dart'; |
| 12 | +import 'package:one_key/pages/detail/handle_online_page.dart'; | ||
| 8 | import 'package:one_key/provider/message_dialog_model.dart'; | 13 | import 'package:one_key/provider/message_dialog_model.dart'; |
| 9 | import 'package:intl/date_symbol_data_local.dart'; | 14 | import 'package:intl/date_symbol_data_local.dart'; |
| 15 | +import 'package:one_key/provider/tools.dart'; | ||
| 16 | +import 'package:one_key/utils/navigator_util.dart'; | ||
| 10 | import 'package:one_key/utils/utils.dart'; | 17 | import 'package:one_key/utils/utils.dart'; |
| 11 | import 'package:provider/provider.dart'; | 18 | import 'package:provider/provider.dart'; |
| 19 | +import 'package:tpns_flutter_plugin/tpns_flutter_plugin.dart'; | ||
| 12 | 20 | ||
| 13 | import 'app.dart'; | 21 | import 'app.dart'; |
| 14 | import 'net/dio_util.dart'; | 22 | import 'net/dio_util.dart'; |
| @@ -17,28 +25,36 @@ import 'pages/login/login_page.dart'; | @@ -17,28 +25,36 @@ import 'pages/login/login_page.dart'; | ||
| 17 | import 'provider/user_model.dart'; | 25 | import 'provider/user_model.dart'; |
| 18 | import 'route/navigate_service.dart'; | 26 | import 'route/navigate_service.dart'; |
| 19 | import 'route/routes.dart'; | 27 | import 'route/routes.dart'; |
| 20 | -import 'utils/log_util.dart'; | ||
| 21 | import 'package:flutter/services.dart'; | 28 | import 'package:flutter/services.dart'; |
| 22 | 29 | ||
| 23 | Future<void> main() async { | 30 | Future<void> main() async { |
| 24 | - Router router = Router(); | ||
| 25 | - Routes.configureRoutes(router); | ||
| 26 | - App.router = router; | ||
| 27 | - App.setupLocator(); | ||
| 28 | - LogUtil.init(isDebug: true, tag: 'ONE_KEY'); | ||
| 29 | - Provider.debugCheckInvalidValueType = null; | ||
| 30 | - await initializeDateFormatting(); | ||
| 31 | - runApp(MultiProvider( | ||
| 32 | - providers: [ | ||
| 33 | - ChangeNotifierProvider<UserModel>( | ||
| 34 | - create: (_) => UserModel(), | ||
| 35 | - ), | ||
| 36 | - ChangeNotifierProvider<MessageDialogModel>( | ||
| 37 | - create: (_) => MessageDialogModel()..init(), | ||
| 38 | - ) | ||
| 39 | - ], | ||
| 40 | - child: MyApp(), | ||
| 41 | - )); | 31 | + FlutterBugly.postCatchedException(() async { |
| 32 | + WidgetsFlutterBinding.ensureInitialized(); | ||
| 33 | + Router router = Router(); | ||
| 34 | + Routes.configureRoutes(router); | ||
| 35 | + App.router = router; | ||
| 36 | + App.setupLocator(); | ||
| 37 | + LogUtil.init(isDebug: false, tag: 'ONE_KEY'); | ||
| 38 | + Provider.debugCheckInvalidValueType = null; | ||
| 39 | + await initializeDateFormatting(); | ||
| 40 | + SystemChrome.setPreferredOrientations( | ||
| 41 | + [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]) | ||
| 42 | + .then((_) { | ||
| 43 | + runApp(MultiProvider( | ||
| 44 | + providers: [ | ||
| 45 | + ChangeNotifierProvider<UserModel>( | ||
| 46 | + create: (_) => UserModel(), | ||
| 47 | + ), | ||
| 48 | + ChangeNotifierProvider<MessageDialogModel>( | ||
| 49 | + create: (_) => MessageDialogModel()..init(), | ||
| 50 | + ), | ||
| 51 | + ], | ||
| 52 | + child: MyApp(), | ||
| 53 | + )); | ||
| 54 | + }); | ||
| 55 | + | ||
| 56 | + FlutterBugly.init(androidAppId: "f71a313f42", iOSAppId: "3089e4587e"); | ||
| 57 | + }); | ||
| 42 | } | 58 | } |
| 43 | 59 | ||
| 44 | class MyApp extends StatefulWidget { | 60 | class MyApp extends StatefulWidget { |
| @@ -50,6 +66,8 @@ class MyApp extends StatefulWidget { | @@ -50,6 +66,8 @@ class MyApp extends StatefulWidget { | ||
| 50 | } | 66 | } |
| 51 | 67 | ||
| 52 | class MyAppState extends State<MyApp> { | 68 | class MyAppState extends State<MyApp> { |
| 69 | + int xgCount = 1; //注册信鸽次数,最多5次 | ||
| 70 | + | ||
| 53 | @override | 71 | @override |
| 54 | void initState() { | 72 | void initState() { |
| 55 | // TODO: implement initState | 73 | // TODO: implement initState |
| @@ -73,6 +91,7 @@ class MyAppState extends State<MyApp> { | @@ -73,6 +91,7 @@ class MyAppState extends State<MyApp> { | ||
| 73 | LogUtil.v("is installed $result"); | 91 | LogUtil.v("is installed $result"); |
| 74 | } | 92 | } |
| 75 | 93 | ||
| 94 | +//初始化dio | ||
| 76 | initDio() { | 95 | initDio() { |
| 77 | DioUtil.openDebug(); | 96 | DioUtil.openDebug(); |
| 78 | Options options = DioUtil.getDefOptions(); | 97 | Options options = DioUtil.getDefOptions(); |
| @@ -13,7 +13,7 @@ class Manager{ | @@ -13,7 +13,7 @@ class Manager{ | ||
| 13 | } | 13 | } |
| 14 | 14 | ||
| 15 | String get userName{ | 15 | String get userName{ |
| 16 | - return nick_name.isEmpty?user_name:nick_name; | 16 | + return (nick_name==null||nick_name.isEmpty)?user_name:nick_name; |
| 17 | } | 17 | } |
| 18 | 18 | ||
| 19 | factory Manager.fromJson(Map<String,dynamic> json)=> | 19 | factory Manager.fromJson(Map<String,dynamic> json)=> |
| 1 | import 'package:json_annotation/json_annotation.dart'; | 1 | import 'package:json_annotation/json_annotation.dart'; |
| 2 | +import 'package:one_key/utils/utils.dart'; | ||
| 2 | 3 | ||
| 3 | part 'message.g.dart'; | 4 | part 'message.g.dart'; |
| 4 | 5 | ||
| @@ -7,7 +8,7 @@ class Message { | @@ -7,7 +8,7 @@ class Message { | ||
| 7 | Message(); | 8 | Message(); |
| 8 | 9 | ||
| 9 | String id; | 10 | String id; |
| 10 | - String message_type; | 11 | + dynamic message_type; |
| 11 | String handle_time;//10在线预订 11取消预订 | 12 | String handle_time;//10在线预订 11取消预订 |
| 12 | String read_time; | 13 | String read_time; |
| 13 | String is_read; | 14 | String is_read; |
| @@ -26,20 +27,38 @@ class Message { | @@ -26,20 +27,38 @@ class Message { | ||
| 26 | String get rnameStr{ | 27 | String get rnameStr{ |
| 27 | switch(sex.toString()){ | 28 | switch(sex.toString()){ |
| 28 | case "1"://先生 | 29 | case "1"://先生 |
| 30 | + case "男": | ||
| 29 | return rname+"先生"; | 31 | return rname+"先生"; |
| 30 | case "2"://女士 | 32 | case "2"://女士 |
| 33 | + case "女": | ||
| 31 | return rname+"女士"; | 34 | return rname+"女士"; |
| 32 | case "3"://公司 | 35 | case "3"://公司 |
| 36 | + case "公司": | ||
| 33 | return rname+"公司"; | 37 | return rname+"公司"; |
| 34 | } | 38 | } |
| 35 | } | 39 | } |
| 36 | 40 | ||
| 41 | + String get ddateStr{ | ||
| 42 | + DateTime dateTime=DateTime.fromMillisecondsSinceEpoch(int.parse(ddate_long.toString())*1000); | ||
| 43 | + String ymd=dateTime.year.toString()+"/"+Utils.addZeroNumber(dateTime.month)+"/"+Utils.addZeroNumber(dateTime.day); | ||
| 44 | + switch(ddate_solt){ | ||
| 45 | + case "1"://早餐 | ||
| 46 | + return ymd+" 早餐"; | ||
| 47 | + case "2"://午餐 | ||
| 48 | + return ymd+" 午餐"; | ||
| 49 | + case "3"://晚餐 | ||
| 50 | + return ymd+" 晚餐"; | ||
| 51 | + default: | ||
| 52 | + return ymd; | ||
| 53 | + } | ||
| 54 | + } | ||
| 55 | + | ||
| 37 | String get cdateStr{ | 56 | String get cdateStr{ |
| 38 | DateTime dateTime=DateTime.fromMillisecondsSinceEpoch(int.parse(cdate.toString())*1000); | 57 | DateTime dateTime=DateTime.fromMillisecondsSinceEpoch(int.parse(cdate.toString())*1000); |
| 39 | if((DateTime.now().difference(dateTime)).inMilliseconds<60000){ | 58 | if((DateTime.now().difference(dateTime)).inMilliseconds<60000){ |
| 40 | return "刚刚"; | 59 | return "刚刚"; |
| 41 | }else{ | 60 | }else{ |
| 42 | - return dateTime.year.toString()+"/"+(dateTime.month<10?"0"+dateTime.month.toString():dateTime.month.toString())+"/"+(dateTime.day<10?"0"+dateTime.day.toString():dateTime.day.toString()); | 61 | + return dateTime.year.toString()+"/"+Utils.addZeroNumber(dateTime.month)+"/"+Utils.addZeroNumber(dateTime.day)+" "+Utils.addZeroNumber(dateTime.hour)+":"+Utils.addZeroNumber(dateTime.minute); |
| 43 | } | 62 | } |
| 44 | } | 63 | } |
| 45 | 64 |
| @@ -9,7 +9,7 @@ part of 'message.dart'; | @@ -9,7 +9,7 @@ part of 'message.dart'; | ||
| 9 | Message _$MessageFromJson(Map<String, dynamic> json) { | 9 | Message _$MessageFromJson(Map<String, dynamic> json) { |
| 10 | return Message() | 10 | return Message() |
| 11 | ..id = json['id'] as String | 11 | ..id = json['id'] as String |
| 12 | - ..message_type = json['message_type'] as String | 12 | + ..message_type = json['message_type'] |
| 13 | ..handle_time = json['handle_time'] as String | 13 | ..handle_time = json['handle_time'] as String |
| 14 | ..read_time = json['read_time'] as String | 14 | ..read_time = json['read_time'] as String |
| 15 | ..is_read = json['is_read'] as String | 15 | ..is_read = json['is_read'] as String |
| 1 | import 'dart:convert'; | 1 | import 'dart:convert'; |
| 2 | 2 | ||
| 3 | import 'package:json_annotation/json_annotation.dart'; | 3 | import 'package:json_annotation/json_annotation.dart'; |
| 4 | -import 'package:one_key/utils/log_util.dart'; | ||
| 5 | import 'package:one_key/utils/utils.dart'; | 4 | import 'package:one_key/utils/utils.dart'; |
| 6 | part 'notebook.g.dart'; | 5 | part 'notebook.g.dart'; |
| 7 | 6 |
| 1 | +import 'package:common_utils/common_utils.dart'; | ||
| 2 | +import 'package:flutter/cupertino.dart'; | ||
| 1 | import 'package:json_annotation/json_annotation.dart'; | 3 | import 'package:json_annotation/json_annotation.dart'; |
| 4 | +import 'package:one_key/models/table.dart'; | ||
| 5 | +import 'package:one_key/provider/user_model.dart'; | ||
| 2 | import 'package:one_key/utils/utils.dart'; | 6 | import 'package:one_key/utils/utils.dart'; |
| 7 | +import 'package:provider/provider.dart'; | ||
| 3 | import 'dart:convert'; | 8 | import 'dart:convert'; |
| 4 | import "table.dart"; | 9 | import "table.dart"; |
| 10 | +import 'package:one_key/models/table.dart' as t; | ||
| 5 | part 'notebook_detail.g.dart'; | 11 | part 'notebook_detail.g.dart'; |
| 6 | 12 | ||
| 7 | @JsonSerializable() | 13 | @JsonSerializable() |
| 8 | class NotebookDetail { | 14 | class NotebookDetail { |
| 9 | - NotebookDetail(); | ||
| 10 | - | ||
| 11 | - String id; | ||
| 12 | - String tableinfo; | ||
| 13 | - String pnum; | ||
| 14 | - String rname; | ||
| 15 | - String sex; | ||
| 16 | - String phone; | ||
| 17 | - String cusdem; | ||
| 18 | - String cusman;//客户经理 | ||
| 19 | - String ddate; | ||
| 20 | - String is_set_ddate; | ||
| 21 | - String ddate_solt; | ||
| 22 | - String status="0";//订单状态 0:待确认,1:已定座,2:确认到店,3:用餐完成,4:取消预订,5:安排包间,6拒绝订单 | ||
| 23 | - String action; | ||
| 24 | - String type;//0 内部订单 1 在线预订 | ||
| 25 | - String note_name; | ||
| 26 | - String channel; | ||
| 27 | - String cdate; | ||
| 28 | - List<Table> demands;//需求桌位 | ||
| 29 | - List<Table> tables;//预订桌位 | ||
| 30 | - Cancel cancel; | ||
| 31 | - | ||
| 32 | - String get statuImgAssets{ | ||
| 33 | - switch(status){ | ||
| 34 | - case "0": | ||
| 35 | - return "assets/status_undeal.png"; | ||
| 36 | - case "1": | ||
| 37 | - case "5": | ||
| 38 | - return "assets/statu_booked.png"; | ||
| 39 | - case "2": | ||
| 40 | - return "assets/statu_reached.png"; | ||
| 41 | - case "3": | ||
| 42 | - return "assets/statu_finished.png"; | ||
| 43 | - case "4": | ||
| 44 | - return "assets/statu_canceled.png"; | ||
| 45 | - case "6": | ||
| 46 | - return "assets/statu_refuse.png"; | ||
| 47 | - } | 15 | + NotebookDetail(); |
| 16 | + | ||
| 17 | + NotebookDetail.def(BuildContext context){ | ||
| 18 | + id="-1"; | ||
| 19 | + pnum="6"; | ||
| 20 | + rname=""; | ||
| 21 | + sex="1"; | ||
| 22 | + phone=""; | ||
| 23 | + cusdem=""; | ||
| 24 | + type="0"; | ||
| 25 | + ddate=(DateTime.now().millisecondsSinceEpoch/1000).floor().toString(); | ||
| 26 | + ddate_solt=defDdateSolt(context); | ||
| 27 | + is_set_ddate="0"; | ||
| 28 | + tables=[]; | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + NotebookDetail.fromTableManager(String ddateStr,String ddatesolt,t.Table table){ | ||
| 32 | + id="-1"; | ||
| 33 | + pnum="6"; | ||
| 34 | + rname=""; | ||
| 35 | + sex="1"; | ||
| 36 | + phone=""; | ||
| 37 | + cusdem=""; | ||
| 38 | + type="0"; | ||
| 39 | + ddate=ddateStr; | ||
| 40 | + ddate_solt=ddatesolt; | ||
| 41 | + is_set_ddate="1"; | ||
| 42 | + tables=[table]; | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + String defDdateSolt(BuildContext context){ | ||
| 46 | + int millsNow=DateTime.now().millisecondsSinceEpoch; | ||
| 47 | + UserModel userModel=Provider.of<UserModel>(context,listen: false); | ||
| 48 | + String morning=userModel.user.morning==""?"00:00-00:00":userModel.user.morning; | ||
| 49 | + String noon=userModel.user.noon==""?"00:00-00:00":userModel.user.noon; | ||
| 50 | + String night=userModel.user.night==""?"00:00-00:00":userModel.user.night; | ||
| 51 | + String endMorning=morning.split("-")[1]; | ||
| 52 | + String endNoon=noon.split("-")[1]; | ||
| 53 | + String endNight=night.split("-")[1]; | ||
| 54 | + int endMorningMills=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(DateTime.now()).replaceRange(11,19, "$endMorning:00")); | ||
| 55 | + int endNoonMills=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(DateTime.now()).replaceRange(11,19, "$endNoon:00")); | ||
| 56 | + int endNightMills=DateUtil.getDateMsByTimeStr(DateUtil.formatDate(DateTime.now()).replaceRange(11,19, "$endNight:00")); | ||
| 57 | + if(millsNow<=endMorningMills){ | ||
| 58 | + return "1"; | ||
| 59 | + }else if(millsNow<=endNoonMills){ | ||
| 60 | + return "2"; | ||
| 61 | + }else if(millsNow<=endNightMills){ | ||
| 62 | + return "3"; | ||
| 63 | + } | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + | ||
| 67 | + String id; | ||
| 68 | + String abolition; | ||
| 69 | + String tableinfo; | ||
| 70 | + String pnum; | ||
| 71 | + String rname; | ||
| 72 | + String sex; | ||
| 73 | + String phone; | ||
| 74 | + String cusdem; | ||
| 75 | + String cusman; //客户经理 | ||
| 76 | + String ddate; | ||
| 77 | + String is_set_ddate; | ||
| 78 | + String ddate_solt; | ||
| 79 | + String status = "0"; //订单状态 0:待确认,1:已定座,2:确认到店,3:用餐完成,4:取消预订,5:安排包间,6拒绝订单 | ||
| 80 | + String action; | ||
| 81 | + String type; //0 内部订单 1 在线预订 | ||
| 82 | + String note_name; | ||
| 83 | + String channel; | ||
| 84 | + String cdate; | ||
| 85 | + List<t.Table> demands; //需求桌位 | ||
| 86 | + List<t.Table> tables; //预订桌位 | ||
| 87 | + Cancel cancel; | ||
| 88 | + | ||
| 89 | + String get statuImgAssets { | ||
| 90 | + switch (status) { | ||
| 91 | + case "0": | ||
| 92 | + return "assets/status_undeal.png"; | ||
| 93 | + case "1": | ||
| 94 | + case "5": | ||
| 95 | + return "assets/statu_booked.png"; | ||
| 96 | + case "2": | ||
| 97 | + return "assets/statu_reached.png"; | ||
| 98 | + case "3": | ||
| 99 | + return "assets/statu_finished.png"; | ||
| 100 | + case "4": | ||
| 101 | + return "assets/statu_canceled.png"; | ||
| 102 | + case "6": | ||
| 103 | + return "assets/statu_refuse.png"; | ||
| 48 | } | 104 | } |
| 105 | + } | ||
| 49 | 106 | ||
| 50 | - String get ddateMd{ | ||
| 51 | - DateTime dateTime=DateTime.fromMillisecondsSinceEpoch(int.parse(ddate)*1000); | ||
| 52 | - String md=Utils.addZeroNumber(dateTime.month)+"月"+Utils.addZeroNumber(dateTime.day)+"日"; | ||
| 53 | - switch (ddate_solt){ | ||
| 54 | - case "1": | ||
| 55 | - md+=" 早餐"; | ||
| 56 | - break; | ||
| 57 | - case "2": | ||
| 58 | - md+=" 午餐"; | ||
| 59 | - break; | ||
| 60 | - case "3": | ||
| 61 | - md+=" 晚餐"; | ||
| 62 | - break; | ||
| 63 | - } | ||
| 64 | - return md; | 107 | + String get demandStr{ |
| 108 | + String demand=""; | ||
| 109 | + for(t.Table table in demands){ | ||
| 110 | + demand+=table.name+","; | ||
| 65 | } | 111 | } |
| 112 | + return demand.substring(0,demand.length-1); | ||
| 113 | + } | ||
| 66 | 114 | ||
| 67 | - String get ddateHm{ | ||
| 68 | - if(type=="0"||(type=="1"&&is_set_ddate=="1")){ | ||
| 69 | - DateTime dateTime=DateTime.fromMillisecondsSinceEpoch(int.parse(ddate)*1000); | ||
| 70 | - String Hm=Utils.addZeroNumber(dateTime.hour)+":"+Utils.addZeroNumber(dateTime.minute); | ||
| 71 | - return Hm; | ||
| 72 | - }else{ | ||
| 73 | - return ""; | ||
| 74 | - } | 115 | + String get ddateMd { |
| 116 | + DateTime dateTime = | ||
| 117 | + DateTime.fromMillisecondsSinceEpoch(int.parse(ddate) * 1000); | ||
| 118 | + String md = Utils.addZeroNumber(dateTime.month) + | ||
| 119 | + "月" + | ||
| 120 | + Utils.addZeroNumber(dateTime.day) + | ||
| 121 | + "日"; | ||
| 122 | + switch (ddate_solt) { | ||
| 123 | + case "1": | ||
| 124 | + md += " 早餐"; | ||
| 125 | + break; | ||
| 126 | + case "2": | ||
| 127 | + md += " 午餐"; | ||
| 128 | + break; | ||
| 129 | + case "3": | ||
| 130 | + md += " 晚餐"; | ||
| 131 | + break; | ||
| 75 | } | 132 | } |
| 133 | + return md; | ||
| 134 | + } | ||
| 76 | 135 | ||
| 77 | - String get ddateStr{ | ||
| 78 | - String ddateStr; | ||
| 79 | - if (type=="1"&&is_set_ddate=="0"){//在线预订,没有设置到店时间 | ||
| 80 | - switch (ddate_solt){ | ||
| 81 | - case "1": | ||
| 82 | - ddateStr="早餐"; | ||
| 83 | - break; | ||
| 84 | - case "2": | ||
| 85 | - ddateStr="午餐"; | ||
| 86 | - break; | ||
| 87 | - case "3": | ||
| 88 | - ddateStr="晚餐"; | ||
| 89 | - break; | ||
| 90 | - default: | ||
| 91 | - ddateStr=""; | ||
| 92 | - break; | ||
| 93 | - } | ||
| 94 | - }else{ | ||
| 95 | - DateTime dateTime=DateTime.fromMillisecondsSinceEpoch(int.parse(ddate)*1000); | ||
| 96 | - ddateStr=Utils.addZeroNumber(dateTime.hour)+":"+Utils.addZeroNumber(dateTime.minute); | ||
| 97 | - } | ||
| 98 | - return ddateStr; | 136 | + String get ddateHm { |
| 137 | + if (type == "0" || (type == "1" && is_set_ddate == "1")) { | ||
| 138 | + DateTime dateTime = | ||
| 139 | + DateTime.fromMillisecondsSinceEpoch(int.parse(ddate) * 1000); | ||
| 140 | + String Hm = Utils.addZeroNumber(dateTime.hour) + | ||
| 141 | + ":" + | ||
| 142 | + Utils.addZeroNumber(dateTime.minute); | ||
| 143 | + return Hm; | ||
| 144 | + } else { | ||
| 145 | + return ""; | ||
| 99 | } | 146 | } |
| 147 | + } | ||
| 100 | 148 | ||
| 101 | - String get rnameStr{ | ||
| 102 | - if(rname.isEmpty)return ""; | ||
| 103 | - switch(sex){ | ||
| 104 | - case "1"://先生 | ||
| 105 | - return rname+"先生"; | ||
| 106 | - case "2"://女士 | ||
| 107 | - return rname+"女士"; | ||
| 108 | - case "3"://公司 | ||
| 109 | - return rname+"公司"; | ||
| 110 | - } | 149 | + String get ddateStr { |
| 150 | + String ddateStr; | ||
| 151 | + if (type == "1" && is_set_ddate == "0") { | ||
| 152 | + //在线预订,没有设置到店时间 | ||
| 153 | + switch (ddate_solt) { | ||
| 154 | + case "1": | ||
| 155 | + ddateStr = "早餐"; | ||
| 156 | + break; | ||
| 157 | + case "2": | ||
| 158 | + ddateStr = "午餐"; | ||
| 159 | + break; | ||
| 160 | + case "3": | ||
| 161 | + ddateStr = "晚餐"; | ||
| 162 | + break; | ||
| 163 | + default: | ||
| 164 | + ddateStr = ""; | ||
| 165 | + break; | ||
| 166 | + } | ||
| 167 | + } else { | ||
| 168 | + DateTime dateTime = | ||
| 169 | + DateTime.fromMillisecondsSinceEpoch(int.parse(ddate) * 1000); | ||
| 170 | + ddateStr = Utils.addZeroNumber(dateTime.hour) + | ||
| 171 | + ":" + | ||
| 172 | + Utils.addZeroNumber(dateTime.minute); | ||
| 111 | } | 173 | } |
| 174 | + return ddateStr; | ||
| 175 | + } | ||
| 112 | 176 | ||
| 113 | - String get tableinfoStr{ | ||
| 114 | - return tables[0].name+ "\n"+(tables.length>=2?('等'+tables.length.toString()+'桌'):''); | 177 | + String get rnameStr { |
| 178 | + if (rname.isEmpty) return ""; | ||
| 179 | + switch (sex) { | ||
| 180 | + case "1": //先生 | ||
| 181 | + return rname + "先生"; | ||
| 182 | + case "2": //女士 | ||
| 183 | + return rname + "女士"; | ||
| 184 | + case "3": //公司 | ||
| 185 | + return rname + "公司"; | ||
| 115 | } | 186 | } |
| 187 | + } | ||
| 188 | + | ||
| 189 | + String get tableinfoStr { | ||
| 190 | + return tables[0].name + | ||
| 191 | + "\n" + | ||
| 192 | + (tables.length >= 2 ? ('等' + tables.length.toString() + '桌') : ''); | ||
| 193 | + } | ||
| 194 | + | ||
| 195 | + factory NotebookDetail.fromJson(Map<String, dynamic> json) => | ||
| 196 | + _$NotebookDetailFromJson(json); | ||
| 197 | + Map<String, dynamic> toJson() => _$NotebookDetailToJson(this); | ||
| 198 | + | ||
| 199 | + @override | ||
| 200 | + String toString() { | ||
| 201 | + return 'NotebookDetail{id: $id, abolition: $abolition, tableinfo: $tableinfo, pnum: $pnum, rname: $rname, sex: $sex, phone: $phone, cusdem: $cusdem, cusman: $cusman, ddate: $ddate, is_set_ddate: $is_set_ddate, ddate_solt: $ddate_solt, status: $status, action: $action, type: $type, note_name: $note_name, channel: $channel, cdate: $cdate, demands: $demands, tables: $tables, cancel: $cancel}'; | ||
| 202 | + } | ||
| 203 | + | ||
| 116 | 204 | ||
| 117 | - factory NotebookDetail.fromJson(Map<String,dynamic> json) => _$NotebookDetailFromJson(json); | ||
| 118 | - Map<String, dynamic> toJson() => _$NotebookDetailToJson(this); | ||
| 119 | } | 205 | } |
| 120 | 206 | ||
| 121 | @JsonSerializable() | 207 | @JsonSerializable() |
| 122 | class Cancel { | 208 | class Cancel { |
| 123 | - Cancel(); | 209 | + Cancel(); |
| 124 | 210 | ||
| 125 | - String uname; | ||
| 126 | - String desc; | ||
| 127 | - String cdate; | 211 | + String uname; |
| 212 | + String desc; | ||
| 213 | + String cdate; | ||
| 128 | 214 | ||
| 129 | - String get cdateStr{ | ||
| 130 | - DateTime dateTime=DateTime.fromMillisecondsSinceEpoch(int.parse(cdate)*1000); | ||
| 131 | - return dateTime.year.toString()+"/"+Utils.addZeroNumber(dateTime.month)+"/"+Utils.addZeroNumber(dateTime.day)+" "+Utils.addZeroNumber(dateTime.hour)+":"+Utils.addZeroNumber(dateTime.minute); | ||
| 132 | - } | 215 | + String get cdateStr { |
| 216 | + DateTime dateTime = | ||
| 217 | + DateTime.fromMillisecondsSinceEpoch(int.parse(cdate) * 1000); | ||
| 218 | + return dateTime.year.toString() + | ||
| 219 | + "/" + | ||
| 220 | + Utils.addZeroNumber(dateTime.month) + | ||
| 221 | + "/" + | ||
| 222 | + Utils.addZeroNumber(dateTime.day) + | ||
| 223 | + " " + | ||
| 224 | + Utils.addZeroNumber(dateTime.hour) + | ||
| 225 | + ":" + | ||
| 226 | + Utils.addZeroNumber(dateTime.minute); | ||
| 227 | + } | ||
| 133 | 228 | ||
| 134 | - factory Cancel.fromJson(Map<String,dynamic> json) => _$CancelFromJson(json); | ||
| 135 | - Map<String, dynamic> toJson() => _$CancelToJson(this); | 229 | + factory Cancel.fromJson(Map<String, dynamic> json) => _$CancelFromJson(json); |
| 230 | + Map<String, dynamic> toJson() => _$CancelToJson(this); | ||
| 136 | } | 231 | } |
| 1 | // GENERATED CODE - DO NOT MODIFY BY HAND | 1 | // GENERATED CODE - DO NOT MODIFY BY HAND |
| 2 | 2 | ||
| 3 | + | ||
| 3 | part of 'notebook_detail.dart'; | 4 | part of 'notebook_detail.dart'; |
| 4 | 5 | ||
| 6 | + | ||
| 5 | // ************************************************************************** | 7 | // ************************************************************************** |
| 6 | // JsonSerializableGenerator | 8 | // JsonSerializableGenerator |
| 7 | // ************************************************************************** | 9 | // ************************************************************************** |
| @@ -10,6 +12,7 @@ NotebookDetail _$NotebookDetailFromJson(Map<String, dynamic> json) { | @@ -10,6 +12,7 @@ NotebookDetail _$NotebookDetailFromJson(Map<String, dynamic> json) { | ||
| 10 | return NotebookDetail() | 12 | return NotebookDetail() |
| 11 | ..id = json['id'] as String | 13 | ..id = json['id'] as String |
| 12 | ..tableinfo = json['tableinfo'] as String | 14 | ..tableinfo = json['tableinfo'] as String |
| 15 | + ..abolition = json['abolition'] as String | ||
| 13 | ..pnum = json['pnum'] as String | 16 | ..pnum = json['pnum'] as String |
| 14 | ..rname = json['rname'] as String | 17 | ..rname = json['rname'] as String |
| 15 | ..sex = json['sex'] as String | 18 | ..sex = json['sex'] as String |
| @@ -27,11 +30,11 @@ NotebookDetail _$NotebookDetailFromJson(Map<String, dynamic> json) { | @@ -27,11 +30,11 @@ NotebookDetail _$NotebookDetailFromJson(Map<String, dynamic> json) { | ||
| 27 | ..cdate = json['cdate'] as String | 30 | ..cdate = json['cdate'] as String |
| 28 | ..demands = (json['demands'] as List) | 31 | ..demands = (json['demands'] as List) |
| 29 | ?.map( | 32 | ?.map( |
| 30 | - (e) => e == null ? null : Table.fromJson(e as Map<String, dynamic>)) | 33 | + (e) => e == null ? null : t.Table.fromJson(e as Map<String, dynamic>)) |
| 31 | ?.toList() | 34 | ?.toList() |
| 32 | ..tables = (json['tables'] as List) | 35 | ..tables = (json['tables'] as List) |
| 33 | ?.map( | 36 | ?.map( |
| 34 | - (e) => e == null ? null : Table.fromJson(e as Map<String, dynamic>)) | 37 | + (e) => e == null ? null : t.Table.fromJson(e as Map<String, dynamic>)) |
| 35 | ?.toList() | 38 | ?.toList() |
| 36 | ..cancel = json['cancel'] == null | 39 | ..cancel = json['cancel'] == null |
| 37 | ? null | 40 | ? null |
| @@ -42,6 +45,7 @@ Map<String, dynamic> _$NotebookDetailToJson(NotebookDetail instance) => | @@ -42,6 +45,7 @@ Map<String, dynamic> _$NotebookDetailToJson(NotebookDetail instance) => | ||
| 42 | <String, dynamic>{ | 45 | <String, dynamic>{ |
| 43 | 'id': instance.id, | 46 | 'id': instance.id, |
| 44 | 'tableinfo': instance.tableinfo, | 47 | 'tableinfo': instance.tableinfo, |
| 48 | + 'abolition':instance.abolition, | ||
| 45 | 'pnum': instance.pnum, | 49 | 'pnum': instance.pnum, |
| 46 | 'rname': instance.rname, | 50 | 'rname': instance.rname, |
| 47 | 'sex': instance.sex, | 51 | 'sex': instance.sex, |
lib/models/reserve_info_model.dart
0 → 100644
| 1 | +import 'package:json_annotation/json_annotation.dart'; | ||
| 2 | + | ||
| 3 | +part 'reserve_info_model.g.dart'; | ||
| 4 | + | ||
| 5 | + | ||
| 6 | +@JsonSerializable() | ||
| 7 | + class ReserveInfoModel extends Object { | ||
| 8 | + | ||
| 9 | + @JsonKey(name: 'ret') | ||
| 10 | + int ret; | ||
| 11 | + | ||
| 12 | + @JsonKey(name: 'data') | ||
| 13 | + SunReserveInfoModel data; | ||
| 14 | + | ||
| 15 | + @JsonKey(name: 'msg') | ||
| 16 | + String msg; | ||
| 17 | + | ||
| 18 | + ReserveInfoModel(this.ret,this.data,this.msg,); | ||
| 19 | + | ||
| 20 | + factory ReserveInfoModel.fromJson(Map<String, dynamic> srcJson) => _$ReserveInfoModelFromJson(srcJson); | ||
| 21 | + | ||
| 22 | + Map<String, dynamic> toJson() => _$ReserveInfoModelToJson(this); | ||
| 23 | + | ||
| 24 | +} | ||
| 25 | + | ||
| 26 | + | ||
| 27 | +@JsonSerializable() | ||
| 28 | + class SunReserveInfoModel extends Object { | ||
| 29 | + | ||
| 30 | + @JsonKey(name: 'row') | ||
| 31 | + RowModel row; | ||
| 32 | + | ||
| 33 | + @JsonKey(name: 'list') | ||
| 34 | + List<dynamic> list; | ||
| 35 | + | ||
| 36 | + @JsonKey(name: 'table') | ||
| 37 | + List<dynamic> table; | ||
| 38 | + | ||
| 39 | + SunReserveInfoModel(this.row,this.list,this.table,); | ||
| 40 | + | ||
| 41 | + factory SunReserveInfoModel.fromJson(Map<String, dynamic> srcJson) => _$SunReserveInfoModelFromJson(srcJson); | ||
| 42 | + | ||
| 43 | + Map<String, dynamic> toJson() => _$SunReserveInfoModelToJson(this); | ||
| 44 | + | ||
| 45 | +} | ||
| 46 | + | ||
| 47 | + | ||
| 48 | +@JsonSerializable() | ||
| 49 | + class RowModel extends Object { | ||
| 50 | + | ||
| 51 | + @JsonKey(name: 'id') | ||
| 52 | + String id; | ||
| 53 | + | ||
| 54 | + @JsonKey(name: 'tableinfo') | ||
| 55 | + String tableinfo; | ||
| 56 | + | ||
| 57 | + @JsonKey(name: 'tid') | ||
| 58 | + String tid; | ||
| 59 | + | ||
| 60 | + @JsonKey(name: 'rname') | ||
| 61 | + String rname; | ||
| 62 | + | ||
| 63 | + @JsonKey(name: 'sex') | ||
| 64 | + String sex; | ||
| 65 | + | ||
| 66 | + @JsonKey(name: 'phone') | ||
| 67 | + String phone; | ||
| 68 | + | ||
| 69 | + @JsonKey(name: 'cusman') | ||
| 70 | + String cusman; | ||
| 71 | + | ||
| 72 | + @JsonKey(name: 'ddate') | ||
| 73 | + String ddate; | ||
| 74 | + | ||
| 75 | + @JsonKey(name: 'cdate') | ||
| 76 | + String cdate; | ||
| 77 | + | ||
| 78 | + @JsonKey(name: 'cusdem') | ||
| 79 | + String cusdem; | ||
| 80 | + | ||
| 81 | + @JsonKey(name: 'status') | ||
| 82 | + String status; | ||
| 83 | + | ||
| 84 | + @JsonKey(name: 'action') | ||
| 85 | + String action; | ||
| 86 | + | ||
| 87 | + @JsonKey(name: 'is_set_ddate') | ||
| 88 | + String isSetDdate; | ||
| 89 | + | ||
| 90 | + @JsonKey(name: 'ddate_solt') | ||
| 91 | + String ddateSolt; | ||
| 92 | + | ||
| 93 | + @JsonKey(name: 'type') | ||
| 94 | + String type; | ||
| 95 | + | ||
| 96 | + @JsonKey(name: 'name') | ||
| 97 | + String name; | ||
| 98 | + | ||
| 99 | + RowModel(this.id,this.tableinfo,this.tid,this.rname,this.sex,this.phone,this.cusman,this.ddate,this.cdate,this.cusdem,this.status,this.action,this.isSetDdate,this.ddateSolt,this.type,this.name,); | ||
| 100 | + | ||
| 101 | + factory RowModel.fromJson(Map<String, dynamic> srcJson) => _$RowModelFromJson(srcJson); | ||
| 102 | + | ||
| 103 | + Map<String, dynamic> toJson() => _$RowModelToJson(this); | ||
| 104 | + | ||
| 105 | +} | ||
| 106 | + | ||
| 107 | + |
lib/models/reserve_info_model.g.dart
0 → 100644
| 1 | +// GENERATED CODE - DO NOT MODIFY BY HAND | ||
| 2 | + | ||
| 3 | +part of 'reserve_info_model.dart'; | ||
| 4 | + | ||
| 5 | +// ************************************************************************** | ||
| 6 | +// JsonSerializableGenerator | ||
| 7 | +// ************************************************************************** | ||
| 8 | + | ||
| 9 | +ReserveInfoModel _$ReserveInfoModelFromJson(Map<String, dynamic> json) { | ||
| 10 | + return ReserveInfoModel( | ||
| 11 | + json['ret'] as int, | ||
| 12 | + json['data'] == null | ||
| 13 | + ? null | ||
| 14 | + : SunReserveInfoModel.fromJson(json['data'] as Map<String, dynamic>), | ||
| 15 | + json['msg'] as String); | ||
| 16 | +} | ||
| 17 | + | ||
| 18 | +Map<String, dynamic> _$ReserveInfoModelToJson(ReserveInfoModel instance) => | ||
| 19 | + <String, dynamic>{ | ||
| 20 | + 'ret': instance.ret, | ||
| 21 | + 'data': instance.data, | ||
| 22 | + 'msg': instance.msg | ||
| 23 | + }; | ||
| 24 | + | ||
| 25 | +SunReserveInfoModel _$SunReserveInfoModelFromJson(Map<String, dynamic> json) { | ||
| 26 | + return SunReserveInfoModel( | ||
| 27 | + json['row'] == null | ||
| 28 | + ? null | ||
| 29 | + : RowModel.fromJson(json['row'] as Map<String, dynamic>), | ||
| 30 | + json['list'] as List, | ||
| 31 | + json['table'] as List); | ||
| 32 | +} | ||
| 33 | + | ||
| 34 | +Map<String, dynamic> _$SunReserveInfoModelToJson( | ||
| 35 | + SunReserveInfoModel instance) => | ||
| 36 | + <String, dynamic>{ | ||
| 37 | + 'row': instance.row, | ||
| 38 | + 'list': instance.list, | ||
| 39 | + 'table': instance.table | ||
| 40 | + }; | ||
| 41 | + | ||
| 42 | +RowModel _$RowModelFromJson(Map<String, dynamic> json) { | ||
| 43 | + return RowModel( | ||
| 44 | + json['id'] as String, | ||
| 45 | + json['tableinfo'] as String, | ||
| 46 | + json['tid'] as String, | ||
| 47 | + json['rname'] as String, | ||
| 48 | + json['sex'] as String, | ||
| 49 | + json['phone'] as String, | ||
| 50 | + json['cusman'] as String, | ||
| 51 | + json['ddate'] as String, | ||
| 52 | + json['cdate'] as String, | ||
| 53 | + json['cusdem'] as String, | ||
| 54 | + json['status'] as String, | ||
| 55 | + json['action'] as String, | ||
| 56 | + json['is_set_ddate'] as String, | ||
| 57 | + json['ddate_solt'] as String, | ||
| 58 | + json['type'] as String, | ||
| 59 | + json['name'] as String); | ||
| 60 | +} | ||
| 61 | + | ||
| 62 | +Map<String, dynamic> _$RowModelToJson(RowModel instance) => <String, dynamic>{ | ||
| 63 | + 'id': instance.id, | ||
| 64 | + 'tableinfo': instance.tableinfo, | ||
| 65 | + 'tid': instance.tid, | ||
| 66 | + 'rname': instance.rname, | ||
| 67 | + 'sex': instance.sex, | ||
| 68 | + 'phone': instance.phone, | ||
| 69 | + 'cusman': instance.cusman, | ||
| 70 | + 'ddate': instance.ddate, | ||
| 71 | + 'cdate': instance.cdate, | ||
| 72 | + 'cusdem': instance.cusdem, | ||
| 73 | + 'status': instance.status, | ||
| 74 | + 'action': instance.action, | ||
| 75 | + 'is_set_ddate': instance.isSetDdate, | ||
| 76 | + 'ddate_solt': instance.ddateSolt, | ||
| 77 | + 'type': instance.type, | ||
| 78 | + 'name': instance.name | ||
| 79 | + }; |
lib/models/seller_info.dart
0 → 100644
| 1 | +import 'package:json_annotation/json_annotation.dart'; | ||
| 2 | + | ||
| 3 | +part 'seller_info.g.dart'; | ||
| 4 | + | ||
| 5 | +@JsonSerializable() | ||
| 6 | +class SellerInfoModel extends Object { | ||
| 7 | + @JsonKey(name: 'ret') | ||
| 8 | + int ret; | ||
| 9 | + | ||
| 10 | + @JsonKey(name: 'data') | ||
| 11 | + SunSellerInfoModel data; | ||
| 12 | + | ||
| 13 | + @JsonKey(name: 'msg') | ||
| 14 | + String msg; | ||
| 15 | + | ||
| 16 | + SellerInfoModel( | ||
| 17 | + this.ret, | ||
| 18 | + this.data, | ||
| 19 | + this.msg, | ||
| 20 | + ); | ||
| 21 | + | ||
| 22 | + factory SellerInfoModel.fromJson(Map<String, dynamic> srcJson) => | ||
| 23 | + _$SellerInfoModelFromJson(srcJson); | ||
| 24 | + | ||
| 25 | + Map<String, dynamic> toJson() => _$SellerInfoModelToJson(this); | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | +@JsonSerializable() | ||
| 29 | +class SunSellerInfoModel extends Object { | ||
| 30 | + @JsonKey(name: 'seller') | ||
| 31 | + Seller seller; | ||
| 32 | + | ||
| 33 | + @JsonKey(name: 'manager') | ||
| 34 | + List<Manager> manager; | ||
| 35 | + | ||
| 36 | + @JsonKey(name: 'seller_user') | ||
| 37 | + SellerUser sellerUser; | ||
| 38 | + | ||
| 39 | + @JsonKey(name: 'daily') | ||
| 40 | + Daily daily; | ||
| 41 | + | ||
| 42 | + @JsonKey(name: 'config') | ||
| 43 | + List<dynamic> config; | ||
| 44 | + | ||
| 45 | + @JsonKey(name: 'setting') | ||
| 46 | + Setting setting; | ||
| 47 | + | ||
| 48 | + @JsonKey(name: 'scatter') | ||
| 49 | + int scatter; | ||
| 50 | + | ||
| 51 | + @JsonKey(name: 'room') | ||
| 52 | + int room; | ||
| 53 | + | ||
| 54 | + @JsonKey(name: 'cassette') | ||
| 55 | + int cassette; | ||
| 56 | + | ||
| 57 | + SunSellerInfoModel( | ||
| 58 | + this.seller, | ||
| 59 | + this.manager, | ||
| 60 | + this.sellerUser, | ||
| 61 | + this.daily, | ||
| 62 | + this.config, | ||
| 63 | + this.setting, | ||
| 64 | + this.scatter, | ||
| 65 | + this.room, | ||
| 66 | + this.cassette, | ||
| 67 | + ); | ||
| 68 | + | ||
| 69 | + factory SunSellerInfoModel.fromJson(Map<String, dynamic> srcJson) => | ||
| 70 | + _$SunSellerInfoModelFromJson(srcJson); | ||
| 71 | + | ||
| 72 | + Map<String, dynamic> toJson() => _$SunSellerInfoModelToJson(this); | ||
| 73 | +} | ||
| 74 | + | ||
| 75 | +@JsonSerializable() | ||
| 76 | +class Seller extends Object { | ||
| 77 | + @JsonKey(name: 'id') | ||
| 78 | + String id; | ||
| 79 | + | ||
| 80 | + @JsonKey(name: 'sellername') | ||
| 81 | + String sellername; | ||
| 82 | + | ||
| 83 | + @JsonKey(name: 'selleralias') | ||
| 84 | + String selleralias; | ||
| 85 | + | ||
| 86 | + @JsonKey(name: 'seller_image') | ||
| 87 | + String sellerImage; | ||
| 88 | + | ||
| 89 | + @JsonKey(name: 'map_address') | ||
| 90 | + String mapAddress; | ||
| 91 | + | ||
| 92 | + @JsonKey(name: 'is_call_tel') | ||
| 93 | + String isCallTel; | ||
| 94 | + | ||
| 95 | + @JsonKey(name: 'daily') | ||
| 96 | + String daily; | ||
| 97 | + | ||
| 98 | + @JsonKey(name: 'lat') | ||
| 99 | + String lat; | ||
| 100 | + | ||
| 101 | + @JsonKey(name: 'long') | ||
| 102 | + String long; | ||
| 103 | + | ||
| 104 | + @JsonKey(name: 'is_sms') | ||
| 105 | + String isSms; | ||
| 106 | + | ||
| 107 | + @JsonKey(name: 'is_open_order') | ||
| 108 | + String isOpenOrder; | ||
| 109 | + | ||
| 110 | + @JsonKey(name: 'is_open_wine') | ||
| 111 | + String isOpenWine; | ||
| 112 | + | ||
| 113 | + Seller( | ||
| 114 | + this.id, | ||
| 115 | + this.sellername, | ||
| 116 | + this.selleralias, | ||
| 117 | + this.sellerImage, | ||
| 118 | + this.mapAddress, | ||
| 119 | + this.isCallTel, | ||
| 120 | + this.daily, | ||
| 121 | + this.lat, | ||
| 122 | + this.long, | ||
| 123 | + this.isSms, | ||
| 124 | + this.isOpenOrder, | ||
| 125 | + this.isOpenWine, | ||
| 126 | + ); | ||
| 127 | + | ||
| 128 | + factory Seller.fromJson(Map<String, dynamic> srcJson) => | ||
| 129 | + _$SellerFromJson(srcJson); | ||
| 130 | + | ||
| 131 | + Map<String, dynamic> toJson() => _$SellerToJson(this); | ||
| 132 | +} | ||
| 133 | + | ||
| 134 | +@JsonSerializable() | ||
| 135 | +class Manager extends Object { | ||
| 136 | + @JsonKey(name: 'role_name') | ||
| 137 | + String roleName; | ||
| 138 | + | ||
| 139 | + @JsonKey(name: 'id') | ||
| 140 | + dynamic id; | ||
| 141 | + | ||
| 142 | + @JsonKey(name: 'sellerid') | ||
| 143 | + dynamic sellerid; | ||
| 144 | + | ||
| 145 | + @JsonKey(name: 'openid') | ||
| 146 | + String openid; | ||
| 147 | + | ||
| 148 | + @JsonKey(name: 'receipt_code') | ||
| 149 | + String receiptCode; | ||
| 150 | + | ||
| 151 | + @JsonKey(name: 'user_name') | ||
| 152 | + String userName; | ||
| 153 | + | ||
| 154 | + @JsonKey(name: 'cdate') | ||
| 155 | + String cdate; | ||
| 156 | + | ||
| 157 | + @JsonKey(name: 'status') | ||
| 158 | + dynamic status; | ||
| 159 | + | ||
| 160 | + @JsonKey(name: 'is_first') | ||
| 161 | + dynamic isFirst; | ||
| 162 | + | ||
| 163 | + @JsonKey(name: 'disting') | ||
| 164 | + dynamic disting; | ||
| 165 | + | ||
| 166 | + @JsonKey(name: 'code') | ||
| 167 | + dynamic code; | ||
| 168 | + | ||
| 169 | + @JsonKey(name: 'uid') | ||
| 170 | + dynamic uid; | ||
| 171 | + | ||
| 172 | + @JsonKey(name: 'nick_name') | ||
| 173 | + String nickName; | ||
| 174 | + | ||
| 175 | + Manager( | ||
| 176 | + this.roleName, | ||
| 177 | + this.id, | ||
| 178 | + this.sellerid, | ||
| 179 | + this.openid, | ||
| 180 | + this.receiptCode, | ||
| 181 | + this.userName, | ||
| 182 | + this.cdate, | ||
| 183 | + this.status, | ||
| 184 | + this.isFirst, | ||
| 185 | + this.disting, | ||
| 186 | + this.code, | ||
| 187 | + this.uid, | ||
| 188 | + this.nickName, | ||
| 189 | + ); | ||
| 190 | + | ||
| 191 | + factory Manager.fromJson(Map<String, dynamic> srcJson) => | ||
| 192 | + _$ManagerFromJson(srcJson); | ||
| 193 | + | ||
| 194 | + Map<String, dynamic> toJson() => _$ManagerToJson(this); | ||
| 195 | +} | ||
| 196 | + | ||
| 197 | +@JsonSerializable() | ||
| 198 | +class SellerUser extends Object { | ||
| 199 | + SellerUser(); | ||
| 200 | + | ||
| 201 | + factory SellerUser.fromJson(Map<String, dynamic> srcJson) => | ||
| 202 | + _$SellerUserFromJson(srcJson); | ||
| 203 | + | ||
| 204 | + Map<String, dynamic> toJson() => _$SellerUserToJson(this); | ||
| 205 | +} | ||
| 206 | + | ||
| 207 | +@JsonSerializable() | ||
| 208 | +class Daily extends Object { | ||
| 209 | + @JsonKey(name: 'morning') | ||
| 210 | + String morning; | ||
| 211 | + | ||
| 212 | + @JsonKey(name: 'noon') | ||
| 213 | + String noon; | ||
| 214 | + | ||
| 215 | + @JsonKey(name: 'night') | ||
| 216 | + String night; | ||
| 217 | + | ||
| 218 | + Daily( | ||
| 219 | + this.morning, | ||
| 220 | + this.noon, | ||
| 221 | + this.night, | ||
| 222 | + ); | ||
| 223 | + | ||
| 224 | + factory Daily.fromJson(Map<String, dynamic> srcJson) => | ||
| 225 | + _$DailyFromJson(srcJson); | ||
| 226 | + | ||
| 227 | + Map<String, dynamic> toJson() => _$DailyToJson(this); | ||
| 228 | + | ||
| 229 | + @override | ||
| 230 | + String toString() { | ||
| 231 | + return 'Daily{morning: $morning, noon: $noon, night: $night}'; | ||
| 232 | + } | ||
| 233 | + | ||
| 234 | + | ||
| 235 | +} | ||
| 236 | + | ||
| 237 | +@JsonSerializable() | ||
| 238 | +class Setting extends Object { | ||
| 239 | + @JsonKey(name: 'template_code') | ||
| 240 | + String templateCode; | ||
| 241 | + | ||
| 242 | + Setting( | ||
| 243 | + this.templateCode, | ||
| 244 | + ); | ||
| 245 | + | ||
| 246 | + factory Setting.fromJson(Map<String, dynamic> srcJson) => | ||
| 247 | + _$SettingFromJson(srcJson); | ||
| 248 | + | ||
| 249 | + Map<String, dynamic> toJson() => _$SettingToJson(this); | ||
| 250 | +} |
lib/models/seller_info.g.dart
0 → 100644
| 1 | +// GENERATED CODE - DO NOT MODIFY BY HAND | ||
| 2 | + | ||
| 3 | +part of 'seller_info.dart'; | ||
| 4 | + | ||
| 5 | +// ************************************************************************** | ||
| 6 | +// JsonSerializableGenerator | ||
| 7 | +// ************************************************************************** | ||
| 8 | + | ||
| 9 | +SellerInfoModel _$SellerInfoModelFromJson(Map<String, dynamic> json) { | ||
| 10 | + return SellerInfoModel( | ||
| 11 | + json['ret'] as int, | ||
| 12 | + json['data'] == null | ||
| 13 | + ? null | ||
| 14 | + : SunSellerInfoModel.fromJson(json['data'] as Map<String, dynamic>), | ||
| 15 | + json['msg'] as String); | ||
| 16 | +} | ||
| 17 | + | ||
| 18 | +Map<String, dynamic> _$SellerInfoModelToJson(SellerInfoModel instance) => | ||
| 19 | + <String, dynamic>{ | ||
| 20 | + 'ret': instance.ret, | ||
| 21 | + 'data': instance.data, | ||
| 22 | + 'msg': instance.msg | ||
| 23 | + }; | ||
| 24 | + | ||
| 25 | +SunSellerInfoModel _$SunSellerInfoModelFromJson(Map<String, dynamic> json) { | ||
| 26 | + return SunSellerInfoModel( | ||
| 27 | + json['seller'] == null | ||
| 28 | + ? null | ||
| 29 | + : Seller.fromJson(json['seller'] as Map<String, dynamic>), | ||
| 30 | + (json['manager'] as List) | ||
| 31 | + ?.map((e) => | ||
| 32 | + e == null ? null : Manager.fromJson(e as Map<String, dynamic>)) | ||
| 33 | + ?.toList(), | ||
| 34 | + json['seller_user'] == null | ||
| 35 | + ? null | ||
| 36 | + : SellerUser.fromJson(json['seller_user'] as Map<String, dynamic>), | ||
| 37 | + json['daily'] == null | ||
| 38 | + ? null | ||
| 39 | + : Daily.fromJson(json['daily'] as Map<String, dynamic>), | ||
| 40 | + json['config'] as List, | ||
| 41 | + json['setting'] == null | ||
| 42 | + ? null | ||
| 43 | + : Setting.fromJson(json['setting'] as Map<String, dynamic>), | ||
| 44 | + json['scatter'] as int, | ||
| 45 | + json['room'] as int, | ||
| 46 | + json['cassette'] as int); | ||
| 47 | +} | ||
| 48 | + | ||
| 49 | +Map<String, dynamic> _$SunSellerInfoModelToJson(SunSellerInfoModel instance) => | ||
| 50 | + <String, dynamic>{ | ||
| 51 | + 'seller': instance.seller, | ||
| 52 | + 'manager': instance.manager, | ||
| 53 | + 'seller_user': instance.sellerUser, | ||
| 54 | + 'daily': instance.daily, | ||
| 55 | + 'config': instance.config, | ||
| 56 | + 'setting': instance.setting, | ||
| 57 | + 'scatter': instance.scatter, | ||
| 58 | + 'room': instance.room, | ||
| 59 | + 'cassette': instance.cassette | ||
| 60 | + }; | ||
| 61 | + | ||
| 62 | +Seller _$SellerFromJson(Map<String, dynamic> json) { | ||
| 63 | + return Seller( | ||
| 64 | + json['id'] as String, | ||
| 65 | + json['sellername'] as String, | ||
| 66 | + json['selleralias'] as String, | ||
| 67 | + json['seller_image'] as String, | ||
| 68 | + json['map_address'] as String, | ||
| 69 | + json['is_call_tel'] as String, | ||
| 70 | + json['daily'] as String, | ||
| 71 | + json['lat'] as String, | ||
| 72 | + json['long'] as String, | ||
| 73 | + json['is_sms'] as String, | ||
| 74 | + json['is_open_order'] as String, | ||
| 75 | + json['is_open_wine'] as String); | ||
| 76 | +} | ||
| 77 | + | ||
| 78 | +Map<String, dynamic> _$SellerToJson(Seller instance) => <String, dynamic>{ | ||
| 79 | + 'id': instance.id, | ||
| 80 | + 'sellername': instance.sellername, | ||
| 81 | + 'selleralias': instance.selleralias, | ||
| 82 | + 'seller_image': instance.sellerImage, | ||
| 83 | + 'map_address': instance.mapAddress, | ||
| 84 | + 'is_call_tel': instance.isCallTel, | ||
| 85 | + 'daily': instance.daily, | ||
| 86 | + 'lat': instance.lat, | ||
| 87 | + 'long': instance.long, | ||
| 88 | + 'is_sms': instance.isSms, | ||
| 89 | + 'is_open_order': instance.isOpenOrder, | ||
| 90 | + 'is_open_wine': instance.isOpenWine | ||
| 91 | + }; | ||
| 92 | + | ||
| 93 | +Manager _$ManagerFromJson(Map<String, dynamic> json) { | ||
| 94 | + return Manager( | ||
| 95 | + json['role_name'] as String, | ||
| 96 | + json['id'], | ||
| 97 | + json['sellerid'], | ||
| 98 | + json['openid'] as String, | ||
| 99 | + json['receipt_code'] as String, | ||
| 100 | + json['user_name'] as String, | ||
| 101 | + json['cdate'] as String, | ||
| 102 | + json['status'], | ||
| 103 | + json['is_first'], | ||
| 104 | + json['disting'], | ||
| 105 | + json['code'], | ||
| 106 | + json['uid'], | ||
| 107 | + json['nick_name'] as String); | ||
| 108 | +} | ||
| 109 | + | ||
| 110 | +Map<String, dynamic> _$ManagerToJson(Manager instance) => <String, dynamic>{ | ||
| 111 | + 'role_name': instance.roleName, | ||
| 112 | + 'id': instance.id, | ||
| 113 | + 'sellerid': instance.sellerid, | ||
| 114 | + 'openid': instance.openid, | ||
| 115 | + 'receipt_code': instance.receiptCode, | ||
| 116 | + 'user_name': instance.userName, | ||
| 117 | + 'cdate': instance.cdate, | ||
| 118 | + 'status': instance.status, | ||
| 119 | + 'is_first': instance.isFirst, | ||
| 120 | + 'disting': instance.disting, | ||
| 121 | + 'code': instance.code, | ||
| 122 | + 'uid': instance.uid, | ||
| 123 | + 'nick_name': instance.nickName | ||
| 124 | + }; | ||
| 125 | + | ||
| 126 | +SellerUser _$SellerUserFromJson(Map<String, dynamic> json) { | ||
| 127 | + return SellerUser(); | ||
| 128 | +} | ||
| 129 | + | ||
| 130 | +Map<String, dynamic> _$SellerUserToJson(SellerUser instance) => | ||
| 131 | + <String, dynamic>{}; | ||
| 132 | + | ||
| 133 | +Daily _$DailyFromJson(Map<String, dynamic> json) { | ||
| 134 | + return Daily(json['morning'] as String, json['noon'] as String, | ||
| 135 | + json['night'] as String); | ||
| 136 | +} | ||
| 137 | + | ||
| 138 | +Map<String, dynamic> _$DailyToJson(Daily instance) => <String, dynamic>{ | ||
| 139 | + 'morning': instance.morning, | ||
| 140 | + 'noon': instance.noon, | ||
| 141 | + 'night': instance.night | ||
| 142 | + }; | ||
| 143 | + | ||
| 144 | +Setting _$SettingFromJson(Map<String, dynamic> json) { | ||
| 145 | + return Setting(json['template_code'] as String); | ||
| 146 | +} | ||
| 147 | + | ||
| 148 | +Map<String, dynamic> _$SettingToJson(Setting instance) => | ||
| 149 | + <String, dynamic>{'template_code': instance.templateCode}; |
lib/models/sms_info.dart
0 → 100644
| 1 | +import 'package:json_annotation/json_annotation.dart'; | ||
| 2 | + | ||
| 3 | +part 'sms_info.g.dart'; | ||
| 4 | + | ||
| 5 | +@JsonSerializable() | ||
| 6 | +class SmsInfo extends Object { | ||
| 7 | + @JsonKey(name: 'ret') | ||
| 8 | + int ret; | ||
| 9 | + | ||
| 10 | + @JsonKey(name: 'data') | ||
| 11 | + SmsInfoData data; | ||
| 12 | + | ||
| 13 | + @JsonKey(name: 'msg') | ||
| 14 | + String msg; | ||
| 15 | + | ||
| 16 | + SmsInfo( | ||
| 17 | + this.ret, | ||
| 18 | + this.data, | ||
| 19 | + this.msg, | ||
| 20 | + ); | ||
| 21 | + | ||
| 22 | + factory SmsInfo.fromJson(Map<String, dynamic> srcJson) => | ||
| 23 | + _$sms_infoFromJson(srcJson); | ||
| 24 | + | ||
| 25 | + Map<String, dynamic> toJson() => _$sms_infoToJson(this); | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | +@JsonSerializable() | ||
| 29 | +class SmsInfoData extends Object { | ||
| 30 | + @JsonKey(name: 'last_num') | ||
| 31 | + String lastNum; | ||
| 32 | + | ||
| 33 | + @JsonKey(name: 'meals') | ||
| 34 | + List<Meals> meals; | ||
| 35 | + | ||
| 36 | + SmsInfoData( | ||
| 37 | + this.lastNum, | ||
| 38 | + this.meals, | ||
| 39 | + ); | ||
| 40 | + | ||
| 41 | + factory SmsInfoData.fromJson(Map<String, dynamic> srcJson) => | ||
| 42 | + _$DataFromJson(srcJson); | ||
| 43 | + | ||
| 44 | + Map<String, dynamic> toJson() => _$DataToJson(this); | ||
| 45 | +} | ||
| 46 | + | ||
| 47 | +@JsonSerializable() | ||
| 48 | +class Meals extends Object { | ||
| 49 | + @JsonKey(name: 'id') | ||
| 50 | + String id; | ||
| 51 | + | ||
| 52 | + @JsonKey(name: 'package_name') | ||
| 53 | + String packageName; | ||
| 54 | + | ||
| 55 | + @JsonKey(name: 'total') | ||
| 56 | + String total; | ||
| 57 | + | ||
| 58 | + @JsonKey(name: 'price_ave') | ||
| 59 | + String priceAve; | ||
| 60 | + | ||
| 61 | + @JsonKey(name: 'price_old') | ||
| 62 | + String priceOld; | ||
| 63 | + | ||
| 64 | + @JsonKey(name: 'price') | ||
| 65 | + String price; | ||
| 66 | + | ||
| 67 | + @JsonKey(name: 'discount') | ||
| 68 | + String discount; | ||
| 69 | + | ||
| 70 | + Meals( | ||
| 71 | + this.id, | ||
| 72 | + this.packageName, | ||
| 73 | + this.total, | ||
| 74 | + this.priceAve, | ||
| 75 | + this.priceOld, | ||
| 76 | + this.price, | ||
| 77 | + this.discount, | ||
| 78 | + ); | ||
| 79 | + | ||
| 80 | + factory Meals.fromJson(Map<String, dynamic> srcJson) => | ||
| 81 | + _$MealsFromJson(srcJson); | ||
| 82 | + | ||
| 83 | + Map<String, dynamic> toJson() => _$MealsToJson(this); | ||
| 84 | +} |
lib/models/sms_info.g.dart
0 → 100644
| 1 | +// GENERATED CODE - DO NOT MODIFY BY HAND | ||
| 2 | + | ||
| 3 | +part of 'sms_info.dart'; | ||
| 4 | + | ||
| 5 | +// ************************************************************************** | ||
| 6 | +// JsonSerializableGenerator | ||
| 7 | +// ************************************************************************** | ||
| 8 | + | ||
| 9 | +SmsInfo _$sms_infoFromJson(Map<String, dynamic> json) { | ||
| 10 | + return SmsInfo( | ||
| 11 | + json['ret'] as int, | ||
| 12 | + json['data'] == null | ||
| 13 | + ? null | ||
| 14 | + : SmsInfoData.fromJson(json['data'] as Map<String, dynamic>), | ||
| 15 | + json['msg'] as String); | ||
| 16 | +} | ||
| 17 | + | ||
| 18 | +Map<String, dynamic> _$sms_infoToJson(SmsInfo instance) => <String, dynamic>{ | ||
| 19 | + 'ret': instance.ret, | ||
| 20 | + 'data': instance.data, | ||
| 21 | + 'msg': instance.msg | ||
| 22 | + }; | ||
| 23 | + | ||
| 24 | +SmsInfoData _$DataFromJson(Map<String, dynamic> json) { | ||
| 25 | + return SmsInfoData( | ||
| 26 | + json['last_num'] as String, | ||
| 27 | + (json['meals'] as List) | ||
| 28 | + ?.map((e) => | ||
| 29 | + e == null ? null : Meals.fromJson(e as Map<String, dynamic>)) | ||
| 30 | + ?.toList()); | ||
| 31 | +} | ||
| 32 | + | ||
| 33 | +Map<String, dynamic> _$DataToJson(SmsInfoData instance) => | ||
| 34 | + <String, dynamic>{'last_num': instance.lastNum, 'meals': instance.meals}; | ||
| 35 | + | ||
| 36 | +Meals _$MealsFromJson(Map<String, dynamic> json) { | ||
| 37 | + return Meals( | ||
| 38 | + json['id'] as String, | ||
| 39 | + json['package_name'] as String, | ||
| 40 | + json['total'] as String, | ||
| 41 | + json['price_ave'] as String, | ||
| 42 | + json['price_old'] as String, | ||
| 43 | + json['price'] as String, | ||
| 44 | + json['discount'] as String); | ||
| 45 | +} | ||
| 46 | + | ||
| 47 | +Map<String, dynamic> _$MealsToJson(Meals instance) => <String, dynamic>{ | ||
| 48 | + 'id': instance.id, | ||
| 49 | + 'package_name': instance.packageName, | ||
| 50 | + 'total': instance.total, | ||
| 51 | + 'price_ave': instance.priceAve, | ||
| 52 | + 'price_old': instance.priceOld, | ||
| 53 | + 'price': instance.price, | ||
| 54 | + 'discount': instance.discount | ||
| 55 | + }; |
| @@ -4,84 +4,92 @@ part 'table.g.dart'; | @@ -4,84 +4,92 @@ part 'table.g.dart'; | ||
| 4 | 4 | ||
| 5 | @JsonSerializable() | 5 | @JsonSerializable() |
| 6 | class Table { | 6 | class Table { |
| 7 | + Table(); | ||
| 7 | 8 | ||
| 8 | - Table(); | 9 | + String id; //主键id |
| 10 | + String rid; //关联区域id | ||
| 11 | + String tid; //桌位类型 1散座 2包间 3卡座 | ||
| 12 | + String name; //桌位名称 | ||
| 13 | + String table_pnum; //桌位最少可做人数 | ||
| 14 | + String most_pnum; //桌位最多可做人数 | ||
| 15 | + String order_o; //桌位排序编号 | ||
| 16 | + String status; //桌位状态 0未使用 1使用中 2已删除 | ||
| 17 | + String tablestatus; //桌位状态 0未使用 1使用中 2已删除 | ||
| 18 | + String enable; //0禁用 1启用 | ||
| 19 | + String spell; //1拼桌 | ||
| 20 | + String rname; //关联区域名称 | ||
| 21 | + String max; //最多可做人数 | ||
| 22 | + String low; //最低消费 | ||
| 23 | + String sign; //标签 桌位状态 0:待确认,1:已定座,2:确认到店,3:用餐完成,4:取消预订,5:安排包间,6拒绝订单 | ||
| 24 | + String reserver; //订餐人 | ||
| 25 | + String notebookId; //桌位对应的预订id | ||
| 26 | + bool selected; //是否选中 | ||
| 9 | 27 | ||
| 10 | - String id;//主键id | ||
| 11 | - String rid;//关联区域id | ||
| 12 | - String tid;//桌位类型 1散座 2包间 3卡座 | ||
| 13 | - String name;//桌位名称 | ||
| 14 | - String table_pnum;//桌位最少可做人数 | ||
| 15 | - String most_pnum;//桌位最多可做人数 | ||
| 16 | - String order_o;//桌位排序编号 | ||
| 17 | - String status;//桌位状态 0未使用 1使用中 2已删除 | ||
| 18 | - String tablestatus;//桌位状态 0未使用 1使用中 2已删除 | ||
| 19 | - String enable;//0禁用 1启用 | ||
| 20 | - String spell;//1拼桌 | ||
| 21 | - String rname;//关联区域名称 | ||
| 22 | - String max;//最多可做人数 | ||
| 23 | - String low;//最低消费 | ||
| 24 | - String sign;//标签 桌位状态 0:待确认,1:已定座,2:确认到店,3:用餐完成,4:取消预订,5:安排包间,6拒绝订单 | ||
| 25 | - String reserver;//订餐人 | ||
| 26 | - String notebookId;//桌位对应的预订id | ||
| 27 | - bool selected;//是否选中 | ||
| 28 | - | ||
| 29 | - //获取桌位类型 | ||
| 30 | - String get tidStr{ | ||
| 31 | - switch(tid){ | ||
| 32 | - case "1": | ||
| 33 | - return "散座"; | ||
| 34 | - case "2": | ||
| 35 | - return "包间"; | ||
| 36 | - case "3": | ||
| 37 | - return "卡座"; | ||
| 38 | - } | 28 | + //获取桌位类型 |
| 29 | + String get tidStr { | ||
| 30 | + switch (tid) { | ||
| 31 | + case "1": | ||
| 32 | + return "散座"; | ||
| 33 | + case "2": | ||
| 34 | + return "包间"; | ||
| 35 | + case "3": | ||
| 36 | + return "卡座"; | ||
| 39 | } | 37 | } |
| 38 | + } | ||
| 40 | 39 | ||
| 41 | - //获取桌位可坐人数 | ||
| 42 | - String get tableNum{ | ||
| 43 | - if(max!=null){ | ||
| 44 | - return "最多可坐$max人"; | ||
| 45 | - }else if(table_pnum==null){ | ||
| 46 | - return ""; | ||
| 47 | - }else{ | ||
| 48 | - if(table_pnum==most_pnum){ | ||
| 49 | - return "$table_pnum人"; | ||
| 50 | - }else{ | ||
| 51 | - return "$table_pnum-$most_pnum人"; | ||
| 52 | - } | ||
| 53 | - } | 40 | + String get maxText { |
| 41 | + if (max == null || max == "0" || max == "null") { | ||
| 42 | + return ""; | ||
| 43 | + } else { | ||
| 44 | + return "最多可坐" + max + "人"; | ||
| 54 | } | 45 | } |
| 46 | + } | ||
| 55 | 47 | ||
| 56 | - //获取最低消费 | ||
| 57 | - String get lowStr{ | ||
| 58 | - return low==null?"":"最低消费$low元"; | 48 | + //获取桌位可坐人数 |
| 49 | + String get tableNum { | ||
| 50 | + if (table_pnum == null || table_pnum.isEmpty || table_pnum == "0") { | ||
| 51 | + return ""; | ||
| 52 | + } else if (most_pnum != null && | ||
| 53 | + most_pnum.isNotEmpty && | ||
| 54 | + most_pnum != "0" && | ||
| 55 | + most_pnum != "null") { | ||
| 56 | + if (table_pnum == most_pnum) { | ||
| 57 | + return "$table_pnum人"; | ||
| 58 | + } else { | ||
| 59 | + return "$table_pnum-$most_pnum人"; | ||
| 60 | + } | ||
| 61 | + } else { | ||
| 62 | + return "$table_pnum人"; | ||
| 59 | } | 63 | } |
| 64 | + } | ||
| 65 | + | ||
| 66 | + //获取最低消费 | ||
| 67 | + String get lowStr { | ||
| 68 | + return (low == null || low.isEmpty || low == "0") ? "" : "最低消费\n$low元"; | ||
| 69 | + } | ||
| 60 | 70 | ||
| 61 | - String get signStr{ | ||
| 62 | - if(enable=="0")return "已停用"; | ||
| 63 | - if(sign!=null){ | ||
| 64 | - switch(sign){ | ||
| 65 | - case "1"://已预订 | ||
| 66 | - case "5"://已安排包间 | ||
| 67 | - return "已预订"; | ||
| 68 | - case "2"://用餐中 | ||
| 69 | - return "用餐中"; | ||
| 70 | - default: | ||
| 71 | - return ""; | ||
| 72 | - } | ||
| 73 | - } | ||
| 74 | - return ""; | 71 | + String get signStr { |
| 72 | + if (sign != null&&sign.isNotEmpty) { | ||
| 73 | + switch (sign) { | ||
| 74 | + case "1": //已预订 | ||
| 75 | + case "5": //已安排包间 | ||
| 76 | + return "已预订"; | ||
| 77 | + case "2": //用餐中 | ||
| 78 | + return "用餐中"; | ||
| 79 | + default: | ||
| 80 | + return ""; | ||
| 81 | + } | ||
| 75 | } | 82 | } |
| 83 | + if (enable == "0") return "已停用"; | ||
| 84 | + return ""; | ||
| 85 | + } | ||
| 76 | 86 | ||
| 77 | - | ||
| 78 | - factory Table.fromJson(Map<String,dynamic> json) => _$TableFromJson(json); | ||
| 79 | - Map<String, dynamic> toJson() => _$TableToJson(this); | 87 | + factory Table.fromJson(Map<String, dynamic> json) => _$TableFromJson(json); |
| 88 | + Map<String, dynamic> toJson() => _$TableToJson(this); | ||
| 80 | 89 | ||
| 81 | - @override | ||
| 82 | - String toString() { | ||
| 83 | - return 'Table{id: $id, rid: $rid, tid: $tid, name: $name, table_pnum: $table_pnum, most_pnum: $most_pnum, order_o: $order_o, status: $status, tablestatus: $tablestatus, enable: $enable, spell: $spell, rname: $rname, max: $max, low: $low}'; | ||
| 84 | - } | 90 | + @override |
| 91 | + String toString() { | ||
| 92 | + return 'Table{id: $id, rid: $rid, tid: $tid, name: $name, table_pnum: $table_pnum, most_pnum: $most_pnum, order_o: $order_o, status: $status, tablestatus: $tablestatus, enable: $enable, spell: $spell, rname: $rname, max: $max, low: $low}'; | ||
| 93 | + } | ||
| 85 | 94 | ||
| 86 | } | 95 | } |
| 87 | - |
| @@ -22,10 +22,10 @@ Table _$TableFromJson(Map<String, dynamic> json) { | @@ -22,10 +22,10 @@ Table _$TableFromJson(Map<String, dynamic> json) { | ||
| 22 | ..rname = json['rname'] as String | 22 | ..rname = json['rname'] as String |
| 23 | ..max = json['max'] as String | 23 | ..max = json['max'] as String |
| 24 | ..low = json['low'] as String | 24 | ..low = json['low'] as String |
| 25 | - ..sign=json['sign'] as String | ||
| 26 | - ..reserver=json['reserver'] as String | ||
| 27 | - ..notebookId=json['notebookId'] as String | ||
| 28 | - ..selected=json["selected"] as bool; | 25 | + ..sign = json['sign'] as String |
| 26 | + ..reserver = json['reserver'] as String | ||
| 27 | + ..notebookId = json['notebookId'] as String | ||
| 28 | + ..selected = json['selected'] as bool; | ||
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | Map<String, dynamic> _$TableToJson(Table instance) => <String, dynamic>{ | 31 | Map<String, dynamic> _$TableToJson(Table instance) => <String, dynamic>{ |
| @@ -43,9 +43,8 @@ Map<String, dynamic> _$TableToJson(Table instance) => <String, dynamic>{ | @@ -43,9 +43,8 @@ Map<String, dynamic> _$TableToJson(Table instance) => <String, dynamic>{ | ||
| 43 | 'rname': instance.rname, | 43 | 'rname': instance.rname, |
| 44 | 'max': instance.max, | 44 | 'max': instance.max, |
| 45 | 'low': instance.low, | 45 | 'low': instance.low, |
| 46 | - 'sign':instance.sign, | ||
| 47 | - 'reserver':instance.reserver, | ||
| 48 | - 'notebookId':instance.notebookId, | ||
| 49 | - 'selected':instance.selected | 46 | + 'sign': instance.sign, |
| 47 | + 'reserver': instance.reserver, | ||
| 48 | + 'notebookId': instance.notebookId, | ||
| 49 | + 'selected': instance.selected | ||
| 50 | }; | 50 | }; |
| 51 | - |
lib/models/table_list.dart
0 → 100644
| 1 | +import 'package:json_annotation/json_annotation.dart'; | ||
| 2 | + | ||
| 3 | +part 'table_list.g.dart'; | ||
| 4 | + | ||
| 5 | +@JsonSerializable() | ||
| 6 | +class TableListModel extends Object { | ||
| 7 | + @JsonKey(name: 'ret') | ||
| 8 | + int ret; | ||
| 9 | + | ||
| 10 | + @JsonKey(name: 'data') | ||
| 11 | + List<TableListSunModel> data; | ||
| 12 | + | ||
| 13 | + @JsonKey(name: 'msg') | ||
| 14 | + String msg; | ||
| 15 | + | ||
| 16 | + TableListModel( | ||
| 17 | + this.ret, | ||
| 18 | + this.data, | ||
| 19 | + this.msg, | ||
| 20 | + ); | ||
| 21 | + | ||
| 22 | + factory TableListModel.fromJson(Map<String, dynamic> srcJson) => | ||
| 23 | + _$TableListModelFromJson(srcJson); | ||
| 24 | + | ||
| 25 | + Map<String, dynamic> toJson() => _$TableListModelToJson(this); | ||
| 26 | +} | ||
| 27 | + | ||
| 28 | +@JsonSerializable() | ||
| 29 | +class TableListSunModel extends Object { | ||
| 30 | + @JsonKey(name: 'name') | ||
| 31 | + String name; | ||
| 32 | + | ||
| 33 | + @JsonKey(name: 'list') | ||
| 34 | + List<TableList> list; | ||
| 35 | + | ||
| 36 | + TableListSunModel( | ||
| 37 | + this.name, | ||
| 38 | + this.list, | ||
| 39 | + ); | ||
| 40 | + | ||
| 41 | + factory TableListSunModel.fromJson(Map<String, dynamic> srcJson) => | ||
| 42 | + _$TableListSunModelFromJson(srcJson); | ||
| 43 | + | ||
| 44 | + Map<String, dynamic> toJson() => _$TableListSunModelToJson(this); | ||
| 45 | +} | ||
| 46 | + | ||
| 47 | +@JsonSerializable() | ||
| 48 | +class TableList extends Object { | ||
| 49 | + @JsonKey(name: 'id') | ||
| 50 | + String id; | ||
| 51 | + | ||
| 52 | + @JsonKey(name: 'rid') | ||
| 53 | + String rid; | ||
| 54 | + | ||
| 55 | + @JsonKey(name: 'sellerid') | ||
| 56 | + String sellerid; | ||
| 57 | + | ||
| 58 | + @JsonKey(name: 'name') | ||
| 59 | + String name; | ||
| 60 | + | ||
| 61 | + @JsonKey(name: 'qrcode') | ||
| 62 | + String qrcode; | ||
| 63 | + | ||
| 64 | + @JsonKey(name: 'table_pnum') | ||
| 65 | + String tablePnum; | ||
| 66 | + | ||
| 67 | + @JsonKey(name: 'most_pnum') | ||
| 68 | + String mostPnum; | ||
| 69 | + | ||
| 70 | + @JsonKey(name: 'tid') | ||
| 71 | + String tid; | ||
| 72 | + | ||
| 73 | + @JsonKey(name: 'hot') | ||
| 74 | + String hot; | ||
| 75 | + | ||
| 76 | + @JsonKey(name: 'order_o') | ||
| 77 | + String orderO; | ||
| 78 | + | ||
| 79 | + @JsonKey(name: 'status') | ||
| 80 | + String status; | ||
| 81 | + | ||
| 82 | + @JsonKey(name: 'enable') | ||
| 83 | + String enable; | ||
| 84 | + | ||
| 85 | + @JsonKey(name: 'spell') | ||
| 86 | + String spell; | ||
| 87 | + | ||
| 88 | + @JsonKey(name: 'cdate') | ||
| 89 | + String cdate; | ||
| 90 | + | ||
| 91 | + @JsonKey(name: 'rname') | ||
| 92 | + String rname; | ||
| 93 | + | ||
| 94 | + @JsonKey(name: 'region_name') | ||
| 95 | + String regionName; | ||
| 96 | + | ||
| 97 | + String table_pnum; //桌位最少可做人数 | ||
| 98 | + String most_pnum; //桌位最多可做人数 | ||
| 99 | + String low; //最低消费 | ||
| 100 | + | ||
| 101 | + //获取桌位类型 | ||
| 102 | + String get tidStr { | ||
| 103 | + switch (tid) { | ||
| 104 | + case "1": | ||
| 105 | + return "散座"; | ||
| 106 | + case "2": | ||
| 107 | + return "包间"; | ||
| 108 | + case "3": | ||
| 109 | + return "卡座"; | ||
| 110 | + } | ||
| 111 | + } | ||
| 112 | + | ||
| 113 | + String reserver; //订餐人 | ||
| 114 | + // String notebookId; //桌位对应的预订id | ||
| 115 | + bool selected = false; //是否选中 | ||
| 116 | + // String max; //最多可做人数 | ||
| 117 | + String sign; //标签 桌位状态 0:待确认,1:已定座,2:确认到店,3:用餐完成,4:取消预订,5:安排包间,6拒绝订单 | ||
| 118 | + | ||
| 119 | + // String get maxText { | ||
| 120 | + // if (max == null || max == "0" || max == "null") { | ||
| 121 | + // return ""; | ||
| 122 | + // } else { | ||
| 123 | + // return "最多可坐" + max + "人"; | ||
| 124 | + // } | ||
| 125 | + // } | ||
| 126 | + | ||
| 127 | + //获取桌位可坐人数 | ||
| 128 | + String get tableNum { | ||
| 129 | + if (table_pnum == null || table_pnum.isEmpty || table_pnum == "0") { | ||
| 130 | + return ""; | ||
| 131 | + } else if (most_pnum != null && | ||
| 132 | + most_pnum.isNotEmpty && | ||
| 133 | + most_pnum != "0" && | ||
| 134 | + most_pnum != "null") { | ||
| 135 | + if (table_pnum == most_pnum) { | ||
| 136 | + return "$table_pnum人"; | ||
| 137 | + } else { | ||
| 138 | + return "$table_pnum-$most_pnum人"; | ||
| 139 | + } | ||
| 140 | + } else { | ||
| 141 | + return "$table_pnum人"; | ||
| 142 | + } | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + //获取最低消费 | ||
| 146 | + String get lowStr { | ||
| 147 | + return (low == null || low.isEmpty || low == "0") ? "" : "最低消费\n$low元"; | ||
| 148 | + } | ||
| 149 | + | ||
| 150 | + String get signStr { | ||
| 151 | + if (enable == "0") return "已停用"; | ||
| 152 | + if (sign != null) { | ||
| 153 | + switch (sign) { | ||
| 154 | + case "1": //已预订 | ||
| 155 | + case "5": //已安排包间 | ||
| 156 | + return "已预订"; | ||
| 157 | + case "2": //用餐中 | ||
| 158 | + return "用餐中"; | ||
| 159 | + default: | ||
| 160 | + return ""; | ||
| 161 | + } | ||
| 162 | + } | ||
| 163 | + return ""; | ||
| 164 | + } | ||
| 165 | + | ||
| 166 | + TableList( | ||
| 167 | + this.id, | ||
| 168 | + this.rid, | ||
| 169 | + this.sellerid, | ||
| 170 | + this.name, | ||
| 171 | + this.qrcode, | ||
| 172 | + this.tablePnum, | ||
| 173 | + this.mostPnum, | ||
| 174 | + this.tid, | ||
| 175 | + this.hot, | ||
| 176 | + this.orderO, | ||
| 177 | + this.status, | ||
| 178 | + this.enable, | ||
| 179 | + this.spell, | ||
| 180 | + this.cdate, | ||
| 181 | + this.rname,this.regionName); | ||
| 182 | + | ||
| 183 | + factory TableList.fromJson(Map<String, dynamic> srcJson) => | ||
| 184 | + _$TableListFromJson(srcJson); | ||
| 185 | + | ||
| 186 | + Map<String, dynamic> toJson() => _$TableListToJson(this); | ||
| 187 | +} |
lib/models/table_list.g.dart
0 → 100644
| 1 | +// GENERATED CODE - DO NOT MODIFY BY HAND | ||
| 2 | + | ||
| 3 | +part of 'table_list.dart'; | ||
| 4 | + | ||
| 5 | +// ************************************************************************** | ||
| 6 | +// JsonSerializableGenerator | ||
| 7 | +// ************************************************************************** | ||
| 8 | + | ||
| 9 | +TableListModel _$TableListModelFromJson(Map<String, dynamic> json) { | ||
| 10 | + return TableListModel( | ||
| 11 | + json['ret'] as int, | ||
| 12 | + (json['data'] as List) | ||
| 13 | + ?.map((e) => e == null | ||
| 14 | + ? null | ||
| 15 | + : TableListSunModel.fromJson(e as Map<String, dynamic>)) | ||
| 16 | + ?.toList(), | ||
| 17 | + json['msg'] as String); | ||
| 18 | +} | ||
| 19 | + | ||
| 20 | +Map<String, dynamic> _$TableListModelToJson(TableListModel instance) => | ||
| 21 | + <String, dynamic>{ | ||
| 22 | + 'ret': instance.ret, | ||
| 23 | + 'data': instance.data, | ||
| 24 | + 'msg': instance.msg | ||
| 25 | + }; | ||
| 26 | + | ||
| 27 | +TableListSunModel _$TableListSunModelFromJson(Map<String, dynamic> json) { | ||
| 28 | + return TableListSunModel( | ||
| 29 | + json['name'] as String, | ||
| 30 | + (json['list'] as List) | ||
| 31 | + ?.map((e) => | ||
| 32 | + e == null ? null : TableList.fromJson(e as Map<String, dynamic>)) | ||
| 33 | + ?.toList()); | ||
| 34 | +} | ||
| 35 | + | ||
| 36 | +Map<String, dynamic> _$TableListSunModelToJson(TableListSunModel instance) => | ||
| 37 | + <String, dynamic>{'name': instance.name, 'list': instance.list}; | ||
| 38 | + | ||
| 39 | +TableList _$TableListFromJson(Map<String, dynamic> json) { | ||
| 40 | + return TableList( | ||
| 41 | + json['id'] as String, | ||
| 42 | + json['rid'] as String, | ||
| 43 | + json['sellerid'] as String, | ||
| 44 | + json['name'] as String, | ||
| 45 | + json['qrcode'] as String, | ||
| 46 | + json['table_pnum'] as String, | ||
| 47 | + json['most_pnum'] as String, | ||
| 48 | + json['tid'] as String, | ||
| 49 | + json['hot'] as String, | ||
| 50 | + json['order_o'] as String, | ||
| 51 | + json['status'] as String, | ||
| 52 | + json['enable'] as String, | ||
| 53 | + json['spell'] as String, | ||
| 54 | + json['cdate'] as String, | ||
| 55 | + json['rname'] as String, | ||
| 56 | + json['region_name'] as String); | ||
| 57 | +} | ||
| 58 | + | ||
| 59 | +Map<String, dynamic> _$TableListToJson(TableList instance) => <String, dynamic>{ | ||
| 60 | + 'id': instance.id, | ||
| 61 | + 'rid': instance.rid, | ||
| 62 | + 'sellerid': instance.sellerid, | ||
| 63 | + 'name': instance.name, | ||
| 64 | + 'qrcode': instance.qrcode, | ||
| 65 | + 'table_pnum': instance.tablePnum, | ||
| 66 | + 'most_pnum': instance.mostPnum, | ||
| 67 | + 'tid': instance.tid, | ||
| 68 | + 'hot': instance.hot, | ||
| 69 | + 'order_o': instance.orderO, | ||
| 70 | + 'status': instance.status, | ||
| 71 | + 'enable': instance.enable, | ||
| 72 | + 'spell': instance.spell, | ||
| 73 | + 'cdate': instance.cdate, | ||
| 74 | + 'rname': instance.rname, | ||
| 75 | + 'region_name': instance.regionName | ||
| 76 | + }; |
lib/models/version.dart
0 → 100644
| 1 | +/** | ||
| 2 | + * 更新版本 | ||
| 3 | + */ | ||
| 4 | +class Version{ | ||
| 5 | + String name;//更新版本号 | ||
| 6 | + String version;//构建版本号 | ||
| 7 | + String file_url;//安装包下载地址 | ||
| 8 | + String content;//更新内容 | ||
| 9 | + | ||
| 10 | + Version(); | ||
| 11 | + | ||
| 12 | + factory Version.fromJson(Map<String,dynamic> json)=>Version()..name=json["name"]..version=json["version"]..file_url=json["file_url"]..content=json["content"]; | ||
| 13 | + | ||
| 14 | + Map<String,dynamic> toJson()=><String,dynamic>{name:"name","version":version,"file_url":file_url,"content":content}; | ||
| 15 | +} |
| @@ -6,8 +6,9 @@ class BaseResp<T> { | @@ -6,8 +6,9 @@ class BaseResp<T> { | ||
| 6 | int code; | 6 | int code; |
| 7 | String msg; | 7 | String msg; |
| 8 | T data; | 8 | T data; |
| 9 | + Map responseData; | ||
| 9 | 10 | ||
| 10 | - BaseResp(this.status, this.code, this.msg, this.data); | 11 | + BaseResp(this.status, this.code, this.msg, this.data,this.responseData); |
| 11 | 12 | ||
| 12 | @override | 13 | @override |
| 13 | String toString() { | 14 | String toString() { |
| @@ -3,11 +3,12 @@ import 'dart:io'; | @@ -3,11 +3,12 @@ import 'dart:io'; | ||
| 3 | 3 | ||
| 4 | import 'package:dio/dio.dart'; | 4 | import 'package:dio/dio.dart'; |
| 5 | import 'package:flutter/material.dart'; | 5 | import 'package:flutter/material.dart'; |
| 6 | +import 'package:one_key/constant/error.dart'; | ||
| 7 | +import 'package:one_key/utils/utils.dart'; | ||
| 6 | import 'package:one_key/widgets/loading.dart'; | 8 | import 'package:one_key/widgets/loading.dart'; |
| 7 | 9 | ||
| 8 | import 'base_resp.dart'; | 10 | import 'base_resp.dart'; |
| 9 | 11 | ||
| 10 | - | ||
| 11 | /** | 12 | /** |
| 12 | * @Author: thl | 13 | * @Author: thl |
| 13 | * @GitHub: https://github.com/Sky24n | 14 | * @GitHub: https://github.com/Sky24n |
| @@ -165,58 +166,83 @@ class DioUtil { | @@ -165,58 +166,83 @@ class DioUtil { | ||
| 165 | /// [data] The request data | 166 | /// [data] The request data |
| 166 | /// [options] The request options. | 167 | /// [options] The request options. |
| 167 | /// <BaseResp<T> 返回 status code msg data . | 168 | /// <BaseResp<T> 返回 status code msg data . |
| 168 | - Future<BaseResp<T>> request<T>(BuildContext context,String method, String path, | ||
| 169 | - {data, Options options, CancelToken cancelToken,bool showLoading=true}) async { | ||
| 170 | - if(showLoading)Loading.showLoading(context); | ||
| 171 | - Response response = await _dio.request(path, | ||
| 172 | - data: data, | ||
| 173 | - options: _checkOptions(method, options), | ||
| 174 | - cancelToken: cancelToken); | ||
| 175 | - _printHttpLog(response); | ||
| 176 | - String _status; | ||
| 177 | - int _code; | ||
| 178 | - String _msg; | ||
| 179 | - T _data; | ||
| 180 | - if (response.statusCode == HttpStatus.ok || | ||
| 181 | - response.statusCode == HttpStatus.created) { | ||
| 182 | - try { | ||
| 183 | - if (response.data is Map) { | ||
| 184 | - _status = (response.data[_statusKey] is int) | ||
| 185 | - ? response.data[_statusKey].toString() | ||
| 186 | - : response.data[_statusKey]; | ||
| 187 | - _code = (response.data[_codeKey] is String) | ||
| 188 | - ? int.tryParse(response.data[_codeKey]) | ||
| 189 | - : response.data[_codeKey]; | ||
| 190 | - _msg = response.data[_msgKey]; | ||
| 191 | - _data = response.data[_dataKey]; | ||
| 192 | - } else { | ||
| 193 | - Map<String, dynamic> _dataMap = _decodeData(response); | ||
| 194 | - _status = (_dataMap[_statusKey] is int) | ||
| 195 | - ? _dataMap[_statusKey].toString() | ||
| 196 | - : _dataMap[_statusKey]; | ||
| 197 | - _code = (_dataMap[_codeKey] is String) | ||
| 198 | - ? int.tryParse(_dataMap[_codeKey]) | ||
| 199 | - : _dataMap[_codeKey]; | ||
| 200 | - _msg = _dataMap[_msgKey]; | ||
| 201 | - _data = _dataMap[_dataKey]; | 169 | + Future<BaseResp<T>> request<T>( |
| 170 | + BuildContext context, String method, String path, | ||
| 171 | + {data, | ||
| 172 | + Options options, | ||
| 173 | + CancelToken cancelToken, | ||
| 174 | + bool showLoading = true}) async { | ||
| 175 | + bool connectivity = await Utils.checkConnectiviy(); | ||
| 176 | + if (!connectivity) { | ||
| 177 | +// Utils.showToast("网络错误,请稍后重试"); | ||
| 178 | + throw MyError(type: 1); | ||
| 179 | + } | ||
| 180 | + if (showLoading) Loading.showLoading(context); | ||
| 181 | + try { | ||
| 182 | + print('--------' + path + '---------'); | ||
| 183 | + Response response = await _dio.request(path, | ||
| 184 | + data: data, | ||
| 185 | + options: _checkOptions(method, options), | ||
| 186 | + cancelToken: cancelToken); | ||
| 187 | + _printHttpLog(response); | ||
| 188 | + String _status; | ||
| 189 | + int _code; | ||
| 190 | + String _msg; | ||
| 191 | + T _data; | ||
| 192 | + Map _responseData; | ||
| 193 | + if (response.statusCode == HttpStatus.ok || | ||
| 194 | + response.statusCode == HttpStatus.created) { | ||
| 195 | + try { | ||
| 196 | + if (response.data is Map) { | ||
| 197 | + _status = (response.data[_statusKey] is int) | ||
| 198 | + ? response.data[_statusKey].toString() | ||
| 199 | + : response.data[_statusKey]; | ||
| 200 | + _code = (response.data[_codeKey] is String) | ||
| 201 | + ? int.tryParse(response.data[_codeKey]) | ||
| 202 | + : response.data[_codeKey]; | ||
| 203 | + _msg = response.data[_msgKey]; | ||
| 204 | + _data = response.data[_dataKey]; | ||
| 205 | + _responseData = response.data; | ||
| 206 | + } else { | ||
| 207 | + Map<String, dynamic> _dataMap = _decodeData(response); | ||
| 208 | + _status = (_dataMap[_statusKey] is int) | ||
| 209 | + ? _dataMap[_statusKey].toString() | ||
| 210 | + : _dataMap[_statusKey]; | ||
| 211 | + _code = (_dataMap[_codeKey] is String) | ||
| 212 | + ? int.tryParse(_dataMap[_codeKey]) | ||
| 213 | + : _dataMap[_codeKey]; | ||
| 214 | + _msg = _dataMap[_msgKey]; | ||
| 215 | + _data = _dataMap[_dataKey]; | ||
| 216 | + _responseData = _dataMap; | ||
| 217 | + } | ||
| 218 | + Loading.hideLoading(context); | ||
| 219 | + return new BaseResp(_status, _code, _msg, _data, _responseData); | ||
| 220 | + } catch (e) { | ||
| 221 | + Loading.hideLoading(context); | ||
| 222 | + return new Future.error(new DioError( | ||
| 223 | + response: response, | ||
| 224 | + message: "data parsing exception...", | ||
| 225 | + type: DioErrorType.RESPONSE, | ||
| 226 | + )); | ||
| 202 | } | 227 | } |
| 228 | + } | ||
| 229 | + Loading.hideLoading(context); | ||
| 230 | + return new Future.error(new DioError( | ||
| 231 | + response: response, | ||
| 232 | + message: "statusCode: $response.statusCode, service error", | ||
| 233 | + type: DioErrorType.RESPONSE, | ||
| 234 | + )); | ||
| 235 | + } on DioError catch (error) { | ||
| 236 | + if (showLoading) { | ||
| 203 | Loading.hideLoading(context); | 237 | Loading.hideLoading(context); |
| 204 | - return new BaseResp(_status, _code, _msg, _data); | ||
| 205 | - } catch (e) { | ||
| 206 | - Loading.hideLoading(context); | ||
| 207 | - return new Future.error(new DioError( | ||
| 208 | - response: response, | ||
| 209 | - message: "data parsing exception...", | ||
| 210 | - type: DioErrorType.RESPONSE, | ||
| 211 | - )); | 238 | + } |
| 239 | + if (error is DioError && error.type == DioErrorType.CONNECT_TIMEOUT) { | ||
| 240 | +// Utils.showToast("网络链接超时,请稍后重试"); | ||
| 241 | + } | ||
| 242 | + if (error.type != DioErrorType.CANCEL) { | ||
| 243 | + throw MyError(type: 2); | ||
| 212 | } | 244 | } |
| 213 | } | 245 | } |
| 214 | - Loading.hideLoading(context); | ||
| 215 | - return new Future.error(new DioError( | ||
| 216 | - response: response, | ||
| 217 | - message: "statusCode: $response.statusCode, service error", | ||
| 218 | - type: DioErrorType.RESPONSE, | ||
| 219 | - )); | ||
| 220 | } | 246 | } |
| 221 | 247 | ||
| 222 | /// Make http request with options. | 248 | /// Make http request with options. |
| @@ -387,8 +413,8 @@ class DioUtil { | @@ -387,8 +413,8 @@ class DioUtil { | ||
| 387 | Options options = new Options(); | 413 | Options options = new Options(); |
| 388 | options.contentType = | 414 | options.contentType = |
| 389 | ContentType.parse("application/x-www-form-urlencoded"); | 415 | ContentType.parse("application/x-www-form-urlencoded"); |
| 390 | - options.connectTimeout = 1000 * 30; | ||
| 391 | - options.receiveTimeout = 1000 * 30; | 416 | + options.connectTimeout = 1000 * 10; //默认10s |
| 417 | + options.receiveTimeout = 1000 * 10; //默认10s | ||
| 392 | return options; | 418 | return options; |
| 393 | } | 419 | } |
| 394 | } | 420 | } |
| 1 | -class HttpUrl{ | ||
| 2 | - static const String server_address = "https://xt04.colorcun.com/";//服务端请求地址 | ||
| 3 | - static const String app_user_login="?service=Android.User.AppUserLogin";//登录地址 | ||
| 4 | - static const String user_token_init="?service=Android.User.UserTokenInit";//初始化推送token | ||
| 5 | - static const String sellerinfo="?service=Android.Reserve.SellerInfo";//获取商家信息 | ||
| 6 | - static const String login_out="?service=Android.User.AppLoginOut";//退出登录 | ||
| 7 | - static const String get_message_list="?service=Android.Reserve.GetMessageList";//获取消息列表 | ||
| 8 | - static const String get_reserve_list="?service=Android.Reserve.NewGetReserveList";//获取已预订列表 | ||
| 9 | - static const String reserve_count_day="?service=Android.Reserve.NewReservesCountDay";//获取一天订单统计数目 | ||
| 10 | - static const String reserve_detail="?service=Android.Reserve.Detail";//订单详情 | ||
| 11 | - static const String set_reserve_cusman="?service=Android.Reserve.SetReserveCusman";//设置客户经理 | ||
| 12 | - static const String table_list="?service=Android.Tables.GetTableListsBySellerId";//桌位列表 | ||
| 13 | - static const String set_reserve_status="?service=Android.Customer.SetReserveStatus";//设置订单状态 | ||
| 14 | - static const String set_message_status="?service=Android.Advance.SetMessageStatus";//设置消息状态 | ||
| 15 | - static const String get_sms_content="?service=App.SendSMS.GetSmsContent";//获取短信内容 | ||
| 16 | - static const String send_sms="?service=App.SendSMS.NewMessage";//发送短信 | ||
| 17 | -} | ||
| 1 | +class HttpUrl { | ||
| 2 | + static const String server_address = "https://xt04.colorcun.com/"; //服务端请求地址 | ||
| 3 | + static const String app_user_login = | ||
| 4 | + "?service=Android.User.AppUserLogin"; //登录地址 | ||
| 5 | + static const String user_token_init = | ||
| 6 | + "?service=Android.User.UserTokenInit"; //初始化推送token | ||
| 7 | + static const String sellerinfo = | ||
| 8 | + "?service=Android.Reserve.SellerInfo"; //获取商家信息 | ||
| 9 | + static const String login_out = "?service=Android.User.AppLoginOut"; //退出登录 | ||
| 10 | + static const String get_message_list = | ||
| 11 | + "?service=Android.Reserve.GetMessageList"; //获取消息列表 | ||
| 12 | + static const String get_reserve_list = | ||
| 13 | + "?service=Android.Reserve.NewGetReserveList"; //获取已预订列表 | ||
| 14 | + static const String reserve_count_day = | ||
| 15 | + "?service=Android.Reserve.NewReservesCountDay"; //获取一天订单统计数目 | ||
| 16 | + static const String reserve_detail = "?service=Android.Reserve.Detail"; //订单详情 | ||
| 17 | + static const String set_reserve_cusman = | ||
| 18 | + "?service=Android.Reserve.SetReserveCusman"; //设置客户经理 | ||
| 19 | + static const String table_list = | ||
| 20 | + "?service=Android.Tables.GetTableListsBySellerId"; //桌位列表 | ||
| 21 | + static const String set_reserve_status = | ||
| 22 | + "?service=Android.Customer.SetReserveStatus"; //设置订单状态 | ||
| 23 | + static const String set_message_status = | ||
| 24 | + "?service=Android.Advance.SetMessageStatus"; //设置消息状态 | ||
| 25 | + static const String get_sms_content = | ||
| 26 | + "?service=App.SendSMS.GetSmsContent"; //获取短信内容 | ||
| 27 | + static const String send_sms = "?service=App.SendSMS.NewMessage"; //发送短信 | ||
| 28 | + static const String check_update = | ||
| 29 | + "http://xt03.colorcun.com/admin/api/compareversion?flat=3"; | ||
| 30 | + static const String upload_contact = | ||
| 31 | + "?service=App.Seller.SaveCallRecord"; //上传通讯录 | ||
| 32 | + static const String get_table_list = | ||
| 33 | + "?service=Android.Reserve.NewGetTableList"; //根据商家ID 获取桌位信息列表: 1:散座 2:包间 默认:获取所有数据 | ||
| 34 | + static const String set_reserve_info = | ||
| 35 | + "?service=Android.Reserve.SetReserveInfo"; //录入/更改内部预订 | ||
| 36 | + static const String set_customer_info = | ||
| 37 | + "?service=Android.Customer.SetReserveInfo"; //更改在线预订 | ||
| 38 | + static const String set_switch_status = | ||
| 39 | + "?service=App.Reserve.SetSwitchStatus"; //启用/停用桌位 | ||
| 40 | + static const String sms_info = "?service=App.SendSMS.SmsInfo"; //短信余量查询及套餐查询接口 | ||
| 41 | +} |
| @@ -2,6 +2,7 @@ import 'dart:convert'; | @@ -2,6 +2,7 @@ import 'dart:convert'; | ||
| 2 | 2 | ||
| 3 | import 'package:flutter/material.dart'; | 3 | import 'package:flutter/material.dart'; |
| 4 | import 'package:flutter_screenutil/flutter_screenutil.dart'; | 4 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
| 5 | +import 'package:one_key/constant/state.dart'; | ||
| 5 | import 'package:one_key/models/manager.dart'; | 6 | import 'package:one_key/models/manager.dart'; |
| 6 | import 'package:one_key/models/notebook_detail.dart'; | 7 | import 'package:one_key/models/notebook_detail.dart'; |
| 7 | import 'package:one_key/provider/notebook_detail_model.dart'; | 8 | import 'package:one_key/provider/notebook_detail_model.dart'; |
| @@ -13,17 +14,24 @@ import 'package:one_key/utils/utils.dart'; | @@ -13,17 +14,24 @@ import 'package:one_key/utils/utils.dart'; | ||
| 13 | import 'package:one_key/widgets/MyDivider.dart'; | 14 | import 'package:one_key/widgets/MyDivider.dart'; |
| 14 | import 'package:one_key/widgets/app_bar.dart'; | 15 | import 'package:one_key/widgets/app_bar.dart'; |
| 15 | import 'package:one_key/widgets/common_button.dart'; | 16 | import 'package:one_key/widgets/common_button.dart'; |
| 17 | +import 'package:one_key/widgets/h_empty_view.dart'; | ||
| 18 | +import 'package:one_key/widgets/need_item.dart'; | ||
| 19 | +import 'package:one_key/widgets/page_exception.dart'; | ||
| 16 | import 'package:one_key/widgets/row_multi_text.dart'; | 20 | import 'package:one_key/widgets/row_multi_text.dart'; |
| 17 | import 'package:one_key/widgets/table_item.dart'; | 21 | import 'package:one_key/widgets/table_item.dart'; |
| 18 | import 'package:one_key/models/table.dart' as t; | 22 | import 'package:one_key/models/table.dart' as t; |
| 19 | import 'package:one_key/widgets/v_empty_view.dart'; | 23 | import 'package:one_key/widgets/v_empty_view.dart'; |
| 20 | import 'package:provider/provider.dart'; | 24 | import 'package:provider/provider.dart'; |
| 25 | +import 'package:one_key/utils/event_bus.dart'; | ||
| 21 | 26 | ||
| 22 | -class HandleOnlinePage extends StatefulWidget { | 27 | +import '../../app.dart'; |
| 23 | 28 | ||
| 29 | +class HandleOnlinePage extends StatefulWidget { | ||
| 24 | final String rid; | 30 | final String rid; |
| 25 | final String mid; | 31 | final String mid; |
| 26 | - HandleOnlinePage(this.rid,this.mid); | 32 | + final bool fromNotify; |
| 33 | + | ||
| 34 | + HandleOnlinePage(this.rid, this.mid, {this.fromNotify = false}); | ||
| 27 | 35 | ||
| 28 | @override | 36 | @override |
| 29 | State<StatefulWidget> createState() { | 37 | State<StatefulWidget> createState() { |
| @@ -32,282 +40,648 @@ class HandleOnlinePage extends StatefulWidget { | @@ -32,282 +40,648 @@ class HandleOnlinePage extends StatefulWidget { | ||
| 32 | } | 40 | } |
| 33 | } | 41 | } |
| 34 | 42 | ||
| 35 | - | ||
| 36 | class HandleOnlinePageState extends State<HandleOnlinePage> { | 43 | class HandleOnlinePageState extends State<HandleOnlinePage> { |
| 37 | - | ||
| 38 | - NotebookDetailModel detailModel= NotebookDetailModel(); | 44 | + NotebookDetailModel detailModel; |
| 39 | 45 | ||
| 40 | NotebookDetail detailEntity; | 46 | NotebookDetail detailEntity; |
| 41 | 47 | ||
| 42 | - String cusmanText=""; | 48 | + String cusmanText = ""; |
| 49 | + | ||
| 50 | + List<Manager> managers = []; //客户经理 | ||
| 51 | + | ||
| 52 | + Manager manager = Manager(); | ||
| 53 | + | ||
| 54 | + bool isCallTel = false; | ||
| 43 | 55 | ||
| 44 | - List<Manager> managers=[];//客户经理 | 56 | + String formatPhone = ""; //格式客户号码 |
| 45 | 57 | ||
| 46 | - Manager manager=Manager(); | 58 | + bool isRefused = false; //是否已拒绝 |
| 59 | + bool isPause = false; //是否暂停预订 | ||
| 60 | + StateSetter refuseDialogState; //决绝弹框setState | ||
| 47 | 61 | ||
| 48 | @override | 62 | @override |
| 49 | void initState() { | 63 | void initState() { |
| 50 | // TODO: implement initState | 64 | // TODO: implement initState |
| 51 | super.initState(); | 65 | super.initState(); |
| 52 | - WidgetsBinding.instance.addPostFrameCallback((_) async { | ||
| 53 | - detailEntity=await detailModel.getReserveDetail(context, { | ||
| 54 | - "rid":widget.rid, | ||
| 55 | - }); | ||
| 56 | - if(detailEntity.status!="0"){//已处理 | ||
| 57 | - setMessageStatus(); | ||
| 58 | - NavigatorUtil.goNotebookDetailPage(context, detailEntity.id,replace: true); | ||
| 59 | - }else{ | ||
| 60 | - setState(() {//未处理 | ||
| 61 | - cusmanText=detailEntity.cusman.isEmpty?"请选择":detailEntity.cusman; | ||
| 62 | - }); | ||
| 63 | - managers=await detailModel.getManagers(context); | 66 | + WidgetsBinding.instance.addPostFrameCallback((_) { |
| 67 | + _getOrderListData(); | ||
| 68 | + }); | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + /// 获取当前预订订单详情 | ||
| 72 | + _getOrderListData() async { | ||
| 73 | + detailEntity = await detailModel.getReserveDetail(context, { | ||
| 74 | + "rid": widget.rid, | ||
| 75 | + }); | ||
| 76 | + setState(() { | ||
| 77 | + //未处理 | ||
| 78 | + cusmanText = detailEntity.cusman.isEmpty ? "请选择" : detailEntity.cusman; | ||
| 79 | + formatPhone = detailEntity.phone; | ||
| 80 | + if (App.sp.getString("is_call_tel") != null && | ||
| 81 | + App.sp.getString("is_call_tel") == "1") { | ||
| 82 | + isCallTel = true; | ||
| 83 | + } else { | ||
| 84 | + isCallTel = false; | ||
| 85 | + if (detailEntity.phone.isNotEmpty && | ||
| 86 | + detailEntity.phone.length == 11 && | ||
| 87 | + (detailEntity.status == "0" || detailEntity.status == "6")) { | ||
| 88 | + formatPhone = detailEntity.phone.substring(0, 3) + | ||
| 89 | + "****" + | ||
| 90 | + detailEntity.phone.substring(7); | ||
| 91 | + } | ||
| 64 | } | 92 | } |
| 65 | }); | 93 | }); |
| 94 | + if (detailEntity.status != "0" && !isPause) { | ||
| 95 | + //已处理 | ||
| 96 | + Future.delayed(Duration(milliseconds: 200), () { | ||
| 97 | + NavigatorUtil.goNotebookDetailPage(context, detailEntity.id, | ||
| 98 | + fromNotify: widget.fromNotify, replace: true); | ||
| 99 | + }); | ||
| 100 | + setMessageStatus(); | ||
| 101 | + } else { | ||
| 102 | + managers = await detailModel.getManagers(context); | ||
| 103 | + } | ||
| 66 | } | 104 | } |
| 67 | 105 | ||
| 68 | //设置当前客户经理 | 106 | //设置当前客户经理 |
| 69 | - _setCurrManager(){ | ||
| 70 | - manager=managers.firstWhere((manager)=>manager.userName==cusmanText,orElse: ()=>Manager()); | ||
| 71 | - if(manager.id==null||manager.id.toString().isEmpty)return; | ||
| 72 | - Map<String,String> params={ | ||
| 73 | - "rid":detailEntity.id, | ||
| 74 | - "cusman_id":manager.id.toString(), | ||
| 75 | - "cusman":manager.userName | 107 | + _setCurrManager() { |
| 108 | + manager = managers.firstWhere((manager) => manager.userName == cusmanText, | ||
| 109 | + orElse: () => Manager()); | ||
| 110 | + if (manager.id == null || manager.id.toString().isEmpty) return; | ||
| 111 | + Map<String, String> params = { | ||
| 112 | + "rid": detailEntity.id, | ||
| 113 | + "cusman_id": manager.id.toString(), | ||
| 114 | + "cusman": manager.userName | ||
| 76 | }; | 115 | }; |
| 77 | detailModel.setReserveCusmnan(context, params); | 116 | detailModel.setReserveCusmnan(context, params); |
| 78 | } | 117 | } |
| 79 | 118 | ||
| 80 | //拒绝订单弹框 | 119 | //拒绝订单弹框 |
| 81 | - _showRefuseDialog(){ | ||
| 82 | - showDialog(context: context,builder: (context){ | ||
| 83 | - return AlertDialog( | ||
| 84 | - title: Text("确定拒绝订单吗?\n拒绝后无法联系客户"), | ||
| 85 | - titleTextStyle: TextStyle(color: MyColours.color_353535,fontSize: ScreenUtil().setSp(26)), | ||
| 86 | - content: Text("如果包间类型订满,请及时停用"), | ||
| 87 | - contentTextStyle:TextStyle(color: MyColours.color_828282,fontSize: ScreenUtil().setSp(22)), | ||
| 88 | - actions: <Widget>[ | ||
| 89 | - FlatButton( | ||
| 90 | - child: Text("拒绝订单"), | ||
| 91 | - onPressed: (){ | ||
| 92 | - Navigator.of(context).pop(); | ||
| 93 | - setReserveStatus("6"); | ||
| 94 | - }, | 120 | + _showRefuseDialog2() { |
| 121 | + Widget dialogContent = StatefulBuilder( | ||
| 122 | + builder: (context, setState) { | ||
| 123 | + refuseDialogState = setState; | ||
| 124 | + Container container = Container( | ||
| 125 | + child: Stack( | ||
| 126 | + alignment: AlignmentDirectional.topCenter, | ||
| 127 | + children: [ | ||
| 128 | + Positioned( | ||
| 129 | + right: 0, | ||
| 130 | + top: ScreenUtil().setWidth(6), | ||
| 131 | + child: GestureDetector( | ||
| 132 | + child: Container( | ||
| 133 | + padding: EdgeInsets.all(ScreenUtil().setWidth(21)), | ||
| 134 | + child: Image.asset( | ||
| 135 | + "assets/close.png", | ||
| 136 | + width: ScreenUtil().setWidth(28), | ||
| 137 | + height: ScreenUtil().setWidth(28), | ||
| 138 | + ), | ||
| 139 | + ), | ||
| 140 | + onTap: () { | ||
| 141 | + Navigator.of(context).pop(); | ||
| 142 | + }, | ||
| 143 | + ), | ||
| 144 | + ), | ||
| 145 | + Offstage( | ||
| 146 | + offstage: isRefused, | ||
| 147 | + child: Column( | ||
| 148 | + mainAxisSize: MainAxisSize.min, | ||
| 149 | + children: [ | ||
| 150 | + VEmptyView(40), | ||
| 151 | + Text( | ||
| 152 | + "拒绝订单", | ||
| 153 | + style: TextStyle( | ||
| 154 | + fontSize: ScreenUtil().setSp(32), | ||
| 155 | + color: MyColours.color_353535, | ||
| 156 | + fontWeight: FontWeight.bold), | ||
| 157 | + ), | ||
| 158 | + VEmptyView(60), | ||
| 159 | + Text( | ||
| 160 | + "确定要拒绝订单吗?一旦拒绝无法恢复。", | ||
| 161 | + style: TextStyle( | ||
| 162 | + fontSize: ScreenUtil().setSp(32), | ||
| 163 | + color: MyColours.color_353535), | ||
| 164 | + ), | ||
| 165 | + VEmptyView(80), | ||
| 166 | + GestureDetector( | ||
| 167 | + onTap: () { | ||
| 168 | + setReserveStatus("6", ac: "1"); | ||
| 169 | + }, | ||
| 170 | + child: Container( | ||
| 171 | + width: ScreenUtil().setWidth(336), | ||
| 172 | + height: ScreenUtil().setWidth(80), | ||
| 173 | + alignment: Alignment.center, | ||
| 174 | + color: MyColours.color_199095, | ||
| 175 | + child: Text( | ||
| 176 | + "拒绝并暂停预订", | ||
| 177 | + style: TextStyle( | ||
| 178 | + fontSize: ScreenUtil().setSp(34), | ||
| 179 | + color: MyColours.color_ffffff), | ||
| 180 | + ), | ||
| 181 | + ), | ||
| 182 | + ), | ||
| 183 | + VEmptyView(20), | ||
| 184 | + GestureDetector( | ||
| 185 | + onTap: () { | ||
| 186 | + Navigator.of(context).pop(); | ||
| 187 | + setReserveStatus("6"); | ||
| 188 | + }, | ||
| 189 | + child: Container( | ||
| 190 | + width: ScreenUtil().setWidth(336), | ||
| 191 | + height: ScreenUtil().setWidth(80), | ||
| 192 | + alignment: Alignment.center, | ||
| 193 | + decoration: BoxDecoration( | ||
| 194 | + color: MyColours.color_ffffff, | ||
| 195 | + border: Border.all( | ||
| 196 | + color: MyColours.color_199095, | ||
| 197 | + width: ScreenUtil().setWidth(2))), | ||
| 198 | + child: Text( | ||
| 199 | + "直接拒绝", | ||
| 200 | + style: TextStyle( | ||
| 201 | + fontSize: ScreenUtil().setSp(34), | ||
| 202 | + color: MyColours.color_199095), | ||
| 203 | + ), | ||
| 204 | + ), | ||
| 205 | + ), | ||
| 206 | + VEmptyView(20), | ||
| 207 | + GestureDetector( | ||
| 208 | + onTap: () async { | ||
| 209 | + Navigator.of(context).pop(); | ||
| 210 | + Map temp = await NavigatorUtil.goSelectTablePage( | ||
| 211 | + context, | ||
| 212 | + widget.rid, | ||
| 213 | + int.parse(detailEntity.ddate) * 1000, | ||
| 214 | + detailEntity.ddate_solt); | ||
| 215 | + if (temp != null && temp['tid'] != null) { | ||
| 216 | + setReserveStatus("5", tid: temp['tid']); | ||
| 217 | + } | ||
| 218 | + }, | ||
| 219 | + child: Container( | ||
| 220 | + width: ScreenUtil().setWidth(336), | ||
| 221 | + height: ScreenUtil().setWidth(80), | ||
| 222 | + alignment: Alignment.center, | ||
| 223 | + color: MyColours.color_ffffff, | ||
| 224 | + child: Text( | ||
| 225 | + "去安排包间", | ||
| 226 | + style: TextStyle( | ||
| 227 | + fontSize: ScreenUtil().setSp(34), | ||
| 228 | + color: MyColours.color_199095), | ||
| 229 | + ), | ||
| 230 | + ), | ||
| 231 | + ), | ||
| 232 | + VEmptyView(44), | ||
| 233 | + ], | ||
| 234 | + ), | ||
| 235 | + ), | ||
| 236 | + Offstage( | ||
| 237 | + offstage: !isRefused, | ||
| 238 | + child: Column( | ||
| 239 | + mainAxisSize: MainAxisSize.min, | ||
| 240 | + children: [ | ||
| 241 | + VEmptyView(98), | ||
| 242 | + Row( | ||
| 243 | + mainAxisSize: MainAxisSize.min, | ||
| 244 | + crossAxisAlignment: CrossAxisAlignment.center, | ||
| 245 | + children: [ | ||
| 246 | + Image.asset( | ||
| 247 | + "assets/icon_refuse_book.png", | ||
| 248 | + width: ScreenUtil().setWidth(56), | ||
| 249 | + height: ScreenUtil().setWidth(56), | ||
| 250 | + ), | ||
| 251 | + HEmptyView(10), | ||
| 252 | + Text( | ||
| 253 | + "订单已拒绝", | ||
| 254 | + style: TextStyle( | ||
| 255 | + fontSize: ScreenUtil().setSp(34), | ||
| 256 | + color: MyColours.color_353535), | ||
| 257 | + ) | ||
| 258 | + ], | ||
| 259 | + ), | ||
| 260 | + Offstage( | ||
| 261 | + offstage: !isPause, | ||
| 262 | + child: Column( | ||
| 263 | + mainAxisSize: MainAxisSize.min, | ||
| 264 | + children: [ | ||
| 265 | + VEmptyView(20), | ||
| 266 | + Text( | ||
| 267 | + "并已将${detailEntity.ddateMd}的${detailEntity.demandStr}置满", | ||
| 268 | + style: TextStyle( | ||
| 269 | + fontSize: ScreenUtil().setSp(34), | ||
| 270 | + color: MyColours.color_353535), | ||
| 271 | + ), | ||
| 272 | + ], | ||
| 273 | + ), | ||
| 274 | + ), | ||
| 275 | + VEmptyView(120), | ||
| 276 | + Text( | ||
| 277 | + "如果有包间空出来或其他包间也满了,你可以:", | ||
| 278 | + style: TextStyle( | ||
| 279 | + fontSize: ScreenUtil().setSp(26), | ||
| 280 | + color: MyColours.color_353535), | ||
| 281 | + ), | ||
| 282 | + VEmptyView(20), | ||
| 283 | + GestureDetector( | ||
| 284 | + onTap: () { | ||
| 285 | + Utils.goMiniProgramZm(context, "roomtype/roomtype"); | ||
| 286 | + }, | ||
| 287 | + child: Container( | ||
| 288 | + width: ScreenUtil().setWidth(336), | ||
| 289 | + height: ScreenUtil().setWidth(80), | ||
| 290 | + alignment: Alignment.center, | ||
| 291 | + color: MyColours.color_199095, | ||
| 292 | + child: Text( | ||
| 293 | + "去管理包间", | ||
| 294 | + style: TextStyle( | ||
| 295 | + fontSize: ScreenUtil().setSp(34), | ||
| 296 | + color: MyColours.color_ffffff), | ||
| 297 | + ), | ||
| 298 | + ), | ||
| 299 | + ), | ||
| 300 | + VEmptyView(60) | ||
| 301 | + ], | ||
| 302 | + ), | ||
| 303 | + ) | ||
| 304 | + ], | ||
| 95 | ), | 305 | ), |
| 96 | - FlatButton( | ||
| 97 | - child: Text("去安排"), | ||
| 98 | - onPressed: () async { | ||
| 99 | - Navigator.of(context).pop(); | ||
| 100 | - String tid=await NavigatorUtil.goSelectTablePage(context,widget.rid,DateTime.fromMillisecondsSinceEpoch(int.parse(detailEntity.ddate)*1000),detailEntity.ddate_solt); | ||
| 101 | - setReserveStatus("5",tid:tid); | ||
| 102 | - }, | ||
| 103 | - ) | ||
| 104 | - ], | ||
| 105 | - ); | ||
| 106 | - }); | 306 | + ); |
| 307 | + return container; | ||
| 308 | + }, | ||
| 309 | + ); | ||
| 310 | + Widget dialog = Container( | ||
| 311 | + width: double.infinity, | ||
| 312 | + decoration: BoxDecoration( | ||
| 313 | + color: MyColours.color_ffffff, | ||
| 314 | + borderRadius: BorderRadius.only( | ||
| 315 | + topLeft: Radius.circular(ScreenUtil().setWidth(40)), | ||
| 316 | + topRight: Radius.circular(ScreenUtil().setWidth(40)))), | ||
| 317 | + child: dialogContent); | ||
| 318 | + showModalBottomSheet( | ||
| 319 | + context: context, | ||
| 320 | + backgroundColor: Colors.transparent, | ||
| 321 | + builder: (context) { | ||
| 322 | + return Stack( | ||
| 323 | + children: <Widget>[dialog], | ||
| 324 | + ); | ||
| 325 | + }); | ||
| 107 | } | 326 | } |
| 108 | 327 | ||
| 109 | //处理在线预订 | 328 | //处理在线预订 |
| 110 | - setReserveStatus(String status,{String tid=""}){ | ||
| 111 | - UserModel userModel=Provider.of<UserModel>(context,listen: false); | ||
| 112 | - Map<String,String> causeMap={ | ||
| 113 | - "uid":userModel.user.openid, | ||
| 114 | - "uname":userModel.user.account, | ||
| 115 | - "desc":"", | 329 | + setReserveStatus(String status, {String tid = "", String ac = ""}) async { |
| 330 | + bus.emit("remove_untreated_message", widget.mid); | ||
| 331 | + UserModel userModel = Provider.of<UserModel>(context, listen: false); | ||
| 332 | + Map<String, String> causeMap = { | ||
| 333 | + "uid": userModel.user.openid, | ||
| 334 | + "uname": userModel.user.account, | ||
| 335 | + "desc": "", | ||
| 116 | }; | 336 | }; |
| 117 | - Map<String,String> params={ | ||
| 118 | - "rid":widget.rid, | ||
| 119 | - "status":status,//5安排包间 6 拒绝订单 | ||
| 120 | - "tid":tid, | ||
| 121 | - "mid":widget.mid, | ||
| 122 | - "cause":json.encode(causeMap) | 337 | + Map<String, String> params = { |
| 338 | + "rid": widget.rid, | ||
| 339 | + "status": status, //5安排包间 6 拒绝订单 | ||
| 340 | + "tid": tid, | ||
| 341 | + "mid": widget.mid, | ||
| 342 | + "cause": json.encode(causeMap) | ||
| 123 | }; | 343 | }; |
| 124 | - detailModel.setReserveStatus(context, params); | 344 | + if (status == "6") { |
| 345 | + isPause = true; | ||
| 346 | + params['ac'] = ac; //0=直接拒绝 1=拒绝并暂停预订 | ||
| 347 | + } | ||
| 348 | + bool success = await detailModel.setReserveStatus(context, params, | ||
| 349 | + ifPush: (isPause ? false : true), showLoading: true); | ||
| 350 | + if (success != null && success) { | ||
| 351 | + bus.emit("refresh_book_list"); | ||
| 352 | + if (status == "6") { | ||
| 353 | + isRefused = true; | ||
| 354 | + } | ||
| 355 | + if (isPause) { | ||
| 356 | + _getOrderListData(); | ||
| 357 | + refuseDialogState(() {}); | ||
| 358 | + } | ||
| 359 | + } | ||
| 125 | } | 360 | } |
| 126 | 361 | ||
| 127 | //处理在线预订 | 362 | //处理在线预订 |
| 128 | - setMessageStatus(){ | ||
| 129 | - Map<String,String> params={ | ||
| 130 | - "sid":Provider.of<UserModel>(context,listen: false).user.sellerid, | ||
| 131 | - "id":widget.mid, | ||
| 132 | - "status":"is_handle" | 363 | + setMessageStatus() { |
| 364 | + bus.emit("remove_untreated_message", widget.mid); | ||
| 365 | + Map<String, String> params = { | ||
| 366 | + "sid": Provider.of<UserModel>(context, listen: false).user.sellerid, | ||
| 367 | + "id": widget.mid, | ||
| 368 | + "status": "is_handle" | ||
| 133 | }; | 369 | }; |
| 134 | detailModel.setMessageStatus(context, params); | 370 | detailModel.setMessageStatus(context, params); |
| 135 | } | 371 | } |
| 136 | 372 | ||
| 137 | @override | 373 | @override |
| 138 | Widget build(BuildContext context) { | 374 | Widget build(BuildContext context) { |
| 139 | - // TODO: implement build | ||
| 140 | - return detailEntity==null?Container():SafeArea( | 375 | + detailModel = Provider.of<NotebookDetailModel>(context, listen: true); |
| 376 | + return Scaffold( | ||
| 377 | + body: SafeArea( | ||
| 378 | + child: WillPopScope( | ||
| 141 | child: Column( | 379 | child: Column( |
| 142 | children: <Widget>[ | 380 | children: <Widget>[ |
| 143 | MyAppBar( | 381 | MyAppBar( |
| 144 | "在线预订详情", | 382 | "在线预订详情", |
| 145 | showBack: true, | 383 | showBack: true, |
| 384 | + callback: () { | ||
| 385 | + if (widget.fromNotify) { | ||
| 386 | + NavigatorUtil.goHomePage(context, initialIndex: 0); | ||
| 387 | + } else { | ||
| 388 | + Navigator.of(context).pop(); | ||
| 389 | + } | ||
| 390 | + }, | ||
| 146 | ), | 391 | ), |
| 147 | - Expanded( | ||
| 148 | - child: DefaultTextStyle(style: TextStyle(decoration: TextDecoration.none), child: Container( | ||
| 149 | - color: MyColours.color_ffffff, | ||
| 150 | - child: SingleChildScrollView( | ||
| 151 | - child: Container( | ||
| 152 | - color: MyColours.color_ffffff, | ||
| 153 | - padding: | ||
| 154 | - EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(43)), | ||
| 155 | - child: Column( | ||
| 156 | - children: <Widget>[ | ||
| 157 | - RowMultiText("用餐时段", detailEntity.ddateMd), | ||
| 158 | - Stack( | ||
| 159 | - alignment: Alignment.center, | ||
| 160 | - children: <Widget>[ | ||
| 161 | - Column( | ||
| 162 | - children: <Widget>[ | ||
| 163 | - RowMultiText("用餐时间", detailEntity.ddateHm), | ||
| 164 | - Offstage( | ||
| 165 | - offstage: detailEntity.type=="0"?false:true, | ||
| 166 | - child: RowMultiText("用餐人数", detailEntity.pnum), | ||
| 167 | - ) | ||
| 168 | - ], | ||
| 169 | - ), | ||
| 170 | - Image.asset(detailEntity.statuImgAssets,width: ScreenUtil().setWidth(100),height: ScreenUtil().setWidth(30),) | ||
| 171 | - ], | ||
| 172 | - ), | ||
| 173 | - RowMultiText("包间需求", (detailEntity.demands.length.toString()+"个")??""), | ||
| 174 | - Align( | ||
| 175 | - alignment: Alignment.centerRight, | ||
| 176 | - child: Row( | ||
| 177 | - mainAxisSize: MainAxisSize.min, | ||
| 178 | - children: detailEntity.demands.map((table){ | ||
| 179 | - return TableItem(table); | ||
| 180 | - }).toList(), | ||
| 181 | - ), | ||
| 182 | - ), | ||
| 183 | - RowMultiText("客户姓名", detailEntity.rnameStr), | ||
| 184 | - RowMultiText("客户电话", detailEntity.phone), | ||
| 185 | - MyDivider(double.infinity, ScreenUtil().setHeight(2)), | ||
| 186 | - Container( | 392 | + Expanded(child: Consumer<NotebookDetailModel>( |
| 393 | + builder: (context, model, _) { | ||
| 394 | + if (model.pageState != PageState.Success) { | ||
| 395 | + return ExceptionPage( | ||
| 396 | + pageState: model.pageState, | ||
| 397 | + callback: () { | ||
| 398 | + _getOrderListData(); | ||
| 399 | + }, | ||
| 400 | + emptyMsg: "暂时没有预订列表信息哦", | ||
| 401 | + emptyImg: "empty_search", | ||
| 402 | + showMsg: "加载中,请稍后...", | ||
| 403 | + ); | ||
| 404 | + } else { | ||
| 405 | + return Expanded( | ||
| 406 | + child: DefaultTextStyle( | ||
| 407 | + style: TextStyle(decoration: TextDecoration.none), | ||
| 408 | + child: Container( | ||
| 187 | color: MyColours.color_ffffff, | 409 | color: MyColours.color_ffffff, |
| 188 | - width: double.infinity, | ||
| 189 | - height: ScreenUtil().setHeight(80), | ||
| 190 | - padding: EdgeInsets.symmetric( | ||
| 191 | - vertical: ScreenUtil().setHeight(26)), | ||
| 192 | - child: Stack( | ||
| 193 | - alignment: Alignment.center, | ||
| 194 | - children: <Widget>[ | ||
| 195 | - Positioned( | ||
| 196 | - left: 0, | ||
| 197 | - child: Text( | ||
| 198 | - "客户经理", | ||
| 199 | - style: TextStyle( | ||
| 200 | - color: MyColours.color_828282, | ||
| 201 | - fontSize: ScreenUtil().setSp(22)), | ||
| 202 | - ), | ||
| 203 | - ), | ||
| 204 | - Positioned( | ||
| 205 | - right: 0, | ||
| 206 | - child: GestureDetector( | ||
| 207 | - onTap: () async { | ||
| 208 | - List<String> list=[]; | ||
| 209 | - for(Manager manager in managers){ | ||
| 210 | - list.add(manager.roleUserName); | ||
| 211 | - } | ||
| 212 | - DialogUtil.showSelectCusmanDialog(context,list).then((value){ | ||
| 213 | - setState(() { | ||
| 214 | - cusmanText=managers[value.first].userName; | ||
| 215 | - }); | ||
| 216 | - _setCurrManager(); | ||
| 217 | - }); | ||
| 218 | - }, | ||
| 219 | - child: Text( | ||
| 220 | - cusmanText, | ||
| 221 | - style: TextStyle( | ||
| 222 | - color: MyColours.color_353535, | ||
| 223 | - fontSize: ScreenUtil().setSp(26), | ||
| 224 | - decoration: TextDecoration.underline, | ||
| 225 | - ), | ||
| 226 | - ), | ||
| 227 | - ), | ||
| 228 | - ) | ||
| 229 | - ], | ||
| 230 | - ), | ||
| 231 | - ), | ||
| 232 | - MyDivider(double.infinity, ScreenUtil().setHeight(2)), | ||
| 233 | - Container( | ||
| 234 | - margin: EdgeInsets.only(top: ScreenUtil().setHeight(206)), | ||
| 235 | child: Column( | 410 | child: Column( |
| 236 | children: <Widget>[ | 411 | children: <Widget>[ |
| 237 | - CommonButton( | ||
| 238 | - content: "安排包间", | ||
| 239 | - width: 669, | ||
| 240 | - height: 76, | ||
| 241 | - fontSize: 26, | ||
| 242 | - onPress: () async { | ||
| 243 | - String tid=await NavigatorUtil.goSelectTablePage(context,widget.rid,DateTime.fromMillisecondsSinceEpoch(int.parse(detailEntity.ddate)*1000),detailEntity.ddate_solt); | ||
| 244 | - if(tid!=null){ | ||
| 245 | - setReserveStatus("5",tid:tid); | ||
| 246 | - } | ||
| 247 | - }, | ||
| 248 | - ), | ||
| 249 | - VEmptyView(20), | ||
| 250 | - Container( | ||
| 251 | - width: ScreenUtil().setWidth(669), | ||
| 252 | - height: ScreenUtil().setHeight(76), | ||
| 253 | - decoration: BoxDecoration( | ||
| 254 | - border: Border.all(color: MyColours.color_199095), | ||
| 255 | - borderRadius: BorderRadius.circular( | ||
| 256 | - ScreenUtil().setWidth(5)), | ||
| 257 | - ), | ||
| 258 | - child: Row( | ||
| 259 | - crossAxisAlignment: CrossAxisAlignment.center, | ||
| 260 | - children: <Widget>[ | ||
| 261 | - Expanded( | ||
| 262 | - child: GestureDetector( | ||
| 263 | - child: Center( | ||
| 264 | - child: Text( | ||
| 265 | - "拒绝订单", | ||
| 266 | - style: TextStyle( | ||
| 267 | - color: MyColours.color_199095, | ||
| 268 | - fontSize: ScreenUtil().setSp(26)), | ||
| 269 | - ), | 412 | + Expanded( |
| 413 | + child: SingleChildScrollView( | ||
| 414 | + child: Container( | ||
| 415 | + color: MyColours.color_ffffff, | ||
| 416 | + padding: EdgeInsets.symmetric( | ||
| 417 | + horizontal: | ||
| 418 | + ScreenUtil().setWidth(43)), | ||
| 419 | + child: Column( | ||
| 420 | + children: <Widget>[ | ||
| 421 | + RowMultiText( | ||
| 422 | + "用餐时段", detailEntity.ddateMd), | ||
| 423 | + Stack( | ||
| 424 | + alignment: Alignment.center, | ||
| 425 | + children: <Widget>[ | ||
| 426 | + Column( | ||
| 427 | + children: <Widget>[ | ||
| 428 | + RowMultiText("用餐时间", | ||
| 429 | + detailEntity.ddateHm), | ||
| 430 | + Offstage( | ||
| 431 | + offstage: | ||
| 432 | + detailEntity.type == "0" | ||
| 433 | + ? false | ||
| 434 | + : true, | ||
| 435 | + child: RowMultiText("用餐人数", | ||
| 436 | + detailEntity.pnum), | ||
| 437 | + ) | ||
| 438 | + ], | ||
| 439 | + ), | ||
| 440 | + Image.asset( | ||
| 441 | + detailEntity.statuImgAssets, | ||
| 442 | + width: | ||
| 443 | + ScreenUtil().setWidth(100), | ||
| 444 | + height: | ||
| 445 | + ScreenUtil().setWidth(30), | ||
| 446 | + ) | ||
| 447 | + ], | ||
| 270 | ), | 448 | ), |
| 271 | - onTap: () { | ||
| 272 | - _showRefuseDialog(); | ||
| 273 | - }, | ||
| 274 | - )), | ||
| 275 | - MyDivider( | ||
| 276 | - ScreenUtil().setWidth(1), | ||
| 277 | - ScreenUtil().setHeight(52), | ||
| 278 | - color: MyColours.color_199095, | ||
| 279 | - ), | ||
| 280 | - Expanded( | ||
| 281 | - child: GestureDetector( | ||
| 282 | - child: Center( | ||
| 283 | - child: Text( | ||
| 284 | - "联系顾客", | ||
| 285 | - style: TextStyle( | ||
| 286 | - color: MyColours.color_199095, | ||
| 287 | - fontSize: ScreenUtil().setSp(26)), | 449 | + RowMultiText( |
| 450 | + "包间需求", | ||
| 451 | + (detailEntity.demands.length | ||
| 452 | + .toString() + | ||
| 453 | + "个") ?? | ||
| 454 | + ""), | ||
| 455 | + Align( | ||
| 456 | + alignment: Alignment.centerRight, | ||
| 457 | + child: Offstage( | ||
| 458 | + offstage: detailEntity | ||
| 459 | + .demands.length > | ||
| 460 | + 0 | ||
| 461 | + ? false | ||
| 462 | + : true, | ||
| 463 | + child: Container( | ||
| 464 | + height: ScreenUtil() | ||
| 465 | + .setHeight(210), | ||
| 466 | + child: ListView.builder( | ||
| 467 | + itemBuilder: | ||
| 468 | + (BuildContext contxt, | ||
| 469 | + int index) { | ||
| 470 | + return NeedItem( | ||
| 471 | + detailEntity | ||
| 472 | + .demands[index]); | ||
| 473 | + }, | ||
| 474 | + itemCount: detailEntity | ||
| 475 | + .demands.length, | ||
| 476 | + shrinkWrap: true, | ||
| 477 | + scrollDirection: | ||
| 478 | + Axis.horizontal, | ||
| 479 | + ), | ||
| 480 | + ), | ||
| 481 | + )), | ||
| 482 | + RowMultiText( | ||
| 483 | + "客户姓名", detailEntity.rnameStr), | ||
| 484 | + RowMultiText("客户电话", formatPhone), | ||
| 485 | + RowMultiText("备注信息", | ||
| 486 | + detailEntity.cusdem ?? ""), | ||
| 487 | + MyDivider(double.infinity, | ||
| 488 | + ScreenUtil().setHeight(1)), | ||
| 489 | + Container( | ||
| 490 | + color: MyColours.color_ffffff, | ||
| 491 | + width: double.infinity, | ||
| 492 | + height: ScreenUtil().setHeight(80), | ||
| 493 | + alignment: Alignment.center, | ||
| 494 | + child: Stack( | ||
| 495 | + alignment: Alignment.center, | ||
| 496 | + children: <Widget>[ | ||
| 497 | + Positioned( | ||
| 498 | + left: 0, | ||
| 499 | + child: Text( | ||
| 500 | + "客户经理", | ||
| 501 | + style: TextStyle( | ||
| 502 | + color: MyColours | ||
| 503 | + .color_828282, | ||
| 504 | + fontSize: ScreenUtil() | ||
| 505 | + .setSp(30)), | ||
| 506 | + ), | ||
| 507 | + ), | ||
| 508 | + Positioned( | ||
| 509 | + right: 0, | ||
| 510 | + child: GestureDetector( | ||
| 511 | + onTap: () async { | ||
| 512 | + List<String> list = []; | ||
| 513 | + for (Manager manager | ||
| 514 | + in managers) { | ||
| 515 | + list.add(manager | ||
| 516 | + .roleUserName); | ||
| 517 | + } | ||
| 518 | + DialogUtil | ||
| 519 | + .showSelectCusmanDialog( | ||
| 520 | + context, list, | ||
| 521 | + (value) { | ||
| 522 | + if (value != null) { | ||
| 523 | + setState(() { | ||
| 524 | + cusmanText = | ||
| 525 | + managers[value | ||
| 526 | + .first] | ||
| 527 | + .userName; | ||
| 528 | + }); | ||
| 529 | + _setCurrManager(); | ||
| 530 | + } | ||
| 531 | + }).then((value) {}); | ||
| 532 | + }, | ||
| 533 | + child: Text( | ||
| 534 | + cusmanText, | ||
| 535 | + style: TextStyle( | ||
| 536 | + color: MyColours | ||
| 537 | + .color_353535, | ||
| 538 | + fontSize: ScreenUtil() | ||
| 539 | + .setSp(30), | ||
| 540 | + decoration: | ||
| 541 | + TextDecoration | ||
| 542 | + .underline, | ||
| 543 | + ), | ||
| 544 | + ), | ||
| 545 | + ), | ||
| 546 | + ) | ||
| 547 | + ], | ||
| 288 | ), | 548 | ), |
| 289 | ), | 549 | ), |
| 290 | - onTap: () { | ||
| 291 | - if(detailEntity.phone!=null&&detailEntity.phone.isNotEmpty){ | ||
| 292 | - Utils.goPhone(detailEntity.phone); | ||
| 293 | - }else{ | ||
| 294 | - Utils.showToast("没有客户电话!"); | ||
| 295 | - } | ||
| 296 | - }, | ||
| 297 | - )), | ||
| 298 | - ], | 550 | + ], |
| 551 | + )), | ||
| 552 | + ), | ||
| 553 | + ), | ||
| 554 | + Offstage( | ||
| 555 | + offstage: detailEntity.status != "0", | ||
| 556 | + child: Container( | ||
| 557 | + margin: EdgeInsets.only( | ||
| 558 | + top: ScreenUtil().setHeight(30), | ||
| 559 | + bottom: ScreenUtil().setHeight(30)), | ||
| 560 | + child: Column( | ||
| 561 | + children: <Widget>[ | ||
| 562 | + CommonButton( | ||
| 563 | + content: "安排包间", | ||
| 564 | + width: 669, | ||
| 565 | + height: 84, | ||
| 566 | + fontSize: 34, | ||
| 567 | + onPress: () async { | ||
| 568 | + Map map = await NavigatorUtil | ||
| 569 | + .goSelectTablePage( | ||
| 570 | + context, | ||
| 571 | + widget.rid, | ||
| 572 | + int.parse( | ||
| 573 | + detailEntity.ddate) * | ||
| 574 | + 1000, | ||
| 575 | + detailEntity.ddate_solt); | ||
| 576 | + if (map != null && | ||
| 577 | + map['tid'] != null) { | ||
| 578 | + setReserveStatus("5", | ||
| 579 | + tid: map['tid']); | ||
| 580 | + } | ||
| 581 | + }, | ||
| 582 | + ), | ||
| 583 | + VEmptyView(20), | ||
| 584 | + Container( | ||
| 585 | + width: ScreenUtil().setWidth(669), | ||
| 586 | + height: ScreenUtil().setWidth(84), | ||
| 587 | + decoration: BoxDecoration( | ||
| 588 | + border: Border.all( | ||
| 589 | + color: MyColours.color_199095), | ||
| 590 | + borderRadius: BorderRadius.circular( | ||
| 591 | + ScreenUtil().setWidth(10)), | ||
| 592 | + ), | ||
| 593 | + child: Row( | ||
| 594 | + crossAxisAlignment: | ||
| 595 | + CrossAxisAlignment.center, | ||
| 596 | + children: <Widget>[ | ||
| 597 | + Expanded( | ||
| 598 | + child: GestureDetector( | ||
| 599 | + child: Center( | ||
| 600 | + child: Text( | ||
| 601 | + "拒绝订单", | ||
| 602 | + style: TextStyle( | ||
| 603 | + color: MyColours | ||
| 604 | + .color_199095, | ||
| 605 | + fontSize: ScreenUtil() | ||
| 606 | + .setSp(34)), | ||
| 607 | + ), | ||
| 608 | + ), | ||
| 609 | + onTap: () { | ||
| 610 | + _showRefuseDialog2(); | ||
| 611 | + }, | ||
| 612 | + )), | ||
| 613 | + Offstage( | ||
| 614 | + offstage: !isCallTel, | ||
| 615 | + child: SizedBox( | ||
| 616 | + width: | ||
| 617 | + ScreenUtil().setWidth(335), | ||
| 618 | + height: | ||
| 619 | + ScreenUtil().setWidth(84), | ||
| 620 | + child: Row( | ||
| 621 | + children: [ | ||
| 622 | + MyDivider( | ||
| 623 | + ScreenUtil().setWidth(2), | ||
| 624 | + ScreenUtil() | ||
| 625 | + .setHeight(52), | ||
| 626 | + color: MyColours | ||
| 627 | + .color_199095, | ||
| 628 | + ), | ||
| 629 | + Expanded( | ||
| 630 | + child: GestureDetector( | ||
| 631 | + child: Center( | ||
| 632 | + child: Text( | ||
| 633 | + "联系顾客", | ||
| 634 | + style: TextStyle( | ||
| 635 | + color: MyColours | ||
| 636 | + .color_199095, | ||
| 637 | + fontSize: | ||
| 638 | + ScreenUtil() | ||
| 639 | + .setSp( | ||
| 640 | + 34)), | ||
| 641 | + ), | ||
| 642 | + ), | ||
| 643 | + onTap: () { | ||
| 644 | + if (detailEntity | ||
| 645 | + .phone != | ||
| 646 | + null && | ||
| 647 | + detailEntity.phone | ||
| 648 | + .isNotEmpty) { | ||
| 649 | + Utils.goPhone( | ||
| 650 | + detailEntity | ||
| 651 | + .phone); | ||
| 652 | + } else { | ||
| 653 | + Utils.showToast( | ||
| 654 | + "没有客户电话!"); | ||
| 655 | + } | ||
| 656 | + }, | ||
| 657 | + )), | ||
| 658 | + ], | ||
| 659 | + ), | ||
| 660 | + ), | ||
| 661 | + ) | ||
| 662 | + ], | ||
| 663 | + ), | ||
| 664 | + ) | ||
| 665 | + ], | ||
| 666 | + ), | ||
| 299 | ), | 667 | ), |
| 300 | ) | 668 | ) |
| 301 | ], | 669 | ], |
| 302 | - ), | ||
| 303 | - ) | ||
| 304 | - ], | ||
| 305 | - )), | ||
| 306 | - ), | ||
| 307 | - )), | ||
| 308 | - ) | 670 | + ))), |
| 671 | + ); | ||
| 672 | + } | ||
| 673 | + }, | ||
| 674 | + )) | ||
| 309 | ], | 675 | ], |
| 310 | ), | 676 | ), |
| 311 | - ); | 677 | + onWillPop: () async { |
| 678 | + if (widget.fromNotify) { | ||
| 679 | + NavigatorUtil.goHomePage(context, initialIndex: 0); | ||
| 680 | + return true; | ||
| 681 | + } | ||
| 682 | + Navigator.of(context).pop(); | ||
| 683 | + return true; | ||
| 684 | + }, | ||
| 685 | + ))); | ||
| 312 | } | 686 | } |
| 313 | } | 687 | } |
-
Please register or login to post a comment