Commit 697c3b31c5381e107a04939f3fda389532e6f348

Authored by “gaiyaguang”
2 parents d5f31213 972ba380

合并

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 }
@@ -13,12 +13,12 @@ if (flutterRoot == null) { @@ -13,12 +13,12 @@ if (flutterRoot == null) {
13 13
14 def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 14 def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 if (flutterVersionCode == null) { 15 if (flutterVersionCode == null) {
16 - flutterVersionCode = '1' 16 + flutterVersionCode = '7'
17 } 17 }
18 18
19 def flutterVersionName = localProperties.getProperty('flutter.versionName') 19 def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 if (flutterVersionName == null) { 20 if (flutterVersionName == null) {
21 - flutterVersionName = '1.0' 21 + flutterVersionName = '1.0.7'
22 } 22 }
23 23
24 apply plugin: 'com.android.application' 24 apply plugin: 'com.android.application'
@@ -43,8 +43,8 @@ android { @@ -43,8 +43,8 @@ android {
43 applicationId "com.naji.one_key" 43 applicationId "com.naji.one_key"
44 minSdkVersion 21 44 minSdkVersion 21
45 targetSdkVersion 28 45 targetSdkVersion 28
46 - versionCode 7  
47 - versionName "1.0.7" 46 + versionCode 111
  47 + versionName "1.1.1"
48 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 48 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
49 49
50 ndk { 50 ndk {
@@ -53,28 +53,13 @@ android { @@ -53,28 +53,13 @@ android {
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 : "MI-5811835841457", // 小米平台注册的appkey  
61 - XIAOMI_APPID : "MI-2882303761518358457", // 小米平台注册的appid  
62 - OPPO_APPKEY : "OP-94d77d10e7bb4c60bcf18a84c8ca8bdd", // OPPO平台注册的appkey  
63 - OPPO_APPID : "OP-30260281", // OPPO平台注册的appid  
64 - OPPO_APPSECRET: "OP-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 -  
69 -// manifestPlaceholders = [  
70 -// XG_ACCESS_ID : '2100332241',  
71 -// XG_ACCESS_KEY : 'A51T8RX1HS1W',  
72 -// XG_ACCESS_SCHEME: 'fake_push',// 非官方参数,可自定义,统一打开方式为 intent  
73 -// HW_APPID : '100728875',  
74 -// XIAOMI_APPID : '2882303761517989384',  
75 -// XIAOMI_APPKEY : '5141798993384',  
76 -// PACKAGE_NAME : "${applicationId}",// 小米通道  
77 -// ]  
78 } 63 }
79 64
80 signingConfigs { 65 signingConfigs {
@@ -115,17 +100,8 @@ dependencies { @@ -115,17 +100,8 @@ dependencies {
115 testImplementation 'junit:junit:4.12' 100 testImplementation 'junit:junit:4.12'
116 androidTestImplementation 'androidx.test:runner:1.1.1' 101 androidTestImplementation 'androidx.test:runner:1.1.1'
117 androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' 102 androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
118 -  
119 - //华为推送  
120 - implementation 'cn.jiguang.sdk.plugin:huawei:3.5.8'  
121 - implementation 'com.huawei.hms:push:3.0.3.301'  
122 -  
123 - //小米推送  
124 - implementation 'cn.jiguang.sdk.plugin:xiaomi:3.5.8'  
125 -  
126 - //OPPO推送  
127 - implementation 'cn.jiguang.sdk.plugin:oppo:3.5.8'  
128 -//  
129 -// //vivo推送  
130 -// implementation 'cn.jiguang.sdk.plugin:vivo:3.5.8' 103 + implementation 'com.tencent.tpns:huawei:1.2.0.3-release'// 华为推送
  104 + implementation 'com.tencent.tpns:xiaomi:1.2.0.3-release' // 小米推送
  105 + implementation 'com.tencent.tpns:oppo:1.2.0.3-release' // OPPO 推送
  106 + implementation 'com.tencent.tpns:vivo:1.2.0.3-release' // vivo 推送
131 } 107 }
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>  
@@ -39,13 +39,6 @@ @@ -39,13 +39,6 @@
39 </intent-filter> 39 </intent-filter>
40 </activity> 40 </activity>
41 41
42 - <service  
43 - android:name="cn.jpush.android.service.PluginHuaweiPlatformsService"  
44 - android:exported="false">  
45 - <intent-filter>  
46 - <action android:name="com.huawei.push.action.MESSAGING_EVENT" />  
47 - </intent-filter>  
48 - </service>  
49 <!-- Don't delete the meta-data below. 42 <!-- Don't delete the meta-data below.
50 This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> 43 This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
51 <meta-data 44 <meta-data
No preview for this file type
No preview for this file type
  1 +{
  2 + "tpns": {
  3 + "access_id": "1500012875",
  4 + "access_key": "AVR2GJERH0HC"
  5 + },
  6 + "com.naji.one_key": {
  7 + "channel": {
  8 + "enable": true
  9 + }
  10 + },
  11 + "debug": false,
  12 + "version": "1.2.0.3"
  13 +}
No preview for this file type
No preview for this file type
1 -7babc7873f8d177769b987ba4c6c2911  
  1 +531384610a6c9ce5834584b7a30c7a32
1 # Uncomment this line to define a global platform for your project 1 # Uncomment this line to define a global platform for your project
2 -# source 'https://github.com/CocoaPods/Specs.git'  
3 - platform :ios, '9.0' 2 +# platform :ios, '9.0'
4 3
5 # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 4 # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
6 ENV['COCOAPODS_DISABLE_STATS'] = 'true' 5 ENV['COCOAPODS_DISABLE_STATS'] = 'true'
@@ -11,81 +10,32 @@ project 'Runner', { @@ -11,81 +10,32 @@ project 'Runner', {
11 'Release' => :release, 10 'Release' => :release,
12 } 11 }
13 12
14 -def parse_KV_file(file, separator='=')  
15 - file_abs_path = File.expand_path(file)  
16 - if !File.exists? file_abs_path  
17 - return []; 13 +def flutter_root
  14 + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  15 + unless File.exist?(generated_xcode_build_settings_path)
  16 + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
18 end 17 end
19 - generated_key_values = {}  
20 - skip_line_start_symbols = ["#", "/"]  
21 - File.foreach(file_abs_path) do |line|  
22 - next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }  
23 - plugin = line.split(pattern=separator)  
24 - if plugin.length == 2  
25 - podname = plugin[0].strip()  
26 - path = plugin[1].strip()  
27 - podpath = File.expand_path("#{path}", file_abs_path)  
28 - generated_key_values[podname] = podpath  
29 - else  
30 - puts "Invalid plugin specification: #{line}"  
31 - end 18 +
  19 + File.foreach(generated_xcode_build_settings_path) do |line|
  20 + matches = line.match(/FLUTTER_ROOT\=(.*)/)
  21 + return matches[1].strip if matches
32 end 22 end
33 - generated_key_values 23 + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
34 end 24 end
35 25
  26 +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
  27 +
  28 +flutter_ios_podfile_setup
  29 +
36 target 'Runner' do 30 target 'Runner' do
37 use_frameworks! 31 use_frameworks!
38 use_modular_headers! 32 use_modular_headers!
39 -  
40 - # Flutter Pod  
41 33
42 - copied_flutter_dir = File.join(__dir__, 'Flutter')  
43 - copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')  
44 - copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')  
45 - unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)  
46 - # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.  
47 - # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.  
48 - # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.  
49 -  
50 - generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')  
51 - unless File.exist?(generated_xcode_build_settings_path)  
52 - raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"  
53 - end  
54 - generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)  
55 - cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];  
56 -  
57 - unless File.exist?(copied_framework_path)  
58 - FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)  
59 - end  
60 - unless File.exist?(copied_podspec_path)  
61 - FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)  
62 - end  
63 - end  
64 -  
65 - # Keep pod path relative so it can be checked into Podfile.lock.  
66 - pod 'Flutter', :path => 'Flutter'  
67 -  
68 - # Plugin Pods  
69 -  
70 - # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock  
71 - # referring to absolute paths on developers' machines.  
72 - system('rm -rf .symlinks')  
73 - system('mkdir -p .symlinks/plugins')  
74 - plugin_pods = parse_KV_file('../.flutter-plugins')  
75 - plugin_pods.each do |name, path|  
76 - symlink = File.join('.symlinks', 'plugins', name)  
77 - File.symlink(path, symlink)  
78 - pod name, :path => File.join(symlink, 'ios')  
79 - end 34 + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
80 end 35 end
81 36
82 -# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system.  
83 -install! 'cocoapods', :disable_input_output_paths => true  
84 -  
85 post_install do |installer| 37 post_install do |installer|
86 installer.pods_project.targets.each do |target| 38 installer.pods_project.targets.each do |target|
87 - target.build_configurations.each do |config|  
88 - config.build_settings['ENABLE_BITCODE'] = 'NO'  
89 - end 39 + flutter_additional_ios_build_settings(target)
90 end 40 end
91 end 41 end
@@ -5,10 +5,6 @@ PODS: @@ -5,10 +5,6 @@ PODS:
5 - connectivity (0.0.1): 5 - connectivity (0.0.1):
6 - Flutter 6 - Flutter
7 - Reachability 7 - Reachability
8 - - connectivity_for_web (0.1.0):  
9 - - Flutter  
10 - - connectivity_macos (0.0.1):  
11 - - Flutter  
12 - contacts_service (0.2.2): 8 - contacts_service (0.2.2):
13 - Flutter 9 - Flutter
14 - device_info (0.0.1): 10 - device_info (0.0.1):
@@ -29,41 +25,23 @@ PODS: @@ -29,41 +25,23 @@ PODS:
29 - FMDB/standard (2.7.5) 25 - FMDB/standard (2.7.5)
30 - install_plugin (0.0.1): 26 - install_plugin (0.0.1):
31 - Flutter 27 - Flutter
32 - - JCore (2.3.4)  
33 - - JPush (3.3.6):  
34 - - JCore (< 3.0.0, >= 2.0.0)  
35 - - jpush_flutter (0.0.2):  
36 - - Flutter  
37 - - JPush  
38 - package_info (0.0.1): 28 - package_info (0.0.1):
39 - Flutter 29 - Flutter
40 - path_provider (0.0.1): 30 - path_provider (0.0.1):
41 - Flutter 31 - Flutter
42 - - path_provider_linux (0.0.1):  
43 - - Flutter  
44 - - path_provider_macos (0.0.1):  
45 - - Flutter  
46 - "permission_handler (4.4.0+hotfix.4)": 32 - "permission_handler (4.4.0+hotfix.4)":
47 - Flutter 33 - Flutter
48 - Reachability (3.2) 34 - Reachability (3.2)
49 - shared_preferences (0.0.1): 35 - shared_preferences (0.0.1):
50 - Flutter 36 - Flutter
51 - - shared_preferences_linux (0.0.1):  
52 - - Flutter  
53 - - shared_preferences_macos (0.0.1):  
54 - - Flutter  
55 - - shared_preferences_web (0.0.1):  
56 - - Flutter  
57 - sqflite (0.0.1): 37 - sqflite (0.0.1):
58 - Flutter 38 - Flutter
59 - FMDB (~> 2.7.2) 39 - FMDB (~> 2.7.2)
60 - - url_launcher (0.0.1): 40 + - TPNS-iOS (1.2.7.2)
  41 + - tpns_flutter_plugin (1.0.4):
61 - Flutter 42 - Flutter
62 - - url_launcher_linux (0.0.1):  
63 - - Flutter  
64 - - url_launcher_macos (0.0.1):  
65 - - Flutter  
66 - - url_launcher_web (0.0.1): 43 + - TPNS-iOS (= 1.2.7.2)
  44 + - url_launcher (0.0.1):
67 - Flutter 45 - Flutter
68 - webview_flutter (0.0.1): 46 - webview_flutter (0.0.1):
69 - Flutter 47 - Flutter
@@ -72,8 +50,6 @@ PODS: @@ -72,8 +50,6 @@ PODS:
72 DEPENDENCIES: 50 DEPENDENCIES:
73 - audioplayers (from `.symlinks/plugins/audioplayers/ios`) 51 - audioplayers (from `.symlinks/plugins/audioplayers/ios`)
74 - connectivity (from `.symlinks/plugins/connectivity/ios`) 52 - connectivity (from `.symlinks/plugins/connectivity/ios`)
75 - - connectivity_for_web (from `.symlinks/plugins/connectivity_for_web/ios`)  
76 - - connectivity_macos (from `.symlinks/plugins/connectivity_macos/ios`)  
77 - contacts_service (from `.symlinks/plugins/contacts_service/ios`) 53 - contacts_service (from `.symlinks/plugins/contacts_service/ios`)
78 - device_info (from `.symlinks/plugins/device_info/ios`) 54 - device_info (from `.symlinks/plugins/device_info/ios`)
79 - Flutter (from `Flutter`) 55 - Flutter (from `Flutter`)
@@ -82,30 +58,21 @@ DEPENDENCIES: @@ -82,30 +58,21 @@ DEPENDENCIES:
82 - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) 58 - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
83 - fluwx (from `.symlinks/plugins/fluwx/ios`) 59 - fluwx (from `.symlinks/plugins/fluwx/ios`)
84 - install_plugin (from `.symlinks/plugins/install_plugin/ios`) 60 - install_plugin (from `.symlinks/plugins/install_plugin/ios`)
85 - - jpush_flutter (from `.symlinks/plugins/jpush_flutter/ios`)  
86 - package_info (from `.symlinks/plugins/package_info/ios`) 61 - package_info (from `.symlinks/plugins/package_info/ios`)
87 - path_provider (from `.symlinks/plugins/path_provider/ios`) 62 - path_provider (from `.symlinks/plugins/path_provider/ios`)
88 - - path_provider_linux (from `.symlinks/plugins/path_provider_linux/ios`)  
89 - - path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`)  
90 - permission_handler (from `.symlinks/plugins/permission_handler/ios`) 63 - permission_handler (from `.symlinks/plugins/permission_handler/ios`)
91 - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`) 64 - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
92 - - shared_preferences_linux (from `.symlinks/plugins/shared_preferences_linux/ios`)  
93 - - shared_preferences_macos (from `.symlinks/plugins/shared_preferences_macos/ios`)  
94 - - shared_preferences_web (from `.symlinks/plugins/shared_preferences_web/ios`)  
95 - sqflite (from `.symlinks/plugins/sqflite/ios`) 65 - sqflite (from `.symlinks/plugins/sqflite/ios`)
  66 + - tpns_flutter_plugin (from `.symlinks/plugins/tpns_flutter_plugin/ios`)
