发布版本星锁 1.0.0.02(preRelease-20231124),修改已知bug

This commit is contained in:
魏少阳 2023-11-24 14:23:36 +08:00
parent 60fe713ded
commit 3623b43797
106 changed files with 1437 additions and 582 deletions

BIN
.DS_Store vendored

Binary file not shown.

3
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

8
.idea/modules.xml generated Normal file
View File

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

259
.idea/starLock.iml generated Normal file
View File

@ -0,0 +1,259 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/star_lock/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/amap_flutter_map/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/amap_flutter_map/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/amap_flutter_map/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/amap_flutter_location/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/amap_flutter_location/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/amap_flutter_location/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/aj_captcha_flutter/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/aj_captcha_flutter/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/aj_captcha_flutter/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/aliyun_push/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/aliyun_push/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/aliyun_push/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/url_launcher_windows/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/url_launcher_windows/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/url_launcher_windows/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/network_info_plus/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/network_info_plus/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/network_info_plus/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/permission_handler_apple/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/permission_handler_apple/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/permission_handler_apple/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/image_picker_windows/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/image_picker_windows/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/image_picker_windows/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/aj_captcha_flutter/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/aj_captcha_flutter/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/aj_captcha_flutter/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/path_provider_foundation/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/path_provider_foundation/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/path_provider_foundation/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/url_launcher_ios/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/url_launcher_ios/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/url_launcher_ios/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/network_info_plus/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/network_info_plus/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/network_info_plus/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/permission_handler_windows/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/permission_handler_windows/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/permission_handler_windows/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/webview_flutter_wkwebview/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/webview_flutter_wkwebview/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/webview_flutter_wkwebview/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/image_picker_linux/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/image_picker_linux/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/image_picker_linux/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/package_info_plus/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/package_info_plus/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/package_info_plus/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/image_picker_ios/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/image_picker_ios/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/image_picker_ios/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/shared_preferences_foundation/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/shared_preferences_foundation/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/shared_preferences_foundation/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/device_info_plus/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/device_info_plus/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/device_info_plus/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/camera_avfoundation/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/camera_avfoundation/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/camera_avfoundation/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/permission_handler_windows/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/permission_handler_windows/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/permission_handler_windows/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/auto_orientation/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/auto_orientation/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/auto_orientation/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/amap_flutter_location/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/amap_flutter_location/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/amap_flutter_location/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/file_selector_windows/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/file_selector_windows/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/file_selector_windows/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/shared_preferences_windows/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/shared_preferences_windows/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/shared_preferences_windows/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/aj_captcha_flutter/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/aj_captcha_flutter/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/aj_captcha_flutter/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/permission_handler_apple/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/permission_handler_apple/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/permission_handler_apple/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/example/ios11/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/example/ios11/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/example/ios11/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/device_info_plus/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/device_info_plus/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/device_info_plus/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/network_info_plus/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/network_info_plus/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/network_info_plus/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/image_picker_windows/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/image_picker_windows/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/image_picker_windows/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/file_selector_windows/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/file_selector_windows/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/file_selector_windows/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/auto_orientation/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/auto_orientation/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/auto_orientation/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/package_info_plus/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/package_info_plus/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/package_info_plus/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/network_info_plus/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/network_info_plus/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/network_info_plus/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/aj_captcha_flutter/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/aj_captcha_flutter/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/aj_captcha_flutter/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/flutter_native_contact_picker/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/flutter_native_contact_picker/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/flutter_native_contact_picker/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/path_provider_foundation/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/path_provider_foundation/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/path_provider_foundation/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/amap_flutter_map/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/amap_flutter_map/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/amap_flutter_map/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/sqflite/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/sqflite/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/sqflite/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/package_info_plus/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/package_info_plus/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/package_info_plus/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/example/ios12/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/example/ios12/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/example/ios12/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/package_info_plus/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/package_info_plus/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/package_info_plus/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/device_info_plus/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/device_info_plus/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/device_info_plus/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/video_player_avfoundation/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/video_player_avfoundation/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/video_player_avfoundation/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/network_info_plus/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/network_info_plus/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/network_info_plus/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/image_picker_linux/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/image_picker_linux/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/image_picker_linux/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/device_info_plus/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/device_info_plus/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/device_info_plus/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/file_selector_linux/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/file_selector_linux/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/file_selector_linux/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/shared_preferences_foundation/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/shared_preferences_foundation/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/shared_preferences_foundation/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/shared_preferences_windows/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/shared_preferences_windows/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/shared_preferences_windows/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/aj_captcha_flutter/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/aj_captcha_flutter/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/aj_captcha_flutter/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/package_info_plus/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/package_info_plus/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/package_info_plus/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/reactive_ble_mobile/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/reactive_ble_mobile/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/reactive_ble_mobile/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/video_player_avfoundation/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/video_player_avfoundation/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/video_player_avfoundation/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/network_info_plus/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/network_info_plus/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/network_info_plus/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/image_picker_ios/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/image_picker_ios/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/image_picker_ios/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/shared_preferences_linux/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/shared_preferences_linux/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/shared_preferences_linux/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/fluttertoast/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/fluttertoast/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/fluttertoast/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/device_info_plus/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/device_info_plus/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/device_info_plus/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/flutter_native_contact_picker/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/flutter_native_contact_picker/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/flutter_native_contact_picker/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/fluttertoast/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/fluttertoast/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/fluttertoast/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/example/ios13/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/example/ios13/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/example/ios13/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/url_launcher_ios/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/url_launcher_ios/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/url_launcher_ios/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/file_selector_linux/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/file_selector_linux/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/file_selector_linux/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/url_launcher_windows/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/url_launcher_windows/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/windows/flutter/ephemeral/.plugin_symlinks/url_launcher_windows/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/example/shared/maps_example_dart/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/example/shared/maps_example_dart/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/google_maps_flutter_ios/example/shared/maps_example_dart/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/aj_captcha_flutter/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/aj_captcha_flutter/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/aj_captcha_flutter/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/camera_avfoundation/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/camera_avfoundation/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/camera_avfoundation/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/shared_preferences_linux/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/shared_preferences_linux/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/shared_preferences_linux/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/webview_flutter_wkwebview/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/webview_flutter_wkwebview/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/webview_flutter_wkwebview/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/package_info_plus/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/package_info_plus/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/package_info_plus/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/device_info_plus/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/device_info_plus/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/linux/flutter/ephemeral/.plugin_symlinks/device_info_plus/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/sqflite/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/sqflite/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/sqflite/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/aliyun_push/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/aliyun_push/example/build" />
<excludeFolder url="file://$MODULE_DIR$/star_lock/ios/.symlinks/plugins/aliyun_push/example/.dart_tool" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/vcs.xml generated Normal file
View File

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

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
android:src="@mipmap/ic_logo" />
</item>
</layer-list>

View File

@ -4,9 +4,9 @@
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
android:src="@mipmap/ic_logo" />
</item>
</layer-list>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 859 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 907 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 940 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 930 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

View File

@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
platform :ios, '11.0'
# platform :ios, '11.0'
#use_modular_headers!
use_frameworks! :linkage => :static
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.

214
star_lock/ios/Podfile.lock Normal file
View File

@ -0,0 +1,214 @@
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
- aliyun_push (0.0.1):
- AlicloudPush
- Flutter
- 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)
- auto_orientation (0.0.1):
- Flutter
- camera_avfoundation (0.0.1):
- Flutter
- device_info_plus (0.0.1):
- Flutter
- EMASRest (11.1.1.2)
- Flutter (1.0.0)
- flutter_native_contact_picker (0.0.1):
- Flutter
- fluttertoast (0.0.2):
- Flutter
- Toast
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
- google_maps_flutter_ios (0.0.1):
- Flutter
- GoogleMaps (< 8.0)
- GoogleMaps (5.2.0):
- GoogleMaps/Maps (= 5.2.0)
- GoogleMaps/Base (5.2.0)
- GoogleMaps/Maps (5.2.0):
- GoogleMaps/Base
- image_picker_ios (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.1.1):
- Flutter
- Protobuf (3.25.1)
- reactive_ble_mobile (0.0.1):
- Flutter
- Protobuf (~> 3.5)
- SwiftProtobuf (~> 1.0)
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
- sqflite (0.0.3):
- Flutter
- FMDB (>= 2.7.5)
- SwiftProtobuf (1.25.1)
- Toast (4.0.0)
- url_launcher_ios (0.0.1):
- Flutter
- video_player_avfoundation (0.0.1):
- Flutter
- webview_flutter_wkwebview (0.0.1):
- Flutter
DEPENDENCIES:
- aj_captcha_flutter (from `.symlinks/plugins/aj_captcha_flutter/ios`)
- AlicloudPush (~> 1.9.9)
- aliyun_push (from `.symlinks/plugins/aliyun_push/ios`)
- amap_flutter_location (from `.symlinks/plugins/amap_flutter_location/ios`)
- amap_flutter_map (from `.symlinks/plugins/amap_flutter_map/ios`)
- auto_orientation (from `.symlinks/plugins/auto_orientation/ios`)
- camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`)
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- Flutter (from `Flutter`)
- flutter_native_contact_picker (from `.symlinks/plugins/flutter_native_contact_picker/ios`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/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`)
- reactive_ble_mobile (from `.symlinks/plugins/reactive_ble_mobile/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/ios`)
- 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
- FMDB
- GoogleMaps
- Protobuf
- SwiftProtobuf
- Toast
EXTERNAL SOURCES:
aj_captcha_flutter:
:path: ".symlinks/plugins/aj_captcha_flutter/ios"
aliyun_push:
:path: ".symlinks/plugins/aliyun_push/ios"
amap_flutter_location:
:path: ".symlinks/plugins/amap_flutter_location/ios"
amap_flutter_map:
:path: ".symlinks/plugins/amap_flutter_map/ios"
auto_orientation:
:path: ".symlinks/plugins/auto_orientation/ios"
camera_avfoundation:
:path: ".symlinks/plugins/camera_avfoundation/ios"
device_info_plus:
:path: ".symlinks/plugins/device_info_plus/ios"
Flutter:
:path: Flutter
flutter_native_contact_picker:
:path: ".symlinks/plugins/flutter_native_contact_picker/ios"
fluttertoast:
:path: ".symlinks/plugins/fluttertoast/ios"
google_maps_flutter_ios:
:path: ".symlinks/plugins/google_maps_flutter_ios/ios"
image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/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"
reactive_ble_mobile:
:path: ".symlinks/plugins/reactive_ble_mobile/ios"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
video_player_avfoundation:
:path: ".symlinks/plugins/video_player_avfoundation/ios"
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
aliyun_push: e92c2a8ca91b134bfabf7631816cce5f36e04a44
AMap3DMap: dce25dd3e51e6b92109caa7d0c97fc6055830fb3
amap_flutter_location: 44ff5beb64f42e0bf5feb402fe299dac0013af6f
amap_flutter_map: 979e54d227cedac6c7504a2151bfbf3bcf96760a
AMapFoundation: 9885c48fc3a78fdfb84a0299a2293e56ea3c9fec
AMapLocation: 5248aec2455ebb5d104b367813c946430a2ee033
auto_orientation: 102ed811a5938d52c86520ddd7ecd3a126b5d39d
camera_avfoundation: 3125e8cd1a4387f6f31c6c63abb8a55892a9eeeb
device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
EMASRest: 8df6f87836767a9415ad5cc4af739bc9d215b475
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
flutter_native_contact_picker: bd430ba0fbf82768bb50c2c52a69a65759a8f907
fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
google_maps_flutter_ios: abdac20d6ce8931f6ebc5f46616df241bfaa2cfd
GoogleMaps: 025272d5876d3b32604e5c080dc25eaf68764693
image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5
network_info_plus: 122280582fe2fa2bbb8681a4269745cd5c3a9b32
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6
Protobuf: d94761c33f1239c0a43a0817ca1a5f7f7c900241
reactive_ble_mobile: 9ce6723d37ccf701dbffd202d487f23f5de03b4c
shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126
sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a
SwiftProtobuf: 69f02cd54fb03201c5e6bf8b76f687c5ef7541a3
Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4
video_player_avfoundation: 81e49bb3d9fb63dccf9fa0f6d877dc3ddbeac126
webview_flutter_wkwebview: 2e2d318f21a5e036e2c3f26171342e95908bd60a
PODFILE CHECKSUM: adf6d8caf5faa9ea4ee2a2ea37f5aea37a6520d7
COCOAPODS: 1.14.3

