Merge branch 'master' of https://gitee.com/starlock-cn/app-starlock
This commit is contained in:
commit
57868a401c
@ -1,77 +0,0 @@
|
|||||||
{
|
|
||||||
"errorCode": 0,
|
|
||||||
"description": "success",
|
|
||||||
"errorMsg": "success",
|
|
||||||
"data": {
|
|
||||||
"list": [{
|
|
||||||
"recordId": 42672,
|
|
||||||
"lockId": 1744,
|
|
||||||
"lockAlias": "T9A_d7d74b2f66b8",
|
|
||||||
"recordType": 130,
|
|
||||||
"recordTypeName": "防拆报警",
|
|
||||||
"username": "",
|
|
||||||
"operateDate": 1705852800000,
|
|
||||||
"imagesUrl": null,
|
|
||||||
"videoUrl": null,
|
|
||||||
"headUrl": "",
|
|
||||||
"userid": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"recordId": 42660,
|
|
||||||
"lockId": 1744,
|
|
||||||
"lockAlias": "T9A_d7d74b2f66b8",
|
|
||||||
"recordType": 220,
|
|
||||||
"recordTypeName": "逗留检测",
|
|
||||||
"username": "",
|
|
||||||
"operateDate": 1706494730335,
|
|
||||||
"imagesUrl": "http:\/\/oss-pre-starlock.star-lock.cn\/starchart\/T9A_d7d74b2f66b8-1706494718\/54c5044a-93bd-466d-a123-e1face292841.jpg",
|
|
||||||
"videoUrl": "http:\/\/oss-pre-starlock.star-lock.cn\/starchart\/T9A_d7d74b2f66b8-1706494718\/08a2b732-536b-4f06-9d20-778fdf94f137.mp4",
|
|
||||||
"headUrl": "",
|
|
||||||
"userid": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"recordId": 42659,
|
|
||||||
"lockId": 1744,
|
|
||||||
"lockAlias": "T9A_d7d74b2f66b8",
|
|
||||||
"recordType": 220,
|
|
||||||
"recordTypeName": "逗留检测",
|
|
||||||
"username": "",
|
|
||||||
"operateDate": 1706494672036,
|
|
||||||
"imagesUrl": "http:\/\/oss-pre-starlock.star-lock.cn\/starchart\/T9A_d7d74b2f66b8-1706494660\/d85dcea0-c402-4f68-8664-5641a0feabe3.jpg",
|
|
||||||
"videoUrl": "http:\/\/oss-pre-starlock.star-lock.cn\/starchart\/T9A_d7d74b2f66b8-1706494660\/f3de0384-63f8-4177-9611-d8c43707afce.mp4",
|
|
||||||
"headUrl": "",
|
|
||||||
"userid": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"recordId": 42658,
|
|
||||||
"lockId": 1744,
|
|
||||||
"lockAlias": "T9A_d7d74b2f66b8",
|
|
||||||
"recordType": 130,
|
|
||||||
"recordTypeName": "防拆报警",
|
|
||||||
"username": "",
|
|
||||||
"operateDate": 1706493793884,
|
|
||||||
"imagesUrl": "http:\/\/oss-pre-starlock.star-lock.cn\/starchart\/T9A_d7d74b2f66b8-1706493778\/f43ec840-ddaa-4d94-b759-7ae4384edd8f.jpg",
|
|
||||||
"videoUrl": "http:\/\/oss-pre-starlock.star-lock.cn\/starchart\/T9A_d7d74b2f66b8-1706493778\/b4a90c5c-d86f-4995-8365-d7e21a67a48d.mp4",
|
|
||||||
"headUrl": "",
|
|
||||||
"userid": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"recordId": 42657,
|
|
||||||
"lockId": 1744,
|
|
||||||
"lockAlias": "T9A_d7d74b2f66b8",
|
|
||||||
"recordType": 130,
|
|
||||||
"recordTypeName": "防拆报警",
|
|
||||||
"username": "",
|
|
||||||
"operateDate": 1706493715812,
|
|
||||||
"imagesUrl": "http:\/\/oss-pre-starlock.star-lock.cn\/starchart\/T9A_d7d74b2f66b8-1706493702\/928c2b1d-1cd4-4d7f-9e61-e9315f8c4547.jpg",
|
|
||||||
"videoUrl": "http:\/\/oss-pre-starlock.star-lock.cn\/starchart\/T9A_d7d74b2f66b8-1706493702\/29e8b8e4-cd79-436d-a384-3e50dacf5cc8.mp4",
|
|
||||||
"headUrl": "",
|
|
||||||
"userid": ""
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"pageNo": 1,
|
|
||||||
"pageSize": 5,
|
|
||||||
"pages": 4,
|
|
||||||
"total": 18
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -95,7 +95,7 @@ flavors:
|
|||||||
bundleId: "com.skychip.lock"
|
bundleId: "com.skychip.lock"
|
||||||
xhj:
|
xhj:
|
||||||
app:
|
app:
|
||||||
name: "鑫锁"
|
name: "星星锁"
|
||||||
icon: "assets/icon/xhj.png"
|
icon: "assets/icon/xhj.png"
|
||||||
android:
|
android:
|
||||||
applicationId: "com.xhjcn.lock"
|
applicationId: "com.xhjcn.lock"
|
||||||
|
|||||||
@ -682,5 +682,8 @@
|
|||||||
"权限被拒绝": "Permission denied",
|
"权限被拒绝": "Permission denied",
|
||||||
"请手动在系统设置中开启": "Please manually enable it in the system settings",
|
"请手动在系统设置中开启": "Please manually enable it in the system settings",
|
||||||
"权限以继续使用应用": "Permission to continue using the application.",
|
"权限以继续使用应用": "Permission to continue using the application.",
|
||||||
"去设置": "Go set it up"
|
"去设置": "Go set it up",
|
||||||
|
|
||||||
|
"虹膜":"iris",
|
||||||
|
"手掌":"palm"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -681,5 +681,8 @@
|
|||||||
"权限被拒绝": "权限被拒绝",
|
"权限被拒绝": "权限被拒绝",
|
||||||
"请手动在系统设置中开启": "请手动在系统设置中开启",
|
"请手动在系统设置中开启": "请手动在系统设置中开启",
|
||||||
"权限以继续使用应用": "权限以继续使用应用。",
|
"权限以继续使用应用": "权限以继续使用应用。",
|
||||||
"去设置": "去设置"
|
"去设置": "去设置",
|
||||||
|
|
||||||
|
"虹膜":"虹膜",
|
||||||
|
"手掌":"手掌"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -683,5 +683,8 @@
|
|||||||
"权限被拒绝": "权限被拒绝",
|
"权限被拒绝": "权限被拒绝",
|
||||||
"请手动在系统设置中开启": "请手动在系统设置中开启",
|
"请手动在系统设置中开启": "请手动在系统设置中开启",
|
||||||
"权限以继续使用应用": "权限以继续使用应用。",
|
"权限以继续使用应用": "权限以继续使用应用。",
|
||||||
"去设置": "去设置"
|
"去设置": "去设置",
|
||||||
|
|
||||||
|
"虹膜":"虹膜",
|
||||||
|
"手掌":"手掌"
|
||||||
}
|
}
|
||||||
|
|||||||
298
star_lock/ios/Podfile.lock
Normal file
298
star_lock/ios/Podfile.lock
Normal file
@ -0,0 +1,298 @@
|
|||||||
|
PODS:
|
||||||
|
- aj_captcha_flutter (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- AlicloudPush (1.9.9.8):
|
||||||
|
- AlicloudSender
|
||||||
|
- AlicloudUT
|
||||||
|
- AlicloudUtils
|
||||||
|
- AlicloudSender (1.0.0.3):
|
||||||
|
- AlicloudUTDID
|
||||||
|
- EMASRest
|
||||||
|
- AlicloudUT (5.2.0.16):
|
||||||
|
- AlicloudUTDID
|
||||||
|
- AlicloudUTDID (1.5.0.94)
|
||||||
|
- AlicloudUtils (1.4.1):
|
||||||
|
- AlicloudUTDID
|
||||||
|
- AMap3DMap (9.7.0):
|
||||||
|
- AMapFoundation (>= 1.8.0)
|
||||||
|
- amap_flutter_location (0.0.1):
|
||||||
|
- AMapLocation
|
||||||
|
- Flutter
|
||||||
|
- amap_flutter_map (0.0.1):
|
||||||
|
- AMap3DMap
|
||||||
|
- Flutter
|
||||||
|
- AMapFoundation (1.8.2)
|
||||||
|
- AMapLocation (2.10.0):
|
||||||
|
- AMapFoundation (>= 1.8.0)
|
||||||
|
- app_settings (5.1.1):
|
||||||
|
- Flutter
|
||||||
|
- audio_service (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- audio_session (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- audioplayers_darwin (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- auto_orientation (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- camera_avfoundation (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- connectivity_plus (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- ReachabilitySwift
|
||||||
|
- device_info_plus (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- EMASRest (11.1.1.2)
|
||||||
|
- Flutter (1.0.0)
|
||||||
|
- flutter_blue_plus (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- flutter_local_notifications (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- flutter_native_contact_picker (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- flutter_pcm_sound (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- flutter_voice_processor (1.1.1):
|
||||||
|
- Flutter
|
||||||
|
- ios-voice-processor (~> 1.1.0)
|
||||||
|
- fluttertoast (0.0.2):
|
||||||
|
- Flutter
|
||||||
|
- Toast
|
||||||
|
- fluwx (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- fluwx/pay (= 0.0.1)
|
||||||
|
- fluwx/pay (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- WechatOpenSDK-XCFramework (~> 2.0.4)
|
||||||
|
- google_maps_flutter_ios (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- GoogleMaps (< 9.0)
|
||||||
|
- GoogleMaps (6.2.1):
|
||||||
|
- GoogleMaps/Maps (= 6.2.1)
|
||||||
|
- GoogleMaps/Base (6.2.1)
|
||||||
|
- GoogleMaps/Maps (6.2.1):
|
||||||
|
- GoogleMaps/Base
|
||||||
|
- image_gallery_saver (2.0.2):
|
||||||
|
- Flutter
|
||||||
|
- image_picker_ios (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- ios-voice-processor (1.1.0)
|
||||||
|
- JCore (4.4.0)
|
||||||
|
- JPush (5.2.0):
|
||||||
|
- JCore (>= 2.0.0)
|
||||||
|
- jpush_flutter (0.0.2):
|
||||||
|
- Flutter
|
||||||
|
- JCore (= 4.4.0)
|
||||||
|
- JPush (= 5.2.0)
|
||||||
|
- just_audio (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- network_info_plus (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- package_info_plus (0.4.5):
|
||||||
|
- Flutter
|
||||||
|
- path_provider_foundation (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- FlutterMacOS
|
||||||
|
- permission_handler_apple (9.3.0):
|
||||||
|
- Flutter
|
||||||
|
- ReachabilitySwift (5.0.0)
|
||||||
|
- shared_preferences_foundation (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- FlutterMacOS
|
||||||
|
- sqflite (0.0.3):
|
||||||
|
- Flutter
|
||||||
|
- FlutterMacOS
|
||||||
|
- system_settings (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- Toast (4.0.0)
|
||||||
|
- url_launcher_ios (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- video_player_avfoundation (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- FlutterMacOS
|
||||||
|
- webview_flutter_wkwebview (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- WechatOpenSDK-XCFramework (2.0.4)
|
||||||
|
|
||||||
|
DEPENDENCIES:
|
||||||
|
- aj_captcha_flutter (from `.symlinks/plugins/aj_captcha_flutter/ios`)
|
||||||
|
- AlicloudPush (~> 1.9.9)
|
||||||
|
- amap_flutter_location (from `.symlinks/plugins/amap_flutter_location/ios`)
|
||||||
|
- amap_flutter_map (from `.symlinks/plugins/amap_flutter_map/ios`)
|
||||||
|
- app_settings (from `.symlinks/plugins/app_settings/ios`)
|
||||||
|
- audio_service (from `.symlinks/plugins/audio_service/ios`)
|
||||||
|
- audio_session (from `.symlinks/plugins/audio_session/ios`)
|
||||||
|
- audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/ios`)
|
||||||
|
- auto_orientation (from `.symlinks/plugins/auto_orientation/ios`)
|
||||||
|
- camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`)
|
||||||
|
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
|
||||||
|
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
||||||
|
- Flutter (from `Flutter`)
|
||||||
|
- flutter_blue_plus (from `.symlinks/plugins/flutter_blue_plus/ios`)
|
||||||
|
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
|
||||||
|
- flutter_native_contact_picker (from `.symlinks/plugins/flutter_native_contact_picker/ios`)
|
||||||
|
- flutter_pcm_sound (from `.symlinks/plugins/flutter_pcm_sound/ios`)
|
||||||
|
- flutter_voice_processor (from `.symlinks/plugins/flutter_voice_processor/ios`)
|
||||||
|
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
|
||||||
|
- fluwx (from `.symlinks/plugins/fluwx/ios`)
|
||||||
|
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
|
||||||
|
- image_gallery_saver (from `.symlinks/plugins/image_gallery_saver/ios`)
|
||||||
|
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
|
||||||
|
- JPush
|
||||||
|
- jpush_flutter (from `.symlinks/plugins/jpush_flutter/ios`)
|
||||||
|
- just_audio (from `.symlinks/plugins/just_audio/ios`)
|
||||||
|
- network_info_plus (from `.symlinks/plugins/network_info_plus/ios`)
|
||||||
|
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
||||||
|
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
||||||
|
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
|
||||||
|
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
|
||||||
|
- sqflite (from `.symlinks/plugins/sqflite/darwin`)
|
||||||
|
- system_settings (from `.symlinks/plugins/system_settings/ios`)
|
||||||
|
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
||||||
|
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
|
||||||
|
- webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)
|
||||||
|
|
||||||
|
SPEC REPOS:
|
||||||
|
https://github.com/aliyun/aliyun-specs.git:
|
||||||
|
- AlicloudPush
|
||||||
|
- AlicloudSender
|
||||||
|
- AlicloudUT
|
||||||
|
- AlicloudUTDID
|
||||||
|
- AlicloudUtils
|
||||||
|
- EMASRest
|
||||||
|
https://github.com/CocoaPods/Specs.git:
|
||||||
|
- AMap3DMap
|
||||||
|
- AMapFoundation
|
||||||
|
- AMapLocation
|
||||||
|
- GoogleMaps
|
||||||
|
- ios-voice-processor
|
||||||
|
- JCore
|
||||||
|
- JPush
|
||||||
|
- ReachabilitySwift
|
||||||
|
- Toast
|
||||||
|
- WechatOpenSDK-XCFramework
|
||||||
|
|
||||||
|
EXTERNAL SOURCES:
|
||||||
|
aj_captcha_flutter:
|
||||||
|
:path: ".symlinks/plugins/aj_captcha_flutter/ios"
|
||||||
|
amap_flutter_location:
|
||||||
|
:path: ".symlinks/plugins/amap_flutter_location/ios"
|
||||||
|
amap_flutter_map:
|
||||||
|
:path: ".symlinks/plugins/amap_flutter_map/ios"
|
||||||
|
app_settings:
|
||||||
|
:path: ".symlinks/plugins/app_settings/ios"
|
||||||
|
audio_service:
|
||||||
|
:path: ".symlinks/plugins/audio_service/ios"
|
||||||
|
audio_session:
|
||||||
|
:path: ".symlinks/plugins/audio_session/ios"
|
||||||
|
audioplayers_darwin:
|
||||||
|
:path: ".symlinks/plugins/audioplayers_darwin/ios"
|
||||||
|
auto_orientation:
|
||||||
|
:path: ".symlinks/plugins/auto_orientation/ios"
|
||||||
|
camera_avfoundation:
|
||||||
|
:path: ".symlinks/plugins/camera_avfoundation/ios"
|
||||||
|
connectivity_plus:
|
||||||
|
:path: ".symlinks/plugins/connectivity_plus/ios"
|
||||||
|
device_info_plus:
|
||||||
|
:path: ".symlinks/plugins/device_info_plus/ios"
|
||||||
|
Flutter:
|
||||||
|
:path: Flutter
|
||||||
|
flutter_blue_plus:
|
||||||
|
:path: ".symlinks/plugins/flutter_blue_plus/ios"
|
||||||
|
flutter_local_notifications:
|
||||||
|
:path: ".symlinks/plugins/flutter_local_notifications/ios"
|
||||||
|
flutter_native_contact_picker:
|
||||||
|
:path: ".symlinks/plugins/flutter_native_contact_picker/ios"
|
||||||
|
flutter_pcm_sound:
|
||||||
|
:path: ".symlinks/plugins/flutter_pcm_sound/ios"
|
||||||
|
flutter_voice_processor:
|
||||||
|
:path: ".symlinks/plugins/flutter_voice_processor/ios"
|
||||||
|
fluttertoast:
|
||||||
|
:path: ".symlinks/plugins/fluttertoast/ios"
|
||||||
|
fluwx:
|
||||||
|
:path: ".symlinks/plugins/fluwx/ios"
|
||||||
|
google_maps_flutter_ios:
|
||||||
|
:path: ".symlinks/plugins/google_maps_flutter_ios/ios"
|
||||||
|
image_gallery_saver:
|
||||||
|
:path: ".symlinks/plugins/image_gallery_saver/ios"
|
||||||
|
image_picker_ios:
|
||||||
|
:path: ".symlinks/plugins/image_picker_ios/ios"
|
||||||
|
jpush_flutter:
|
||||||
|
:path: ".symlinks/plugins/jpush_flutter/ios"
|
||||||
|
just_audio:
|
||||||
|
:path: ".symlinks/plugins/just_audio/ios"
|
||||||
|
network_info_plus:
|
||||||
|
:path: ".symlinks/plugins/network_info_plus/ios"
|
||||||
|
package_info_plus:
|
||||||
|
:path: ".symlinks/plugins/package_info_plus/ios"
|
||||||
|
path_provider_foundation:
|
||||||
|
:path: ".symlinks/plugins/path_provider_foundation/darwin"
|
||||||
|
permission_handler_apple:
|
||||||
|
:path: ".symlinks/plugins/permission_handler_apple/ios"
|
||||||
|
shared_preferences_foundation:
|
||||||
|
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
|
||||||
|
sqflite:
|
||||||
|
:path: ".symlinks/plugins/sqflite/darwin"
|
||||||
|
system_settings:
|
||||||
|
:path: ".symlinks/plugins/system_settings/ios"
|
||||||
|
url_launcher_ios:
|
||||||
|
:path: ".symlinks/plugins/url_launcher_ios/ios"
|
||||||
|
video_player_avfoundation:
|
||||||
|
:path: ".symlinks/plugins/video_player_avfoundation/darwin"
|
||||||
|
webview_flutter_wkwebview:
|
||||||
|
:path: ".symlinks/plugins/webview_flutter_wkwebview/ios"
|
||||||
|
|
||||||
|
SPEC CHECKSUMS:
|
||||||
|
aj_captcha_flutter: dd7af1aa064bdd621ae335b819bab07309c3c023
|
||||||
|
AlicloudPush: 88529c9b796e4ece0601de0867b30359f55b61f7
|
||||||
|
AlicloudSender: 1f468b6bd962a099ffc19d45e3608b0fe98f259d
|
||||||
|
AlicloudUT: 6d1cf30d57d096b7e9bb4b069dd0ba6ad59a3338
|
||||||
|
AlicloudUTDID: 7323c443dcdf9a73e2224dc6ce51703671d7a765
|
||||||
|
AlicloudUtils: 873a76615bebcee8b1996f20820d366e433c3eab
|
||||||
|
AMap3DMap: dce25dd3e51e6b92109caa7d0c97fc6055830fb3
|
||||||
|
amap_flutter_location: 44ff5beb64f42e0bf5feb402fe299dac0013af6f
|
||||||
|
amap_flutter_map: 979e54d227cedac6c7504a2151bfbf3bcf96760a
|
||||||
|
AMapFoundation: 9885c48fc3a78fdfb84a0299a2293e56ea3c9fec
|
||||||
|
AMapLocation: 5248aec2455ebb5d104b367813c946430a2ee033
|
||||||
|
app_settings: 017320c6a680cdc94c799949d95b84cb69389ebc
|
||||||
|
audio_service: f509d65da41b9521a61f1c404dd58651f265a567
|
||||||
|
audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207
|
||||||
|
audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40
|
||||||
|
auto_orientation: 102ed811a5938d52c86520ddd7ecd3a126b5d39d
|
||||||
|
camera_avfoundation: 8b8d780bcfb6a4a02b0fbe2b4bd17b5b71946e68
|
||||||
|
connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d
|
||||||
|
device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
|
||||||
|
EMASRest: 8df6f87836767a9415ad5cc4af739bc9d215b475
|
||||||
|
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
|
||||||
|
flutter_blue_plus: 4837da7d00cf5d441fdd6635b3a57f936778ea96
|
||||||
|
flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
|
||||||
|
flutter_native_contact_picker: bd430ba0fbf82768bb50c2c52a69a65759a8f907
|
||||||
|
flutter_pcm_sound: de0572ca4f99091cc2abfcc31601b8a4ddd33c0e
|
||||||
|
flutter_voice_processor: 2b89b93d69b02227ae3fd58589ee0bcfa3ca2a82
|
||||||
|
fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265
|
||||||
|
fluwx: daa284756ce53442b3d0417ceeda66e981906811
|
||||||
|
google_maps_flutter_ios: d1318b4ff711612cab16862d7a87e31a7403d458
|
||||||
|
GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4
|
||||||
|
image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb
|
||||||
|
image_picker_ios: 99dfe1854b4fa34d0364e74a78448a0151025425
|
||||||
|
ios-voice-processor: 8e32d7f980a06d392d128ef1cd19cf6ddcaca3c1
|
||||||
|
JCore: 05f0f3489672ea3fa55338bae4866224bc092b1f
|
||||||
|
JPush: 76668b765fcfd7c15f86b05ca0e5cdc01945ce23
|
||||||
|
jpush_flutter: 1f436f1a02db5c5ef9e9b42378f557096ccd328b
|
||||||
|
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
|
||||||
|
network_info_plus: 6d0c3eb8367b8164fa3fb0c19875e3f59d49697f
|
||||||
|
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
|
||||||
|
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
|
||||||
|
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
|
||||||
|
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
|
||||||
|
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
|
||||||
|
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
|
||||||
|
system_settings: 8f5cdbfa72c677fc8d665b863bcc20d393d87e9d
|
||||||
|
Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
|
||||||
|
url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812
|
||||||
|
video_player_avfoundation: 02011213dab73ae3687df27ce441fbbcc82b5579
|
||||||
|
webview_flutter_wkwebview: 4f3e50f7273d31e5500066ed267e3ae4309c5ae4
|
||||||
|
WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f
|
||||||
|
|
||||||
|
PODFILE CHECKSUM: 317f9473a5705c6fe4d79d95e81676f248048fdc
|
||||||
|
|
||||||
|
COCOAPODS: 1.14.3
|
||||||
@ -1,5 +1,6 @@
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/common/safetyVerification/safetyVerification_binding.dart';
|
import 'package:star_lock/common/safetyVerification/safetyVerification_binding.dart';
|
||||||
|
import 'package:star_lock/flavors.dart';
|
||||||
import 'package:star_lock/login/register/starLock_register_binding.dart';
|
import 'package:star_lock/login/register/starLock_register_binding.dart';
|
||||||
import 'package:star_lock/main/accessoriesList/accessoriesList_page.dart';
|
import 'package:star_lock/main/accessoriesList/accessoriesList_page.dart';
|
||||||
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_page.dart';
|
import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_page.dart';
|
||||||
@ -29,6 +30,7 @@ import 'package:star_lock/main/lockDetail/palm/addPalm/addPalm_page.dart';
|
|||||||
import 'package:star_lock/main/lockDetail/palm/addPalmType/addPalmTypeManage/addPalmTypeManage_page.dart';
|
import 'package:star_lock/main/lockDetail/palm/addPalmType/addPalmTypeManage/addPalmTypeManage_page.dart';
|
||||||
import 'package:star_lock/main/lockDetail/palm/palmList/palmList_page.dart';
|
import 'package:star_lock/main/lockDetail/palm/palmList/palmList_page.dart';
|
||||||
import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyDetailChangeDate/passwordKeyDetailChangeDate_page.dart';
|
import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyDetailChangeDate/passwordKeyDetailChangeDate_page.dart';
|
||||||
|
import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart';
|
||||||
import 'package:star_lock/mine/about/webviewShow_page.dart';
|
import 'package:star_lock/mine/about/webviewShow_page.dart';
|
||||||
import 'package:star_lock/mine/mine/safeVerify/safeVerify_page.dart';
|
import 'package:star_lock/mine/mine/safeVerify/safeVerify_page.dart';
|
||||||
import 'package:star_lock/mine/minePersonInfo/minePersonInfoEmail/mineBindPhoneOrEmail_page.dart';
|
import 'package:star_lock/mine/minePersonInfo/minePersonInfoEmail/mineBindPhoneOrEmail_page.dart';
|
||||||
@ -453,7 +455,9 @@ abstract class AppRouters {
|
|||||||
),
|
),
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.starLockMain,
|
name: Routers.starLockMain,
|
||||||
page: () => const StarLockMainPage(),
|
page: () => F.sw(
|
||||||
|
defaultCall: () => StarLockMainPage(),
|
||||||
|
xhjCall: () => const StarLockMainXHJPage()),
|
||||||
),
|
),
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.starLockMinePage,
|
name: Routers.starLockMinePage,
|
||||||
@ -465,7 +469,7 @@ abstract class AppRouters {
|
|||||||
),
|
),
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.lockMallPage,
|
name: Routers.lockMallPage,
|
||||||
page: () => const LockMallPage(),
|
page: () => LockMallPage(),
|
||||||
),
|
),
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.addLockPage,
|
name: Routers.addLockPage,
|
||||||
@ -729,7 +733,7 @@ abstract class AppRouters {
|
|||||||
),
|
),
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.minePersonInfoPage,
|
name: Routers.minePersonInfoPage,
|
||||||
page: () => const MinePersonInfoPage(),
|
page: () => MinePersonInfoPage(),
|
||||||
),
|
),
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.minePersonInfoEditNamePage,
|
name: Routers.minePersonInfoEditNamePage,
|
||||||
@ -761,7 +765,7 @@ abstract class AppRouters {
|
|||||||
),
|
),
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.messageListPage,
|
name: Routers.messageListPage,
|
||||||
page: () => const MessageListPage(),
|
page: () => MessageListPage(),
|
||||||
),
|
),
|
||||||
GetPage(
|
GetPage(
|
||||||
name: Routers.supportStaffPage,
|
name: Routers.supportStaffPage,
|
||||||
|
|||||||
@ -1,10 +1,15 @@
|
|||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:fluwx/fluwx.dart';
|
||||||
|
import 'package:star_lock/flavors.dart';
|
||||||
|
|
||||||
class AppColors {
|
class AppColors {
|
||||||
// static Color mainColor = const Color(0xFF385DEA);
|
// static Color mainColor = const Color(0xFF385DEA);
|
||||||
static Color mainColor = const Color(0xFF4777EE);
|
static Color get mainColor => F.sw(
|
||||||
|
defaultCall: () => const Color(0xFF4777EE),
|
||||||
|
xhjCall: () => const Color(0xFF68c1b9));
|
||||||
|
|
||||||
static Color mainBackgroundColor = const Color(0xFFF5F5F5);
|
static Color mainBackgroundColor = const Color(0xFFF5F5F5);
|
||||||
|
|
||||||
static Color primaryTopColor = const Color(0xFF021B38);
|
static Color primaryTopColor = const Color(0xFF021B38);
|
||||||
@ -25,6 +30,7 @@ class AppColors {
|
|||||||
|
|
||||||
//check box color
|
//check box color
|
||||||
static Color checkBoxSelectedColor = touristColor;
|
static Color checkBoxSelectedColor = touristColor;
|
||||||
|
|
||||||
static Color get checkBoxUnselectedColor => const Color(0xFFFFFFFF);
|
static Color get checkBoxUnselectedColor => const Color(0xFFFFFFFF);
|
||||||
static Color checkBoxOverlayColor = checkBoxUnselectedColor.withOpacity(0.3);
|
static Color checkBoxOverlayColor = checkBoxUnselectedColor.withOpacity(0.3);
|
||||||
|
|
||||||
@ -69,6 +75,7 @@ class AppColors {
|
|||||||
static Color wifiDisableColor = const Color(0xFFA8A8A8);
|
static Color wifiDisableColor = const Color(0xFFA8A8A8);
|
||||||
|
|
||||||
static Color get paginationColor => const Color(0xFF01295C).withOpacity(45);
|
static Color get paginationColor => const Color(0xFF01295C).withOpacity(45);
|
||||||
|
|
||||||
static Color get paginationActiveColor =>
|
static Color get paginationActiveColor =>
|
||||||
const Color(0xFFFFFFFF).withOpacity(65);
|
const Color(0xFFFFFFFF).withOpacity(65);
|
||||||
|
|
||||||
@ -128,8 +135,9 @@ class AppColors {
|
|||||||
static const msgNoticeTextColor = Color.fromRGBO(139, 148, 176, 1); //消息提醒字体颜色
|
static const msgNoticeTextColor = Color.fromRGBO(139, 148, 176, 1); //消息提醒字体颜色
|
||||||
static const alphaBgViewColor = Color.fromRGBO(0, 0, 0, 0.2); //透明度背景
|
static const alphaBgViewColor = Color.fromRGBO(0, 0, 0, 0.2); //透明度背景
|
||||||
|
|
||||||
static Color openPassageModeColor = const Color(0xFFEB2A3B);// 首页开启常开模式颜色(红色)
|
static Color openPassageModeColor = const Color(0xFFEB2A3B); // 首页开启常开模式颜色(红色)
|
||||||
static Color listTimeYellowColor = const Color(0xFFF3BA37);// 首页时间过期颜色(黄色)
|
static Color listTimeYellowColor = const Color(0xFFF3BA37); // 首页时间过期颜色(黄色)
|
||||||
|
|
||||||
static Color get lockDetailBottomBtnUneable => const Color(0xFF808080);// 首页时间灰色颜色(灰色)
|
static Color get lockDetailBottomBtnUneable =>
|
||||||
|
const Color(0xFF808080); // 首页时间灰色颜色(灰色)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,6 +18,8 @@ class StarLockAMapKey {
|
|||||||
const StarLockAMapKey({required this.iosKey, required this.androidKey});
|
const StarLockAMapKey({required this.iosKey, required this.androidKey});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef dynamic fCallFunction();
|
||||||
|
|
||||||
class F {
|
class F {
|
||||||
static Flavor? appFlavor;
|
static Flavor? appFlavor;
|
||||||
|
|
||||||
@ -26,6 +28,24 @@ class F {
|
|||||||
|
|
||||||
static String get name => appFlavor?.name ?? '';
|
static String get name => appFlavor?.name ?? '';
|
||||||
|
|
||||||
|
//便捷判断并返回值
|
||||||
|
static dynamic sw(
|
||||||
|
{required fCallFunction defaultCall, fCallFunction? xhjCall}) {
|
||||||
|
if (xhjCall == null) {
|
||||||
|
return defaultCall();
|
||||||
|
}
|
||||||
|
switch (appFlavor) {
|
||||||
|
case Flavor.xhj:
|
||||||
|
return xhjCall();
|
||||||
|
case Flavor.local:
|
||||||
|
case Flavor.dev:
|
||||||
|
case Flavor.pre:
|
||||||
|
case Flavor.sky:
|
||||||
|
default:
|
||||||
|
return defaultCall();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static bool get debug {
|
static bool get debug {
|
||||||
switch (appFlavor) {
|
switch (appFlavor) {
|
||||||
case Flavor.local:
|
case Flavor.local:
|
||||||
@ -54,7 +74,7 @@ class F {
|
|||||||
case Flavor.sky:
|
case Flavor.sky:
|
||||||
return '锁通通';
|
return '锁通通';
|
||||||
case Flavor.xhj:
|
case Flavor.xhj:
|
||||||
return '鑫锁';
|
return '星星锁';
|
||||||
default:
|
default:
|
||||||
throw Exception('flavor[$name] title not found');
|
throw Exception('flavor[$name] title not found');
|
||||||
}
|
}
|
||||||
@ -71,7 +91,7 @@ class F {
|
|||||||
case Flavor.sky:
|
case Flavor.sky:
|
||||||
return '锁通通';
|
return '锁通通';
|
||||||
case Flavor.xhj:
|
case Flavor.xhj:
|
||||||
return '鑫锁';
|
return '星星锁';
|
||||||
default:
|
default:
|
||||||
throw Exception('flavor[$name] title not found');
|
throw Exception('flavor[$name] title not found');
|
||||||
}
|
}
|
||||||
@ -89,7 +109,8 @@ class F {
|
|||||||
case Flavor.sky:
|
case Flavor.sky:
|
||||||
return 'https://lock.skychip.top';
|
return 'https://lock.skychip.top';
|
||||||
case Flavor.xhj:
|
case Flavor.xhj:
|
||||||
return 'https://lock.xhjcn.ltd';
|
// return 'https://lock.xhjcn.ltd';
|
||||||
|
return 'https://pre.lock.star-lock.cn';
|
||||||
default:
|
default:
|
||||||
throw Exception('flavor[$name] apiPrefix not found');
|
throw Exception('flavor[$name] apiPrefix not found');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,7 +24,7 @@ class _AddIrisPageState extends State<AddIrisPage> {
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: Colors.white,
|
backgroundColor: Colors.white,
|
||||||
appBar: TitleAppBar(
|
appBar: TitleAppBar(
|
||||||
barTitle: "${TranslationLoader.lanKeys!.addTip!.tr}虹膜",
|
barTitle: "${TranslationLoader.lanKeys!.addTip!.tr}${'虹膜'.tr}",
|
||||||
haveBack: true,
|
haveBack: true,
|
||||||
backgroundColor: AppColors.mainColor),
|
backgroundColor: AppColors.mainColor),
|
||||||
body: ListView(
|
body: ListView(
|
||||||
|
|||||||
@ -28,7 +28,7 @@ class _AddIrisTypeManagePageState extends State<AddIrisTypeManagePage> {
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: AppColors.mainBackgroundColor,
|
backgroundColor: AppColors.mainBackgroundColor,
|
||||||
appBar: TitleAppBar(
|
appBar: TitleAppBar(
|
||||||
barTitle: "${TranslationLoader.lanKeys!.addTip!.tr}虹膜",
|
barTitle: "${TranslationLoader.lanKeys!.addTip!.tr}${'虹膜'.tr}",
|
||||||
haveBack: true,
|
haveBack: true,
|
||||||
backgroundColor: AppColors.mainColor),
|
backgroundColor: AppColors.mainColor),
|
||||||
body: Column(
|
body: Column(
|
||||||
|
|||||||
@ -32,7 +32,7 @@ class _IrisListPageState extends State<IrisListPage> {
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: AppColors.mainBackgroundColor,
|
backgroundColor: AppColors.mainBackgroundColor,
|
||||||
appBar: TitleAppBar(
|
appBar: TitleAppBar(
|
||||||
barTitle: '虹膜',
|
barTitle: '虹膜'.tr,
|
||||||
haveBack: true,
|
haveBack: true,
|
||||||
backgroundColor: AppColors.mainColor,
|
backgroundColor: AppColors.mainColor,
|
||||||
actionsList: [
|
actionsList: [
|
||||||
@ -66,7 +66,7 @@ class _IrisListPageState extends State<IrisListPage> {
|
|||||||
),
|
),
|
||||||
Expanded(child: _buildMainUI()),
|
Expanded(child: _buildMainUI()),
|
||||||
AddBottomWhiteBtn(
|
AddBottomWhiteBtn(
|
||||||
btnName: '${TranslationLoader.lanKeys!.add!.tr}虹膜',
|
btnName: '${TranslationLoader.lanKeys!.add!.tr}${'虹膜'.tr}',
|
||||||
onClick: () async {
|
onClick: () async {
|
||||||
// var data =
|
// var data =
|
||||||
// await Get.toNamed(Routers.addFaceTypeManagePage, arguments: {
|
// await Get.toNamed(Routers.addFaceTypeManagePage, arguments: {
|
||||||
|
|||||||
@ -676,23 +676,27 @@ class _LockDetailPageState extends State<LockDetailPage> with TickerProviderStat
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
showWidgetArr.add(
|
if (state.keyInfos.value.lockFeature!.isSupportIris == 1) {
|
||||||
bottomItem('images/main/icon_iris.png', '虹膜',
|
showWidgetArr.add(
|
||||||
state.openDoorBtnisUneable.value, state.bottomBtnisEable.value, () {
|
bottomItem('images/main/icon_iris.png', '虹膜'.tr,
|
||||||
Get.toNamed(Routers.irisListPage, arguments: {
|
state.openDoorBtnisUneable.value, state.bottomBtnisEable.value, () {
|
||||||
"lockId": state.keyInfos.value.lockId,
|
Get.toNamed(Routers.irisListPage, arguments: {
|
||||||
});
|
"lockId": state.keyInfos.value.lockId,
|
||||||
}),
|
});
|
||||||
);
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
showWidgetArr.add(
|
if (state.keyInfos.value.lockFeature!.palmVein == 1) {
|
||||||
bottomItem('images/main/icon_palm.png', '手掌',
|
showWidgetArr.add(
|
||||||
state.openDoorBtnisUneable.value, state.bottomBtnisEable.value, () {
|
bottomItem('images/main/icon_palm.png', '手掌'.tr,
|
||||||
Get.toNamed(Routers.palmListPage, arguments: {
|
state.openDoorBtnisUneable.value, state.bottomBtnisEable.value, () {
|
||||||
"lockId": state.keyInfos.value.lockId,
|
Get.toNamed(Routers.palmListPage, arguments: {
|
||||||
});
|
"lockId": state.keyInfos.value.lockId,
|
||||||
}),
|
});
|
||||||
);
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
//可视对讲门锁新增->监控
|
//可视对讲门锁新增->监控
|
||||||
if (state.keyInfos.value.lockFeature!.videoIntercom == 1) {
|
if (state.keyInfos.value.lockFeature!.videoIntercom == 1) {
|
||||||
|
|||||||
@ -148,7 +148,9 @@ class LockMonitoringLogic extends BaseGetXController {
|
|||||||
|
|
||||||
//开始录音
|
//开始录音
|
||||||
Future<void> startProcessing() async {
|
Future<void> startProcessing() async {
|
||||||
CallTalk().finishPcmSound();
|
if (state.isProcessing.value) {
|
||||||
|
CallTalk().stopPlaySound();
|
||||||
|
}
|
||||||
state.isButtonDisabled.value = true;
|
state.isButtonDisabled.value = true;
|
||||||
|
|
||||||
state.voiceProcessor?.addFrameListener(_onFrame);
|
state.voiceProcessor?.addFrameListener(_onFrame);
|
||||||
@ -169,6 +171,9 @@ class LockMonitoringLogic extends BaseGetXController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _onFrame(List<int> frame) async {
|
Future<void> _onFrame(List<int> frame) async {
|
||||||
|
if (state.isProcessing.value) {
|
||||||
|
CallTalk().stopPlaySound();
|
||||||
|
}
|
||||||
state.allFrames.add(frame); // 将帧添加到状态变量中
|
state.allFrames.add(frame); // 将帧添加到状态变量中
|
||||||
List<int> concatenatedFrames = concatenateFrames(state.allFrames); // 连接所有帧
|
List<int> concatenatedFrames = concatenateFrames(state.allFrames); // 连接所有帧
|
||||||
Get.log("pcm数据:$concatenatedFrames");
|
Get.log("pcm数据:$concatenatedFrames");
|
||||||
@ -199,6 +204,9 @@ class LockMonitoringLogic extends BaseGetXController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> stopProcessing() async {
|
Future<void> stopProcessing() async {
|
||||||
|
if (state.isProcessing.value) {
|
||||||
|
CallTalk().stopPlaySound();
|
||||||
|
}
|
||||||
state.isButtonDisabled.value = true;
|
state.isButtonDisabled.value = true;
|
||||||
try {
|
try {
|
||||||
await state.voiceProcessor?.stop();
|
await state.voiceProcessor?.stop();
|
||||||
@ -410,7 +418,7 @@ class LockMonitoringLogic extends BaseGetXController {
|
|||||||
void onClose() {
|
void onClose() {
|
||||||
// TODO: implement onClose
|
// TODO: implement onClose
|
||||||
print("锁详情界面销毁了");
|
print("锁详情界面销毁了");
|
||||||
CallTalk().finishPcmSound();
|
CallTalk().finishAVData();
|
||||||
stopProcessing();
|
stopProcessing();
|
||||||
_getUDPStatusRefreshUIEvent!.cancel();
|
_getUDPStatusRefreshUIEvent!.cancel();
|
||||||
state.getTVDataRefreshUIEvent!.cancel();
|
state.getTVDataRefreshUIEvent!.cancel();
|
||||||
|
|||||||
@ -233,7 +233,7 @@ class _LockMonitoringPageState extends State<LockMonitoringPage> {
|
|||||||
bottomBtnItemWidget(
|
bottomBtnItemWidget(
|
||||||
"images/main/icon_lockDetail_hangUp.png", "挂断", Colors.red, () async {
|
"images/main/icon_lockDetail_hangUp.png", "挂断", Colors.red, () async {
|
||||||
logic.stopProcessing();
|
logic.stopProcessing();
|
||||||
CallTalk().finishPcmSound();
|
CallTalk().finishAVData();
|
||||||
// 挂断
|
// 挂断
|
||||||
if (state.isClickHangUp.value == false) {
|
if (state.isClickHangUp.value == false) {
|
||||||
logic.initiateUdpHangUpAction(3);
|
logic.initiateUdpHangUpAction(3);
|
||||||
|
|||||||
@ -318,7 +318,7 @@ class RealTimePictureLogic extends BaseGetXController {
|
|||||||
void onClose() {
|
void onClose() {
|
||||||
// TODO: implement onClose
|
// TODO: implement onClose
|
||||||
print("锁详情界面销毁了");
|
print("锁详情界面销毁了");
|
||||||
CallTalk().finishPcmSound();
|
CallTalk().finishAVData();
|
||||||
_getTVDataRefreshUIEvent!.cancel();
|
_getTVDataRefreshUIEvent!.cancel();
|
||||||
_getUDPStatusRefreshUIEvent!.cancel();
|
_getUDPStatusRefreshUIEvent!.cancel();
|
||||||
if (state.oneMinuteTimeTimer != null) {
|
if (state.oneMinuteTimeTimer != null) {
|
||||||
|
|||||||
@ -261,7 +261,7 @@ class _RealTimePicturePageState extends State<RealTimePicturePage>
|
|||||||
"images/main/icon_lockDetail_hangUp.png", "挂断", Colors.red, () async {
|
"images/main/icon_lockDetail_hangUp.png", "挂断", Colors.red, () async {
|
||||||
// 挂断
|
// 挂断
|
||||||
logic.udpHangUpAction();
|
logic.udpHangUpAction();
|
||||||
CallTalk().finishPcmSound();
|
CallTalk().finishAVData();
|
||||||
Get.back();
|
Get.back();
|
||||||
}),
|
}),
|
||||||
bottomBtnItemWidget("images/main/icon_lockDetail_monitoringUnlock.png",
|
bottomBtnItemWidget("images/main/icon_lockDetail_monitoringUnlock.png",
|
||||||
@ -401,7 +401,7 @@ class _RealTimePicturePageState extends State<RealTimePicturePage>
|
|||||||
|
|
||||||
void _handleFailure() {
|
void _handleFailure() {
|
||||||
// 在这里处理失败的逻辑
|
// 在这里处理失败的逻辑
|
||||||
CallTalk().finishPcmSound();
|
CallTalk().finishAVData();
|
||||||
state.realTimePicTimer.cancel();
|
state.realTimePicTimer.cancel();
|
||||||
state.autoBackTimer.cancel();
|
state.autoBackTimer.cancel();
|
||||||
if (state.animationController != null) {
|
if (state.animationController != null) {
|
||||||
@ -414,7 +414,7 @@ class _RealTimePicturePageState extends State<RealTimePicturePage>
|
|||||||
state.animationController.dispose();
|
state.animationController.dispose();
|
||||||
state.realTimePicTimer.cancel();
|
state.realTimePicTimer.cancel();
|
||||||
state.autoBackTimer.cancel();
|
state.autoBackTimer.cancel();
|
||||||
CallTalk().finishPcmSound();
|
CallTalk().finishAVData();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,7 +11,9 @@ class LockListInfoEntity {
|
|||||||
errorCode = json['errorCode'];
|
errorCode = json['errorCode'];
|
||||||
description = json['description'];
|
description = json['description'];
|
||||||
errorMsg = json['errorMsg'];
|
errorMsg = json['errorMsg'];
|
||||||
data = json['data'] != null ? LockListInfoGroupEntity.fromJson(json['data']) : null;
|
data = json['data'] != null
|
||||||
|
? LockListInfoGroupEntity.fromJson(json['data'])
|
||||||
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
@ -33,7 +35,8 @@ class LockListInfoGroupEntity {
|
|||||||
int? pages;
|
int? pages;
|
||||||
int? total;
|
int? total;
|
||||||
|
|
||||||
LockListInfoGroupEntity({this.groupList, this.pageNo, this.pageSize, this.pages, this.total});
|
LockListInfoGroupEntity(
|
||||||
|
{this.groupList, this.pageNo, this.pageSize, this.pages, this.total});
|
||||||
|
|
||||||
LockListInfoGroupEntity.fromJson(Map<String, dynamic> json) {
|
LockListInfoGroupEntity.fromJson(Map<String, dynamic> json) {
|
||||||
if (json['groupList'] != null) {
|
if (json['groupList'] != null) {
|
||||||
@ -125,32 +128,32 @@ class LockListInfoItemEntity {
|
|||||||
|
|
||||||
LockListInfoItemEntity(
|
LockListInfoItemEntity(
|
||||||
{this.keyId,
|
{this.keyId,
|
||||||
this.lockId,
|
this.lockId,
|
||||||
this.lockName,
|
this.lockName,
|
||||||
this.lockAlias,
|
this.lockAlias,
|
||||||
this.electricQuantity,
|
this.electricQuantity,
|
||||||
this.fwVersion,
|
this.fwVersion,
|
||||||
this.hwVersion,
|
this.hwVersion,
|
||||||
this.keyType,
|
this.keyType,
|
||||||
this.passageMode,
|
this.passageMode,
|
||||||
this.userType,
|
this.userType,
|
||||||
this.startDate,
|
this.startDate,
|
||||||
this.endDate,
|
this.endDate,
|
||||||
this.weekDays,
|
this.weekDays,
|
||||||
this.remoteEnable,
|
this.remoteEnable,
|
||||||
this.faceAuthentication,
|
this.faceAuthentication,
|
||||||
this.lastFaceValidateTime,
|
this.lastFaceValidateTime,
|
||||||
this.keyRight,
|
this.keyRight,
|
||||||
this.keyStatus,
|
this.keyStatus,
|
||||||
this.isLockOwner,
|
this.isLockOwner,
|
||||||
this.bluetooth,
|
this.bluetooth,
|
||||||
this.lockFeature,
|
this.lockFeature,
|
||||||
this.lockSetting,
|
this.lockSetting,
|
||||||
this.sendDate,
|
this.sendDate,
|
||||||
this.lockUserNo,
|
this.lockUserNo,
|
||||||
this.electricQuantityDate,
|
this.electricQuantityDate,
|
||||||
this.electricQuantityStandby,
|
this.electricQuantityStandby,
|
||||||
this.senderUserId});
|
this.senderUserId});
|
||||||
|
|
||||||
LockListInfoItemEntity.fromJson(Map<String, dynamic> json) {
|
LockListInfoItemEntity.fromJson(Map<String, dynamic> json) {
|
||||||
keyId = json['keyId'];
|
keyId = json['keyId'];
|
||||||
@ -236,10 +239,10 @@ class Bluetooth {
|
|||||||
|
|
||||||
Bluetooth(
|
Bluetooth(
|
||||||
{this.bluetoothDeviceId,
|
{this.bluetoothDeviceId,
|
||||||
this.bluetoothDeviceName,
|
this.bluetoothDeviceName,
|
||||||
this.publicKey,
|
this.publicKey,
|
||||||
this.privateKey,
|
this.privateKey,
|
||||||
this.signKey});
|
this.signKey});
|
||||||
|
|
||||||
Bluetooth.fromJson(Map<String, dynamic> json) {
|
Bluetooth.fromJson(Map<String, dynamic> json) {
|
||||||
bluetoothDeviceId = json['bluetoothDeviceId'];
|
bluetoothDeviceId = json['bluetoothDeviceId'];
|
||||||
@ -266,18 +269,20 @@ class LockFeature {
|
|||||||
int? fingerprint;
|
int? fingerprint;
|
||||||
int? fingerVein;
|
int? fingerVein;
|
||||||
int? palmVein;
|
int? palmVein;
|
||||||
|
int? isSupportIris;
|
||||||
int? d3Face;
|
int? d3Face;
|
||||||
int? bluetoothRemoteControl;
|
int? bluetoothRemoteControl;
|
||||||
int? videoIntercom;
|
int? videoIntercom;
|
||||||
LockFeature(
|
LockFeature(
|
||||||
{this.password,
|
{this.password,
|
||||||
this.icCard,
|
this.icCard,
|
||||||
this.fingerprint,
|
this.fingerprint,
|
||||||
this.fingerVein,
|
this.fingerVein,
|
||||||
this.palmVein,
|
this.palmVein,
|
||||||
this.d3Face,
|
this.isSupportIris,
|
||||||
this.bluetoothRemoteControl,
|
this.d3Face,
|
||||||
this.videoIntercom});
|
this.bluetoothRemoteControl,
|
||||||
|
this.videoIntercom});
|
||||||
|
|
||||||
LockFeature.fromJson(Map<String, dynamic> json) {
|
LockFeature.fromJson(Map<String, dynamic> json) {
|
||||||
password = json['password'];
|
password = json['password'];
|
||||||
@ -285,6 +290,7 @@ class LockFeature {
|
|||||||
fingerprint = json['fingerprint'];
|
fingerprint = json['fingerprint'];
|
||||||
fingerVein = json['fingerVein'];
|
fingerVein = json['fingerVein'];
|
||||||
palmVein = json['palmVein'];
|
palmVein = json['palmVein'];
|
||||||
|
isSupportIris = json['isSupportIris'];
|
||||||
d3Face = json['d3Face'];
|
d3Face = json['d3Face'];
|
||||||
bluetoothRemoteControl = json['bluetoothRemoteControl'];
|
bluetoothRemoteControl = json['bluetoothRemoteControl'];
|
||||||
videoIntercom = json['videoIntercom'];
|
videoIntercom = json['videoIntercom'];
|
||||||
@ -297,6 +303,7 @@ class LockFeature {
|
|||||||
data['fingerprint'] = fingerprint;
|
data['fingerprint'] = fingerprint;
|
||||||
data['fingerVein'] = fingerVein;
|
data['fingerVein'] = fingerVein;
|
||||||
data['palmVein'] = palmVein;
|
data['palmVein'] = palmVein;
|
||||||
|
data['isSupportIris'] = isSupportIris;
|
||||||
data['d3Face'] = d3Face;
|
data['d3Face'] = d3Face;
|
||||||
data['bluetoothRemoteControl'] = bluetoothRemoteControl;
|
data['bluetoothRemoteControl'] = bluetoothRemoteControl;
|
||||||
data['videoIntercom'] = videoIntercom;
|
data['videoIntercom'] = videoIntercom;
|
||||||
|
|||||||
@ -22,20 +22,20 @@ import '../lockList/lockList_page.dart';
|
|||||||
import 'lockMain_logic.dart';
|
import 'lockMain_logic.dart';
|
||||||
|
|
||||||
class StarLockMainPage extends StatefulWidget {
|
class StarLockMainPage extends StatefulWidget {
|
||||||
const StarLockMainPage({Key? key}) : super(key: key);
|
StarLockMainPage({Key? key, this.showAppBar = true, this.showDrawer = true})
|
||||||
|
: super(key: key);
|
||||||
|
bool showAppBar;
|
||||||
|
bool showDrawer;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StarLockMainPage> createState() => _StarLockMainPageState();
|
State<StarLockMainPage> createState() => _StarLockMainPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
// GlobalKey<_StarLockMainPageState> starLockMainKey = GlobalKey();
|
|
||||||
class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
|
class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
|
||||||
final logic = Get.put(LockMainLogic());
|
final logic = Get.put(LockMainLogic());
|
||||||
final state = Get.find<LockMainLogic>().state;
|
final state = Get.find<LockMainLogic>().state;
|
||||||
|
|
||||||
Future<void> getHttpData() async {
|
Future<void> getHttpData() async {
|
||||||
// await logic.getStarLockInfo();
|
|
||||||
// setState(() {});
|
|
||||||
logic.getStarLockInfo().then((LockListInfoEntity value) {
|
logic.getStarLockInfo().then((LockListInfoEntity value) {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
setState(() {});
|
setState(() {});
|
||||||
@ -46,7 +46,7 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
WidgetsBinding.instance!.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
logic.pageNo = 1;
|
logic.pageNo = 1;
|
||||||
getHttpData();
|
getHttpData();
|
||||||
});
|
});
|
||||||
@ -57,60 +57,38 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
|
|||||||
@override
|
@override
|
||||||
void didChangeDependencies() {
|
void didChangeDependencies() {
|
||||||
super.didChangeDependencies();
|
super.didChangeDependencies();
|
||||||
// WidgetsBinding.instance!.addPostFrameCallback((_) {
|
|
||||||
// getHttpData();
|
|
||||||
// });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: const Color(0xFFF5F5F5),
|
backgroundColor: const Color(0xFFF5F5F5),
|
||||||
appBar: TitleAppBar(
|
appBar: widget.showAppBar
|
||||||
barTitle: F.navTitle,
|
? TitleAppBar(
|
||||||
haveBack: false,
|
barTitle: F.navTitle,
|
||||||
haveOtherLeftWidget: true,
|
haveBack: false,
|
||||||
leftWidget: Builder(
|
haveOtherLeftWidget: true,
|
||||||
builder: (context) => IconButton(
|
leftWidget: Builder(
|
||||||
icon: Image.asset(
|
builder: (context) => IconButton(
|
||||||
"images/main/mainLeft_menu_icon.png",
|
icon: Image.asset(
|
||||||
color: Colors.white,
|
"images/main/mainLeft_menu_icon.png",
|
||||||
width: 44.w,
|
color: Colors.white,
|
||||||
height: 44.w,
|
width: 44.w,
|
||||||
),
|
height: 44.w,
|
||||||
onPressed: () {
|
),
|
||||||
// _globalKey.currentState!.openDrawer();
|
onPressed: () {
|
||||||
Scaffold.of(context).openDrawer();
|
Scaffold.of(context).openDrawer();
|
||||||
},
|
},
|
||||||
)),
|
)),
|
||||||
backgroundColor: AppColors.mainColor,
|
backgroundColor: AppColors.mainColor,
|
||||||
// actionsList: [
|
)
|
||||||
// TextButton(
|
: null,
|
||||||
// child: const Text("", style: TextStyle(color: Colors.white)),
|
drawer: widget.showDrawer
|
||||||
// onPressed: () {
|
? Drawer(
|
||||||
// Navigator.pushNamed(context, Routers.starLockLoginPage);
|
width: 1.sw / 3 * 2,
|
||||||
// },
|
child: const StarLockMinePage(),
|
||||||
// ),
|
)
|
||||||
// ],
|
: null,
|
||||||
),
|
|
||||||
drawer: Drawer(
|
|
||||||
width: 1.sw / 3 * 2,
|
|
||||||
child: const StarLockMinePage(),
|
|
||||||
),
|
|
||||||
// body: FutureBuilder<LockListInfoGroupEntity>(
|
|
||||||
// future: logic.getStarLockInfo(), // 异步操作
|
|
||||||
// builder: (BuildContext context, AsyncSnapshot<LockListInfoGroupEntity> snapshot) {
|
|
||||||
// if (snapshot.connectionState == ConnectionState.waiting) {
|
|
||||||
// // return CircularProgressIndicator(); // 显示加载指示器
|
|
||||||
// return Container();
|
|
||||||
// } else if (snapshot.hasError) {
|
|
||||||
// // return Text('Error: ${snapshot.error}'); // 显示错误
|
|
||||||
// return unHaveData();
|
|
||||||
// } else {
|
|
||||||
// return getDataReturnUI(snapshot.data!.groupList!.length ?? 0); // 显示获取的数据
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// ),
|
|
||||||
body: EasyRefreshTool(
|
body: EasyRefreshTool(
|
||||||
onRefresh: () {
|
onRefresh: () {
|
||||||
SchedulerBinding.instance.addPostFrameCallback((_) {
|
SchedulerBinding.instance.addPostFrameCallback((_) {
|
||||||
@ -120,13 +98,6 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
child: getDataReturnUI(state.dataLength.value)),
|
child: getDataReturnUI(state.dataLength.value)),
|
||||||
// body:smartRefresher(
|
|
||||||
// logic.refreshController,
|
|
||||||
// onRefresh:logic.onRefresh,
|
|
||||||
// onLoading:logic.onLoading,
|
|
||||||
// child:Obx(() => getDataReturnUI(state.dataLength.value))),
|
|
||||||
// body: getLockList(),
|
|
||||||
// body: unHaveData(),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,11 +111,12 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
|
|||||||
case 1:
|
case 1:
|
||||||
// 只有一条数据
|
// 只有一条数据
|
||||||
Storage.setBool(ifIsDemoModeOrNot, false);
|
Storage.setBool(ifIsDemoModeOrNot, false);
|
||||||
print("state.lockListInfoEntity.value.data!.groupList![0].lockList![0]:${state.lockListInfoGroupEntity.value.groupList![0].lockList![0].endDate}");
|
print(
|
||||||
|
"state.lockListInfoEntity.value.data!.groupList![0].lockList![0]:${state.lockListInfoGroupEntity.value.groupList![0].lockList![0].endDate}");
|
||||||
returnWidget = LockDetailPage(
|
returnWidget = LockDetailPage(
|
||||||
isOnlyOneData: true,
|
isOnlyOneData: true,
|
||||||
lockListInfoItemEntity: state
|
lockListInfoItemEntity:
|
||||||
.lockListInfoGroupEntity.value.groupList![0].lockList![0]);
|
state.lockListInfoGroupEntity.value.groupList![0].lockList![0]);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
// 有多条数据
|
// 有多条数据
|
||||||
@ -156,8 +128,6 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
|
|||||||
returnWidget = NoData();
|
returnWidget = NoData();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Future.delayed(const Duration(seconds: 1));
|
|
||||||
// Future.delayed(const Duration(milliseconds: 200));
|
|
||||||
return returnWidget;
|
return returnWidget;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,12 +145,6 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
|
|||||||
children: [
|
children: [
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: 330.w,
|
width: 330.w,
|
||||||
// height: 330.w,
|
|
||||||
// margin: EdgeInsets.only(top: 180.h),
|
|
||||||
// decoration: BoxDecoration(
|
|
||||||
// border: Border.all(width: 4.w, color: AppColors.mainColor),
|
|
||||||
// borderRadius: BorderRadius.circular(110.w),
|
|
||||||
// ),
|
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.all(30.0),
|
padding: const EdgeInsets.all(30.0),
|
||||||
@ -193,11 +157,8 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
|
|||||||
onTap: () {
|
onTap: () {
|
||||||
//实现回调函数
|
//实现回调函数
|
||||||
Navigator.pushNamed(
|
Navigator.pushNamed(
|
||||||
context, Routers.selectLockTypePage,
|
context,
|
||||||
// arguments: {
|
Routers.selectLockTypePage,
|
||||||
// "url": ConstConfig.privacAgreementUrl,
|
|
||||||
// "title": '隐私政策'
|
|
||||||
// }
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
)),
|
)),
|
||||||
@ -235,10 +196,10 @@ class _StarLockMainPageState extends State<StarLockMainPage> with BaseWidget {
|
|||||||
void onHide() {}
|
void onHide() {}
|
||||||
|
|
||||||
late StreamSubscription _teamEvent;
|
late StreamSubscription _teamEvent;
|
||||||
|
|
||||||
void _initLoadDataAction() {
|
void _initLoadDataAction() {
|
||||||
print("监听刷新首页数据消息");
|
print("监听刷新首页数据消息");
|
||||||
_teamEvent = eventBus.on<RefreshLockListInfoDataEvent>().listen((event) {
|
_teamEvent = eventBus.on<RefreshLockListInfoDataEvent>().listen((event) {
|
||||||
// getLockInfo();
|
|
||||||
logic.pageNo = 1;
|
logic.pageNo = 1;
|
||||||
getHttpData();
|
getHttpData();
|
||||||
print("收到刷新首页数据消息");
|
print("收到刷新首页数据消息");
|
||||||
|
|||||||
@ -0,0 +1,29 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
import 'package:connectivity_plus/connectivity_plus.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_state.dart';
|
||||||
|
import 'package:star_lock/tools/baseGetXController.dart';
|
||||||
|
|
||||||
|
class LockMainXHJLogic extends BaseGetXController {
|
||||||
|
final LockMainXHJState state = LockMainXHJState();
|
||||||
|
|
||||||
|
void setIndex(int index) {
|
||||||
|
state.index = index;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onReady() {
|
||||||
|
super.onReady();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onInit() {
|
||||||
|
super.onInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onClose() {
|
||||||
|
super.onClose();
|
||||||
|
}
|
||||||
|
}
|
||||||
168
star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart
Normal file
168
star_lock/lib/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart
Normal file
@ -0,0 +1,168 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
import 'dart:ui';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/scheduler.dart';
|
||||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:star_lock/app_settings/app_colors.dart';
|
||||||
|
import 'package:star_lock/baseWidget.dart';
|
||||||
|
import 'package:star_lock/main/lockMian/lockMain/lockMain_page.dart';
|
||||||
|
import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_logic.dart';
|
||||||
|
import 'package:star_lock/mine/mall/lockMall_page.dart';
|
||||||
|
import 'package:star_lock/mine/message/messageList/messageList_page.dart';
|
||||||
|
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart';
|
||||||
|
import 'package:star_lock/tools/noData.dart';
|
||||||
|
import 'package:star_lock/tools/submitBtn.dart';
|
||||||
|
|
||||||
|
class StarLockMainXHJPage extends StatefulWidget {
|
||||||
|
const StarLockMainXHJPage({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<StarLockMainXHJPage> createState() => _StarLockMainXHJPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _StarLockMainXHJPageState extends State<StarLockMainXHJPage>
|
||||||
|
with BaseWidget {
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void didChangeDependencies() {
|
||||||
|
super.didChangeDependencies();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return GetBuilder<LockMainXHJLogic>(
|
||||||
|
init: LockMainXHJLogic(),
|
||||||
|
builder: (LockMainXHJLogic logic) {
|
||||||
|
return Scaffold(
|
||||||
|
backgroundColor: const Color(0xFFF5F5F5),
|
||||||
|
body: SafeArea(
|
||||||
|
bottom: false,
|
||||||
|
child: Stack(
|
||||||
|
children: [
|
||||||
|
pageView(
|
||||||
|
widget: StarLockMainPage(
|
||||||
|
showAppBar: false,
|
||||||
|
showDrawer: false,
|
||||||
|
),
|
||||||
|
logic: logic,
|
||||||
|
index: 0,
|
||||||
|
),
|
||||||
|
pageView(
|
||||||
|
widget: MessageListPage(
|
||||||
|
showAppBar: false,
|
||||||
|
),
|
||||||
|
logic: logic,
|
||||||
|
index: 1,
|
||||||
|
),
|
||||||
|
pageView(
|
||||||
|
widget: LockMallPage(
|
||||||
|
showAppBar: false,
|
||||||
|
),
|
||||||
|
logic: logic,
|
||||||
|
index: 2,
|
||||||
|
),
|
||||||
|
pageView(
|
||||||
|
widget: MinePersonInfoPage(
|
||||||
|
showAppBar: false,
|
||||||
|
showAbout: true,
|
||||||
|
),
|
||||||
|
logic: logic,
|
||||||
|
index: 3,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
bottomNavigationBar: Container(
|
||||||
|
height: 100.h + Get.bottomBarHeight,
|
||||||
|
decoration: const BoxDecoration(
|
||||||
|
color: Colors.transparent,
|
||||||
|
border: Border(
|
||||||
|
top: BorderSide(
|
||||||
|
color: Colors.black, // 设置边框颜色
|
||||||
|
width: 0.3, // 设置边框宽度
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
// navigationBarItem(Icons.start, '场景', false, () {
|
||||||
|
// logic.setIndex(0);
|
||||||
|
// }),
|
||||||
|
navigationBarItem(Icons.devices, '设备', logic, 0, () {
|
||||||
|
logic.setIndex(0);
|
||||||
|
}),
|
||||||
|
navigationBarItem(Icons.message, '消息', logic, 1, () {
|
||||||
|
logic.setIndex(1);
|
||||||
|
}),
|
||||||
|
navigationBarItem(Icons.shopping_cart, '商城', logic, 2, () {
|
||||||
|
logic.setIndex(2);
|
||||||
|
}),
|
||||||
|
navigationBarItem(Icons.account_circle, '我的', logic, 3, () {
|
||||||
|
logic.setIndex(3);
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//布局
|
||||||
|
Widget pageView(
|
||||||
|
{required Widget widget,
|
||||||
|
required LockMainXHJLogic logic,
|
||||||
|
required int index}) {
|
||||||
|
return Positioned.fill(
|
||||||
|
child: Offstage(
|
||||||
|
offstage: logic.state.index != index,
|
||||||
|
child: widget,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//底部按钮
|
||||||
|
Widget navigationBarItem(IconData icon, String text, LockMainXHJLogic logic,
|
||||||
|
int index, var onTop) {
|
||||||
|
bool check = logic.state.index == index;
|
||||||
|
return Expanded(
|
||||||
|
child: GestureDetector(
|
||||||
|
onTap: onTop,
|
||||||
|
child: Container(
|
||||||
|
color: Colors.transparent,
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Padding(
|
||||||
|
padding: EdgeInsets.only(bottom: 8.h),
|
||||||
|
child: Icon(
|
||||||
|
icon,
|
||||||
|
size: 32.r,
|
||||||
|
color:
|
||||||
|
check ? AppColors.mainColor : AppColors.darkGrayTextColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
text,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16.sp,
|
||||||
|
color:
|
||||||
|
check ? AppColors.mainColor : AppColors.darkGrayTextColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
|
||||||
|
class LockMainXHJState {
|
||||||
|
int index = 0;
|
||||||
|
|
||||||
|
}
|
||||||
@ -13,7 +13,10 @@ import 'package:webview_flutter/webview_flutter.dart';
|
|||||||
import '../../tools/baseGetXController.dart';
|
import '../../tools/baseGetXController.dart';
|
||||||
|
|
||||||
class LockMallLogic extends BaseGetXController {
|
class LockMallLogic extends BaseGetXController {
|
||||||
final LockMallState state = LockMallState();
|
late LockMallState state;
|
||||||
|
|
||||||
|
LockMallLogic({required bool allowReturn})
|
||||||
|
: state = LockMallState(allowReturn: allowReturn);
|
||||||
|
|
||||||
//获取商城跳转地址
|
//获取商城跳转地址
|
||||||
Future<void> getMallURLRequest() async {
|
Future<void> getMallURLRequest() async {
|
||||||
@ -96,7 +99,7 @@ class LockMallLogic extends BaseGetXController {
|
|||||||
if (canGoBack) {
|
if (canGoBack) {
|
||||||
await state.mallWebView.goBack();
|
await state.mallWebView.goBack();
|
||||||
} else {
|
} else {
|
||||||
Get.back();
|
if (state.allowReturn) Get.back();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,16 +7,16 @@ import 'package:star_lock/tools/titleAppBar.dart';
|
|||||||
import 'package:webview_flutter/webview_flutter.dart';
|
import 'package:webview_flutter/webview_flutter.dart';
|
||||||
|
|
||||||
class LockMallPage extends StatefulWidget {
|
class LockMallPage extends StatefulWidget {
|
||||||
const LockMallPage({Key? key}) : super(key: key);
|
LockMallPage({Key? key, this.showAppBar = true, this.allowReturn = true})
|
||||||
|
: super(key: key);
|
||||||
|
bool showAppBar;
|
||||||
|
bool allowReturn;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<LockMallPage> createState() => _LockMallPageState();
|
State<LockMallPage> createState() => _LockMallPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _LockMallPageState extends State<LockMallPage> {
|
class _LockMallPageState extends State<LockMallPage> {
|
||||||
final logic = Get.put(LockMallLogic());
|
|
||||||
final state = Get.find<LockMallLogic>().state;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
@ -27,38 +27,46 @@ class _LockMallPageState extends State<LockMallPage> {
|
|||||||
// FIXME 如果未登录状态,应先跳转登录页
|
// FIXME 如果未登录状态,应先跳转登录页
|
||||||
// FIXME url应该使用接口获取,接口名称 “获取商城跳转地址:/mall/getUrl“ POST请求,无参数,需要登录
|
// FIXME url应该使用接口获取,接口名称 “获取商城跳转地址:/mall/getUrl“ POST请求,无参数,需要登录
|
||||||
// String url = 'https://ge.mall.star-lock.cn/quick_login?id=4&key=1ffb9d37109b8351ebb04ccfcca02c8e';
|
// String url = 'https://ge.mall.star-lock.cn/quick_login?id=4&key=1ffb9d37109b8351ebb04ccfcca02c8e';
|
||||||
return PopScope(
|
return GetBuilder<LockMallLogic>(
|
||||||
onPopInvoked: logic.canGoBack,
|
init: LockMallLogic(allowReturn: widget.allowReturn),
|
||||||
canPop: false,
|
builder: (LockMallLogic logic) {
|
||||||
child: Scaffold(
|
return PopScope(
|
||||||
resizeToAvoidBottomInset: false,
|
onPopInvoked: logic.canGoBack,
|
||||||
backgroundColor: const Color(0xFFFFFFFF),
|
canPop: false,
|
||||||
appBar: TitleAppBar(
|
child: Scaffold(
|
||||||
barTitle: getWebTitle(),
|
resizeToAvoidBottomInset: false,
|
||||||
haveBack: true,
|
backgroundColor: const Color(0xFFFFFFFF),
|
||||||
backgroundColor: AppColors.mainColor,
|
appBar: widget.showAppBar
|
||||||
),
|
? TitleAppBar(
|
||||||
body: Obx(() => Column(
|
barTitle: getWebTitle(logic),
|
||||||
children: <Widget>[
|
haveBack: true,
|
||||||
Container(
|
backgroundColor: AppColors.mainColor,
|
||||||
padding: EdgeInsets.only(bottom: 10.w),
|
)
|
||||||
child: LinearProgressIndicator(
|
: null,
|
||||||
value: state.webProgress.value,
|
body: Obx(() => Column(
|
||||||
backgroundColor: Colors.grey,
|
children: <Widget>[
|
||||||
valueColor: AlwaysStoppedAnimation<Color>(AppColors.mainColor),
|
Container(
|
||||||
),
|
padding: EdgeInsets.only(bottom: 10.w),
|
||||||
),
|
child: LinearProgressIndicator(
|
||||||
Expanded(
|
value: logic.state.webProgress.value,
|
||||||
child: WebViewWidget(controller: state.mallWebView),
|
backgroundColor: Colors.grey,
|
||||||
),
|
valueColor: AlwaysStoppedAnimation<Color>(
|
||||||
],
|
AppColors.mainColor),
|
||||||
))),
|
),
|
||||||
);
|
),
|
||||||
|
Expanded(
|
||||||
|
child: WebViewWidget(
|
||||||
|
controller: logic.state.mallWebView),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
))),
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
String getWebTitle() {
|
String getWebTitle(LockMallLogic logic) {
|
||||||
String webTitleStr = "配件商城".tr;
|
String webTitleStr = "配件商城".tr;
|
||||||
state.mallWebView.getTitle().then((result) {
|
logic.state.mallWebView.getTitle().then((result) {
|
||||||
webTitleStr = result!;
|
webTitleStr = result!;
|
||||||
});
|
});
|
||||||
return webTitleStr;
|
return webTitleStr;
|
||||||
|
|||||||
@ -4,8 +4,11 @@ import 'package:star_lock/webview/webview_logic.dart';
|
|||||||
import 'package:webview_flutter/webview_flutter.dart';
|
import 'package:webview_flutter/webview_flutter.dart';
|
||||||
|
|
||||||
class LockMallState {
|
class LockMallState {
|
||||||
|
LockMallState({required this.allowReturn});
|
||||||
|
|
||||||
var lockMallUrl = "".obs;
|
var lockMallUrl = "".obs;
|
||||||
var webProgress = 0.0.obs;
|
var webProgress = 0.0.obs;
|
||||||
|
bool allowReturn;
|
||||||
late WebViewController mallWebView = initWebViewController();
|
late WebViewController mallWebView = initWebViewController();
|
||||||
|
|
||||||
//初始化webView控制器
|
//初始化webView控制器
|
||||||
@ -16,5 +19,4 @@ class LockMallState {
|
|||||||
allWebView.setUserAgent(WebViewLogic.userAgent);
|
allWebView.setUserAgent(WebViewLogic.userAgent);
|
||||||
return allWebView;
|
return allWebView;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,18 +14,20 @@ import 'messageList_logic.dart';
|
|||||||
import 'package:flutter_slidable/flutter_slidable.dart';
|
import 'package:flutter_slidable/flutter_slidable.dart';
|
||||||
|
|
||||||
class MessageListPage extends StatefulWidget {
|
class MessageListPage extends StatefulWidget {
|
||||||
const MessageListPage({Key? key}) : super(key: key);
|
MessageListPage({Key? key, this.showAppBar = true}) : super(key: key);
|
||||||
|
bool showAppBar;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<MessageListPage> createState() => _MessageListPageState();
|
State<MessageListPage> createState() => _MessageListPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _MessageListPageState extends State<MessageListPage> with TickerProviderStateMixin {
|
class _MessageListPageState extends State<MessageListPage>
|
||||||
|
with TickerProviderStateMixin {
|
||||||
final logic = Get.put(MessageListLogic());
|
final logic = Get.put(MessageListLogic());
|
||||||
final state = Get.find<MessageListLogic>().state;
|
final state = Get.find<MessageListLogic>().state;
|
||||||
|
|
||||||
void getHttpData(){
|
void getHttpData() {
|
||||||
logic.messageListDataRequest().then((MessageListEntity value){
|
logic.messageListDataRequest().then((MessageListEntity value) {
|
||||||
setState(() {});
|
setState(() {});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -41,58 +43,61 @@ class _MessageListPageState extends State<MessageListPage> with TickerProviderSt
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: AppColors.mainBackgroundColor,
|
backgroundColor: AppColors.mainBackgroundColor,
|
||||||
appBar: TitleAppBar(
|
appBar: widget.showAppBar
|
||||||
barTitle: TranslationLoader.lanKeys!.message!.tr,
|
? TitleAppBar(
|
||||||
haveBack: true,
|
barTitle: TranslationLoader.lanKeys!.message!.tr,
|
||||||
backgroundColor: AppColors.mainColor),
|
haveBack: true,
|
||||||
body: EasyRefreshTool(
|
backgroundColor: AppColors.mainColor)
|
||||||
onRefresh: (){
|
: null,
|
||||||
logic.pageNo = 1;
|
body: EasyRefreshTool(onRefresh: () {
|
||||||
getHttpData();
|
logic.pageNo = 1;
|
||||||
},
|
getHttpData();
|
||||||
onLoad: (){
|
}, onLoad: () {
|
||||||
getHttpData();
|
getHttpData();
|
||||||
},
|
}, child: Obx(() {
|
||||||
child: Obx(() {
|
return state.itemDataList.value.isEmpty
|
||||||
return state.itemDataList.value.isEmpty
|
? NoData()
|
||||||
? NoData()
|
: SlidableAutoCloseBehavior(
|
||||||
: SlidableAutoCloseBehavior(
|
child: ListView.builder(
|
||||||
child: ListView.builder(
|
itemCount: state.itemDataList.value.length,
|
||||||
itemCount: state.itemDataList.value.length,
|
itemBuilder: (c, index) {
|
||||||
itemBuilder: (c, index) {
|
MessageItemEntity messageItemEntity =
|
||||||
MessageItemEntity messageItemEntity = state.itemDataList.value[index];
|
state.itemDataList.value[index];
|
||||||
return Slidable(
|
return Slidable(
|
||||||
key:ValueKey(messageItemEntity.id),
|
key: ValueKey(messageItemEntity.id),
|
||||||
endActionPane: ActionPane(
|
endActionPane: ActionPane(
|
||||||
extentRatio: 0.2,
|
extentRatio: 0.2,
|
||||||
motion: const ScrollMotion(),
|
motion: const ScrollMotion(),
|
||||||
children: [
|
children: [
|
||||||
SlidableAction(
|
SlidableAction(
|
||||||
onPressed: (BuildContext context){
|
onPressed: (BuildContext context) {
|
||||||
logic.deletMessageDataRequest(messageItemEntity.id!, (){
|
logic.deletMessageDataRequest(
|
||||||
logic.pageNo = 1;
|
messageItemEntity.id!, () {
|
||||||
getHttpData();
|
logic.pageNo = 1;
|
||||||
});
|
getHttpData();
|
||||||
},
|
});
|
||||||
backgroundColor: Colors.red,
|
},
|
||||||
foregroundColor: Colors.white,
|
backgroundColor: Colors.red,
|
||||||
label: '删除',
|
foregroundColor: Colors.white,
|
||||||
padding: EdgeInsets.only(left: 5.w, right: 5.w),
|
label: '删除',
|
||||||
),
|
padding: EdgeInsets.only(left: 5.w, right: 5.w),
|
||||||
],
|
),
|
||||||
),
|
],
|
||||||
child: _messageListItem(messageItemEntity, () {
|
),
|
||||||
Get.toNamed(Routers.messageDetailPage, arguments: {"messageItemEntity": messageItemEntity});
|
child: _messageListItem(messageItemEntity, () {
|
||||||
}),
|
Get.toNamed(Routers.messageDetailPage, arguments: {
|
||||||
);
|
"messageItemEntity": messageItemEntity
|
||||||
}),
|
});
|
||||||
);
|
}),
|
||||||
})
|
);
|
||||||
),
|
}),
|
||||||
|
);
|
||||||
|
})),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _messageListItem(MessageItemEntity messageItemEntity, Function() action) {
|
Widget _messageListItem(
|
||||||
|
MessageItemEntity messageItemEntity, Function() action) {
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: action,
|
onTap: action,
|
||||||
child: Container(
|
child: Container(
|
||||||
@ -117,7 +122,10 @@ class _MessageListPageState extends State<MessageListPage> with TickerProviderSt
|
|||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 22.sp, color: messageItemEntity.readAt! == 0 ? AppColors.blackColor : AppColors.placeholderTextColor),
|
fontSize: 22.sp,
|
||||||
|
color: messageItemEntity.readAt! == 0
|
||||||
|
? AppColors.blackColor
|
||||||
|
: AppColors.placeholderTextColor),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@ -128,7 +136,14 @@ class _MessageListPageState extends State<MessageListPage> with TickerProviderSt
|
|||||||
children: [
|
children: [
|
||||||
// Image.asset('images/mine/icon_mine_gatewaySignal_strong.png', width: 40.w, height: 40.w,),
|
// Image.asset('images/mine/icon_mine_gatewaySignal_strong.png', width: 40.w, height: 40.w,),
|
||||||
// SizedBox(width: 10.w,),
|
// SizedBox(width: 10.w,),
|
||||||
Text(DateTool().dateToYMDHNString(messageItemEntity.createdAt!.toString()), style: TextStyle(fontSize: 18.sp, color: messageItemEntity.readAt! == 0 ? AppColors.blackColor : AppColors.placeholderTextColor)),
|
Text(
|
||||||
|
DateTool().dateToYMDHNString(
|
||||||
|
messageItemEntity.createdAt!.toString()),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 18.sp,
|
||||||
|
color: messageItemEntity.readAt! == 0
|
||||||
|
? AppColors.blackColor
|
||||||
|
: AppColors.placeholderTextColor)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(width: 20.h),
|
SizedBox(width: 20.h),
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
import 'package:star_lock/app_settings/app_colors.dart';
|
import 'package:star_lock/app_settings/app_colors.dart';
|
||||||
|
import 'package:star_lock/flavors.dart';
|
||||||
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart';
|
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart';
|
||||||
import 'package:star_lock/tools/custom_bottom_sheet.dart';
|
import 'package:star_lock/tools/custom_bottom_sheet.dart';
|
||||||
|
|
||||||
@ -14,7 +14,10 @@ import '../../../tools/titleAppBar.dart';
|
|||||||
import '../../../translations/trans_lib.dart';
|
import '../../../translations/trans_lib.dart';
|
||||||
|
|
||||||
class MinePersonInfoPage extends StatefulWidget {
|
class MinePersonInfoPage extends StatefulWidget {
|
||||||
const MinePersonInfoPage({Key? key}) : super(key: key);
|
MinePersonInfoPage({Key? key, this.showAppBar = true, this.showAbout = false})
|
||||||
|
: super(key: key);
|
||||||
|
bool showAppBar;
|
||||||
|
bool showAbout;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<MinePersonInfoPage> createState() => _MinePersonInfoPageState();
|
State<MinePersonInfoPage> createState() => _MinePersonInfoPageState();
|
||||||
@ -28,34 +31,43 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: AppColors.mainBackgroundColor,
|
backgroundColor: AppColors.mainBackgroundColor,
|
||||||
appBar: TitleAppBar(
|
appBar: widget.showAppBar
|
||||||
barTitle: TranslationLoader.lanKeys!.personalInformation!.tr,
|
? TitleAppBar(
|
||||||
haveBack: true,
|
barTitle: TranslationLoader.lanKeys!.personalInformation!.tr,
|
||||||
backgroundColor: AppColors.mainColor),
|
haveBack: true,
|
||||||
|
backgroundColor: AppColors.mainColor)
|
||||||
|
: null,
|
||||||
body: Column(
|
body: Column(
|
||||||
children: [
|
children: [
|
||||||
Obx(() => CommonItem(
|
Obx(() => CommonItem(
|
||||||
leftTitel: TranslationLoader.lanKeys!.avatar!.tr,
|
leftTitel: TranslationLoader.lanKeys!.avatar!.tr,
|
||||||
rightTitle: "",
|
rightTitle: "",
|
||||||
allHeight: 100.h,
|
allHeight: 100.h,
|
||||||
isHaveLine: true,
|
isHaveLine: true,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
isHaveRightWidget: true,
|
isHaveRightWidget: true,
|
||||||
rightWidget: ClipRRect(
|
rightWidget: ClipRRect(
|
||||||
borderRadius: BorderRadius.circular(36.w),
|
borderRadius: BorderRadius.circular(36.w),
|
||||||
child: CustomNetworkImage(url:state.headUrl.value, defaultUrl: 'images/controls_user.png', width:72.w, height:72.w),
|
child: CustomNetworkImage(
|
||||||
),
|
url: state.headUrl.value,
|
||||||
action: () async {
|
defaultUrl: 'images/controls_user.png',
|
||||||
_openModalBottomSheet();
|
width: 72.w,
|
||||||
},
|
height: 72.w),
|
||||||
)),
|
),
|
||||||
|
action: () async {
|
||||||
|
_openModalBottomSheet();
|
||||||
|
},
|
||||||
|
)),
|
||||||
Obx(() => CommonItem(
|
Obx(() => CommonItem(
|
||||||
leftTitel: TranslationLoader.lanKeys!.nickName!.tr,
|
leftTitel: TranslationLoader.lanKeys!.nickName!.tr,
|
||||||
rightTitle: state.mineInfoData.value.nickname != null ? state.mineInfoData.value.nickname! : "",
|
rightTitle: state.mineInfoData.value.nickname != null
|
||||||
|
? state.mineInfoData.value.nickname!
|
||||||
|
: "",
|
||||||
isHaveLine: true,
|
isHaveLine: true,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
action: () {
|
action: () {
|
||||||
Navigator.pushNamed(context, Routers.minePersonInfoEditNamePage,
|
Navigator.pushNamed(
|
||||||
|
context, Routers.minePersonInfoEditNamePage,
|
||||||
arguments: {'mineInfoData': state.mineInfoData.value})
|
arguments: {'mineInfoData': state.mineInfoData.value})
|
||||||
.then((value) => logic.getUserInfoRequest());
|
.then((value) => logic.getUserInfoRequest());
|
||||||
})),
|
})),
|
||||||
@ -69,13 +81,18 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
|
|||||||
action: () {
|
action: () {
|
||||||
//有手机号 则去修改手机号 否则去绑定新的手机号 isFrom:1 短信,2 邮箱
|
//有手机号 则去修改手机号 否则去绑定新的手机号 isFrom:1 短信,2 邮箱
|
||||||
if (state.mineInfoData.value.mobile!.isNotEmpty) {
|
if (state.mineInfoData.value.mobile!.isNotEmpty) {
|
||||||
Navigator.pushNamed(context, Routers.mineUnbindPhoneOrEmailPage,
|
Navigator.pushNamed(
|
||||||
arguments: {'mobile': state.mineInfoData.value.mobile!, 'isFrom': '1'})
|
context, Routers.mineUnbindPhoneOrEmailPage,
|
||||||
.then((value) => logic.getUserInfoRequest());
|
arguments: {
|
||||||
|
'mobile': state.mineInfoData.value.mobile!,
|
||||||
|
'isFrom': '1'
|
||||||
|
}).then((value) => logic.getUserInfoRequest());
|
||||||
} else {
|
} else {
|
||||||
Navigator.pushNamed(context, Routers.mineBindPhoneOrEmailPage,
|
Navigator.pushNamed(
|
||||||
arguments: {'mobile': state.mineInfoData.value.mobile!, 'isFrom': '1'})
|
context, Routers.mineBindPhoneOrEmailPage, arguments: {
|
||||||
.then((value) => logic.getUserInfoRequest());
|
'mobile': state.mineInfoData.value.mobile!,
|
||||||
|
'isFrom': '1'
|
||||||
|
}).then((value) => logic.getUserInfoRequest());
|
||||||
}
|
}
|
||||||
})),
|
})),
|
||||||
Obx(() => CommonItem(
|
Obx(() => CommonItem(
|
||||||
@ -88,13 +105,18 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
|
|||||||
action: () {
|
action: () {
|
||||||
//有邮箱 则去修改邮箱 否则去绑定新的邮箱 isFrom:1 短信,2 邮箱
|
//有邮箱 则去修改邮箱 否则去绑定新的邮箱 isFrom:1 短信,2 邮箱
|
||||||
if (state.mineInfoData.value.email!.isNotEmpty) {
|
if (state.mineInfoData.value.email!.isNotEmpty) {
|
||||||
Navigator.pushNamed(context, Routers.mineUnbindPhoneOrEmailPage,
|
Navigator.pushNamed(
|
||||||
arguments: {'isFrom': '2', 'email': state.mineInfoData.value.email!})
|
context, Routers.mineUnbindPhoneOrEmailPage,
|
||||||
.then((value) => logic.getUserInfoRequest());
|
arguments: {
|
||||||
|
'isFrom': '2',
|
||||||
|
'email': state.mineInfoData.value.email!
|
||||||
|
}).then((value) => logic.getUserInfoRequest());
|
||||||
} else {
|
} else {
|
||||||
Navigator.pushNamed(context, Routers.mineBindPhoneOrEmailPage,
|
Navigator.pushNamed(
|
||||||
arguments: {'isFrom': '2', 'email': state.mineInfoData.value.email!})
|
context, Routers.mineBindPhoneOrEmailPage, arguments: {
|
||||||
.then((value) => logic.getUserInfoRequest());
|
'isFrom': '2',
|
||||||
|
'email': state.mineInfoData.value.email!
|
||||||
|
}).then((value) => logic.getUserInfoRequest());
|
||||||
}
|
}
|
||||||
})),
|
})),
|
||||||
CommonItem(
|
CommonItem(
|
||||||
@ -103,26 +125,52 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
|
|||||||
isHaveLine: true,
|
isHaveLine: true,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
action: () {
|
action: () {
|
||||||
Navigator.pushNamed(context, Routers.minePersonInfoResetPasswordPage);
|
Navigator.pushNamed(
|
||||||
|
context, Routers.minePersonInfoResetPasswordPage);
|
||||||
}),
|
}),
|
||||||
Obx(() => CommonItem(
|
Obx(() => CommonItem(
|
||||||
leftTitel: TranslationLoader.lanKeys!.safetyProblem!.tr,
|
leftTitel: TranslationLoader.lanKeys!.safetyProblem!.tr,
|
||||||
rightTitle: state.mineInfoData.value.haveSafeAnswer == 0 ? "去设置" : "",
|
rightTitle:
|
||||||
|
state.mineInfoData.value.haveSafeAnswer == 0 ? "去设置" : "",
|
||||||
isHaveLine: true,
|
isHaveLine: true,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
action: () {
|
action: () {
|
||||||
if (state.mineInfoData.value.haveSafeAnswer == 0) {
|
if (state.mineInfoData.value.haveSafeAnswer == 0) {
|
||||||
Navigator.pushNamed(context, Routers.minePersonInfoSetSafetyProblemPage)
|
Navigator.pushNamed(
|
||||||
|
context, Routers.minePersonInfoSetSafetyProblemPage)
|
||||||
.then((value) => logic.getUserInfoRequest());
|
.then((value) => logic.getUserInfoRequest());
|
||||||
} else {
|
} else {
|
||||||
Navigator.pushNamed(context, Routers.minePersonInfoViewSafetyProblemPage);
|
Navigator.pushNamed(
|
||||||
|
context, Routers.minePersonInfoViewSafetyProblemPage);
|
||||||
}
|
}
|
||||||
})),
|
})),
|
||||||
Obx(() => CommonItem(
|
Obx(() => CommonItem(
|
||||||
leftTitel: TranslationLoader.lanKeys!.countryAndRegion!.tr,
|
leftTitel: TranslationLoader.lanKeys!.countryAndRegion!.tr,
|
||||||
rightTitle: state.mineInfoData.value.countryName != null ? state.mineInfoData.value.countryName! : "",
|
rightTitle: state.mineInfoData.value.countryName != null
|
||||||
isHaveLine: false,
|
? state.mineInfoData.value.countryName!
|
||||||
|
: "",
|
||||||
|
isHaveLine: true,
|
||||||
isHaveDirection: false)),
|
isHaveDirection: false)),
|
||||||
|
if (F.isLite == false && widget.showAbout)
|
||||||
|
CommonItem(
|
||||||
|
leftTitel: TranslationLoader.lanKeys!.valueAddedServices!.tr,
|
||||||
|
isHaveLine: true,
|
||||||
|
isHaveDirection: true,
|
||||||
|
action: () {
|
||||||
|
Get.back();
|
||||||
|
Get.toNamed(Routers.valueAddedServicesPage);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
if (widget.showAbout)
|
||||||
|
CommonItem(
|
||||||
|
leftTitel: TranslationLoader.lanKeys!.about!.tr,
|
||||||
|
isHaveLine: false,
|
||||||
|
isHaveDirection: true,
|
||||||
|
action: () {
|
||||||
|
Get.back();
|
||||||
|
Get.toNamed(Routers.aboutPage);
|
||||||
|
},
|
||||||
|
),
|
||||||
],
|
],
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@ -152,7 +200,8 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
|
|||||||
Future _openModalBottomSheet() async {
|
Future _openModalBottomSheet() async {
|
||||||
showModalBottomSheet(
|
showModalBottomSheet(
|
||||||
context: context,
|
context: context,
|
||||||
shape: RoundedRectangleBorder(borderRadius: BorderRadiusDirectional.circular(10)),
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadiusDirectional.circular(10)),
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
return AlertBottomWidget(
|
return AlertBottomWidget(
|
||||||
topTitle: '',
|
topTitle: '',
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:star_lock/mine/mine/starLockMine_page.dart';
|
import 'package:star_lock/mine/mine/starLockMine_page.dart';
|
||||||
@ -16,7 +15,7 @@ class NavPages extends StatefulWidget {
|
|||||||
class _NavPagesState extends State<NavPages> {
|
class _NavPagesState extends State<NavPages> {
|
||||||
int _currentIndex = 0;
|
int _currentIndex = 0;
|
||||||
final List<Widget> _listPage = [
|
final List<Widget> _listPage = [
|
||||||
const StarLockMainPage(),
|
StarLockMainPage(),
|
||||||
// StarLockMinePage(key: starLockMineKey),
|
// StarLockMinePage(key: starLockMineKey),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/flavors.dart';
|
import 'package:star_lock/flavors.dart';
|
||||||
import 'package:star_lock/login/login/starLock_login_page.dart';
|
import 'package:star_lock/login/login/starLock_login_page.dart';
|
||||||
|
import 'package:star_lock/main/lockMian/lockMain/xhj/lockMain_xhj_page.dart';
|
||||||
import 'package:star_lock/tools/appFirstEnterHandle.dart';
|
import 'package:star_lock/tools/appFirstEnterHandle.dart';
|
||||||
import 'package:star_lock/debug/debug_tool.dart';
|
import 'package:star_lock/debug/debug_tool.dart';
|
||||||
import 'package:star_lock/tools/storage.dart';
|
import 'package:star_lock/tools/storage.dart';
|
||||||
@ -42,7 +43,9 @@ class _StarLockApplicationState extends State<StarLockApplication> {
|
|||||||
} else if (snapshot.hasData) {
|
} else if (snapshot.hasData) {
|
||||||
if (snapshot.data!) {
|
if (snapshot.data!) {
|
||||||
// 如果用户已登录,返回主页面
|
// 如果用户已登录,返回主页面
|
||||||
return const StarLockMainPage();
|
return F.sw(
|
||||||
|
defaultCall: () => StarLockMainPage(),
|
||||||
|
xhjCall: () => const StarLockMainXHJPage());
|
||||||
} else {
|
} else {
|
||||||
// 如果用户未登录,返回登录页面
|
// 如果用户未登录,返回登录页面
|
||||||
return const StarLockLoginPage();
|
return const StarLockLoginPage();
|
||||||
|
|||||||
@ -145,8 +145,14 @@ class CallTalk {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//停止接收音频数据
|
void stopPlaySound() {
|
||||||
void finishPcmSound() {
|
FlutterPcmSound.pause();
|
||||||
|
FlutterPcmSound.clear();
|
||||||
|
FlutterPcmSound.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
//停止接收音视频数据
|
||||||
|
void finishAVData() {
|
||||||
// FlutterPcmSound.setup(sampleRate: 8000, channelCount: 1);
|
// FlutterPcmSound.setup(sampleRate: 8000, channelCount: 1);
|
||||||
FlutterPcmSound.pause();
|
FlutterPcmSound.pause();
|
||||||
FlutterPcmSound.clear();
|
FlutterPcmSound.clear();
|
||||||
|
|||||||
@ -203,7 +203,7 @@ class CommandUDPReciverManager {
|
|||||||
break;
|
break;
|
||||||
case 30:
|
case 30:
|
||||||
{
|
{
|
||||||
CallTalk().finishPcmSound();
|
CallTalk().finishAVData();
|
||||||
|
|
||||||
// 监视结束
|
// 监视结束
|
||||||
if ((data[7] & 0x3) == 1) {
|
if ((data[7] & 0x3) == 1) {
|
||||||
|
|||||||
@ -188,7 +188,7 @@ class UDPTalkClass {
|
|||||||
isBeCall = false;
|
isBeCall = false;
|
||||||
// isEndCall = true;
|
// isEndCall = true;
|
||||||
// LockMonitoringState().isClickHangUp.value = false;
|
// LockMonitoringState().isClickHangUp.value = false;
|
||||||
CallTalk().finishPcmSound();
|
CallTalk().finishAVData();
|
||||||
eventBus.fire(GetUDPStatusRefreshUI(UDPTalkClass().status));
|
eventBus.fire(GetUDPStatusRefreshUI(UDPTalkClass().status));
|
||||||
Get.back();
|
Get.back();
|
||||||
|
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|||||||
|
|
||||||
typedef BlockStrCallback = void Function(dynamic textStr);
|
typedef BlockStrCallback = void Function(dynamic textStr);
|
||||||
typedef BlockClickCallback = void Function();
|
typedef BlockClickCallback = void Function();
|
||||||
|
|
||||||
class LoginInput extends StatelessWidget {
|
class LoginInput extends StatelessWidget {
|
||||||
TextEditingController? controller;
|
TextEditingController? controller;
|
||||||
FocusNode? focusNode;
|
FocusNode? focusNode;
|
||||||
@ -24,6 +25,7 @@ class LoginInput extends StatelessWidget {
|
|||||||
Widget? rightSlot;
|
Widget? rightSlot;
|
||||||
BlockStrCallback? onchangeAction;
|
BlockStrCallback? onchangeAction;
|
||||||
BlockClickCallback? onTapAction;
|
BlockClickCallback? onTapAction;
|
||||||
|
|
||||||
LoginInput(
|
LoginInput(
|
||||||
{Key? key,
|
{Key? key,
|
||||||
required this.controller,
|
required this.controller,
|
||||||
@ -58,7 +60,7 @@ class LoginInput extends StatelessWidget {
|
|||||||
onChanged: onchangeAction,
|
onChanged: onchangeAction,
|
||||||
onTap: onTapAction,
|
onTap: onTapAction,
|
||||||
autofocus: false,
|
autofocus: false,
|
||||||
inputFormatters:inputFormatters,
|
inputFormatters: inputFormatters,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
//输入里面输入文字内边距设置
|
//输入里面输入文字内边距设置
|
||||||
contentPadding: const EdgeInsets.only(
|
contentPadding: const EdgeInsets.only(
|
||||||
@ -69,10 +71,12 @@ class LoginInput extends StatelessWidget {
|
|||||||
hintText: hintText,
|
hintText: hintText,
|
||||||
//不需要输入框下划线
|
//不需要输入框下划线
|
||||||
border: InputBorder.none,
|
border: InputBorder.none,
|
||||||
suffixIcon: isSuffixIcon! ? IconButton(
|
suffixIcon: (isSuffixIcon ?? false)
|
||||||
icon: const Icon(Icons.clear),
|
? IconButton(
|
||||||
onPressed: controller!.clear,
|
icon: const Icon(Icons.clear),
|
||||||
) : null,
|
onPressed: controller!.clear,
|
||||||
|
)
|
||||||
|
: null,
|
||||||
//左边图标设置
|
//左边图标设置
|
||||||
icon: isHaveLeftWidget == true
|
icon: isHaveLeftWidget == true
|
||||||
? leftWidget
|
? leftWidget
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user