96 - url_launcher (from `.symlinks/plugins/url_launcher/ios`) 67 - url_launcher (from `.symlinks/plugins/url_launcher/ios`)
97 - - url_launcher_linux (from `.symlinks/plugins/url_launcher_linux/ios`)  
98 - - url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`)  
99 - - url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`)  
100 - webview_flutter (from `.symlinks/plugins/webview_flutter/ios`) 68 - webview_flutter (from `.symlinks/plugins/webview_flutter/ios`)
101 69
102 SPEC REPOS: 70 SPEC REPOS:
103 trunk: 71 trunk:
104 - Bugly 72 - Bugly
105 - FMDB 73 - FMDB
106 - - JCore  
107 - - JPush  
108 - Reachability 74 - Reachability
  75 + - TPNS-iOS
109 - WechatOpenSDK 76 - WechatOpenSDK
110 77
111 EXTERNAL SOURCES: 78 EXTERNAL SOURCES:
@@ -113,10 +80,6 @@ EXTERNAL SOURCES: @@ -113,10 +80,6 @@ EXTERNAL SOURCES:
113 :path: ".symlinks/plugins/audioplayers/ios" 80 :path: ".symlinks/plugins/audioplayers/ios"
114 connectivity: 81 connectivity:
115 :path: ".symlinks/plugins/connectivity/ios" 82 :path: ".symlinks/plugins/connectivity/ios"
116 - connectivity_for_web:  
117 - :path: ".symlinks/plugins/connectivity_for_web/ios"  
118 - connectivity_macos:  
119 - :path: ".symlinks/plugins/connectivity_macos/ios"  
120 contacts_service: 83 contacts_service:
121 :path: ".symlinks/plugins/contacts_service/ios" 84 :path: ".symlinks/plugins/contacts_service/ios"
122 device_info: 85 device_info:
@@ -133,36 +96,20 @@ EXTERNAL SOURCES: @@ -133,36 +96,20 @@ EXTERNAL SOURCES:
133 :path: ".symlinks/plugins/fluwx/ios" 96 :path: ".symlinks/plugins/fluwx/ios"
134 install_plugin: 97 install_plugin:
135 :path: ".symlinks/plugins/install_plugin/ios" 98 :path: ".symlinks/plugins/install_plugin/ios"
136 - jpush_flutter:  
137 - :path: ".symlinks/plugins/jpush_flutter/ios"  
138 package_info: 99 package_info:
139 :path: ".symlinks/plugins/package_info/ios" 100 :path: ".symlinks/plugins/package_info/ios"
140 path_provider: 101 path_provider:
141 :path: ".symlinks/plugins/path_provider/ios" 102 :path: ".symlinks/plugins/path_provider/ios"
142 - path_provider_linux:  
143 - :path: ".symlinks/plugins/path_provider_linux/ios"  
144 - path_provider_macos:  
145 - :path: ".symlinks/plugins/path_provider_macos/ios"  
146 permission_handler: 103 permission_handler:
147 :path: ".symlinks/plugins/permission_handler/ios" 104 :path: ".symlinks/plugins/permission_handler/ios"
148 shared_preferences: 105 shared_preferences:
149 :path: ".symlinks/plugins/shared_preferences/ios" 106 :path: ".symlinks/plugins/shared_preferences/ios"
150 - shared_preferences_linux:  
151 - :path: ".symlinks/plugins/shared_preferences_linux/ios"  
152 - shared_preferences_macos:  
153 - :path: ".symlinks/plugins/shared_preferences_macos/ios"  
154 - shared_preferences_web:  
155 - :path: ".symlinks/plugins/shared_preferences_web/ios"  
156 sqflite: 107 sqflite:
157 :path: ".symlinks/plugins/sqflite/ios" 108 :path: ".symlinks/plugins/sqflite/ios"
  109 + tpns_flutter_plugin:
  110 + :path: ".symlinks/plugins/tpns_flutter_plugin/ios"
158 url_launcher: 111 url_launcher:
159 :path: ".symlinks/plugins/url_launcher/ios" 112 :path: ".symlinks/plugins/url_launcher/ios"
160 - url_launcher_linux:  
161 - :path: ".symlinks/plugins/url_launcher_linux/ios"  
162 - url_launcher_macos:  
163 - :path: ".symlinks/plugins/url_launcher_macos/ios"  
164 - url_launcher_web:  
165 - :path: ".symlinks/plugins/url_launcher_web/ios"  
166 webview_flutter: 113 webview_flutter:
167 :path: ".symlinks/plugins/webview_flutter/ios" 114 :path: ".symlinks/plugins/webview_flutter/ios"
168 115
@@ -170,8 +117,6 @@ SPEC CHECKSUMS: @@ -170,8 +117,6 @@ SPEC CHECKSUMS:
170 audioplayers: 84f968cea3f2deab00ec4f8ff53358b3c0b3992c 117 audioplayers: 84f968cea3f2deab00ec4f8ff53358b3c0b3992c
171 Bugly: fd066c75c4a0eca1440f9b6a84bd37d51bfc85ac 118 Bugly: fd066c75c4a0eca1440f9b6a84bd37d51bfc85ac
172 connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467 119 connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
173 - connectivity_for_web: 2b8584556930d4bd490d82b836bcf45067ce345b  
174 - connectivity_macos: e2e9731b6b22dda39eb1b128f6969d574460e191  
175 contacts_service: 849e1f84281804c8bfbec1b4c3eedcb23c5d3eca 120 contacts_service: 849e1f84281804c8bfbec1b4c3eedcb23c5d3eca
176 device_info: d7d233b645a32c40dfdc212de5cf646ca482f175 121 device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
177 Flutter: 0e3d915762c693b495b44d77113d4970485de6ec 122 Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
@@ -181,27 +126,18 @@ SPEC CHECKSUMS: @@ -181,27 +126,18 @@ SPEC CHECKSUMS:
181 fluwx: 07a55ed66bf3a4961e836a2a411b02dcada32902 126 fluwx: 07a55ed66bf3a4961e836a2a411b02dcada32902
182 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a 127 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
183 install_plugin: a13e7ddd2bab0c701b48cd359c26d0394125b6fb 128 install_plugin: a13e7ddd2bab0c701b48cd359c26d0394125b6fb
184 - JCore: 8aa29dc57ba3730dd9fe7544ce1a4e1cbe221135  
185 - JPush: a401b946dcc76b37335422487201bc1ecc8dd296  
186 - jpush_flutter: 69133df35eaf9135e540549b154d992c44f8ee44  
187 package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 129 package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62
188 path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c 130 path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
189 - path_provider_linux: 4d630dc393e1f20364f3e3b4a2ff41d9674a84e4  
190 - path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0  
191 permission_handler: 8278954f2382902f63f00dd8828769c0bd6d511b 131 permission_handler: 8278954f2382902f63f00dd8828769c0bd6d511b
192 Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 132 Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
193 shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d 133 shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
194 - shared_preferences_linux: afefbfe8d921e207f01ede8b60373d9e3b566b78  
195 - shared_preferences_macos: f3f29b71ccbb56bf40c9dd6396c9acf15e214087  
196 - shared_preferences_web: 141cce0c3ed1a1c5bf2a0e44f52d31eeb66e5ea9  
197 sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0 134 sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0
  135 + TPNS-iOS: 9b35473a4a0d07f2c2730ea1e66c6749c2b98095
  136 + tpns_flutter_plugin: 8dbbee157aab91a878f64d056c1383726a6c5c4d