View File

@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
3364C3F42B0C902100AA5ABC /* lcokStarMain.png in Resources */ = {isa = PBXBuildFile; fileRef = 3364C3F32B0C902100AA5ABC /* lcokStarMain.png */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
3EF1E85D6F1EE0C0DCF8449F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09D8B2FA2B26BA5BFF31AB2A /* Pods_Runner.framework */; };
8297E4102AE75AC500E886FA /* XSFlutterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8297E40E2AE75AC500E886FA /* XSFlutterManager.m */; };
@ -143,6 +144,7 @@
09D8B2FA2B26BA5BFF31AB2A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
3364C3F32B0C902100AA5ABC /* lcokStarMain.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lcokStarMain.png; sourceTree = "<group>"; };
33BF41252A96174D009D92E2 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
@ -604,6 +606,7 @@
97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup;
children = (
3364C3F32B0C902100AA5ABC /* lcokStarMain.png */,
82C026552AEB6C050011FE6A /* img */,
82C026532AE8AC6D0011FE6A /* AliyunEmasServices-Info.plist */,
8297E4992AE7974700E886FA /* AppDelegate.h */,
@ -733,6 +736,7 @@
82C026D72AEB6C050011FE6A /* mic.png in Resources */,
82C026C32AEB6C050011FE6A /* call_menu_on.png in Resources */,
82C026B02AEB6C050011FE6A /* call_call_on.png in Resources */,
3364C3F42B0C902100AA5ABC /* lcokStarMain.png in Resources */,
82C026C82AEB6C050011FE6A /* hf.png in Resources */,
82C026BE2AEB6C050011FE6A /* vcontacts2.png in Resources */,
82C026AC2AEB6C050011FE6A /* spk.png in Resources */,
@ -1102,8 +1106,12 @@
PRODUCT_BUNDLE_IDENTIFIER = "cn.star-lock.starLock";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = Profile;
@ -1347,9 +1355,13 @@
PRODUCT_BUNDLE_IDENTIFIER = "cn.star-lock.starLock";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
@ -1486,8 +1498,12 @@
PRODUCT_BUNDLE_IDENTIFIER = "cn.star-lock.starLock";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;

View File

@ -37,12 +37,12 @@
[self.window makeKeyAndVisible];
//
[self initSound];
_udp = [[UdpHelper alloc] init];
[_udp Open];
_talk = [[talk_Class alloc] init];
//[self initSound];
//_udp = [[UdpHelper alloc] init];
//[_udp Open];
//_talk = [[talk_Class alloc] init];
sysinfo.launchtime = [Sformat timestamp];
//sysinfo.launchtime = [Sformat timestamp];
return YES;

View File

@ -108,7 +108,7 @@
"size" : "83.5x83.5"
},
{
"filename" : "Icon-App-1024x1024@1x.png",
"filename" : "icon-1024.png",
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -2,22 +2,19 @@
"images" : [
{
"idiom" : "universal",
"filename" : "LaunchImage.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 B

View File

@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
@ -14,24 +16,28 @@
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" image="lcokStarMain.png" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="akv-M9-cg9"/>
<constraint firstAttribute="bottom" secondItem="YRO-k0-Ey4" secondAttribute="bottom" id="dOX-RK-oMR"/>
<constraint firstAttribute="trailing" secondItem="YRO-k0-Ey4" secondAttribute="trailing" id="ggK-0n-yNj"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="hJn-S1-TNY"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
<point key="canvasLocation" x="80.916030534351137" y="264.08450704225356"/>
</scene>
</scenes>
<resources>
<image name="LaunchImage" width="168" height="185"/>
<image name="lcokStarMain.png" width="750" height="1624"/>
</resources>
</document>

View File

@ -3,7 +3,7 @@
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21679"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21678"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

@ -6,22 +6,15 @@ import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/ma
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiver_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/addFamily/addFamily_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/catEyeSet_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/catEyeWorkMode/catEyeWorkMode_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/coerceFingerprint/coerceFingerprint_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/coerceFingerprintList/coerceFingerprintList_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/coerceOpenDoor/coerceOpenDoor_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/catEyeSet/catEyeSet_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/faceUnlock/faceUnlock_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/familyDetails/familyDetails_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/lockUser/lockUser_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/lowBatteryReminder/lowBatteryReminder_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/motorPower/motorPower_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/msgNotification/msgNotification_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/msgNotification/msgNotification/msgNotification_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/notificationMode/notificationMode_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/openDoorDirection/openDoorDirection_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/openDoorNotify/openDoorNotify_page.dart';
import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_main_page.dart';
import 'package:star_lock/main/lockDetail/lcokSet/nDaysUnopened/nDaysUnopened_page.dart';
import 'package:star_lock/main/lockDetail/otherTypeKey/addFace/addFace_page.dart';
import 'package:star_lock/mine/about/webviewShow_page.dart';
import 'package:star_lock/mine/mine/safeVerify/safeVerify_page.dart';
@ -63,6 +56,7 @@ import 'main/lockDetail/lcokSet/basicInformation/editLockName/editLockName_page.
import 'main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_page.dart';
import 'main/lockDetail/lcokSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_page.dart';
import 'main/lockDetail/lcokSet/burglarAlarm/burglarAlarm_page.dart';
import 'main/lockDetail/lcokSet/catEyeSet/catEyeWorkMode/catEyeWorkMode_page.dart';
import 'main/lockDetail/lcokSet/checkInCreatCompany/checkInCreatCompany_page.dart';
import 'main/lockDetail/lcokSet/configuringWifi/configuringWifi_page.dart';
import 'main/lockDetail/lcokSet/diagnose/diagnose_page.dart';
@ -75,6 +69,12 @@ import 'main/lockDetail/lcokSet/lockSet/lockSet_page.dart';
import 'main/lockDetail/lcokSet/lockSoundSet/lockSoundSet_page.dart';
import 'main/lockDetail/lcokSet/lockTime/lockTime_page.dart';
import 'main/lockDetail/lcokSet/markedHouseState/markedHouseState_page.dart';
import 'main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_page.dart';
import 'main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceFingerprintList/coerceFingerprintList_page.dart';
import 'main/lockDetail/lcokSet/msgNotification/coerceOpenDoor/coerceOpenDoor/coerceOpenDoor_page.dart';
import 'main/lockDetail/lcokSet/msgNotification/lowBatteryReminder/lowBatteryReminder_page.dart';
import 'main/lockDetail/lcokSet/msgNotification/nDaysUnopened/nDaysUnopened_page.dart';
import 'main/lockDetail/lcokSet/msgNotification/openDoorNotify/openDoorNotify_page.dart';
import 'main/lockDetail/lcokSet/normallyOpenMode/normallyOpenMode_page.dart';
import 'main/lockDetail/lcokSet/remoteUnlocking/remoteUnlocking_page.dart';
import 'main/lockDetail/lcokSet/resetButton/resetButton_page.dart';

View File

@ -120,6 +120,10 @@ class BlueManage{
}
});
}
if(deviceConnectionState == DeviceConnectionState.connected){
return;
}
_flutterReactiveBle!.connectToDevice(id: connectDeviceMacAddress, connectionTimeout: const Duration(seconds: 100000)).listen((connectionStateUpdate) async {
//
deviceConnectionState = connectionStateUpdate.connectionState;
@ -214,12 +218,15 @@ class BlueManage{
}
//
Future<void> judgeReconnect(String deviceMAC, String deviceName, ConnectStateCallBack? connectStateCallBack, {bool isShowLoading = true}) async {
Future<void> judgeReconnect(String deviceMAC, String deviceName, ConnectStateCallBack? connectStateCallBack, {bool isShowLoading = true, bool isShowToast = true}) async {
// print("11111111$deviceConnectionState");
if(deviceMAC.isEmpty){
Toast.show(msg: "未连接到设备,请确保在设备附近,设备未被连接,设备已打开");
// return;
if(isShowToast){
if(deviceMAC.isEmpty){
Toast.show(msg: "未连接到设备,请确保在设备附近,设备未被连接,设备已打开");
// return;
}
}
if(deviceConnectionState == DeviceConnectionState.connected){
// print("2222222:$deviceConnectionState");
if(isShowLoading){
@ -303,7 +310,7 @@ class BlueManage{
//
//
dataLen = data[8] * 256 + data[9];
print("dataLen1111:$dataLen getDataLength:${data.length}");
// print("dataLen1111:$dataLen getDataLength:${data.length}");
if(dataLen + 12 > data.length){
//
allData.addAll(data);
@ -318,7 +325,7 @@ class BlueManage{
//
allData.addAll(data);
// var len = allData[8] * 256 + allData[9];
print("dataLen222:$dataLen");
// print("dataLen222:$dataLen");
if(dataLen <= (allData.length - 14)){
//
CommandReciverManager.appDataReceive(allData);

View File

@ -13,6 +13,7 @@ class OpenLockCommand extends SenderProtocol {
String? userID;
int? openMode;
int? openTime;
String? onlineToken;
List<int>? token;
int? needAuthor;
List<int>? signKey;
@ -22,6 +23,7 @@ class OpenLockCommand extends SenderProtocol {
this.userID,
this.openMode,
this.openTime,
this.onlineToken,
this.token,
this.needAuthor,
this.signKey,
@ -102,6 +104,15 @@ class OpenLockCommand extends SenderProtocol {
data.addAll(authCode.bytes);
}
//onlineToken 16
print("onlineToken:$onlineToken");
if(onlineToken!.isNotEmpty){
int onlineTokenLength = utf8.encode(onlineToken!).length;
print("openDoorOnlineToken:${utf8.encode(onlineToken!)} utf8.encode(onlineToken!).length:${utf8.encode(onlineToken!).length}");
data.addAll(utf8.encode(onlineToken!));
data = getFixedLengthList(data, 16 - onlineTokenLength);
}
if ((data.length % 16) != 0) {
int add = (16 - data.length % 16);
for (int i = 0; i < add; i++) {

View File

@ -8,7 +8,7 @@ import '../io_sender.dart';
import '../io_type.dart';
import 'package:crypto/crypto.dart' as crypto;
//TODO:
//TODO:( )
/*
pwd 6 0UseCountLimit 0pwd 6 0UseCountLimit 0pwdNo 255userId DeleteAll !@#
**/

View File

@ -161,6 +161,7 @@ class IoSenderManage {
String? userID,
int? openMode,
int? openTime,
String? onlineToken,
List<int>? token,
int? needAuthor,
List<int>? signKey,
@ -172,6 +173,7 @@ class IoSenderManage {
userID: userID,
openMode: openMode,
openTime: openTime,
onlineToken: onlineToken,
token: token,
needAuthor: needAuthor,
signKey: signKey,

View File

@ -194,24 +194,6 @@ class _AuthorizedAdminDetailPageState extends State<AuthorizedAdminDetailPage> {
hintText: "请输入要修改的名字",
//线
border: InputBorder.none,
//
// icon: Padding(
// padding: EdgeInsets.only(top:30.w, bottom: 20.w, right: 20.w, left: 20.w),
// child: Image.asset('images/main/icon_main_search.png', width: 40.w, height: 40.w,),
// ),
// //
// suffixIcon: GestureDetector(
// onTap: () {
// //addPostFrameCallback是 StatefulWidge
// // SchedulerBinding.instance.addPostFrameCallback((_) {
// // _controller.text = "";
// // });
// },
// child: Padding(
// padding: EdgeInsets.all(8),
// child: Image.asset('images/main/icon_main_cell.png', width: 50.w, height: 50.w,),
// ),
// )
),
),
)

View File

@ -79,7 +79,7 @@ class _SendElectronicKeyManageTabbarState
return Tab(
// text: item.title,
child: Container(
width: 1.sw / 8,
// width: 1.sw / 8,
margin: EdgeInsets.all(10.w),
// color: Colors.red,
child: Text(

View File

@ -138,7 +138,7 @@ class AutomaticBlockingLogic extends BaseGetXController{
privateKey: getPrivateKeyList
);
}
}, isShowLoading: true);
});
}
// ()

View File

@ -36,7 +36,7 @@ class AdminOpenLockPasswordLogic extends BaseGetXController{
privateKey: getPrivateKeyList
);
}
}, isShowLoading: true);
});
}
@override

View File

@ -133,7 +133,7 @@ class BurglarAlarmLogic extends BaseGetXController{
privateKey: getPrivateKeyList
);
}
}, isShowLoading: true);
});
}
// ()

View File

@ -1,6 +1,7 @@
import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/catEyeSet_state.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'catEyeSet_state.dart';
class CatEyeSetLogic extends BaseGetXController {
final CatEyeSetState state = CatEyeSetState();
}

View File

@ -1,13 +1,14 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart';
import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/catEyeSet_logic.dart';
import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/catEyeSet/catEyeSet_logic.dart';
import 'package:star_lock/tools/commonItem.dart';
import 'package:star_lock/tools/custom_bottom_sheet.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/titleAppBar.dart';
import '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/titleAppBar.dart';
class CatEyeSetPage extends StatefulWidget {
const CatEyeSetPage({Key? key}) : super(key: key);
@ -23,7 +24,7 @@ class _CatEyeSetPageState extends State<CatEyeSetPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
barTitle: '猫眼设置',
haveBack: true,
@ -33,6 +34,7 @@ class _CatEyeSetPageState extends State<CatEyeSetPage> {
CommonItem(
leftTitel: '猫眼工作模式',
rightTitle: "",
allHeight: 70.h,
isHaveLine: true,
isHaveDirection: true,
action: () {

View File

@ -1,8 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/titleAppBar.dart';
import '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/titleAppBar.dart';
class CatEyeWorkModePage extends StatefulWidget {
const CatEyeWorkModePage({Key? key}) : super(key: key);

View File

@ -172,7 +172,7 @@ class ConfiguringWifiLogic extends BaseGetXController{
privateKey: getPrivateKeyList,
);
}
});
}, isShowLoading: true);
}
final _networkInfo = NetworkInfo();

View File

@ -33,6 +33,7 @@ class _FaceUnlockPageState extends State<FaceUnlockPage> {
CommonItem(
leftTitel: '面容开锁',
rightTitle: "",
allHeight: 70.h,
isHaveLine: true,
isHaveRightWidget: true,
rightWidget:

View File

@ -202,7 +202,13 @@ class LockSetLogic extends BaseGetXController {
//
print("${reply.commandType}数据解析成功");
// Toast.show(msg: "操作成功");featureEnable = state.isOpenStayWarn.value == 1 ? 0 : 1;
if(state.settingUpSupportFeatures == 56){
if(state.settingUpSupportFeatures == 55){
// APP开锁时是否需联网
state.isOpenLockNeedOnline.value = state.isOpenLockNeedOnline.value == 1 ? 0 : 1;
state.lockSetInfoData.value.lockSettingInfo!.appUnlockOnline = state.isOpenLockNeedOnline.value;
setLockSetOpenLockNeedOnline();
eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(0, state.lockSetInfoData.value.lockSettingInfo!.appUnlockOnline!));
}else if(state.settingUpSupportFeatures == 56){
// 广
state.isOpenBlueBroadcast.value = state.isOpenBlueBroadcast.value == 1 ? 0 : 1;
state.lockSetInfoData.value.lockSettingInfo!.bluetoothBroadcast = state.isOpenBlueBroadcast.value;
@ -215,7 +221,6 @@ class LockSetLogic extends BaseGetXController {
state.isOpenExceptionWarnings.value = state.isOpenExceptionWarnings.value == 1 ? 0 : 1;
state.lockSetInfoData.value.lockSettingInfo!.abnormalWarn = state.isOpenExceptionWarnings.value;
}
print("isOpenBlueBroadcast111:${state.isOpenBlueBroadcast.value}");
break;
case 0x06:
@ -337,7 +342,10 @@ class LockSetLogic extends BaseGetXController {
state.settingUpSupportFeatures = type;
var featureEnable = 0;
if(type == 56){
if(type == 55){
// APP开锁时是否需联网
featureEnable = state.isOpenLockNeedOnline.value == 1 ? 0 : 1;
}else if(type == 56){
// 广
featureEnable = state.isOpenBlueBroadcast.value == 1 ? 0 : 1;
}else if(type == 61){
@ -371,9 +379,11 @@ class LockSetLogic extends BaseGetXController {
state.lockFeature.value = state.lockSetInfoData.value.lockFeature!;
state.lockStatus.value = state.lockSetInfoData.value.lockStatus!;
state.isAttendance.value = state.lockSettingInfo.value.attendance!;
state.isOpenLockNeedOnline.value = state.lockSettingInfo.value.appUnlockOnline!;
state.isOpenBlueBroadcast.value = state.lockSettingInfo.value.bluetoothBroadcast!;
state.isOpenExceptionWarnings.value = state.lockSettingInfo.value.bluetoothBroadcast!;
// await _readSupportFunctionsNoParameters(56);
// _readSupportFunctionsNoParameters(62);
}
@ -406,7 +416,7 @@ class LockSetLogic extends BaseGetXController {
password: state.passwordTF.text,
);
if (entity.errorCode!.codeIsSuccessful) {
// deletLockInfoData();
deletLockInfoData();
blockDeletNumberCheckPasswordCallback();
// if(state.currentDeviceUUid.value.isEmpty){
@ -459,6 +469,8 @@ class LockSetLogic extends BaseGetXController {
state.isAttendance.value = (state.isAttendance.value == 1 ? 0 : 1);
state.lockSettingInfo.value.attendance = state.isAttendance.value;
eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(0, state.lockSettingInfo.value.attendance!));
print("state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}");
Toast.show(msg: "设置成功");
}
@ -479,6 +491,24 @@ class LockSetLogic extends BaseGetXController {
} else {}
}
//
void setLockSetOpenLockNeedOnline() async {
var entity = await ApiRepository.to.setOpenLockNeedOnlineData(
lockId: state.lockSetInfoData.value.lockId!,
appUnlockOnline:state.isOpenLockNeedOnline.value == 1 ? 0 : 1,
);
if(entity.errorCode!.codeIsSuccessful){
eventBus.fire(RefreshLockListInfoDataEvent());
state.isAttendance.value = (state.isAttendance.value == 1 ? 0 : 1);
state.lockSettingInfo.value.attendance = state.isAttendance.value;
eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(0, state.lockSettingInfo.value.attendance!));
print("state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}");
Toast.show(msg: "设置成功");
}
}
//
StreamSubscription? _passCurrentLockInformationEvent;
void initLoadDataAction(BlockSetStateCallback blockSetStateCallback) {

View File

@ -414,6 +414,19 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
isHaveRightWidget: true,
rightWidget: _lockRemindSwitch())),
),
// APP开锁时是否需联网
Obx(() =>
Visibility(
visible: state.lockFeature.value.appUnlockOnline == 1 ? true : false,
child:
CommonItem(
leftTitel: "开锁时是否需联网",
rightTitle: "",
isHaveLine: false,
isHaveRightWidget: true,
rightWidget: _openLockNeedOnlineSwitch()),
),
),
SizedBox(height: 10.h),
// wifi配网
Obx(
@ -533,6 +546,7 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
style: TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor));
}
//
CupertinoSwitch _openCheckInSwitch() {
// print("111111state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}");
return CupertinoSwitch(
@ -552,6 +566,7 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
);
}
//
CupertinoSwitch _lockRemindSwitch() {
return CupertinoSwitch(
activeColor: CupertinoColors.activeBlue,
@ -566,6 +581,21 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
);
}
// APP开锁时是否需联网
CupertinoSwitch _openLockNeedOnlineSwitch() {
return CupertinoSwitch(
activeColor: CupertinoColors.activeBlue,
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: (state.isOpenLockNeedOnline.value) == 1 ? true : false,
onChanged: (value) {
setState(() {
logic.sendBurglarAlarm(55);
});
},
);
}
//
CupertinoSwitch _lockExceptionWarningsSwitch() {
print("isOpenBlueBroadcast222:${state.isOpenExceptionWarnings.value}");

View File

@ -13,6 +13,7 @@ class LockSetState {
var isAttendance = 0.obs;//
var currentDeviceUUid = "".obs;// uuid
var isOpenLockNeedOnline = 0.obs;// APP开锁时是否需联网
var isLockPickingReminder = 0.obs;//
var isOpenBlueBroadcast = 0.obs;// 广

View File

@ -141,7 +141,7 @@ class LockSoundSetLogic extends BaseGetXController {
privateKey: getPrivateKeyList
);
}
}, isShowLoading: true);
});
}
// ()

View File

@ -31,58 +31,58 @@ class LockTimeLogic extends BaseGetXController{
}
//
if(reply is GetLockStatuReply) {
_replyGetLockStatus(reply);
}
// if(reply is GetLockStatuReply) {
// _replyGetLockStatus(reply);
// }
});
}
//
Future<void> _replyGetLockStatus(Reply reply) async {
int status = reply.data[2];
switch(status){
case 0x00:
//
print("${reply.commandType}数据解析成功");
//
var lockTime = reply.data.sublist(60, 64);
int value = (
(0xff & lockTime[(0)]) << 24 |
(0xff & lockTime[1]) << 16 |
(0xff & lockTime[2]) << 8 |
(0xFF & lockTime[3]));
String dataEime = DateTool().dateToYMDHNSString("$value");
state.dateTime.value = dataEime;
// String dataEime = DateTool().dateToYMDHNSString("${value}");
// state.dateTime.value = dataEime;
print("lockTime:$lockTime value:$value dataEime:$dataEime");
break;
case 0x06:
//
print("${reply.commandType}需要鉴权");
break;
case 0x07:
//
print("${reply.commandType}用户无权限");
break;
case 0x09:
//
print("${reply.commandType}权限校验错误");
break;
default:
//
print("${reply.commandType}失败");
break;
}
}
// Future<void> _replyGetLockStatus(Reply reply) async {
// int status = reply.data[2];
// switch(status){
// case 0x00:
// //
// print("${reply.commandType}数据解析成功");
//
// //
// var lockTime = reply.data.sublist(60, 64);
//
// int value = (
// (0xff & lockTime[(0)]) << 24 |
// (0xff & lockTime[1]) << 16 |
// (0xff & lockTime[2]) << 8 |
// (0xFF & lockTime[3]));
//
// String dataEime = DateTool().dateToYMDHNSString("$value");
// state.dateTime.value = dataEime;
//
// // String dataEime = DateTool().dateToYMDHNSString("${value}");
// // state.dateTime.value = dataEime;
// print("lockTime:$lockTime value:$value dataEime:$dataEime");
// break;
// case 0x06:
// //
// print("${reply.commandType}需要鉴权");
//
// break;
// case 0x07:
// //
// print("${reply.commandType}用户无权限");
//
// break;
// case 0x09:
// //
// print("${reply.commandType}权限校验错误");
//
// break;
// default:
// //
// print("${reply.commandType}失败");
//
// break;
// }
// }
//
Future<void> _replyTiming(Reply reply) async {
@ -129,20 +129,20 @@ class LockTimeLogic extends BaseGetXController{
}
//
Future<void> _getLockStatus() async {
//
BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, (DeviceConnectionState state) async {
if (state == DeviceConnectionState.connected) {
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
IoSenderManage.senderGetLockStatu(
lockID:BlueManage().connectDeviceName,
userID:await Storage.getUid(),
privateKey:getPrivateKeyList,
);
}
}, isShowLoading: false);
}
// Future<void> _getLockStatus() async {
// //
// BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, (DeviceConnectionState state) async {
// if (state == DeviceConnectionState.connected) {
// var privateKey = await Storage.getStringList(saveBluePrivateKey);
// List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
// IoSenderManage.senderGetLockStatu(
// lockID:BlueManage().connectDeviceName,
// userID:await Storage.getUid(),
// privateKey:getPrivateKeyList,
// );
// }
// }, isShowLoading: false);
// }
//
Future<void> sendTiming() async {

View File

@ -132,7 +132,7 @@ class MotorPowerLogic extends BaseGetXController {
privateKey: getPrivateKeyList
);
}
}, isShowLoading: true);
});
}
// ()