198 url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef 137 url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
199 - url_launcher_linux: ac237cb7a8058736e4aae38bdbcc748a4b394cc0  
200 - url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313  
201 - url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c  
202 webview_flutter: d2b4d6c66968ad042ad94cbb791f5b72b4678a96 138 webview_flutter: d2b4d6c66968ad042ad94cbb791f5b72b4678a96
203 WechatOpenSDK: 6a4d1436c15b3b5fe2a0bd383f3046010186da44 139 WechatOpenSDK: 6a4d1436c15b3b5fe2a0bd383f3046010186da44
204 140
205 -PODFILE CHECKSUM: 6d186dc4668603071619657511aa873d9a684d13 141 +PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
206 142
207 -COCOAPODS: 1.9.3 143 +COCOAPODS: 1.9.1
@@ -245,9 +245,42 @@ @@ -245,9 +245,42 @@
245 files = ( 245 files = (
246 ); 246 );
247 inputPaths = ( 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}/flutter_statusbarcolor/flutter_statusbarcolor.framework",
  257 + "${BUILT_PRODUCTS_DIR}/fluttertoast/fluttertoast.framework",
  258 + "${BUILT_PRODUCTS_DIR}/install_plugin/install_plugin.framework",
  259 + "${BUILT_PRODUCTS_DIR}/package_info/package_info.framework",
  260 + "${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework",
  261 + "${BUILT_PRODUCTS_DIR}/shared_preferences/shared_preferences.framework",
  262 + "${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework",
  263 + "${BUILT_PRODUCTS_DIR}/url_launcher/url_launcher.framework",
  264 + "${BUILT_PRODUCTS_DIR}/webview_flutter/webview_flutter.framework",
248 ); 265 );
249 name = "[CP] Embed Pods Frameworks"; 266 name = "[CP] Embed Pods Frameworks";
250 outputPaths = ( 267 outputPaths = (
  268 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework",
  269 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
  270 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework",
  271 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/audioplayers.framework",
  272 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/connectivity.framework",
  273 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/contacts_service.framework",
  274 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info.framework",
  275 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_statusbarcolor.framework",
  276 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/fluttertoast.framework",
  277 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/install_plugin.framework",
  278 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info.framework",
  279 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework",
  280 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences.framework",
  281 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework",
  282 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher.framework",
  283 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/webview_flutter.framework",
251 ); 284 );
252 runOnlyForDeploymentPostprocessing = 0; 285 runOnlyForDeploymentPostprocessing = 0;
253 shellPath = /bin/sh; 286 shellPath = /bin/sh;
@@ -528,7 +561,7 @@ @@ -528,7 +561,7 @@
528 MARKETING_VERSION = 1.0.8; 561 MARKETING_VERSION = 1.0.8;
529 PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine; 562 PRODUCT_BUNDLE_IDENTIFIER = com.naji.reserveLine;
530 PRODUCT_NAME = "一键订"; 563 PRODUCT_NAME = "一键订";
531 - PROVISIONING_PROFILE_SPECIFIER = wdn_yjd; 564 + PROVISIONING_PROFILE_SPECIFIER = "Push Development Profile";
532 SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 565 SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
533 SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 566 SWIFT_OPTIMIZATION_LEVEL = "-Onone";
534 SWIFT_VERSION = 5.0; 567 SWIFT_VERSION = 5.0;
@@ -84,5 +84,9 @@ @@ -84,5 +84,9 @@
84 <false/> 84 <false/>
85 <key>io.flutter.embedded_views_preview</key> 85 <key>io.flutter.embedded_views_preview</key>
86 <true/> 86 <true/>
  87 + <key>XG_ACCESS_ID</key>
  88 + <string>1600012876</string>
  89 + <key>XG_ACCESS_KEY</key>
  90 + <string>INUIMFK21WGH</string>
87 </dict> 91 </dict>
88 </plist> 92 </plist>
@@ -10,6 +10,7 @@ import 'package:one_key/provider/message_dialog_model.dart'; @@ -10,6 +10,7 @@ import 'package:one_key/provider/message_dialog_model.dart';
10 import 'package:intl/date_symbol_data_local.dart'; 10 import 'package:intl/date_symbol_data_local.dart';
11 import 'package:one_key/utils/utils.dart'; 11 import 'package:one_key/utils/utils.dart';
12 import 'package:provider/provider.dart'; 12 import 'package:provider/provider.dart';
  13 +import 'package:tpns_flutter_plugin/tpns_flutter_plugin.dart';
13 14
14 import 'app.dart'; 15 import 'app.dart';
15 import 'net/dio_util.dart'; 16 import 'net/dio_util.dart';
@@ -83,6 +84,7 @@ class MyAppState extends State<MyApp> { @@ -83,6 +84,7 @@ class MyAppState extends State<MyApp> {
83 LogUtil.v("is installed $result"); 84 LogUtil.v("is installed $result");
84 } 85 }
85 86
  87 +//初始化dio
86 initDio() { 88 initDio() {
87 DioUtil.openDebug(); 89 DioUtil.openDebug();
88 Options options = DioUtil.getDefOptions(); 90 Options options = DioUtil.getDefOptions();
1 import 'dart:async'; 1 import 'dart:async';
2 -import 'dart:convert';  
3 -  
4 -//import 'package:fake_push/fake_push.dart' as fake; 2 +import 'dart:io';
5 import 'package:flutter/cupertino.dart'; 3 import 'package:flutter/cupertino.dart';
6 import 'package:flutter/material.dart'; 4 import 'package:flutter/material.dart';
7 import 'package:flutter_screenutil/flutter_screenutil.dart'; 5 import 'package:flutter_screenutil/flutter_screenutil.dart';
8 -import 'package:jpush_flutter/jpush_flutter.dart';  
9 -import 'package:one_key/models/message.dart';  
10 import 'package:one_key/pages/message/message_page.dart'; 6 import 'package:one_key/pages/message/message_page.dart';
11 import 'package:one_key/pages/my/my_page.dart'; 7 import 'package:one_key/pages/my/my_page.dart';
12 import 'package:one_key/pages/notebook/notebook_page.dart'; 8 import 'package:one_key/pages/notebook/notebook_page.dart';
@@ -19,11 +15,10 @@ import 'package:one_key/provider/update_model.dart'; @@ -19,11 +15,10 @@ import 'package:one_key/provider/update_model.dart';
19 import 'package:one_key/provider/user_model.dart'; 15 import 'package:one_key/provider/user_model.dart';
20 import 'package:one_key/res/colors.dart'; 16 import 'package:one_key/res/colors.dart';
21 import 'package:one_key/utils/log_util.dart'; 17 import 'package:one_key/utils/log_util.dart';
22 -import 'package:one_key/utils/navigator_util.dart';  
23 import 'package:one_key/utils/utils.dart'; 18 import 'package:one_key/utils/utils.dart';
24 import 'package:provider/provider.dart'; 19 import 'package:provider/provider.dart';
25 -import 'package:flutter/services.dart';  
26 import 'package:shared_preferences/shared_preferences.dart'; 20 import 'package:shared_preferences/shared_preferences.dart';
  21 +import 'package:tpns_flutter_plugin/tpns_flutter_plugin.dart';
27 22
28 class HomePage extends StatefulWidget{ 23 class HomePage extends StatefulWidget{
29 24
@@ -40,22 +35,14 @@ class HomePage extends StatefulWidget{ @@ -40,22 +35,14 @@ class HomePage extends StatefulWidget{
40 35
41 class HomePageState extends State<HomePage>{ 36 class HomePageState extends State<HomePage>{
42 37
43 -// 信鸽推送  
44 -// fake.Push _push = fake.Push();  
45 -// StreamSubscription<String> _receiveDeviceToken;  
46 -// StreamSubscription<fake.Message> _receiveMessage;  
47 -// StreamSubscription<fake.Message> _receiveNotification;  
48 -// StreamSubscription<String> _launchNotification;  
49 -// StreamSubscription<String> _resumeNotification;  
50 -  
51 -// 极光推送  
52 - final JPush jpush = new JPush();  
53 38
54 List<Widget> pages = List<Widget>(); 39 List<Widget> pages = List<Widget>();
55 int _currIndex = 1; 40 int _currIndex = 1;
56 Color _activeColor = MyColours.color_2bb5b7; 41 Color _activeColor = MyColours.color_2bb5b7;
57 Color _defaultColor = MyColours.color_bfbfbf; 42 Color _defaultColor = MyColours.color_bfbfbf;
58 43
  44 + Timer timer;
  45 +
59 @override 46 @override
60 void initState() { 47 void initState() {
61 // TODO: implement initState 48 // TODO: implement initState
@@ -75,155 +62,92 @@ class HomePageState extends State<HomePage>{ @@ -75,155 +62,92 @@ class HomePageState extends State<HomePage>{
75 create: (_)=>MyModel(), 62 create: (_)=>MyModel(),
76 child: MyPage(), 63 child: MyPage(),
77 )); 64 ));
78 - initJPush();  
79 -// initXinge();  
80 WidgetsBinding.instance.addPostFrameCallback((_){ 65 WidgetsBinding.instance.addPostFrameCallback((_){
81 if(widget.initialIndex==0)return; 66 if(widget.initialIndex==0)return;
82 ContactModel.getInstance().uploadLocalContact(context); 67 ContactModel.getInstance().uploadLocalContact(context);
83 -// getUntreatedMessage();  
84 -// UpdateModel updateModel=new UpdateModel();  
85 -// updateModel.checkUpdate(context);  
86 - });  
87 - }  
88 -  
89 -  
90 - Future<void> initJPush() async {  
91 - try {  
92 - jpush.addEventHandler(  
93 - onReceiveNotification: (Map<String, dynamic> message) async {  
94 - LogUtil.v("flutter onReceiveNotification: $message");  
95 - Map<String,dynamic> messageMap=(json.decode(message["extras"]["cn.jpush.android.EXTRA"]) as Map<String,dynamic>)["extras"];  
96 - Provider.of<MessageDialogModel>(context,listen: false).addMessage(context,Message.fromJson(messageMap));  
97 - }, onOpenNotification: (Map<String, dynamic> message) async {  
98 - LogUtil.v("flutter onOpenNotification: $message");  
99 - NavigatorUtil.goHomePage(context,initialIndex: 0);  
100 - }, onReceiveMessage: (Map<String, dynamic> message) async {  
101 - LogUtil.v("flutter onReceiveMessage: $message");  
102 - }, onReceiveNotificationAuthorization:  
103 - (Map<String, dynamic> message) async {  
104 - LogUtil.v("flutter onReceiveNotificationAuthorization: $message"); 68 + getUntreatedMessage();
  69 + timer=Timer.periodic(Duration(minutes: 3), (_){
  70 + getUntreatedMessage();
105 }); 71 });
106 - } on PlatformException {}  
107 -  
108 - jpush.setup(  
109 - appKey: "27ceb79c44af41ad99202f7a", //你自己应用的 AppKey  
110 - channel: "theChannel",  
111 - production: false,  
112 - debug: true,  
113 - );  
114 -  
115 - jpush.applyPushAuthority(  
116 - new NotificationSettingsIOS(sound: true, alert: true, badge: false));  
117 -  
118 - // Platform messages may fail, so we use a try/catch PlatformException.  
119 - jpush.getRegistrationID().then((rid) {  
120 - LogUtil.v("flutter get registration id : $rid");  
121 - userTokenInit(rid);  
122 - });  
123 - jpush.isNotificationEnabled().then((bool value) {  
124 - if (!value) {  
125 - //没有打开通知  
126 - jpush.openSettingsForNotification();  
127 - } 72 + UpdateModel updateModel=new UpdateModel();
  73 + updateModel.checkUpdate(context);
128 }); 74 });
  75 + initPlatformState();
129 } 76 }
130 77
131 //初始化信鸽推送 78 //初始化信鸽推送
132 - void initXinge(){  
133 -// _receiveDeviceToken =  
134 -// _push.receiveDeviceToken().listen(_handleReceiveDeviceToken);  
135 -// _receiveMessage = _push.receiveMessage().listen(_handleReceiveMessage);  
136 -// _receiveNotification =  
137 -// _push.receiveNotification().listen(_handleReceiveNotification);  
138 -// _launchNotification =  
139 -// _push.launchNotification().listen(_handleLaunchNotification);  
140 -// _resumeNotification =  
141 -// _push.resumeNotification().listen(_handleResumeNotification);  
142 -//  
143 -// _push.startWork(enableDebug: !_isReleaseMode());  
144 -//  
145 -// // 第二次打开应用再调用  
146 -// SharedPreferences.getInstance().then((SharedPreferences sharedPref) {  
147 -// if (sharedPref.getBool('firstStart') ?? true) {  
148 -// sharedPref.setBool('firstStart', false);  
149 -// } else {  
150 -// _push.areNotificationsEnabled().then((bool isEnabled) {  
151 -// if (!isEnabled) {  
152 -// showCupertinoDialog(  
153 -// context: context,  
154 -// builder: (BuildContext context) {  
155 -// return CupertinoAlertDialog(  
156 -// title: const Text('提示'),  
157 -// content: const Text('开启通知权限可收到更多优质内容'),  
158 -// actions: <Widget>[  
159 -// CupertinoDialogAction(  
160 -// child: const Text('取消'),  
161 -// onPressed: () {  
162 -// Navigator.of(context).pop();  
163 -// },  
164 -// ),  
165 -// CupertinoDialogAction(  
166 -// child: const Text('设置'),  
167 -// onPressed: () {  
168 -// _push.openNotificationsSettings();  
169 -// Navigator.of(context).pop();  
170 -// },  
171 -// ),  
172 -// ],  
173 -// );  
174 -// },  
175 -// );  
176 -// }  
177 -// });  
178 -// }  
179 -// });  
180 - } 79 + Future<void> initPlatformState() async {
  80 + // If the widget was removed from the tree while the asynchronous platform
  81 + // message was in flight, we want to discard the reply rather than calling
  82 + // setState to update our non-existent appearance.
  83 + if (!mounted) return;
181 84
182 - bool _isReleaseMode() {  
183 - return const bool.fromEnvironment('dart.vm.product');  
184 - } 85 + /// 开启DEBUG
  86 + XgFlutterPlugin().setEnableDebug(true);
185 87
186 - void _handleReceiveDeviceToken(String deviceToken) async {  
187 -// String token=await _push.getDeviceToken();  
188 -// print('receiveDeviceToken: $deviceToken - $token');  
189 -// userTokenInit2(token);  
190 - } 88 + /// 添加回调事件
  89 + XgFlutterPlugin().addEventHandler(
  90 + onRegisteredDeviceToken: (String msg) async {
  91 + print("flutter onRegisteredDeviceToken: $msg");
  92 + },
  93 + onRegisteredDone: (String msg) async {
  94 + print("flutter onRegisteredDone: $msg");
  95 + LogUtil.v("注册成功");
  96 + userTokenInit(msg);
  97 + },
  98 + unRegistered: (String msg) async {
  99 + print("flutter unRegistered: $msg");
  100 + },
  101 + onReceiveNotificationResponse: (Map<String, dynamic> msg) async {
  102 + LogUtil.v("flutter onReceiveNotificationResponse $msg");
  103 + },
  104 + onReceiveMessage: (Map<String, dynamic> msg) async {
  105 + print("flutter onReceiveMessage $msg");
  106 + },
  107 + xgPushDidSetBadge: (String msg) async {
  108 + print("flutter xgPushDidSetBadge: $msg");
191 109
192 -// void _handleReceiveMessage(fake.Message message) {  
193 -// print(  
194 -// 'receiveMessage: ${message.title} - ${message.content} - ${message.customContent}');  
195 -// }  
196 -//  
197 -// void _handleReceiveNotification(fake.Message notification) {  
198 -// print(  
199 -// 'receiveNotification: ${notification.title} - ${notification.content} - ${notification.customContent}');  
200 -//  
201 -// }  
202 -//  
203 -// void _handleLaunchNotification(String customContent) {  
204 -// print('launchNotification: $customContent');  
205 -//  
206 -// }  
207 -//  
208 -// void _handleResumeNotification(String customContent) {  
209 -// print('resumeNotification: $customContent');  
210 -//  
211 -// } 110 + /// 在此可设置应用角标
  111 + /// XgFlutterPlugin().setAppBadge(0);;
  112 + },
  113 + xgPushDidBindWithIdentifier: (String msg) async {
  114 + print("flutter xgPushDidBindWithIdentifier: $msg");
  115 + },
  116 + xgPushDidUnbindWithIdentifier: (String msg) async {
  117 + print("flutter xgPushDidUnbindWithIdentifier: $msg");
  118 + },
  119 + xgPushDidUpdatedBindedIdentifier: (String msg) async {
  120 + print("flutter xgPushDidUpdatedBindedIdentifier: $msg");
  121 + },
  122 + xgPushDidClearAllIdentifiers: (String msg) async {
  123 + print("flutter xgPushDidClearAllIdentifiers: $msg");
  124 + },
  125 + xgPushClickAction: (Map<String, dynamic> msg) async {
  126 + print("flutter xgPushClickAction $msg");
  127 + },
  128 + );
212 129
213 - //初始化推送token  
214 - userTokenInit(String registrationId){  
215 - UserModel userModel=Provider.of<UserModel>(context,listen: false);  
216 - userModel.registrationId=registrationId;  
217 - Map<String,String> params={  
218 - "sid":userModel.user.sellerid,  
219 - "account":userModel.user.account,  
220 - "registrationId":registrationId  
221 - };  
222 - userModel.userTokenInit(context, params); 130 + /// 如果您的应用非广州集群则需要在startXG之前调用此函数
  131 + /// 香港:tpns.hk.tencent.com
  132 + /// 新加坡:tpns.sgp.tencent.com
  133 + /// 上海:tpns.sh.tencent.com
  134 + // XgFlutterPlugin().configureClusterDomainName("tpns.hk.tencent.com");
  135 +
  136 + /// 设置OPPO AppKey 和 AppSecret
  137 + XgFlutterPlugin().getXgAndroidApi().enableOppoNotification();
  138 + XgFlutterPlugin().getXgAndroidApi().setOppoPushAppId(appId:"30260281");
  139 + XgFlutterPlugin().getXgAndroidApi().setOppoPushAppKey(appKey: "9b7e372f93794593953f93f118619570");
  140 + // 设置小米 AppID 和 AppKey。
  141 + XgFlutterPlugin().getXgAndroidApi().setMiPushAppId(appId:"2882303761518639456");
  142 + XgFlutterPlugin().getXgAndroidApi().setMiPushAppKey(appKey: "5231863961456");
  143 + XgFlutterPlugin().getXgAndroidApi().enableOtherPush();
  144 + /// 启动TPNS服务
  145 + XgFlutterPlugin().startXg("1600012876", "INUIMFK21WGH");
223 } 146 }
224 147
  148 +
225 //初始化推送token 149 //初始化推送token
226 - userTokenInit2(String token){ 150 + userTokenInit(String token){
227 UserModel userModel=Provider.of<UserModel>(context,listen: false); 151 UserModel userModel=Provider.of<UserModel>(context,listen: false);
228 userModel.token=token; 152 userModel.token=token;
229 Map<String,String> params={ 153 Map<String,String> params={
@@ -239,8 +163,8 @@ class HomePageState extends State<HomePage>{ @@ -239,8 +163,8 @@ class HomePageState extends State<HomePage>{
239 UserModel userModel=Provider.of<UserModel>(context,listen: false); 163 UserModel userModel=Provider.of<UserModel>(context,listen: false);
240 Map<String,String> params={ 164 Map<String,String> params={
241 "sid":userModel.user.sellerid, 165 "sid":userModel.user.sellerid,
242 - "type_id":"10",  
243 - "status":"0", 166 + "type_id":"10",//10 在线预订
  167 + "status":"0",//未处理
244 "offset":"0", 168 "offset":"0",
245 "limit":"100", 169 "limit":"100",
246 }; 170 };
@@ -332,22 +256,11 @@ class HomePageState extends State<HomePage>{ @@ -332,22 +256,11 @@ class HomePageState extends State<HomePage>{
332 @override 256 @override
333 void dispose() { 257 void dispose() {
334 // TODO: implement dispose 258 // TODO: implement dispose
335 -// if (_receiveDeviceToken != null) {  
336 -// _receiveDeviceToken.cancel();  
337 -// }  
338 -// if (_receiveMessage != null) {  
339 -// _receiveMessage.cancel();  
340 -// }  
341 -// if (_receiveNotification != null) {  
342 -// _receiveNotification.cancel();  
343 -// }  
344 -// if (_launchNotification != null) {  
345 -// _launchNotification.cancel();  
346 -// }  
347 -// if (_resumeNotification != null) {  
348 -// _resumeNotification.cancel();  
349 -// }  
350 super.dispose(); 259 super.dispose();
351 LogUtil.v("home_dispose"); 260 LogUtil.v("home_dispose");
  261 + if(timer!=null){
  262 + timer.cancel();
  263 + }
  264 + XgFlutterPlugin().stopXg();
352 } 265 }
353 } 266 }
@@ -33,6 +33,8 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver{ @@ -33,6 +33,8 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver{
33 33
34 String errorText="";//错误提示 34 String errorText="";//错误提示
35 35
  36 + bool _check = true;
  37 +
36 @override 38 @override
37 void initState(){ 39 void initState(){
38 // TODO: implement initState 40 // TODO: implement initState
@@ -279,7 +281,66 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver{ @@ -279,7 +281,66 @@ class LoginState extends State<LoginPage> with WidgetsBindingObserver{
279 ), 281 ),
280 ); 282 );
281 }, 283 },
282 - ) 284 + ),
  285 + VEmptyView(20),
  286 + Row(
  287 + // mainAxisSize: MainAxisSize.min,
  288 + crossAxisAlignment: CrossAxisAlignment.center,
  289 + children: <Widget>[
  290 + InkWell(
  291 + onTap: () {
  292 + setState(() {
  293 + _check = !_check;
  294 + });
  295 + },
  296 + child: Container(
  297 + // color: Colors.red,
  298 + // height: ScreenUtil().setWidth(34),
  299 + padding: EdgeInsets.only(
  300 + left: ScreenUtil().setWidth(102),
  301 + top: ScreenUtil().setWidth(10),
  302 + bottom: ScreenUtil().setWidth(10)),
  303 + child: Center(
  304 + child: Image.asset(
  305 + _check
  306 + ? "assets/mine_radio_sel.png"
  307 + : "assets/mine_radio_nor.png",
  308 + width: ScreenUtil().setWidth(42),
  309 + height: ScreenUtil().setWidth(42)),
  310 + ))),
  311 + HEmptyView(6),
  312 + Text(
  313 + '已阅读并同意',
  314 + style: TextStyle(
  315 + fontSize: ScreenUtil().setSp(24),
  316 + color: MyColours.color_353535),
  317 + ),
  318 + InkWell(
  319 + onTap: () {
  320 + NavigatorUtil.goWebPage(context, '软件服务协议', "xy");
  321 + },
  322 + child: Text(
  323 + '《软件服务协议》',
  324 + style: TextStyle(
  325 + fontSize: ScreenUtil().setSp(24),
  326 + color: MyColours.color_2bb5b7),
  327 + ),
  328 + ),
  329 + Text('及',
  330 + style: TextStyle(
  331 + fontSize: ScreenUtil().setSp(24),
  332 + color: MyColours.color_353535)),
  333 + InkWell(
  334 + onTap: () {
  335 + NavigatorUtil.goWebPage(context, '隐私政策', "zc");
  336 + },
  337 + child: Text('《隐私政策》',
  338 + style: TextStyle(
  339 + fontSize: ScreenUtil().setSp(24),
  340 + color: MyColours.color_2bb5b7)),
  341 + )
  342 + ],
  343 + ),
283 ], 344 ],
284 ), 345 ),
285 ), 346 ),
  1 +import 'dart:async';
  2 +
  3 +import 'package:flutter/material.dart';
  4 +import 'package:one_key/widgets/system_app_bar.dart';
  5 +import 'package:webview_flutter/webview_flutter.dart';
  6 +
  7 +class WebPage extends StatelessWidget {
  8 + final String title;
  9 + final String url;
  10 +
  11 + const WebPage({Key key, this.title, this.url}) : super(key: key);
  12 + @override
  13 + Widget build(BuildContext context) {
  14 + final Completer<WebViewController> _controller =
  15 + Completer<WebViewController>();
  16 + return Scaffold(
  17 + appBar: SystemAppBar(title),
  18 + body: WebView(
  19 + initialUrl: "http://colorcun.com/privacy1.html",
  20 + javascriptMode: JavascriptMode.unrestricted,
  21 + onWebViewCreated: (WebViewController webViewController) {
  22 + // Loading.showLoading(context);
  23 + _controller.complete(webViewController);
  24 + },
  25 + javascriptChannels: <JavascriptChannel>[
  26 + _toasterJavascriptChannel(context),
  27 + ].toSet(),
  28 + navigationDelegate: (NavigationRequest request) {
  29 + if (request.url.startsWith('https://www.youtube.com/')) {
  30 + return NavigationDecision.prevent;
  31 + }
  32 + return NavigationDecision.navigate;
  33 + },
  34 + onPageStarted: (String url) {
  35 +
  36 + },
  37 + onPageFinished: (String url) {
  38 + // Loading.hideLoading(context);
  39 + },
  40 + gestureNavigationEnabled: true,
  41 + ),
  42 + );
  43 + }
  44 +
  45 + JavascriptChannel _toasterJavascriptChannel(BuildContext context) {
  46 + return JavascriptChannel(
  47 + name: 'Toaster',
  48 + onMessageReceived: (JavascriptMessage message) {
  49 + Scaffold.of(context).showSnackBar(
  50 + SnackBar(content: Text(message.message)),
  51 + );
  52 + });
  53 + }
  54 +}
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; @@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
2 import 'package:flutter_screenutil/flutter_screenutil.dart'; 2 import 'package:flutter_screenutil/flutter_screenutil.dart';
3 import 'package:one_key/models/message.dart'; 3 import 'package:one_key/models/message.dart';
4 import 'package:one_key/provider/message_dialog_model.dart'; 4 import 'package:one_key/provider/message_dialog_model.dart';
  5 +import 'package:one_key/provider/user_model.dart';
5 import 'package:one_key/res/colors.dart'; 6 import 'package:one_key/res/colors.dart';
6 import 'package:one_key/utils/navigator_util.dart'; 7 import 'package:one_key/utils/navigator_util.dart';
7 import 'package:one_key/widgets/common_button.dart'; 8 import 'package:one_key/widgets/common_button.dart';
@@ -30,6 +31,7 @@ class MessageDialogItem extends StatelessWidget { @@ -30,6 +31,7 @@ class MessageDialogItem extends StatelessWidget {
30 child: Stack( 31 child: Stack(
31 children: <Widget>[ 32 children: <Widget>[
32 Container( 33 Container(
  34 + height: ScreenUtil().setWidth(280),
33 margin: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(39),vertical: ScreenUtil().setWidth(12)), 35 margin: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(39),vertical: ScreenUtil().setWidth(12)),
34 padding: EdgeInsets.fromLTRB( 36 padding: EdgeInsets.fromLTRB(
35 ScreenUtil().setWidth(12), 37 ScreenUtil().setWidth(12),
@@ -63,26 +65,39 @@ class MessageDialogItem extends StatelessWidget { @@ -63,26 +65,39 @@ class MessageDialogItem extends StatelessWidget {
63 ], 65 ],
64 ), 66 ),
65 VEmptyView(20), 67 VEmptyView(20),
  68 + message.message_type=="11"?
66 Text( 69 Text(
67 - "包间需求:${message.room_demand}", 70 + "${message.ddateStr}的${message.rnameStr}取消了预订",
68 style: TextStyle( 71 style: TextStyle(
69 color: textColor, 72 color: textColor,
70 fontSize: ScreenUtil().setSp(28)), 73 fontSize: ScreenUtil().setSp(28)),
71 - ),  
72 - VEmptyView(10),  
73 - Text(  
74 - "就餐时间:${message.ddateStr}",  
75 - style: TextStyle(  
76 - color: textColor,  
77 - fontSize: ScreenUtil().setSp(28)),  
78 - ),  
79 - VEmptyView(10),  
80 - Text(  
81 - "预订人:${message.rnameStr}",  
82 - style: TextStyle(  
83 - color: textColor,  
84 - fontSize: ScreenUtil().setSp(28)),  
85 - ), 74 + ):
  75 + Column(
  76 + mainAxisSize: MainAxisSize.min,
  77 + crossAxisAlignment: CrossAxisAlignment.start,
  78 + children: <Widget>[
  79 + Text(
  80 + "包间需求:${message.room_demand}",
  81 + style: TextStyle(
  82 + color: textColor,
  83 + fontSize: ScreenUtil().setSp(28)),
  84 + ),
  85 + VEmptyView(10),
  86 + Text(
  87 + "就餐时间:${message.ddateStr}",
  88 + style: TextStyle(
  89 + color: textColor,
  90 + fontSize: ScreenUtil().setSp(28)),
  91 + ),
  92 + VEmptyView(10),
  93 + Text(
  94 + "预订人:${message.rnameStr}",
  95 + style: TextStyle(
  96 + color: textColor,
  97 + fontSize: ScreenUtil().setSp(28)),
  98 + ),
  99 + ],
  100 + )
86 ], 101 ],
87 ), 102 ),
88 ), 103 ),
@@ -95,11 +110,21 @@ class MessageDialogItem extends StatelessWidget { @@ -95,11 +110,21 @@ class MessageDialogItem extends StatelessWidget {
95 width: 160, 110 width: 160,
96 height: 48, 111 height: 48,
97 fontSize: 28, 112 fontSize: 28,
98 - content: "立即处理", 113 + content: message.message_type=="10"?"立即处理":"立即查看",
99 state: 1, 114 state: 1,
100 onPress: () { 115 onPress: () {
101 messageDialogModel.removeMessage(message.id); 116 messageDialogModel.removeMessage(message.id);
102 - NavigatorUtil.goHandleOnlinePage(context,message.rid.toString(),message.id,replace: messageDialogModel.messages.isEmpty); 117 + if(message.message_type=="10"){
  118 + NavigatorUtil.goHandleOnlinePage(context,message.rid.toString(),message.id,replace: messageDialogModel.messages.isEmpty?true:false);
  119 + }else{
  120 + NavigatorUtil.goNotebookDetailPage(context,message.rid.toString(),replace: messageDialogModel.messages.isEmpty?true:false);
  121 + Map<String, String> params = {
  122 + "sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
  123 + "id": message.id,
  124 + "status": "is_handle"
  125 + };
  126 + messageDialogModel.setMessageStatus(context,params);
  127 + }
103 }, 128 },
104 ), 129 ),
105 ), 130 ),
@@ -2,7 +2,9 @@ import 'package:flutter/material.dart'; @@ -2,7 +2,9 @@ import 'package:flutter/material.dart';
2 import 'package:flutter_screenutil/flutter_screenutil.dart'; 2 import 'package:flutter_screenutil/flutter_screenutil.dart';
3 import 'package:one_key/models/message.dart'; 3 import 'package:one_key/models/message.dart';
4 import 'package:one_key/provider/message_dialog_model.dart'; 4 import 'package:one_key/provider/message_dialog_model.dart';
  5 +import 'package:one_key/provider/user_model.dart';
5 import 'package:one_key/res/colors.dart'; 6 import 'package:one_key/res/colors.dart';
  7 +import 'package:one_key/utils/event_bus.dart';
6 import 'package:one_key/utils/navigator_util.dart'; 8 import 'package:one_key/utils/navigator_util.dart';
7 import 'package:one_key/widgets/common_button.dart'; 9 import 'package:one_key/widgets/common_button.dart';
8 import 'package:one_key/widgets/h_empty_view.dart'; 10 import 'package:one_key/widgets/h_empty_view.dart';
@@ -30,6 +32,7 @@ class MessageItem extends StatelessWidget { @@ -30,6 +32,7 @@ class MessageItem extends StatelessWidget {
30 child: Stack( 32 child: Stack(
31 children: <Widget>[ 33 children: <Widget>[
32 Container( 34 Container(
  35 + height: ScreenUtil().setWidth(280),
33 margin: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(39),vertical: ScreenUtil().setWidth(12)), 36 margin: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(39),vertical: ScreenUtil().setWidth(12)),
34 padding: EdgeInsets.fromLTRB( 37 padding: EdgeInsets.fromLTRB(
35 ScreenUtil().setWidth(12), 38 ScreenUtil().setWidth(12),
@@ -63,26 +66,39 @@ class MessageItem extends StatelessWidget { @@ -63,26 +66,39 @@ class MessageItem extends StatelessWidget {
63 ], 66 ],
64 ), 67 ),
65 VEmptyView(20), 68 VEmptyView(20),
  69 + message.message_type=="11"?
66 Text( 70 Text(
67 - "包间需求:${message.room_demand}", 71 + "${message.ddateStr}的${message.rnameStr}取消了预订",
68 style: TextStyle( 72 style: TextStyle(
69 color: textColor, 73 color: textColor,
70 fontSize: ScreenUtil().setSp(28)), 74 fontSize: ScreenUtil().setSp(28)),
71 - ),  
72 - VEmptyView(10),  
73 - Text(  
74 - "就餐时间:${message.ddateStr}",  
75 - style: TextStyle(  
76 - color: textColor,  
77 - fontSize: ScreenUtil().setSp(28)),  
78 - ),  
79 - VEmptyView(10),  
80 - Text(  
81 - "预订人:${message.rnameStr}",  
82 - style: TextStyle(  
83 - color: textColor,  
84 - fontSize: ScreenUtil().setSp(28)),  
85 - ), 75 + ):
  76 + Column(
  77 + mainAxisSize: MainAxisSize.min,
  78 + crossAxisAlignment: CrossAxisAlignment.start,
  79 + children: <Widget>[
  80 + Text(
  81 + "包间需求:${message.room_demand}",
  82 + style: TextStyle(
  83 + color: textColor,
  84 + fontSize: ScreenUtil().setSp(28)),
  85 + ),
  86 + VEmptyView(10),
  87 + Text(
  88 + "就餐时间:${message.ddateStr}",
  89 + style: TextStyle(
  90 + color: textColor,
  91 + fontSize: ScreenUtil().setSp(28)),
  92 + ),
  93 + VEmptyView(10),
  94 + Text(
  95 + "预订人:${message.rnameStr}",
  96 + style: TextStyle(
  97 + color: textColor,
  98 + fontSize: ScreenUtil().setSp(28)),
  99 + ),
  100 + ],
  101 + )
86 ], 102 ],
87 ), 103 ),
88 ), 104 ),
@@ -95,11 +111,22 @@ class MessageItem extends StatelessWidget { @@ -95,11 +111,22 @@ class MessageItem extends StatelessWidget {
95 width: 160, 111 width: 160,
96 height: 48, 112 height: 48,
97 fontSize: 28, 113 fontSize: 28,
98 - content: "立即处理", 114 + content:message.message_type=="10"?"立即处理":"立即查看",
99 state: 1, 115 state: 1,
100 onPress: () { 116 onPress: () {
101 messageDialogModel.removeMessage(message.id); 117 messageDialogModel.removeMessage(message.id);
102 - NavigatorUtil.goHandleOnlinePage(context,message.rid.toString(),message.id); 118 + if(message.message_type=="10"){
  119 + NavigatorUtil.goHandleOnlinePage(context,message.rid.toString(),message.id);
  120 + }else{
  121 + NavigatorUtil.goNotebookDetailPage(context,message.rid.toString());
  122 + bus.emit("remove_untreated_message", message.id);
  123 + Map<String, String> params = {
  124 + "sid": Provider.of<UserModel>(context, listen: false).user.sellerid,
  125 + "id": message.id,
  126 + "status": "is_handle"
  127 + };
  128 + messageDialogModel.setMessageStatus(context,params);
  129 + }
103 }, 130 },
104 ), 131 ),
105 ), 132 ),
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; @@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
2 import 'package:flutter_screenutil/flutter_screenutil.dart'; 2 import 'package:flutter_screenutil/flutter_screenutil.dart';
3 import 'package:one_key/models/notebook.dart'; 3 import 'package:one_key/models/notebook.dart';
4 import 'package:one_key/provider/SmsModel.dart'; 4 import 'package:one_key/provider/SmsModel.dart';
  5 +import 'package:one_key/provider/contact_model.dart';