View File

@ -5,8 +5,8 @@ import 'package:star_lock/appRouters.dart';
import 'package:star_lock/tools/commonItem.dart';
import 'package:star_lock/tools/submitBtn.dart';
import '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/titleAppBar.dart';
import '../../../../../../app_settings/app_colors.dart';
import '../../../../../../tools/titleAppBar.dart';
class CoerceFingerprintPage extends StatefulWidget {
const CoerceFingerprintPage({Key? key}) : super(key: key);

View File

@ -2,10 +2,11 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/lcokSet/lockUser/lockUser_logic.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/submitBtn.dart';
import '../../../../tools/titleAppBar.dart';
import '../../../../translations/trans_lib.dart';
import '../../../../../../app_settings/app_colors.dart';
import '../../../../../../tools/submitBtn.dart';
import '../../../../../../tools/titleAppBar.dart';
import '../../../../../../translations/trans_lib.dart';
class CoerceFingerprintListPage extends StatefulWidget {
const CoerceFingerprintListPage({Key? key}) : super(key: key);

View File

@ -1,6 +1,7 @@
import 'package:star_lock/main/lockDetail/lcokSet/coerceOpenDoor/coerceOpenDoor_state.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'coerceOpenDoor_state.dart';
class CoerceOpenDoorLogic extends BaseGetXController {
final CoerceOpenDoorState state = CoerceOpenDoorState();
}

View File

@ -2,10 +2,11 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart';
import 'package:star_lock/main/lockDetail/lcokSet/coerceOpenDoor/coerceOpenDoor_logic.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/submitBtn.dart';
import '../../../../tools/titleAppBar.dart';
import '../../../../../../app_settings/app_colors.dart';
import '../../../../../../tools/submitBtn.dart';
import '../../../../../../tools/titleAppBar.dart';
import 'coerceOpenDoor_logic.dart';
class CoerceOpenDoorPage extends StatefulWidget {
const CoerceOpenDoorPage({Key? key}) : super(key: key);

View File

@ -1,6 +1,7 @@
import 'package:star_lock/main/lockDetail/lcokSet/lowBatteryReminder/lowBatteryReminder_state.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'lowBatteryReminder_state.dart';
class LowBatteryReminderLogic extends BaseGetXController {
LowBatteryReminderState state = LowBatteryReminderState();
}

View File

@ -3,12 +3,12 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart';
import 'package:star_lock/main/lockDetail/lcokSet/lowBatteryReminder/lowBatteryReminder_logic.dart';
import 'package:star_lock/tools/commonItem.dart';
import 'package:star_lock/tools/submitBtn.dart';
import '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/titleAppBar.dart';
import 'lowBatteryReminder_logic.dart';
class LowBatteryReminderPage extends StatefulWidget {
const LowBatteryReminderPage({Key? key}) : super(key: key);

View File

@ -1,5 +1,6 @@
import 'package:star_lock/main/lockDetail/lcokSet/msgNotification/msgNotification_state.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'msgNotification_state.dart';
class MsgNotificationLogic extends BaseGetXController {
final MsgNotificationState state = MsgNotificationState();

View File

@ -3,11 +3,11 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart';
import 'package:star_lock/main/lockDetail/lcokSet/msgNotification/msgNotification_logic.dart';
import 'package:star_lock/main/lockDetail/lcokSet/msgNotification/msgNotification/msgNotification_logic.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/commonItem.dart';
import '../../../../tools/titleAppBar.dart';
import '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/commonItem.dart';
import '../../../../../tools/titleAppBar.dart';
class MsgNotificationPage extends StatefulWidget {
const MsgNotificationPage({Key? key}) : super(key: key);
@ -38,7 +38,7 @@ class _MsgNotificationPageState extends State<MsgNotificationPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
barTitle: '消息提醒',
haveBack: true,
@ -51,31 +51,33 @@ class _MsgNotificationPageState extends State<MsgNotificationPage> {
Widget _buildMainItem() {
return Column(
children: [
Container(
alignment: Alignment.centerLeft,
margin: EdgeInsets.only(left: 40.w, top: 40.h, bottom: 30.h),
child: Text(
'门锁通知',
style:
TextStyle(color: AppColors.msgNoticeTextColor, fontSize: 24.sp),
),
),
// Container(
// alignment: Alignment.centerLeft,
// margin: EdgeInsets.only(left: 40.w, top: 20.h, bottom: 20.h),
// child: Text(
// '门锁通知',
// style: TextStyle(color: Colors.black, fontSize: 26.sp, fontWeight: FontWeight.w500),
// ),
// ),
// Divider(
// color: AppColors.greyLineColor,
// indent: 20.w,
// endIndent: 20.w,
// height: 1,
// ),
CommonItem(
leftTitel: '开门通知',
rightTitle: "已启用",
isHaveLine: false,
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.toNamed(Routers.openDoorNotifyPage);
},
),
SizedBox(
height: 20.h,
),
CommonItem(
leftTitel: 'N天未开门',
rightTitle: "已启用",
isHaveLine: false,
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.toNamed(Routers.nDaysUnopenedPage);
@ -91,40 +93,28 @@ class _MsgNotificationPageState extends State<MsgNotificationPage> {
// isHaveRightWidget: true,
// rightWidget:
// SizedBox(width: 60.w, height: 50.h, child: _switch(1)))),
SizedBox(
height: 20.h,
),
Obx(() => CommonItem(
leftTitel: '门未关好',
rightTitle: "",
isHaveLine: false,
isHaveLine: true,
isHaveRightWidget: true,
rightWidget:
SizedBox(width: 60.w, height: 50.h, child: _switch(2)))),
SizedBox(
height: 20.h,
),
CommonItem(
leftTitel: '防拆报警',
rightTitle: "已启用",
isHaveLine: false,
isHaveLine: true,
isHaveDirection: true,
),
SizedBox(
height: 20.h,
),
CommonItem(
leftTitel: '低电量提醒',
rightTitle: "已启用",
isHaveLine: false,
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.toNamed(Routers.lowBatteryReminderPage);
},
),
SizedBox(
height: 20.h,
),
CommonItem(
leftTitel: '胁迫开门',
rightTitle: "",
@ -134,17 +124,16 @@ class _MsgNotificationPageState extends State<MsgNotificationPage> {
Get.toNamed(Routers.coerceOpenDoorPage);
},
),
// Container(
// alignment: Alignment.centerLeft,
// margin: EdgeInsets.only(left: 40.w, top: 20.h, bottom: 20.h),
// child: Text(
// '门铃通知',
// style: TextStyle(color: Colors.black, fontSize: 26.sp, fontWeight: FontWeight.w500),
// ),
// ),
SizedBox(
height: 30.h,
),
Container(
alignment: Alignment.centerLeft,
margin: EdgeInsets.only(left: 40.w, top: 40.h, bottom: 30.h),
child: Text(
'门铃通知',
style:
TextStyle(color: AppColors.msgNoticeTextColor, fontSize: 24.sp),
),
height: 10.h,
),
Obx(() => CommonItem(
leftTitel: '有人按门铃',
@ -153,22 +142,21 @@ class _MsgNotificationPageState extends State<MsgNotificationPage> {
isHaveRightWidget: true,
rightWidget:
SizedBox(width: 60.w, height: 50.h, child: _switch(3)))),
// Container(
// alignment: Alignment.centerLeft,
// margin: EdgeInsets.only(left: 40.w, top: 40.h, bottom: 30.h),
// child: Text(
// '猫眼通知',
// style:TextStyle(color: Colors.black, fontSize: 26.sp, fontWeight: FontWeight.w500)
// ),
// ),
SizedBox(
height: 30.h,
),
Container(
alignment: Alignment.centerLeft,
margin: EdgeInsets.only(left: 40.w, top: 40.h, bottom: 30.h),
child: Text(
'猫眼通知',
style:
TextStyle(color: AppColors.msgNoticeTextColor, fontSize: 24.sp),
),
height: 10.h,
),
Obx(() => CommonItem(
leftTitel: '有人出现在门口',
rightTitle: "",
isHaveLine: false,
isHaveLine: true,
isHaveRightWidget: true,
rightWidget:
SizedBox(width: 60.w, height: 50.h, child: _switch(4)))),

View File

@ -1,6 +1,7 @@
import 'package:star_lock/main/lockDetail/lcokSet/nDaysUnopened/nDaysUnopened_state.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'nDaysUnopened_state.dart';
class NDaysUnopenedLogic extends BaseGetXController {
NDaysUnopenedState state = NDaysUnopenedState();
}

View File

@ -5,12 +5,12 @@ import 'package:flutter_pickers/style/default_style.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart';
import 'package:star_lock/main/lockDetail/lcokSet/nDaysUnopened/nDaysUnopened_logic.dart';
import 'package:star_lock/tools/commonItem.dart';
import 'package:star_lock/tools/submitBtn.dart';
import '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/titleAppBar.dart';
import 'nDaysUnopened_logic.dart';
class NDaysUnopenedPage extends StatefulWidget {
const NDaysUnopenedPage({Key? key}) : super(key: key);

View File

@ -1,5 +1,6 @@
import 'package:star_lock/main/lockDetail/lcokSet/openDoorNotify/openDoorNotify_state.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'openDoorNotify_state.dart';
class OpenDoorNotifyLogic extends BaseGetXController {
final OpenDoorNotifyState state = OpenDoorNotifyState();

View File

@ -2,10 +2,11 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart';
import 'package:star_lock/main/lockDetail/lcokSet/openDoorNotify/openDoorNotify_logic.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/submitBtn.dart';
import '../../../../tools/titleAppBar.dart';
import '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/submitBtn.dart';
import '../../../../../tools/titleAppBar.dart';
import 'openDoorNotify_logic.dart';
class OpenDoorNotifyPage extends StatefulWidget {
const OpenDoorNotifyPage({Key? key}) : super(key: key);

View File

@ -160,7 +160,7 @@ class NormallyOpenModeLogic extends BaseGetXController{
privateKey: getPrivateKeyList
);
}
}, isShowLoading: true);
});
}
// ()

View File

@ -134,7 +134,7 @@ class OpenDoorDirectionLogic extends BaseGetXController {
privateKey: getPrivateKeyList
);
}
}, isShowLoading: true);
});
}
// ()

View File

@ -135,7 +135,7 @@ class ResetButtonLogic extends BaseGetXController{
privateKey: getPrivateKeyList
);
}
}, isShowLoading: true);
});
}
// ()