5 import 'package:one_key/provider/user_model.dart'; 6 import 'package:one_key/provider/user_model.dart';
6 import 'package:one_key/res/colors.dart'; 7 import 'package:one_key/res/colors.dart';
7 import 'package:one_key/utils/utils.dart'; 8 import 'package:one_key/utils/utils.dart';
@@ -40,6 +41,7 @@ class SmsPageState extends State<SmsPage>{ @@ -40,6 +41,7 @@ class SmsPageState extends State<SmsPage>{
40 userModel=Provider.of<UserModel>(context,listen: false); 41 userModel=Provider.of<UserModel>(context,listen: false);
41 WidgetsBinding.instance.addPostFrameCallback((_){ 42 WidgetsBinding.instance.addPostFrameCallback((_){
42 _getSmsContent(); 43 _getSmsContent();
  44 + ContactModel.getInstance().uploadLocalContact(context);
43 }); 45 });
44 } 46 }
45 47
@@ -8,8 +8,12 @@ import 'package:one_key/constant/constant.dart'; @@ -8,8 +8,12 @@ import 'package:one_key/constant/constant.dart';
8 import 'package:one_key/net/base_resp.dart'; 8 import 'package:one_key/net/base_resp.dart';
9 import 'package:one_key/net/dio_util.dart'; 9 import 'package:one_key/net/dio_util.dart';
10 import 'package:one_key/net/http_url.dart'; 10 import 'package:one_key/net/http_url.dart';
  11 +import 'package:one_key/provider/user_model.dart';