View File

@ -27,7 +27,7 @@ class _UploadDataPageState extends State<UploadDataPage> {
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(child: Text(TranslationLoader.lanKeys!.uploadDataTip!.tr, style: TextStyle(fontSize: 24.sp,),)),
Expanded(child: Text(TranslationLoader.lanKeys!.uploadDataTip!.tr, style: TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor),)),
],
),
SizedBox(height: 30.h,),

View File

@ -1,14 +1,10 @@
import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:star_lock/blue/io_protocol/io_editUser.dart';
import 'package:star_lock/blue/io_protocol/io_factoryDataReset.dart';
import 'package:star_lock/blue/io_protocol/io_getLockStatu.dart';
import 'package:star_lock/blue/io_type.dart';
import 'package:star_lock/tools/toast.dart';
@ -18,12 +14,9 @@ import '../../../blue/io_protocol/io_getStarLockStatusInfo.dart';
import '../../../blue/io_protocol/io_openLock.dart';
import '../../../blue/io_protocol/io_referEventRecordTime.dart';
import '../../../blue/io_reply.dart';
import '../../../blue/io_tool/io_manager.dart';
import '../../../blue/io_tool/io_tool.dart';
import '../../../blue/io_tool/manager_event_bus.dart';
import '../../../blue/sender_manage.dart';
import '../../../login/login/entity/LoginData.dart';
import '../../../login/login/entity/LoginEntity.dart';
import '../../../network/api_repository.dart';
import '../../../tools/baseGetXController.dart';
import '../../../tools/eventBusEventManage.dart';
@ -31,6 +24,7 @@ import '../../../tools/storage.dart';
import '../electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart';
import '../lockOperatingRecord/lockOperatingRecordGetLastRecordTime_entity.dart';
import 'lockDetail_state.dart';
import 'lockNetToken_entity.dart';
class LockDetailLogic extends BaseGetXController{
final LockDetailState state = LockDetailState();
@ -44,15 +38,10 @@ class LockDetailLogic extends BaseGetXController{
_replyOpenLock(reply);
}
//
if(reply is GetLockStatuReply) {
_replyGetLockStatus(reply);
}
//
if(reply is EditUserReply){
_replyEditUserKey(reply);
}
// if(reply is EditUserReply){
// _replyEditUserKey(reply);
// }
//
if(reply is GetStarLockStatuInfoReply){
@ -76,11 +65,12 @@ class LockDetailLogic extends BaseGetXController{
var tokenData = reply.data.sublist(2, 6);
var saveStrList = changeIntListToStringList(tokenData);
print("openDoorToken:$tokenData");
// print("openDoorToken:$tokenData");
Storage.setStringList(saveBlueToken, saveStrList);
//
int power = reply.data[7];
state.electricQuantity.value = power;
int status = reply.data[6];
print("status:$status");
@ -96,15 +86,15 @@ class LockDetailLogic extends BaseGetXController{
// state.animationController.isCompleted;
break;
case 0x06:
//
//
print("${reply.commandType}需要鉴权");
print("millisecondsSinceEpoch/1000:${DateTime.now().millisecondsSinceEpoch~/1000}");
IoSenderManage.senderOpenLock(
keyID: BlueManage().connectDeviceName,
userID: await Storage.getUid(),
openMode: 1,
openTime: DateTime.now().millisecondsSinceEpoch~/1000,
onlineToken:state.lockNetToken,
token: tokenData,
needAuthor: 1,
signKey: signKeyDataList,
@ -130,139 +120,67 @@ class LockDetailLogic extends BaseGetXController{
}
}
//
Future<void> _replyGetLockStatus(Reply reply) async {
int status = reply.data[2];
switch(status){
case 0x00:
//
print("${reply.commandType}数据解析成功");
var softVersion = reply.data.sublist(3, 7);
print("softVersion:$softVersion");
var power = reply.data[7];
print("power:$power");
// APP
var appUserCount = reply.data.sublist(50, 53);
print("appUserCount:$appUserCount");
//
var blacklistCount = reply.data[53];
print("blacklistCount:$blacklistCount");
//
var bleKeyCount = reply.data[54];
print("bleKeyCount:$bleKeyCount");
//
var remainCount = reply.data.sublist(54, 56);
print("remainCount:$remainCount");
//
var notUploadCount = reply.data.sublist(56, 58);
print("notUploadCount:$notUploadCount");
//
var pwdCount = reply.data[58];
print("pwdCount:$pwdCount");
//
var fingerprintCount = reply.data[59];
print("fingerprintCount:$fingerprintCount");
//
var lockTime = reply.data.sublist(60, 64);
print("lockTime:$lockTime");
//
var hardVersion = reply.data.sublist(64, 68);
print("hardVersion:$hardVersion");
break;
case 0x06:
//
print("${reply.commandType}需要鉴权");
break;
case 0x07:
//
print("${reply.commandType}用户无权限");
break;
case 0x09:
//
print("${reply.commandType}权限校验错误");
break;
default:
//
print("${reply.commandType}失败");
break;
}
}
//
Future<void> _replyEditUserKey(Reply reply) async {
var token = reply.data.sublist(2, 6);
var saveStrList = changeIntListToStringList(token);
print("_replyEditUserKeyToken:$token");
Storage.setStringList(saveBlueToken, saveStrList);
int status = reply.data[6];
print("status:$status");
switch(status){
case 0x00:
//
print("${reply.commandType!.typeValue} 数据解析成功");
break;
case 0x06:
//
print("${reply.commandType!.typeValue} 需要鉴权");
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
IoSenderManage.senderEditUser(
lockID:BlueManage().connectDeviceName,
authUserID:await Storage.getUid(),
keyID:"1",
userID:await Storage.getUid(),
openMode:1,
keyType:1,
startDate:0x11223344,
expireDate:0x11223344,
role:255,
password:"123456",
needAuthor:1,
publicKey:publicKeyDataList,
privateKey:getPrivateKeyList,
token: token
);
break;
case 0x07:
//
print("${reply.commandType!.typeValue} 用户无权限");
break;
case 0x09:
//
print("${reply.commandType!.typeValue} 权限校验错误");
break;
default:
//
print("${reply.commandType!.typeValue} 失败");
break;
}
}
// Future<void> _replyEditUserKey(Reply reply) async {
// var token = reply.data.sublist(2, 6);
// var saveStrList = changeIntListToStringList(token);
// print("_replyEditUserKeyToken:$token");
// Storage.setStringList(saveBlueToken, saveStrList);
//
// int status = reply.data[6];
// print("status:$status");
//
// switch(status){
// case 0x00:
// //
// print("${reply.commandType!.typeValue} 数据解析成功");
//
// break;
// case 0x06:
// //
// print("${reply.commandType!.typeValue} 需要鉴权");
// var privateKey = await Storage.getStringList(saveBluePrivateKey);
// List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
//
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
//
// IoSenderManage.senderEditUser(
// lockID:BlueManage().connectDeviceName,
// authUserID:await Storage.getUid(),
// keyID:"1",
// userID:await Storage.getUid(),
// openMode:1,
// keyType:1,
// startDate:0x11223344,
// expireDate:0x11223344,
// role:255,
// password:"123456",
// needAuthor:1,
// publicKey:publicKeyDataList,
// privateKey:getPrivateKeyList,
// token: token
// );
// break;
// case 0x07:
// //
// print("${reply.commandType!.typeValue} 用户无权限");
//
// break;
// case 0x09:
// //
// print("${reply.commandType!.typeValue} 权限校验错误");
//
// break;
// default:
// //
// print("${reply.commandType!.typeValue} 失败");
//
// break;
// }
// }
//
Future<void> _replyGetStarLockStatusInfo(Reply reply) async {
int status = reply.data[2];
switch(status){
@ -271,55 +189,55 @@ class LockDetailLogic extends BaseGetXController{
print("${reply.commandType}数据解析成功");
//
var vendor = reply.data.sublist(3, 23);
print("vendor:$vendor");
// print("vendor:$vendor");
//
var product = reply.data[23];
print("product:$product");
// print("product:$product");
//
var model = reply.data.sublist(24, 44);
print("model:$model");
// print("model:$model");
//
var fwVersion = reply.data.sublist(44, 64);
print("fwVersion:$fwVersion");
// print("fwVersion:$fwVersion");
//
var hwVersion = reply.data.sublist(64, 84);
print("hwVersion:$hwVersion");
// print("hwVersion:$hwVersion");
//
var serialNum0 = reply.data.sublist(84, 100);
print("serialNum0:$serialNum0");
// print("serialNum0:$serialNum0");
//
var serialNum1 = reply.data.sublist(100, 116);
print("serialNum1:$serialNum1");
// print("serialNum1:$serialNum1");
//
var btDeviceName = reply.data.sublist(116, 132);
print("btDeviceName:$btDeviceName");
// print("btDeviceName:$btDeviceName");
//
var battRemCap = reply.data[132];
print("battRemCap:$battRemCap");
// print("battRemCap:$battRemCap");
//
var restoreCounter = reply.data.sublist(133, 135);
print("restoreCounter:$restoreCounter");
// print("restoreCounter:$restoreCounter");
//
var restoreDate = reply.data.sublist(135, 139);
print("restoreDate:$restoreDate");
// print("restoreDate:$restoreDate");
//
var icPartNo = reply.data.sublist(139, 149);
print("icPartNo:$icPartNo");
// print("icPartNo:$icPartNo");
//
var indate = reply.data.sublist(149, 153);
print("indate:$indate");
// print("indate:$indate");
break;
case 0x06:
@ -356,9 +274,11 @@ class LockDetailLogic extends BaseGetXController{
reply.data.removeRange(0, 6);
// 8
var getList = splitList(reply.data, 8);
// print("getList:$getList");
var uploadList = [];
for(int i = 0; i<getList.length; i++){
var indexList = getList[i];
// print("indexList:$indexList");
var indexMap = {};
indexMap["seq"] = indexList[0].toString();
indexMap["user"] = indexList[3].toString();
@ -409,8 +329,8 @@ class LockDetailLogic extends BaseGetXController{
// Toast.show(msg: "正在连接设备,请稍等。");
// return;
// }
BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, state.keyInfos.value.bluetooth!.bluetoothDeviceName!, (DeviceConnectionState state) async {
if (state == DeviceConnectionState.connected){
BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, state.keyInfos.value.bluetooth!.bluetoothDeviceName!, (DeviceConnectionState deviceConnectionState) async {
if (deviceConnectionState == DeviceConnectionState.connected){
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -433,13 +353,14 @@ class LockDetailLogic extends BaseGetXController{
userID: await Storage.getUid(),
openMode: 1,
openTime: DateTime.now().millisecondsSinceEpoch~/1000,
onlineToken:state.lockNetToken,
token: getTokenList,
needAuthor: 1,
signKey: signKeyDataList,
privateKey: getPrivateKeyList,
);
}
}, isShowLoading: false);
}, isShowLoading: false, isShowToast: false);
}
//
@ -524,12 +445,12 @@ class LockDetailLogic extends BaseGetXController{
privateKey:getPrivateKeyList,
);
}
});
}, isShowLoading: false);
}
void startScanAction(){
BlueManage().startScan(true, (v){
print("startScanAllDevice:${v}");
// print("startScanAllDevice:${v}");
final knownDeviceIndex = v.indexWhere((d) => d.name == state.keyInfos.value.bluetooth!.bluetoothDeviceName!);
//
if (knownDeviceIndex >= 0) {
@ -545,7 +466,12 @@ class LockDetailLogic extends BaseGetXController{
startConnect() {
state.lockState.value = 1;
state.animationController.forward();
openDoorAction();
if(state.isOpenLockNeedOnline.value == 0){
openDoorAction();
}else{
getLockNetToken();
}
Future.delayed(const Duration(seconds: 10), () {
if(state.lockState.value == 1){
@ -563,6 +489,16 @@ class LockDetailLogic extends BaseGetXController{
}
// token
void getLockNetToken() async {
LockNetTokenEntity entity = await ApiRepository.to.getLockNetToken(lockId: state.keyInfos.value.lockId.toString());
if (entity.errorCode!.codeIsSuccessful) {
state.lockNetToken = entity.data!.token!;
print("state.lockNetToken:${state.lockNetToken}");
openDoorAction();
}
}
//
void getLockRecordLastUploadDataTime() async {
LockOperatingRecordGetLastRecordTimeEntity entity =
@ -583,20 +519,42 @@ class LockDetailLogic extends BaseGetXController{
}
}
///
StreamSubscription? _lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent;
void initLockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceAction() {
// eventBus
_lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent = eventBus.on<LockSetChangeSetRefreshLockDetailWithType>().listen((event) {
if(event.type == 0){
// 0
print("event.setResult:${event.setResult}");
state.isAttendance.value = event.setResult;
state.keyInfos.value.lockSetting!.attendance = event.setResult;
print("state.keyInfos.value.lockSetting!.attendance:${state.keyInfos.value.lockSetting!.attendance}");
}else if(event.type == 1){
// 1
state.isOpenLockNeedOnline.value = event.setResult;
state.keyInfos.value.lockSetting!.appUnlockOnline = event.setResult;
}
});
}
@override
void onReady() {
// TODO: implement onReady
super.onReady();
print("onReady()");
_initReplySubscription();
initLockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceAction();
if(Platform.isIOS){
print("有蓝牙权限开始扫描");
startScanAction();
}else{
getMicrophonePermission()
.then((value) {
if (value) {
//
print("有蓝牙权限开始扫描");
startScanAction();
}else{
//
@ -610,7 +568,7 @@ class LockDetailLogic extends BaseGetXController{
void onInit() {
// TODO: implement onInit
super.onInit();
print("lockDetail_onInit()");
// print("lockDetail_onInit()");
//
// connectBlue();
@ -621,7 +579,10 @@ class LockDetailLogic extends BaseGetXController{
@override
void onClose() {
// TODO: implement onClose
print("锁详情界面销毁了");
_replySubscription.cancel();
_lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent!.cancel();
}
///

View File

@ -38,6 +38,10 @@ class _LockDetailPageState extends State<LockDetailPage>
super.initState();
state.keyInfos.value = widget.lockListInfoItemEntity;
state.isAttendance.value = state.keyInfos.value.lockSetting!.attendance!;
state.isOpenLockNeedOnline.value = state.keyInfos.value.lockSetting!.appUnlockOnline!;
state.electricQuantity.value = state.keyInfos.value.electricQuantity!;
BlueManage().connectDeviceName =
state.keyInfos.value.bluetooth!.bluetoothDeviceName!;
// BlueManage().connectDeviceMacAddress =
@ -74,7 +78,7 @@ class _LockDetailPageState extends State<LockDetailPage>
child: Column(
children: [
topWidget(),
Expanded(child: bottomWidget())
Expanded(child: Obx(() => bottomWidget()))
],
),
);
@ -85,35 +89,6 @@ class _LockDetailPageState extends State<LockDetailPage>
return Column(
children: [
SizedBox(height: 50.h),
// Stack(
// alignment: Alignment.center,
// children: [
// Align(
// alignment: Alignment.center,
// child: Text(
// widget.keyInfo!.lockAlias!,
// style:
// TextStyle(fontSize: 22.sp, fontWeight: FontWeight.w400),
// )),
// Row(
// mainAxisAlignment: MainAxisAlignment.end,
// children: [
// Text(
// "100%",
// style: TextStyle(
// fontSize: 18.sp, color: AppColors.darkGrayTextColor),
// ),
// SizedBox(width: 2.w),
// Image.asset(
// 'images/main/icon_main_cell.png',
// width: 30.w,
// height: 24.w,
// ),
// SizedBox(width: 30.w),
// ],
// ),
// ],
// ),
Stack(
alignment: Alignment.center,
children: [
@ -126,15 +101,15 @@ class _LockDetailPageState extends State<LockDetailPage>
TextStyle(fontSize: 22.sp, fontWeight: FontWeight.w400),
))),
Positioned(
child: Row(
child: Obx(() => Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Text("100%", style: TextStyle(fontSize: 18.sp, color: AppColors.darkGrayTextColor)),
Text("${state.electricQuantity.value}%", style: TextStyle(fontSize: 18.sp, color: AppColors.darkGrayTextColor)),
SizedBox(width: 2.w),
Image.asset('images/main/icon_main_cell.png', width: 30.w, height: 24.w),
Image.asset(showElectricIcon(state.electricQuantity.value), width: 30.w, height: 24.w),
SizedBox(width: 30.w),
],
)
))
)
],
),
@ -299,9 +274,9 @@ class _LockDetailPageState extends State<LockDetailPage>
List<Widget> getShowWidget() {
var showWidgetArr = <Widget>[];
print("pagepagepage:state.keyInfos.value.lockSetting!.attendance:${state.keyInfos.value.lockSetting!.attendance}");
//
if (state.keyInfos.value.lockSetting!.attendance == 1) {
if (state.isAttendance.value == 1) {
showWidgetArr.add(bottomItem('images/main/icon_main_clockingIn.png',
TranslationLoader.lanKeys!.checkingIn!.tr, () {
Get.toNamed(Routers.checkingInListPage,
@ -410,9 +385,7 @@ class _LockDetailPageState extends State<LockDetailPage>
Get.toNamed(Routers.msgNotificationPage);
}),
//
bottomItem(
'images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr,
() {
bottomItem('images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr, () {
BlueManage().stopScan();
Get.toNamed(Routers.lockSetPage,
arguments: {"lockId": widget.lockListInfoItemEntity.lockId});
@ -467,6 +440,21 @@ class _LockDetailPageState extends State<LockDetailPage>
});
}
String showElectricIcon (int electricnumber){
if(electricnumber >= 100){
return 'images/main/icon_lockElectricLevel_5.png';
}else if((electricnumber > 50) && (electricnumber < 100)){
return 'images/main/icon_lockElectricLevel_4.png';
}else if((electricnumber > 25) && (electricnumber <= 50)){
return 'images/main/icon_lockElectricLevel_3.png';
}else if((electricnumber > 5) && (electricnumber <= 25)){
return 'images/main/icon_lockElectricLevel_2.png';
}else if(electricnumber <= 5){
return 'images/main/icon_lockElectricLevel_1.png';
}
return 'images/main/icon_lockElectricLevel_5.png';
}
static Future<dynamic> tokNative(String method,
{required Map arguments}) async {
if (arguments == null) {

View File

@ -17,6 +17,12 @@ import '../../lockMian/entity/lockListInfo_entity.dart';
class LockDetailState {
Rx<LockListInfoItemEntity> keyInfos = LockListInfoItemEntity().obs;
String lockNetToken = "";
var isAttendance = 0.obs;//
var isOpenLockNeedOnline = 0.obs; // APP开锁时是否需联网
var electricQuantity = 0.obs; //
//
late AnimationController animationController;
var lockState = 0.obs;// 0 1() 2 3 4

View File

@ -0,0 +1,43 @@
class LockNetTokenEntity {
int? errorCode;
String? description;
String? errorMsg;
Data? data;
LockNetTokenEntity(
{this.errorCode, this.description, this.errorMsg, this.data});
LockNetTokenEntity.fromJson(Map<String, dynamic> json) {
errorCode = json['errorCode'];
description = json['description'];
errorMsg = json['errorMsg'];
data = json['data'] != null ? Data.fromJson(json['data']) : null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['errorCode'] = errorCode;
data['description'] = description;
data['errorMsg'] = errorMsg;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
return data;
}
}
class Data {
String? token;
Data({this.token});
Data.fromJson(Map<String, dynamic> json) {
token = json['token'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['token'] = token;
return data;
}
}

View File

@ -81,9 +81,11 @@ class LockOperatingRecordLogic extends BaseGetXController{
reply.data.removeRange(0, 6);
// 8
var getList = splitList(reply.data, 8);
print("getList:$getList");
var uploadList = [];
for(int i = 0; i<getList.length; i++){
var indexList = getList[i];
print("indexList:$indexList");
var indexMap = {};
indexMap["seq"] = indexList[0].toString();
indexMap["user"] = indexList[3].toString();

View File

@ -307,7 +307,7 @@ class OtherTypeKeyListLogic extends BaseGetXController{
}
//
Future<void> senderQueryingFingerprintStatus() async {
BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, (DeviceConnectionState state) async {
BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName,(DeviceConnectionState state) async {
if (state == DeviceConnectionState.connected) {
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);

View File

@ -84,8 +84,8 @@ class _PasswordKeyManageTabbarPageState
Tab _tab(ItemView item) {
return Tab(
// text: item.title,
child: SizedBox(
width: item.title.length > 2 ? 1.sw / 8 : 1.sw / 12,
child: Container(
// width: item.title.length > 2 ? 1.sw / 8 : 1.sw / 12,
// margin: EdgeInsets.all(10.w),
// color: Colors.red,
child: Text(

View File

@ -102,7 +102,10 @@ class _VideoLogPageState extends State<VideoLogPage> {
state.isNavLocal.value = false;
});
},
child: Obx(() => Text("云存", style: state.isNavLocal.value == true ? TextStyle(color: Colors.grey, fontSize: 26.sp) : TextStyle(color: Colors.white, fontSize: 28.sp)))
child: Obx(() => Text("云存",
style: state.isNavLocal.value == true ?
TextStyle(color: Colors.grey, fontSize: 26.sp, fontWeight: FontWeight.w600) :
TextStyle(color: Colors.white, fontSize: 28.sp, fontWeight: FontWeight.w600)))
),
TextButton(
onPressed: (){
@ -110,7 +113,10 @@ class _VideoLogPageState extends State<VideoLogPage> {
state.isNavLocal.value = true;
});
},
child: Obx(() => Text("本地", style: state.isNavLocal.value == true ? TextStyle(color: Colors.white, fontSize: 28.sp) : TextStyle(color: Colors.grey, fontSize: 26.sp)))
child: Obx(() => Text("本地",
style: state.isNavLocal.value == true ?
TextStyle(color: Colors.white, fontSize: 28.sp, fontWeight: FontWeight.w600) :
TextStyle(color: Colors.grey, fontSize: 26.sp, fontWeight: FontWeight.w600)))
),
],
),
@ -136,13 +142,13 @@ class _VideoLogPageState extends State<VideoLogPage> {
Expanded(child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("3天滚动储存", style: TextStyle(fontSize: 26.sp)),
Text("3天滚动储存", style: TextStyle(fontSize: 24.sp)),
SizedBox(height: 10.h),
Text("星锁已为本设备免费提供3大滚动视频储存服务", style: TextStyle(fontSize: 22.sp, color: Colors.grey)),
],
)),
SizedBox(width: 15.w),
Text("去升级", style: TextStyle(fontSize: 24.sp)),
Text("去升级", style: TextStyle(fontSize: 22.sp)),
Image(width: 40.w, height: 24.w, image: const AssetImage("images/icon_right_black.png"))
],
),
@ -170,7 +176,7 @@ class _VideoLogPageState extends State<VideoLogPage> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// SizedBox(height: 20.h),
Text("下载列表", style: TextStyle(fontSize: 26.sp)),
Text("下载列表", style: TextStyle(fontSize: 24.sp)),
SizedBox(height: 15.h),
Text("暂无下载内容", style: TextStyle(fontSize: 22.sp, color: Colors.grey)),
],
@ -191,7 +197,7 @@ class _VideoLogPageState extends State<VideoLogPage> {
child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(state.isNavLocal.value == true ? "已下载":"全部视频", style: TextStyle(fontSize: 28.sp)),
Text(state.isNavLocal.value == true ? "已下载":"全部视频", style: TextStyle(fontSize: 26.sp, fontWeight: FontWeight.w500)),
Expanded(child: SizedBox(width: 10.w)),
IconButton(
icon: Image(width: 40.w, height: 40.w, image: const AssetImage("images/main/icon_lockDetail_monitoringEditVoice.png")),

View File

@ -41,7 +41,11 @@ class _DemoModeLockDetailPageState extends State<DemoModeLockDetailPage> {
height: 1.sh - ScreenUtil().statusBarHeight * 2,
color: Colors.white,
child: Column(
children: [topTip(), topWidget(), Expanded(child: bottomWidget())],
children: [
topTip(),
topWidget(),
Expanded(child: bottomWidget())
],
),
));
}
@ -375,4 +379,5 @@ class _DemoModeLockDetailPageState extends State<DemoModeLockDetailPage> {
// Get.toNamed(Routers.seletLockTypePage);
Toast.show(msg: "演示模式");
}
}

View File

@ -242,6 +242,12 @@ class _DemoModeLockSetPageState extends State<DemoModeLockSetPage> {
isHaveLine: false,
isHaveRightWidget: true,
rightWidget: _lockRemindSwitch()),
CommonItem(
leftTitel: "开锁时是否需联网",
rightTitle: "",
isHaveLine: false,
isHaveRightWidget: true,
rightWidget: _lockRemindSwitch()),
SizedBox(height: 10.h),
// wifi配网
CommonItem(

View File

@ -144,7 +144,7 @@ class _LockListPageState extends State<LockListPage> {
),
SizedBox(width: 2.w),
Image.asset(
'images/main/icon_main_cell.png',
showElectricIcon(keyInfo.electricQuantity!),
width: 30.w,
height: 24.w,
),
@ -201,4 +201,19 @@ class _LockListPageState extends State<LockListPage> {
return useDateStr;
}
String showElectricIcon (int electricnumber){
if(electricnumber >= 100){
return 'images/main/icon_lockElectricLevel_5.png';
}else if((electricnumber > 50) && (electricnumber < 100)){
return 'images/main/icon_lockElectricLevel_4.png';
}else if((electricnumber > 25) && (electricnumber <= 50)){
return 'images/main/icon_lockElectricLevel_3.png';
}else if((electricnumber > 5) && (electricnumber <= 25)){
return 'images/main/icon_lockElectricLevel_2.png';
}else if(electricnumber <= 5){
return 'images/main/icon_lockElectricLevel_1.png';
}
return 'images/main/icon_lockElectricLevel_5.png';
}
}

View File

@ -90,6 +90,8 @@ class LockMainLogic extends BaseGetXController {
}
state.lockListInfoEntity.value = entity;
}else{
print("首页锁列表请求失败");
state.dataLength.value = 0;
// refreshController.loadFailed();
}
// refreshController.refreshCompleted();

View File

@ -46,7 +46,7 @@ class _AbountPageState extends State<AbountPage> {
height: 20.h,
),
Text(
"星锁 1.0.0.01(preRelease-20231118)",
"星锁 1.0.0.02(preRelease-20231124)",
style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor),
),
SizedBox(

View File

@ -1,5 +1,6 @@
import 'dart:async';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:amap_flutter_location/amap_flutter_location.dart';
@ -57,7 +58,7 @@ class _LockAddressGaoDePageState extends State<LockAddressGaoDePage>{
// EasyLoading.dismiss();
// }
// });
requestLocation();
// requestLocation();
}
Future<void> requestPermission() async {
@ -69,8 +70,13 @@ class _LockAddressGaoDePageState extends State<LockAddressGaoDePage>{
print("拒绝");
break;
case PermissionStatus.granted:
_setLocationOption();
location.startLocation();
if(Platform.isIOS){
_setLocationOption();
requestIOSLocation();
}else{
requestAndroidLocation();
location.startLocation();
}
break;
case PermissionStatus.limited:
print("限制");
@ -82,7 +88,7 @@ class _LockAddressGaoDePageState extends State<LockAddressGaoDePage>{
}
}
Future<void> requestLocation() async {
Future<void> requestAndroidLocation() async {
location.onLocationChanged().listen((event) {
print("listenLocationChanged$event");
// EasyLoading.dismiss();
@ -95,6 +101,22 @@ class _LockAddressGaoDePageState extends State<LockAddressGaoDePage>{
});
}
Future<void> requestIOSLocation() async {
location = AMapFlutterLocation()
..setLocationOption(AMapLocationOption())
..onLocationChanged().listen((event) {
print("listenLocationChanged$event");
// EasyLoading.dismiss();
if (event.isNotEmpty) {
setState(() {
addressInfo = event;
});
// location.stopLocation();
}
})
..startLocation();
}
@override
Widget build(BuildContext context) {
return Scaffold(
@ -123,9 +145,7 @@ class _LockAddressGaoDePageState extends State<LockAddressGaoDePage>{
// ),
// ],
),
body:
addressInfo != null ?
ListView(
body: ListView(
children: [
Container(
margin: EdgeInsets.only(left: 25.w, top: 40.h, bottom: 40.w),
@ -137,83 +157,73 @@ class _LockAddressGaoDePageState extends State<LockAddressGaoDePage>{
),
),
SizedBox(
height: 1.sw/5*4,
width: 1.sw,
child:
(addressInfo!["address"].toString().isNotEmpty) ?
AMapWidget(
apiKey: amapApiKeys,
//
initialCameraPosition: (
CameraPosition(
target: LatLng(double.parse(addressInfo!['latitude'].toString()), double.parse(addressInfo!['longitude'].toString())),
zoom: 10.0,
)
),
//
myLocationStyleOptions: MyLocationStyleOptions(
true,
),
// normal,satellite,night, navi,bus,
mapType: MapType.normal,
//
minMaxZoomPreference: const MinMaxZoomPreference(3, 20),
//
privacyStatement: const AMapPrivacyStatement(hasAgree: true, hasContains: true, hasShow: true),
// AMapController
onMapCreated: (AMapController controller) {
mapController = controller;
},
) : Container(),
),
Container(
margin: EdgeInsets.only(left: 25.w, top: 20.h, right: 25.w),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
addressInfo != null ?
Column(
children: [
Text("检查以确保以下地址是正确的", style: TextStyle(fontSize: 24.sp)),
],
),
),
// SizedBox(height: 20.h),
Container(
margin: EdgeInsets.only(left: 25.w, top: 20.h, right: 25.w),
// decoration: BoxDecoration(
// color: AppColors.mainColor,
// borderRadius: BorderRadius.circular(15.w),
// ),
child:Column(
children: [
Container(
// height: h(53),
// padding: EdgeInsets.only(top: 15.h, bottom: 15, left:15.w, right: 15.w),
child: Row(
children: [
// Image.asset('images/main/icon_addUserShowAddress.png', width: 30.w, height: 30.w),
// SizedBox(width: 10.w),
Expanded(
child: Text(addressInfo!["address"].toString() ?? "", style: const TextStyle(color: Colors.grey, fontSize: 16, fontWeight: FontWeight.w500, overflow: TextOverflow.clip))
),
],
SizedBox(
height: 1.sw/5*4,
width: 1.sw,
child: AMapWidget(
apiKey: amapApiKeys,
//
initialCameraPosition: (
CameraPosition(
target: LatLng(double.parse(addressInfo!['latitude'].toString()), double.parse(addressInfo!['longitude'].toString())),
zoom: 10.0,
)
),
//
myLocationStyleOptions: MyLocationStyleOptions(
true,
),
// normal,satellite,night, navi,bus,
mapType: MapType.normal,
//
minMaxZoomPreference: const MinMaxZoomPreference(3, 20),
//
privacyStatement: const AMapPrivacyStatement(hasAgree: true, hasContains: true, hasShow: true),
// AMapController
onMapCreated: (AMapController controller) {
mapController = controller;
},
),
SizedBox(height: 5.h),
Container(height: 1.h, color: AppColors.mainColor,),
// Container(
// // height: h(52),
// padding: EdgeInsets.only(top: 15.h, bottom: 15, left:15.w, right: 15.w),
// child: Row(
// children: [
// Image.asset('images/main/icon_addUserAddressShowTime.png', width: 30.w, height: 30.w),
// SizedBox(width: 10.w,),
// Expanded(
// child: Text(DateTool().getNowDateYMDHM(), style: const TextStyle(color: Colors.white, fontSize: 16, fontWeight: FontWeight.w500),)
// ),
// ],
// ),
// ),
],
)
),
Container(
// color: Colors.red,
height: 45.h,
margin: EdgeInsets.only(left: 25.w, top: 20.h, right: 25.w),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text("检查以确保以下地址是正确的", style: TextStyle(fontSize: 24.sp)),
],
),
),
// SizedBox(height: 20.h),
Container(
// color: Colors.red,
// height: 45.h,
margin: EdgeInsets.only(left: 25.w, top: 20.h, right: 25.w),
child:Column(
children: [
Row(
children: [
Expanded(
child: Text(addressInfo!["address"].toString() ?? "", style: const TextStyle(color: Colors.grey, fontSize: 16, fontWeight: FontWeight.w500, overflow: TextOverflow.clip))
),
],
),
SizedBox(height: 5.h),
Container(height: 1.h, color: AppColors.mainColor,),
],
)
),
],
) : SizedBox(
height: 1.sw/5*4 + 65.h*2,
child: const Center(child: Text('地图加载中,请稍候。。。')))
,
),
SizedBox(height:200.h),
Row(
@ -291,8 +301,7 @@ class _LockAddressGaoDePageState extends State<LockAddressGaoDePage>{
// )
// ),),
],
)
: const Center(child: Text('地图加载中,请稍候。。。')),
),
);
}
@ -343,11 +352,10 @@ class _LockAddressGaoDePageState extends State<LockAddressGaoDePage>{
location.setLocationOption(locationOption);
}
@override
void dispose() {
super.dispose();
location.stopLocation();
location.destroy();
print("地图界面销毁了");
}

View File

@ -36,6 +36,7 @@ class SaveLockLogic extends BaseGetXController {
});
}
//
Future<void> _replyAddUserKey(Reply reply) async {
var lockId = reply.data.sublist(2, 42);
// print("lockId:$lockId");
@ -101,6 +102,7 @@ class SaveLockLogic extends BaseGetXController {
}
}
//
Future<void> _replyGetStarLockStatusInfo(Reply reply) async {
int status = reply.data[2];
switch(status){

View File

@ -1,19 +1,12 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/common/safetyVerification/entity/Data.dart';
import 'package:star_lock/tools/toast.dart';
import '../../appRouters.dart';
import '../../app_settings/app_colors.dart';
import '../../baseWidget.dart';
import '../../login/login/entity/LoginData.dart';
import '../../login/login/entity/LoginEntity.dart';
import '../../tools/store_service.dart';
import '../../tools/submitBtn.dart';
import '../../tools/titleAppBar.dart';
import '../../translations/trans_lib.dart';
import 'starLockMine_logic.dart';
@ -39,9 +32,7 @@ class _StarLockMinePageState extends State<StarLockMinePage> with BaseWidget {
children: [
topWidget(),
bottomListWidget(),
SizedBox(
height: 40.h,
),
SizedBox(height: 40.h,),
// keyBottomWidget()
],
),
@ -93,7 +84,7 @@ class _StarLockMinePageState extends State<StarLockMinePage> with BaseWidget {
SizedBox(
height: 20.h,
),
Text(state.mobile(),
Text(state.nickname(),
style: TextStyle(
fontSize: 22.sp,
color: Colors.white,
@ -101,7 +92,7 @@ class _StarLockMinePageState extends State<StarLockMinePage> with BaseWidget {
SizedBox(
height: 10.h,
),
Text("${TranslationLoader.lanKeys!.accountNumber!.tr}:-",
Text("${TranslationLoader.lanKeys!.accountNumber!.tr}:${state.mobile().isNotEmpty ? state.mobile() : state.email()}",
style: TextStyle(
fontSize: 18.sp,
color: Colors.white,

View File

@ -40,6 +40,14 @@ class StarLockMineState {
return loginData.value.mobile ?? '-';
}
String email() {
return loginData.value.email ?? '-';
}
String nickname() {
return loginData.value.nickname ?? '-';
}
///
String headUrl() {
return loginData.value.headUrl ?? '';

View File

@ -43,7 +43,6 @@ class _MineMultiLanguagePageState extends State<MineMultiLanguagePage> {
CommonItem(
leftTitel: '跟随系统',
rightTitle: "",
allHeight: 90.h,
isHaveLine: true,
isHaveDirection: false,
isHaveRightWidget: true,
@ -59,7 +58,6 @@ class _MineMultiLanguagePageState extends State<MineMultiLanguagePage> {
CommonItem(
leftTitel: lanType.lanTitle,
rightTitle: "",
allHeight: 90.h,
isHaveLine: true,
isHaveDirection: false,
isHaveRightWidget: true,

View File

@ -0,0 +1,89 @@
class MinePersonGetUploadFileInfoEntity {
int? errorCode;
String? description;
String? errorMsg;
Data? data;
MinePersonGetUploadFileInfoEntity(
{this.errorCode, this.description, this.errorMsg, this.data});
MinePersonGetUploadFileInfoEntity.fromJson(Map<String, dynamic> json) {
errorCode = json['errorCode'];
description = json['description'];
errorMsg = json['errorMsg'];
data = json['data'] != null ? Data.fromJson(json['data']) : null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['errorCode'] = errorCode;
data['description'] = description;
data['errorMsg'] = errorMsg;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
return data;
}
}
class Data {
String? uploadUrl;
Map<String, dynamic>? formData;
String? fileUrl;
String? fileField;
Data({this.uploadUrl, this.formData, this.fileUrl, this.fileField});
Data.fromJson(Map<String, dynamic> json) {
uploadUrl = json['uploadUrl'];
formData = json['formData'];
fileUrl = json['fileUrl'];
fileField = json['fileField'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['uploadUrl'] = uploadUrl;
data['formData'] = formData;
data['fileUrl'] = fileUrl;
data['fileField'] = fileField;
return data;
}
}
// class GetFormData {
// String? oSSAccessKeyId;
// String? host;
// String? policy;
// String? signature;
// int? expire;
// String? key;
//
// GetFormData(
// {this.oSSAccessKeyId,
// this.host,
// this.policy,
// this.signature,
// this.expire,
// this.key});
//
// GetFormData.fromJson(Map<String, dynamic> json) {
// oSSAccessKeyId = json['OSSAccessKeyId'];
// host = json['host'];
// policy = json['policy'];
// signature = json['signature'];
// expire = json['expire'];
// key = json['key'];
// }
//
// Map<String, dynamic> toJson() {
// final Map<String, dynamic> data = <String, dynamic>{};
// data['OSSAccessKeyId'] = oSSAccessKeyId;
// data['host'] = host;
// data['policy'] = policy;
// data['signature'] = signature;
// data['expire'] = expire;
// data['key'] = key;
// return data;
// }
// }

View File

@ -1,10 +1,14 @@
import 'dart:async';
import 'dart:convert';
import 'package:get/get.dart';
import 'package:star_lock/login/login/entity/LoginEntity.dart';
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_state.dart';
import 'package:star_lock/tools/toast.dart';
import '../../../../network/api_repository.dart';
import '../../../../tools/baseGetXController.dart';
import 'minePersonGetUploadFileInfo_entity.dart';
class MinePersonInfoLogic extends BaseGetXController {
class MinePersonInfoLogic extends GetConnect{
final MinePersonInfoState state = MinePersonInfoState();
//
Future<void> getUserInfoRequest() async {
@ -20,9 +24,57 @@ class MinePersonInfoLogic extends BaseGetXController {
}
// upToken updateUserInfo
Future<void> getUpTokenRequest() async {
var entity = await ApiRepository.to.getUpToken(state.typeStr.value);
if (entity.errorCode!.codeIsSuccessful) {}
Future<void> getUpTokenRequest(String filename, int size) async {
var entity = await ApiRepository.to.getUpToken(
module: 'avatar',
typeKey: 'userId',
type: state.mineInfoData.value.uid!,
filename: filename,
size: size
);
if (entity.errorCode!.codeIsSuccessful) {
uploadFile(entity);
// print("aaaaa:$loginEntity");
}
}
//
void uploadFile(MinePersonGetUploadFileInfoEntity minePersonGetUploadFileInfoEntity) async {
// String json = JsonDecoder(minePersonGetUploadFileInfoEntity.data!.formData!);
// var formData = FormData();
//
// formData.files.add(MapEntry(
// "files", //
// MultipartFile(state.image!.path, filename: 'b'),
// ));
Map<String, dynamic> user = minePersonGetUploadFileInfoEntity.data!.formData!;
user[minePersonGetUploadFileInfoEntity.data!.fileField!] = state.image!.path;
final form = FormData(user);
var entity = await ApiRepository.to.uploadFile(
url: minePersonGetUploadFileInfoEntity.data!.uploadUrl!,
body: form
);
if (entity.errorCode!.codeIsSuccessful) {
}
// final formData = FormData.fromMap({
// 'file': await MultipartFile.fromFile(imageFile.path, contentType: MediaType.parse(mimeType))
// });
// final form = FormData(user);
// Response response= await post(minePersonGetUploadFileInfoEntity.data!.uploadUrl, form);
// print("statusText:${response.statusText} statusCode:${response.statusCode} response:$response");
}
void postCases(List<int> image) async {
final form = FormData({
'file': MultipartFile(image, filename: 'avatar.png'),
'otherFile': MultipartFile(image, filename: 'cover.png'),
});
Response response= await post('http://youapi/users/upload', form);
}
//-
@ -32,4 +84,27 @@ class MinePersonInfoLogic extends BaseGetXController {
Toast.show(msg: '操作成功');
}
}
@override
void onReady() {
// TODO: implement onReady
super.onReady();
getUserInfoRequest();
}
@override
void onInit() {
// TODO: implement onInit
super.onInit();
getUserInfoRequest();
}
@override
void onClose() {
// TODO: implement onClose
}
}

View File

@ -23,12 +23,12 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
final logic = Get.put(MinePersonInfoLogic());
final state = Get.find<MinePersonInfoLogic>().state;
@override
void initState() {
super.initState();
logic.getUserInfoRequest();
}
// @override
// void initState() {
// super.initState();
//
// logic.getUserInfoRequest();
// }
@override
Widget build(BuildContext context) {
@ -198,7 +198,14 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
maxHeight: 250,
maxWidth: 250,
);
if (image != null) state.image = image;
setState(() {});
if (image != null) {
state.image = image;
var bytes = File(state.image!.path);
var enc = await bytes.readAsBytes();
print(enc.length);
print("state.image!.path:${state.image!.path} state.image!.name:${state.image!.name} state.image!.length():${state.image!.length()}");
logic.getUpTokenRequest(state.image!.name, enc.length);
setState((){});
}
}
}

View File

@ -198,6 +198,14 @@ class _MineSetPageState extends State<MineSetPage> {
action: () {
Toast.show(msg: "功能暂未开放");
}),
CommonItem(
leftTitel: "小米IoT平台",
rightTitle: "",
isHaveLine: false,
isHaveDirection: true,
action: () {
Toast.show(msg: "功能暂未开放");
}),
// CommonItem(leftTitel:TranslationLoader.lanKeys!.valueAddedServices!.tr, rightTitle:"", isHaveDirection: true, action: (){
//
// }),

View File

@ -26,6 +26,8 @@ abstract class Api {
final String lockRecordUploadURL = '/lockRecords/fromLock'; //
final String getLockRecordLastUploadDataTimeURL = '/lockRecords/getLastRecordTime'; //
final String getLockNetTokenURL = '/lock/getLockNetToken'; //token
final String bindingBlueAdminURL = '/lock/bindAdmin'; //
final String modifyKeyNameURL = '/key/modifyKeyName'; //
final String updateLockNameURL = '/lock/updateLockName'; //()
@ -141,7 +143,7 @@ abstract class Api {
'/safeAnswer/getOwnQuestionList'; //
final String setSafeAnswerURL = '/safeAnswer/set'; //
final String getUpTokenURL =
'/user/getUpToken'; // upToken updateUserInfo
'/file/getUploadParams'; // upToken updateUserInfo
final String unbindPhoneTokenURL = '/user/unbindPhoneToken'; //Token
final String unbindEmailTokenURL = '/user/unbindEmailToken'; //Token
final String pushBindAppIdURL = '/user/bindAppId'; //APP设备

View File

@ -260,14 +260,24 @@ class ApiProvider extends BaseProvider {
jsonEncode({
'lockId': lockId,
'records': records,
}));
}),
isUnShowLoading:true);
//
Future<Response> getLockRecordLastUploadDataTime(String lockId) => post(
getLockRecordLastUploadDataTimeURL.toUrl,
jsonEncode({
'lockId': lockId,
}));
}),
isUnShowLoading: true);
// token
Future<Response> getLockNetToken(String lockId) => post(
getLockNetTokenURL.toUrl,
jsonEncode({
'lockId': lockId,
}),
isUnShowLoading: true);
//
Future<Response> bindingBlueAdmin(
@ -603,6 +613,15 @@ class ApiProvider extends BaseProvider {
'attendance': resetSwitch,
}));
//
Future<Response> setOpenLockNeedOnlineData(int lockId, int appUnlockOnline) =>
post(
updateLockSettingUrl.toUrl,
jsonEncode({
'lockId': lockId,
'appUnlockOnline': appUnlockOnline,
}));
//
Future<Response> setRoomStatusData(int lockId, int roomStatus) =>
post(
@ -1319,9 +1338,19 @@ class ApiProvider extends BaseProvider {
setSafeAnswerURL.toUrl,
jsonEncode({"questionAndAnswerList": questionAndAnswerList}));
// upToken updateUserInfo
Future<Response> getUpToken(String type) =>
post(getUpTokenURL.toUrl, jsonEncode({"type": type}));
// upToken updateUserInfo
Future<Response> getUpToken(String module, String typeKey, String type, String filename, int size) =>
post(
getUpTokenURL.toUrl,
jsonEncode({
"module": module,
typeKey: type,
"filename": filename,
"size": size,
}));
//
Future<Response> uploadFile(String url, dynamic boay) => post(url, boay, isUnUploadFile: false, contentType:'multipart/form-data');
//Token
Future<Response> unbindPhoneToken(String verificationCode) => post(

Some files were not shown because too many files have changed in this diff Show More