11 import 'package:one_key/utils/log_util.dart'; 12 import 'package:one_key/utils/log_util.dart';
12 import 'package:one_key/utils/misc.dart'; 13 import 'package:one_key/utils/misc.dart';
  14 +import 'package:provider/provider.dart';
  15 +
  16 +import '../app.dart';
13 17
14 /** 18 /**
15 * 上传联系人 19 * 上传联系人
@@ -28,11 +32,12 @@ class ContactModel{ @@ -28,11 +32,12 @@ class ContactModel{
28 } 32 }
29 33
30 uploadLocalContact(BuildContext context) async { 34 uploadLocalContact(BuildContext context) async {
  35 + bool isUpload=App.sp.getBool("isUpload")??false;
  36 + if(isUpload)return;
31 bool authority=await requestContactPermission(); 37 bool authority=await requestContactPermission();
32 if(authority){ 38 if(authority){
33 Iterable<Contact> contacts=await ContactsService.getContacts(withThumbnails: false); 39 Iterable<Contact> contacts=await ContactsService.getContacts(withThumbnails: false);
34 List<Map<String,String>> callLogs=[]; 40 List<Map<String,String>> callLogs=[];
35 - LogUtil.v("length:${contacts.length}");  
36 41
37 contacts.forEach((contact){ 42 contacts.forEach((contact){
38 String phoneNum=""; 43 String phoneNum="";
@@ -45,7 +50,8 @@ class ContactModel{ @@ -45,7 +50,8 @@ class ContactModel{
45 "deviceId":"dhgajkhdgahghsdghdkgahd", 50 "deviceId":"dhgajkhdgahghsdghdkgahd",
46 "phoneDate":"${DateTime.now().millisecondsSinceEpoch}", 51 "phoneDate":"${DateTime.now().millisecondsSinceEpoch}",
47 "callType":"2", 52 "callType":"2",
48 - "callUser":"${contact.displayName}" 53 + "callUser":"${contact.displayName}",
  54 + "account":Provider.of<UserModel>(context,listen: false).user.account
49 }; 55 };
50 callLogs.add(callLog); 56 callLogs.add(callLog);
51 }); 57 });
@@ -60,6 +66,7 @@ class ContactModel{ @@ -60,6 +66,7 @@ class ContactModel{
60 }); 66 });
61 if(baseResp!=null&&baseResp.code == Constant.status_success){ 67 if(baseResp!=null&&baseResp.code == Constant.status_success){
62 LogUtil.v("联系人上传成功:${contacts.length}条"); 68 LogUtil.v("联系人上传成功:${contacts.length}条");
  69 + App.sp.setBool("isUpload", true);
63 } 70 }
64 } 71 }
65 } 72 }
@@ -8,6 +8,7 @@ import 'package:one_key/net/http_url.dart'; @@ -8,6 +8,7 @@ import 'package:one_key/net/http_url.dart';
8 import 'package:one_key/utils/dialog_util.dart'; 8 import 'package:one_key/utils/dialog_util.dart';
9 import 'package:audioplayers/audio_cache.dart'; 9 import 'package:audioplayers/audio_cache.dart';
10 import 'package:one_key/utils/log_util.dart'; 10 import 'package:one_key/utils/log_util.dart';
  11 +import 'package:one_key/utils/utils.dart';
11 12
12 class MessageDialogModel extends ChangeNotifier{ 13 class MessageDialogModel extends ChangeNotifier{
13 14
@@ -22,14 +23,24 @@ class MessageDialogModel extends ChangeNotifier{ @@ -22,14 +23,24 @@ class MessageDialogModel extends ChangeNotifier{
22 } 23 }
23 24
24 /// 播放 25 /// 播放
25 - void play() {  
26 - _player.play("tts_online.mp3"); 26 + void play(String message_type) {
  27 + switch(message_type){
  28 + case "10"://在线预订
  29 + _player.play("tts_online.mp3");
  30 + break;
  31 + case "11"://取消在线预订
  32 + _player.play("tts_cancel.mp3");
  33 + break;
  34 + case "-1"://>3
  35 + _player.play("tts_all.mp3");
  36 + break;
  37 + }
27 } 38 }
28 39
29 //添加一条信息 40 //添加一条信息
30 addMessage(BuildContext context,Message message){ 41 addMessage(BuildContext context,Message message){
31 LogUtil.v(message.toString()); 42 LogUtil.v(message.toString());
32 - play(); 43 + play(message.message_type);
33 messages.add(message); 44 messages.add(message);
34 if(!showMessageDialog){ 45 if(!showMessageDialog){
35 DialogUtil.showMessageDialog(context); 46 DialogUtil.showMessageDialog(context);
@@ -47,7 +58,7 @@ class MessageDialogModel extends ChangeNotifier{ @@ -47,7 +58,7 @@ class MessageDialogModel extends ChangeNotifier{
47 //获取未处理在线预订消息 58 //获取未处理在线预订消息
48 getUntreatedMsg(BuildContext context,Map<String,String> params) async { 59 getUntreatedMsg(BuildContext context,Map<String,String> params) async {
49 BaseResp<List> baseResp = await DioUtil() 60 BaseResp<List> baseResp = await DioUtil()
50 - .request<List>(context, Method.get, HttpUrl.get_message_list, 61 + .request<List>(context, Method.get, HttpUrl.get_message_list,showLoading: false,
51 data: params) 62 data: params)
52 .catchError((error) { 63 .catchError((error) {
53 print(error.toString()); 64 print(error.toString());
@@ -56,15 +67,45 @@ class MessageDialogModel extends ChangeNotifier{ @@ -56,15 +67,45 @@ class MessageDialogModel extends ChangeNotifier{
56 messages=baseResp.data.map<Message>((value){ 67 messages=baseResp.data.map<Message>((value){
57 return Message.fromJson(value); 68 return Message.fromJson(value);
58 }).toList(); 69 }).toList();
59 - messages.removeWhere((message)=>message.message_type.toString()!="10"); 70 + messages.removeWhere((message){
  71 + if(message.message_type.toString()=="10"){
  72 + if(message.status=="4"){
  73 + return true;
  74 + }
  75 + return false;
  76 + }else if(message.message_type.toString()=="11"){
  77 + return false;
  78 + }
  79 + return true;
  80 + });
60 if(messages.isNotEmpty){ 81 if(messages.isNotEmpty){
61 - play();  
62 if(!showMessageDialog){ 82 if(!showMessageDialog){
63 DialogUtil.showMessageDialog(context); 83 DialogUtil.showMessageDialog(context);
64 }else{ 84 }else{
65 notifyListeners(); 85 notifyListeners();
66 } 86 }
  87 + if(messages.length>1){
  88 + play("-1");
  89 + }else{
  90 + for(Message message in messages){
  91 + play(message.message_type);
  92 + }
  93 + }
67 } 94 }
68 } 95 }
69 } 96 }
  97 +
  98 + //设置消息状态
  99 + setMessageStatus(BuildContext context, Map<String, String> params) async {
  100 + BaseResp<dynamic> baseResp = await DioUtil()
  101 + .request<dynamic>(context, Method.get, HttpUrl.set_message_status,
  102 + data: params, showLoading: false)
  103 + .catchError((error) {
  104 + print(error.toString());
  105 + });
  106 + if (baseResp.code == Constant.status_success) {
  107 + } else {
  108 + Utils.showToast(baseResp.msg);
  109 + }
  110 + }
70 } 111 }
@@ -5,6 +5,7 @@ import 'package:one_key/net/base_resp.dart'; @@ -5,6 +5,7 @@ import 'package:one_key/net/base_resp.dart';
5 import 'package:one_key/net/dio_util.dart'; 5 import 'package:one_key/net/dio_util.dart';
6 import 'package:one_key/net/http_url.dart'; 6 import 'package:one_key/net/http_url.dart';
7 import 'package:one_key/utils/log_util.dart'; 7 import 'package:one_key/utils/log_util.dart';
  8 +import 'package:one_key/utils/utils.dart';
8 9
9 10
10 class MessageModel extends ChangeNotifier{ 11 class MessageModel extends ChangeNotifier{
@@ -30,7 +31,17 @@ class MessageModel extends ChangeNotifier{ @@ -30,7 +31,17 @@ class MessageModel extends ChangeNotifier{
30 untreatedMsgs=baseResp.data.map<Message>((value){ 31 untreatedMsgs=baseResp.data.map<Message>((value){
31 return Message.fromJson(value); 32 return Message.fromJson(value);
32 }).toList(); 33 }).toList();
33 - untreatedMsgs.removeWhere((message)=>message.message_type.toString()!="10"); 34 + untreatedMsgs.removeWhere((message){
  35 + if(message.message_type.toString()=="10"){
  36 + if(message.status=="4"){
  37 + return true;
  38 + }
  39 + return false;
  40 + }else if(message.message_type.toString()=="11"){
  41 + return false;
  42 + }
  43 + return true;
  44 + });
34 notifyListeners(); 45 notifyListeners();
35 } 46 }
36 } 47 }
@@ -57,7 +68,12 @@ class MessageModel extends ChangeNotifier{ @@ -57,7 +68,12 @@ class MessageModel extends ChangeNotifier{
57 return Message.fromJson(value); 68 return Message.fromJson(value);
58 }).toList()); 69 }).toList());
59 } 70 }
60 - treatedMsgs.removeWhere((message)=>message.message_type.toString()!="10"); 71 + treatedMsgs.removeWhere((message){
  72 + if(message.message_type.toString()=="10"||message.message_type.toString()=="11"){
  73 + return false;
  74 + }
  75 + return true;
  76 + });
61 notifyListeners(); 77 notifyListeners();
62 } 78 }
63 } 79 }
@@ -2,7 +2,6 @@ import 'dart:convert'; @@ -2,7 +2,6 @@ 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:jpush_flutter/jpush_flutter.dart';  
6 import 'package:one_key/constant/constant.dart'; 5 import 'package:one_key/constant/constant.dart';
7 import 'package:one_key/models/user.dart'; 6 import 'package:one_key/models/user.dart';
8 import 'package:one_key/net/base_resp.dart'; 7 import 'package:one_key/net/base_resp.dart';
@@ -103,7 +102,6 @@ class UserModel with ChangeNotifier { @@ -103,7 +102,6 @@ class UserModel with ChangeNotifier {
103 user['night'] = daily['night']; 102 user['night'] = daily['night'];
104 _saveUserInfo(User.fromJson(user)); 103 _saveUserInfo(User.fromJson(user));
105 App.sp.setBool("isLogin", true); 104 App.sp.setBool("isLogin", true);
106 - new JPush().resumePush();  
107 NavigatorUtil.goHomePage(context); 105 NavigatorUtil.goHomePage(context);
108 return null; 106 return null;
109 } 107 }
@@ -214,7 +212,6 @@ class UserModel with ChangeNotifier { @@ -214,7 +212,6 @@ class UserModel with ChangeNotifier {
214 Utils.showToast(baseResp.msg ?? "退出登录失败,请稍后重试"); 212 Utils.showToast(baseResp.msg ?? "退出登录失败,请稍后重试");
215 } else { 213 } else {
216 App.sp.setBool("isLogin", false); 214 App.sp.setBool("isLogin", false);
217 - new JPush().stopPush();  
218 NavigatorUtil.goLoginPage(context); 215 NavigatorUtil.goLoginPage(context);
219 } 216 }
220 } 217 }
@@ -11,6 +11,7 @@ import 'package:one_key/pages/invicate/invitation_page.dart'; @@ -11,6 +11,7 @@ import 'package:one_key/pages/invicate/invitation_page.dart';
11 import 'package:one_key/pages/login/login_page.dart'; 11 import 'package:one_key/pages/login/login_page.dart';
12 import 'package:one_key/pages/detail/handle_online_page.dart'; 12 import 'package:one_key/pages/detail/handle_online_page.dart';
13 import 'package:one_key/pages/detail/notebook_detail_page.dart'; 13 import 'package:one_key/pages/detail/notebook_detail_page.dart';
  14 +import 'package:one_key/pages/login/web_page.dart';
14 import 'package:one_key/pages/sms/sms_page.dart'; 15 import 'package:one_key/pages/sms/sms_page.dart';
15 import 'package:one_key/pages/table/select_table_page.dart'; 16 import 'package:one_key/pages/table/select_table_page.dart';
16 import 'package:one_key/pages/webview/webview_page.dart'; 17 import 'package:one_key/pages/webview/webview_page.dart';
@@ -97,6 +98,14 @@ var handleWebviewHandler = new Handler( @@ -97,6 +98,14 @@ var handleWebviewHandler = new Handler(
97 return WebViewPage(); 98 return WebViewPage();
98 }); 99 });
99 100
  101 +// 协议
  102 +var webPageHandler = new Handler(
  103 + handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
  104 + String _title = params["title"].first;
  105 + String _url = params["url"].first;
  106 + return WebPage(title: _title, url: _url);
  107 + });
  108 +
100 // 跳转到变更预订 109 // 跳转到变更预订
101 var handleChangeDetailHandler = new Handler( 110 var handleChangeDetailHandler = new Handler(
102 handlerFunc: (BuildContext context, Map<String, List<Object>> params) { 111 handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
@@ -14,6 +14,7 @@ class Routes { @@ -14,6 +14,7 @@ class Routes {
14 static String invication="/invication";//邀请函 14 static String invication="/invication";//邀请函
15 static String sms="/sms";//发短信 15 static String sms="/sms";//发短信
16 static String webview="/webview";//网页 16 static String webview="/webview";//网页
  17 + static String web_page = '/web_page'; //隐私协议
17 static String change_detail="/change_detail";//变更预订 18 static String change_detail="/change_detail";//变更预订
18 19
19 20
@@ -31,6 +32,7 @@ class Routes { @@ -31,6 +32,7 @@ class Routes {
31 router.define(invication, handler: handleInvicationHandler); 32 router.define(invication, handler: handleInvicationHandler);
32 router.define(sms, handler: handleSmsHandler); 33 router.define(sms, handler: handleSmsHandler);
33 router.define(webview, handler: handleWebviewHandler); 34 router.define(webview, handler: handleWebviewHandler);
  35 + router.define(web_page, handler: webPageHandler);
34 router.define(change_detail, handler: handleChangeDetailHandler); 36 router.define(change_detail, handler: handleChangeDetailHandler);
35 } 37 }
36 } 38 }
@@ -21,7 +21,6 @@ class DialogUtil { @@ -21,7 +21,6 @@ class DialogUtil {
21 MessageDialogModel messageModel = 21 MessageDialogModel messageModel =
22 Provider.of<MessageDialogModel>(context, listen: false); 22 Provider.of<MessageDialogModel>(context, listen: false);
23 if (messageModel.messages.isEmpty) return null; 23 if (messageModel.messages.isEmpty) return null;
24 - messageModel.play();  
25 messageModel.showMessageDialog=true; 24 messageModel.showMessageDialog=true;
26 await showModalBottomSheet<int>( 25 await showModalBottomSheet<int>(
27 context: context, 26 context: context,
@@ -77,6 +77,17 @@ class NavigatorUtil { @@ -77,6 +77,17 @@ class NavigatorUtil {
77 _navigateTo(context, "${Routes.webview}"); 77 _navigateTo(context, "${Routes.webview}");
78 } 78 }
79 79
  80 +
  81 +
  82 + ///协议
  83 + static Future<dynamic> goWebPage(
  84 + BuildContext context, String title, String url) {
  85 + return _navigateTo(
  86 + context,
  87 + "${Routes.web_page}?title=${Uri.encodeComponent(title)}&url=$url",
  88 + );
  89 + }
  90 +
80 /// 变更预订 91 /// 变更预订
81 static void goNoteBookChangePage( 92 static void goNoteBookChangePage(
82 BuildContext context, NotebookDetail detailEntity, String rid, 93 BuildContext context, NotebookDetail detailEntity, String rid,
@@ -85,4 +96,12 @@ class NavigatorUtil { @@ -85,4 +96,12 @@ class NavigatorUtil {
85 "${Routes.change_detail}?detail=${FluroConvertUtils.object2string(detailEntity)}&rid=$rid", 96 "${Routes.change_detail}?detail=${FluroConvertUtils.object2string(detailEntity)}&rid=$rid",
86 replace: replace); 97 replace: replace);
87 } 98 }
  99 + // /// 变更预订
  100 + // static void goNoteBookChangePage(
  101 + // BuildContext context, NotebookDetail detailEntity, String rid,
  102 + // {replace = false}) {
  103 + // _navigateTo(context,
  104 + // "${Routes.change_detail}?detail=${FluroConvertUtils.object2string(detailEntity)}&rid=$rid",
  105 + // replace: replace);
  106 + // }
88 } 107 }
@@ -2,7 +2,6 @@ import 'dart:io'; @@ -2,7 +2,6 @@ import 'dart:io';
2 2
3 import 'package:connectivity/connectivity.dart'; 3 import 'package:connectivity/connectivity.dart';
4 import 'package:device_info/device_info.dart'; 4 import 'package:device_info/device_info.dart';
5 -import 'package:extended_image/extended_image.dart';  
6 import 'package:flutter/cupertino.dart'; 5 import 'package:flutter/cupertino.dart';
7 import 'package:flutter/material.dart'; 6 import 'package:flutter/material.dart';
8 import 'package:flutter_statusbarcolor/flutter_statusbarcolor.dart'; 7 import 'package:flutter_statusbarcolor/flutter_statusbarcolor.dart';
@@ -20,17 +19,6 @@ class Utils { @@ -20,17 +19,6 @@ class Utils {
20 Fluttertoast.showToast(msg: msg, gravity: ToastGravity.CENTER); 19 Fluttertoast.showToast(msg: msg, gravity: ToastGravity.CENTER);
21 } 20 }
22 21
23 - //显示网络图片  
24 - static Widget showNetImage(String url,  
25 - {double width, double height, BoxFit fit}) {  
26 - return Image(  
27 - image: ExtendedNetworkImageProvider(url, cache: true),  
28 - width: width,  
29 - height: height,  
30 - fit: fit,  
31 - );  
32 - }  
33 -  
34 //给数字前面加0 22 //给数字前面加0
35 static String addZeroNumber(int num) { 23 static String addZeroNumber(int num) {
36 return num < 10 ? "0" + num.toString() : num.toString(); 24 return num < 10 ? "0" + num.toString() : num.toString();
  1 +
  2 +import 'package:flutter/material.dart';
  3 +import 'package:flutter_screenutil/screenutil.dart';
  4 +import 'package:one_key/res/colors.dart';
  5 +
  6 +class SystemAppBar extends StatelessWidget implements PreferredSizeWidget {
  7 + final String title;
  8 + final String rightImgName;
  9 + final GestureTapCallback onTap;
  10 +
  11 + const SystemAppBar(this.title, {Key key, this.rightImgName, this.onTap})
  12 + : super(key: key);
  13 +
  14 + @override
  15 + Widget build(BuildContext context) {
  16 + return AppBar(
  17 + elevation: 0,
  18 + leading: InkWell(
  19 + onTap: () {
  20 + Navigator.of(context).pop();
  21 + },
  22 + child: Padding(
  23 + padding: EdgeInsets.symmetric(
  24 + horizontal: ScreenUtil().setWidth(40),
  25 + vertical: ScreenUtil().setWidth(15)),
  26 + child: Row(
  27 + children: <Widget>[
  28 + Image.asset(
  29 + "assets/icon_back.png",
  30 + width: ScreenUtil().setWidth(20),
  31 + height: ScreenUtil().setWidth(31),
  32 + )
  33 + ],
  34 + )),
  35 + ),
  36 + title: Text(
  37 + title,
  38 + style: TextStyle(
  39 + color: MyColours.color_353535,
  40 + fontSize: ScreenUtil().setSp(34),
  41 + decoration: TextDecoration.none),
  42 + ),
  43 + centerTitle: true, // 标题居中
  44 + );
  45 + }
  46 +
  47 + @override
  48 + // TODO: implement preferredSize
  49 + Size get preferredSize => new Size.fromHeight(50.0);
  50 +}
@@ -98,7 +98,7 @@ packages: @@ -98,7 +98,7 @@ packages:
98 name: cached_network_image 98 name: cached_network_image
99 url: "https://pub.flutter-io.cn" 99 url: "https://pub.flutter-io.cn"
100 source: hosted 100 source: hosted
101 - version: "2.3.1" 101 + version: "2.3.2+1"
102 characters: 102 characters:
103 dependency: transitive 103 dependency: transitive
104 description: 104 description:
@@ -253,20 +253,6 @@ packages: @@ -253,20 +253,6 @@ packages:
253 url: "https://pub.flutter-io.cn" 253 url: "https://pub.flutter-io.cn"
254 source: hosted 254 source: hosted
255 version: "1.0.17" 255 version: "1.0.17"
256 - extended_image:  
257 - dependency: "direct main"  
258 - description:  
259 - name: extended_image  
260 - url: "https://pub.flutter-io.cn"  
261 - source: hosted  
262 - version: "1.1.1"  
263 - extended_image_library:  
264 - dependency: transitive  
265 - description:  
266 - name: extended_image_library  
267 - url: "https://pub.flutter-io.cn"  
268 - source: hosted  
269 - version: "0.3.0"  
270 fake_async: 256 fake_async:
271 dependency: transitive 257 dependency: transitive
272 description: 258 description:
@@ -320,7 +306,7 @@ packages: @@ -320,7 +306,7 @@ packages:
320 name: flutter_cache_manager 306 name: flutter_cache_manager
321 url: "https://pub.flutter-io.cn" 307 url: "https://pub.flutter-io.cn"
322 source: hosted 308 source: hosted
323 - version: "1.4.1" 309 + version: "1.4.2"
324 flutter_easyrefresh: 310 flutter_easyrefresh:
325 dependency: "direct main" 311 dependency: "direct main"
326 description: 312 description:
@@ -415,13 +401,6 @@ packages: @@ -415,13 +401,6 @@ packages:
415 url: "https://pub.flutter-io.cn" 401 url: "https://pub.flutter-io.cn"
416 source: hosted 402 source: hosted
417 version: "0.12.2" 403 version: "0.12.2"
418 - http_client_helper:  
419 - dependency: transitive  
420 - description:  
421 - name: http_client_helper  
422 - url: "https://pub.flutter-io.cn"  
423 - source: hosted  
424 - version: "0.2.1"  
425 http_multi_server: 404 http_multi_server:
426 dependency: transitive 405 dependency: transitive
427 description: 406 description:
@@ -457,13 +436,6 @@ packages: @@ -457,13 +436,6 @@ packages:
457 url: "https://pub.flutter-io.cn" 436 url: "https://pub.flutter-io.cn"
458 source: hosted 437 source: hosted
459 version: "0.3.4" 438 version: "0.3.4"
460 - jpush_flutter:  
461 - dependency: "direct main"  
462 - description:  
463 - name: jpush_flutter  
464 - url: "https://pub.flutter-io.cn"  
465 - source: hosted  
466 - version: "0.5.3"  
467 js: 439 js:
468 dependency: transitive 440 dependency: transitive
469 description: 441 description:
@@ -554,7 +526,7 @@ packages: @@ -554,7 +526,7 @@ packages:
554 name: octo_image 526 name: octo_image
555 url: "https://pub.flutter-io.cn" 527 url: "https://pub.flutter-io.cn"
556 source: hosted 528 source: hosted
557 - version: "0.2.1" 529 + version: "0.3.0"
558 package_config: 530 package_config:
559 dependency: transitive 531 dependency: transitive
560 description: 532 description:
@@ -861,6 +833,15 @@ packages: @@ -861,6 +833,15 @@ packages:
861 url: "https://pub.flutter-io.cn" 833 url: "https://pub.flutter-io.cn"
862 source: hosted 834 source: hosted
863 version: "0.1.1+2" 835 version: "0.1.1+2"
  836 + tpns_flutter_plugin:
  837 + dependency: "direct main"
  838 + description:
  839 + path: "."
  840 + ref: "V1.0.4"
  841 + resolved-ref: "56e4733d7801418fa429087ca4227197b27e7c66"
  842 + url: "https://git.code.tencent.com/tpns/XG-Flutter-Plugin.git"
  843 + source: git
  844 + version: "1.0.4"
864 typed_data: 845 typed_data:
865 dependency: transitive 846 dependency: transitive
866 description: 847 description:
@@ -874,7 +855,7 @@ packages: @@ -874,7 +855,7 @@ packages:
874 name: url_launcher 855 name: url_launcher
875 url: "https://pub.flutter-io.cn" 856 url: "https://pub.flutter-io.cn"
876 source: hosted 857 source: hosted
877 - version: "5.5.3" 858 + version: "5.6.0"
878 url_launcher_linux: 859 url_launcher_linux:
879 dependency: transitive 860 dependency: transitive
880 description: 861 description:
@@ -903,6 +884,13 @@ packages: @@ -903,6 +884,13 @@ packages:
903 url: "https://pub.flutter-io.cn" 884 url: "https://pub.flutter-io.cn"
904 source: hosted 885 source: hosted
905 version: "0.1.3+2" 886 version: "0.1.3+2"
  887 + url_launcher_windows:
  888 + dependency: transitive
  889 + description:
  890 + name: url_launcher_windows
  891 + url: "https://pub.flutter-io.cn"
  892 + source: hosted
  893 + version: "0.0.1+1"
906 uuid: 894 uuid:
907 dependency: transitive 895 dependency: transitive
908 description: 896 description:
@@ -953,5 +941,5 @@ packages: @@ -953,5 +941,5 @@ packages:
953 source: hosted 941 source: hosted
954 version: "2.2.1" 942 version: "2.2.1"
955 sdks: 943 sdks:
956 - dart: ">=2.9.0-14.0.dev <3.0.0" 944 + dart: ">=2.9.0 <3.0.0"
957 flutter: ">=1.20.0 <2.0.0" 945 flutter: ">=1.20.0 <2.0.0"
@@ -41,8 +41,8 @@ dependencies: @@ -41,8 +41,8 @@ dependencies:
41 permission_handler: ^4.4.0 41 permission_handler: ^4.4.0
42 # 文件系统访问 42 # 文件系统访问
43 path_provider: ^1.6.5 43 path_provider: ^1.6.5
44 -# 官方image组件扩展,支持多种图片效果展示  
45 - extended_image: ^1.1.1 44 +## 官方image组件扩展,支持多种图片效果展示
  45 +# extended_image: ^1.1.1
46 # 任意位置访问navigator 46 # 任意位置访问navigator
47 get_it: ^3.0.1 47 get_it: ^3.0.1
48 # 刷新加载 48 # 刷新加载
@@ -53,8 +53,6 @@ dependencies: @@ -53,8 +53,6 @@ dependencies:
53 web_socket_channel: ^1.1.0 53 web_socket_channel: ^1.1.0
54 # sqlite数据库 54 # sqlite数据库
55 sqflite: ^1.2.2+1 55 sqflite: ^1.2.2+1
56 -# 极光推送  
57 - jpush_flutter: 0.5.3  
58 # Bugly 56 # Bugly
59 flutter_bugly: ^0.2.8 57 flutter_bugly: ^0.2.8
60 # 设置状态栏颜色 58 # 设置状态栏颜色
@@ -72,7 +70,10 @@ dependencies: @@ -72,7 +70,10 @@ dependencies:
72 # 网络状态 70 # 网络状态
73 connectivity: ^0.4.8 71 connectivity: ^0.4.8
74 # 信鸽推送 72 # 信鸽推送
75 -# fake_push: ^0.5.4 73 + tpns_flutter_plugin:
  74 + git:
  75 + url: https://git.code.tencent.com/tpns/XG-Flutter-Plugin.git
  76 + ref: V1.0.4
76 # 安装apk 77 # 安装apk
77 install_plugin: ^2.0.1 78 install_plugin: ^2.0.1
78 # 获取应用版本信息 79 # 获取应用版本信息
@@ -110,7 +111,7 @@ flutter: @@ -110,7 +111,7 @@ flutter:
110 # To add assets to your application, add an assets section, like this: 111 # To add assets to your application, add an assets section, like this:
111 assets: 112 assets:
112 - assets/ 113 - assets/
113 - # - assets/tts_online.mp3 114 + - assets/tts_online.mp3
114 # - assets/icon_sellercode.png 115 # - assets/icon_sellercode.png
115 # - assets/icon_account.png 116 # - assets/icon_account.png
116 # - assets/icon_pwd.png 117 # - assets/icon_pwd.png
@@ -148,6 +149,48 @@ flutter: @@ -148,6 +149,48 @@ flutter:
148 # - assets/my_logo.png 149 # - assets/my_logo.png
149 # - assets/arr_right_gray.png 150 # - assets/arr_right_gray.png
150 # - assets/bg_error.png 151 # - assets/bg_error.png
  152 + - assets/tts_online.mp3
  153 + - assets/tts_cancel.mp3
  154 + - assets/tts_all.mp3
  155 + - assets/icon_sellercode.png
  156 + - assets/icon_account.png
  157 + - assets/icon_pwd.png
  158 + - assets/icon_pwd_show.png
  159 + - assets/icon_pwd_hide.png
  160 + - assets/icon_pwd_hide.png
  161 + - assets/message_default.png
  162 + - assets/message_selected.png
  163 + - assets/notebook_default.png
  164 + - assets/notebook_selected.png
  165 + - assets/my_default.png
  166 + - assets/my_selected.png
  167 + - assets/icon_close.png
  168 + - assets/logo.png
  169 + - assets/icon_back.png
  170 + - assets/icon_selected.png
  171 + - assets/statu_booked.png
  172 + - assets/statu_canceled.png
  173 + - assets/statu_eating.png
  174 + - assets/statu_finished.png
  175 + - assets/statu_reached.png
  176 + - assets/statu_refuse.png
  177 + - assets/status_undeal.png
  178 + - assets/icon_wechat.png
  179 + - assets/icon_sms.png
  180 + - assets/icon_phone.png
  181 + - assets/bg_invication.png
  182 + - assets/invication_line_left.png
  183 + - assets/invication_line_right.png
  184 + - assets/img_ydap.png
  185 + - assets/invication_map.png
  186 + - assets/invication_arrow_right.png
  187 + - assets/invication_back.png
  188 + - assets/icon_exist.png
  189 + - assets/my_logo.png
  190 + - assets/arr_right_gray.png
  191 + - assets/bg_error.png
  192 + - assets/mine_radio_nor.png
  193 + - assets/mine_radio_sel.png
151 194
152 # assets: 195 # assets:
153 # - images/a_dot_burr.jpeg 196 # - images/a_dot_burr.jpeg