发布版本星锁 1.0.0.02(preRelease-20231124),修改已知bug
3
.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
8
.idea/modules.xml
generated
Normal 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
@ -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
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@ -1,12 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Modify this file to customize your launch splash screen -->
|
<!-- Modify this file to customize your launch splash screen -->
|
||||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
<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 -->
|
<!-- You can insert your own image assets here -->
|
||||||
<!-- <item>
|
<item>
|
||||||
<bitmap
|
<bitmap
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:src="@mipmap/launch_image" />
|
android:src="@mipmap/ic_logo" />
|
||||||
</item> -->
|
</item>
|
||||||
</layer-list>
|
</layer-list>
|
||||||
|
|||||||
@ -4,9 +4,9 @@
|
|||||||
<item android:drawable="@android:color/white" />
|
<item android:drawable="@android:color/white" />
|
||||||
|
|
||||||
<!-- You can insert your own image assets here -->
|
<!-- You can insert your own image assets here -->
|
||||||
<!-- <item>
|
<item>
|
||||||
<bitmap
|
<bitmap
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:src="@mipmap/launch_image" />
|
android:src="@mipmap/ic_logo" />
|
||||||
</item> -->
|
</item>
|
||||||
</layer-list>
|
</layer-list>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 3.5 KiB |
BIN
star_lock/images/main/icon_lockElectricLevel_1.png
Normal file
|
After Width: | Height: | Size: 859 B |
BIN
star_lock/images/main/icon_lockElectricLevel_2.png
Normal file
|
After Width: | Height: | Size: 907 B |
BIN
star_lock/images/main/icon_lockElectricLevel_3.png
Normal file
|
After Width: | Height: | Size: 940 B |
BIN
star_lock/images/main/icon_lockElectricLevel_4.png
Normal file
|
After Width: | Height: | Size: 930 B |
BIN
star_lock/images/main/icon_lockElectricLevel_5.png
Normal file
|
After Width: | Height: | Size: 826 B |
@ -1,5 +1,5 @@
|
|||||||
# Uncomment this line to define a global platform for your project
|
# Uncomment this line to define a global platform for your project
|
||||||
platform :ios, '11.0'
|
# platform :ios, '11.0'
|
||||||
#use_modular_headers!
|
#use_modular_headers!
|
||||||
use_frameworks! :linkage => :static
|
use_frameworks! :linkage => :static
|
||||||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
|
||||||
|
|||||||
214
star_lock/ios/Podfile.lock
Normal 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
|
||||||
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
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 */; };
|
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
||||||
3EF1E85D6F1EE0C0DCF8449F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09D8B2FA2B26BA5BFF31AB2A /* Pods_Runner.framework */; };
|
3EF1E85D6F1EE0C0DCF8449F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09D8B2FA2B26BA5BFF31AB2A /* Pods_Runner.framework */; };
|
||||||
8297E4102AE75AC500E886FA /* XSFlutterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8297E40E2AE75AC500E886FA /* XSFlutterManager.m */; };
|
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; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
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>"; };
|
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
||||||
@ -604,6 +606,7 @@
|
|||||||
97C146F01CF9000F007C117D /* Runner */ = {
|
97C146F01CF9000F007C117D /* Runner */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
3364C3F32B0C902100AA5ABC /* lcokStarMain.png */,
|
||||||
82C026552AEB6C050011FE6A /* img */,
|
82C026552AEB6C050011FE6A /* img */,
|
||||||
82C026532AE8AC6D0011FE6A /* AliyunEmasServices-Info.plist */,
|
82C026532AE8AC6D0011FE6A /* AliyunEmasServices-Info.plist */,
|
||||||
8297E4992AE7974700E886FA /* AppDelegate.h */,
|
8297E4992AE7974700E886FA /* AppDelegate.h */,
|
||||||
@ -733,6 +736,7 @@
|
|||||||
82C026D72AEB6C050011FE6A /* mic.png in Resources */,
|
82C026D72AEB6C050011FE6A /* mic.png in Resources */,
|
||||||
82C026C32AEB6C050011FE6A /* call_menu_on.png in Resources */,
|
82C026C32AEB6C050011FE6A /* call_menu_on.png in Resources */,
|
||||||
82C026B02AEB6C050011FE6A /* call_call_on.png in Resources */,
|
82C026B02AEB6C050011FE6A /* call_call_on.png in Resources */,
|
||||||
|
3364C3F42B0C902100AA5ABC /* lcokStarMain.png in Resources */,
|
||||||
82C026C82AEB6C050011FE6A /* hf.png in Resources */,
|
82C026C82AEB6C050011FE6A /* hf.png in Resources */,
|
||||||
82C026BE2AEB6C050011FE6A /* vcontacts2.png in Resources */,
|
82C026BE2AEB6C050011FE6A /* vcontacts2.png in Resources */,
|
||||||
82C026AC2AEB6C050011FE6A /* spk.png in Resources */,
|
82C026AC2AEB6C050011FE6A /* spk.png in Resources */,
|
||||||
@ -1102,8 +1106,12 @@
|
|||||||
PRODUCT_BUNDLE_IDENTIFIER = "cn.star-lock.starLock";
|
PRODUCT_BUNDLE_IDENTIFIER = "cn.star-lock.starLock";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
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_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
};
|
};
|
||||||
name = Profile;
|
name = Profile;
|
||||||
@ -1347,9 +1355,13 @@
|
|||||||
PRODUCT_BUNDLE_IDENTIFIER = "cn.star-lock.starLock";
|
PRODUCT_BUNDLE_IDENTIFIER = "cn.star-lock.starLock";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
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_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
@ -1486,8 +1498,12 @@
|
|||||||
PRODUCT_BUNDLE_IDENTIFIER = "cn.star-lock.starLock";
|
PRODUCT_BUNDLE_IDENTIFIER = "cn.star-lock.starLock";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
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_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
|
|||||||
@ -37,12 +37,12 @@
|
|||||||
[self.window makeKeyAndVisible];
|
[self.window makeKeyAndVisible];
|
||||||
|
|
||||||
//关闭可视对讲功能 需打开时再解注释
|
//关闭可视对讲功能 需打开时再解注释
|
||||||
[self initSound];
|
//[self initSound];
|
||||||
_udp = [[UdpHelper alloc] init];
|
//_udp = [[UdpHelper alloc] init];
|
||||||
[_udp Open];
|
//[_udp Open];
|
||||||
_talk = [[talk_Class alloc] init];
|
//_talk = [[talk_Class alloc] init];
|
||||||
|
|
||||||
sysinfo.launchtime = [Sformat timestamp];
|
//sysinfo.launchtime = [Sformat timestamp];
|
||||||
|
|
||||||
|
|
||||||
return YES;
|
return YES;
|
||||||
|
|||||||
@ -108,7 +108,7 @@
|
|||||||
"size" : "83.5x83.5"
|
"size" : "83.5x83.5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "Icon-App-1024x1024@1x.png",
|
"filename" : "icon-1024.png",
|
||||||
"idiom" : "ios-marketing",
|
"idiom" : "ios-marketing",
|
||||||
"scale" : "1x",
|
"scale" : "1x",
|
||||||
"size" : "1024x1024"
|
"size" : "1024x1024"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 50 KiB |
6
star_lock/ios/Runner/Assets.xcassets/Contents.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2,22 +2,19 @@
|
|||||||
"images" : [
|
"images" : [
|
||||||
{
|
{
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"filename" : "LaunchImage.png",
|
|
||||||
"scale" : "1x"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"filename" : "LaunchImage@2x.png",
|
|
||||||
"scale" : "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"filename" : "LaunchImage@3x.png",
|
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"info" : {
|
"info" : {
|
||||||
"version" : 1,
|
"author" : "xcode",
|
||||||
"author" : "xcode"
|
"version" : 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 68 B |
|
Before Width: | Height: | Size: 68 B |
|
Before Width: | Height: | Size: 68 B |
@ -1,8 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<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">
|
<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>
|
<dependencies>
|
||||||
<deployment identifier="iOS"/>
|
<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>
|
</dependencies>
|
||||||
<scenes>
|
<scenes>
|
||||||
<!--View Controller-->
|
<!--View Controller-->
|
||||||
@ -14,24 +16,28 @@
|
|||||||
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
|
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
|
||||||
</layoutGuides>
|
</layoutGuides>
|
||||||
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
<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"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<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>
|
</imageView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||||
<constraints>
|
<constraints>
|
||||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
|
<constraint firstItem="YRO-k0-Ey4" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="akv-M9-cg9"/>
|
||||||
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
|
<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>
|
</constraints>
|
||||||
</view>
|
</view>
|
||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="53" y="375"/>
|
<point key="canvasLocation" x="80.916030534351137" y="264.08450704225356"/>
|
||||||
</scene>
|
</scene>
|
||||||
</scenes>
|
</scenes>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="LaunchImage" width="168" height="185"/>
|
<image name="lcokStarMain.png" width="750" height="1624"/>
|
||||||
</resources>
|
</resources>
|
||||||
</document>
|
</document>
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="iOS"/>
|
<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"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<scenes>
|
<scenes>
|
||||||
|
|||||||
BIN
star_lock/ios/Runner/lcokStarMain.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
@ -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/massSendLockGroupList_page.dart';
|
||||||
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiver_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/addFamily/addFamily_page.dart';
|
||||||
import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/catEyeSet_page.dart';
|
import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/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/faceUnlock/faceUnlock_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/familyDetails/familyDetails_page.dart';
|
||||||
import 'package:star_lock/main/lockDetail/lcokSet/lockUser/lockUser_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/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/notificationMode/notificationMode_page.dart';
|
||||||
import 'package:star_lock/main/lockDetail/lcokSet/openDoorDirection/openDoorDirection_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/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/main/lockDetail/otherTypeKey/addFace/addFace_page.dart';
|
||||||
import 'package:star_lock/mine/about/webviewShow_page.dart';
|
import 'package:star_lock/mine/about/webviewShow_page.dart';
|
||||||
import 'package:star_lock/mine/mine/safeVerify/safeVerify_page.dart';
|
import 'package:star_lock/mine/mine/safeVerify/safeVerify_page.dart';
|
||||||
@ -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/lockSeletGrouping/lockSeletGrouping_page.dart';
|
||||||
import 'main/lockDetail/lcokSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_page.dart';
|
import 'main/lockDetail/lcokSet/basicInformation/uploadElectricQuantity/uploadElectricQuantity_page.dart';
|
||||||
import 'main/lockDetail/lcokSet/burglarAlarm/burglarAlarm_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/checkInCreatCompany/checkInCreatCompany_page.dart';
|
||||||
import 'main/lockDetail/lcokSet/configuringWifi/configuringWifi_page.dart';
|
import 'main/lockDetail/lcokSet/configuringWifi/configuringWifi_page.dart';
|
||||||
import 'main/lockDetail/lcokSet/diagnose/diagnose_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/lockSoundSet/lockSoundSet_page.dart';
|
||||||
import 'main/lockDetail/lcokSet/lockTime/lockTime_page.dart';
|
import 'main/lockDetail/lcokSet/lockTime/lockTime_page.dart';
|
||||||
import 'main/lockDetail/lcokSet/markedHouseState/markedHouseState_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/normallyOpenMode/normallyOpenMode_page.dart';
|
||||||
import 'main/lockDetail/lcokSet/remoteUnlocking/remoteUnlocking_page.dart';
|
import 'main/lockDetail/lcokSet/remoteUnlocking/remoteUnlocking_page.dart';
|
||||||
import 'main/lockDetail/lcokSet/resetButton/resetButton_page.dart';
|
import 'main/lockDetail/lcokSet/resetButton/resetButton_page.dart';
|
||||||
|
|||||||
@ -120,6 +120,10 @@ class BlueManage{
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(deviceConnectionState == DeviceConnectionState.connected){
|
||||||
|
return;
|
||||||
|
}
|
||||||
_flutterReactiveBle!.connectToDevice(id: connectDeviceMacAddress, connectionTimeout: const Duration(seconds: 100000)).listen((connectionStateUpdate) async {
|
_flutterReactiveBle!.connectToDevice(id: connectDeviceMacAddress, connectionTimeout: const Duration(seconds: 100000)).listen((connectionStateUpdate) async {
|
||||||
// 获取状态
|
// 获取状态
|
||||||
deviceConnectionState = connectionStateUpdate.connectionState;
|
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");
|
// print("11111111$deviceConnectionState");
|
||||||
if(deviceMAC.isEmpty){
|
if(isShowToast){
|
||||||
Toast.show(msg: "未连接到设备,请确保在设备附近,设备未被连接,设备已打开");
|
if(deviceMAC.isEmpty){
|
||||||
// return;
|
Toast.show(msg: "未连接到设备,请确保在设备附近,设备未被连接,设备已打开");
|
||||||
|
// return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(deviceConnectionState == DeviceConnectionState.connected){
|
if(deviceConnectionState == DeviceConnectionState.connected){
|
||||||
// print("2222222:$deviceConnectionState");
|
// print("2222222:$deviceConnectionState");
|
||||||
if(isShowLoading){
|
if(isShowLoading){
|
||||||
@ -303,7 +310,7 @@ class BlueManage{
|
|||||||
// 当包有头时
|
// 当包有头时
|
||||||
// 判断是否需要分包
|
// 判断是否需要分包
|
||||||
dataLen = data[8] * 256 + data[9];
|
dataLen = data[8] * 256 + data[9];
|
||||||
print("dataLen1111:$dataLen getDataLength:${data.length}");
|
// print("dataLen1111:$dataLen getDataLength:${data.length}");
|
||||||
if(dataLen + 12 > data.length){
|
if(dataLen + 12 > data.length){
|
||||||
// 当前包的长度小于实际的包时 分包添加 不解析
|
// 当前包的长度小于实际的包时 分包添加 不解析
|
||||||
allData.addAll(data);
|
allData.addAll(data);
|
||||||
@ -318,7 +325,7 @@ class BlueManage{
|
|||||||
// 当包没有头时 是分包的包 直接添加
|
// 当包没有头时 是分包的包 直接添加
|
||||||
allData.addAll(data);
|
allData.addAll(data);
|
||||||
// var len = allData[8] * 256 + allData[9];
|
// var len = allData[8] * 256 + allData[9];
|
||||||
print("dataLen222:$dataLen");
|
// print("dataLen222:$dataLen");
|
||||||
if(dataLen <= (allData.length - 14)){
|
if(dataLen <= (allData.length - 14)){
|
||||||
// 当长度小于等于当前包的数据时 直接解析数据
|
// 当长度小于等于当前包的数据时 直接解析数据
|
||||||
CommandReciverManager.appDataReceive(allData);
|
CommandReciverManager.appDataReceive(allData);
|
||||||
|
|||||||
@ -13,6 +13,7 @@ class OpenLockCommand extends SenderProtocol {
|
|||||||
String? userID;
|
String? userID;
|
||||||
int? openMode;
|
int? openMode;
|
||||||
int? openTime;
|
int? openTime;
|
||||||
|
String? onlineToken;
|
||||||
List<int>? token;
|
List<int>? token;
|
||||||
int? needAuthor;
|
int? needAuthor;
|
||||||
List<int>? signKey;
|
List<int>? signKey;
|
||||||
@ -22,6 +23,7 @@ class OpenLockCommand extends SenderProtocol {
|
|||||||
this.userID,
|
this.userID,
|
||||||
this.openMode,
|
this.openMode,
|
||||||
this.openTime,
|
this.openTime,
|
||||||
|
this.onlineToken,
|
||||||
this.token,
|
this.token,
|
||||||
this.needAuthor,
|
this.needAuthor,
|
||||||
this.signKey,
|
this.signKey,
|
||||||
@ -102,6 +104,15 @@ class OpenLockCommand extends SenderProtocol {
|
|||||||
data.addAll(authCode.bytes);
|
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) {
|
if ((data.length % 16) != 0) {
|
||||||
int add = (16 - data.length % 16);
|
int add = (16 - data.length % 16);
|
||||||
for (int i = 0; i < add; i++) {
|
for (int i = 0; i < add; i++) {
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import '../io_sender.dart';
|
|||||||
import '../io_type.dart';
|
import '../io_type.dart';
|
||||||
import 'package:crypto/crypto.dart' as crypto;
|
import 'package:crypto/crypto.dart' as crypto;
|
||||||
|
|
||||||
//TODO:设置自定义密码
|
//TODO:设置开锁密码(备注:先添加管理员密码, 管理员满了后就是开锁密码)
|
||||||
/*
|
/*
|
||||||
备注:删除单个密码规则:pwd 设置为 6 个 0,UseCountLimit 设置为 0。删除全部密码规则:pwd 设置为 6 个 0,UseCountLimit 设置为 0,pwdNo 设置为 255,userId 设置为“DeleteAll !@#”,只有门锁管理员才有权限
|
备注:删除单个密码规则:pwd 设置为 6 个 0,UseCountLimit 设置为 0。删除全部密码规则:pwd 设置为 6 个 0,UseCountLimit 设置为 0,pwdNo 设置为 255,userId 设置为“DeleteAll !@#”,只有门锁管理员才有权限
|
||||||
**/
|
**/
|
||||||
|
|||||||
@ -161,6 +161,7 @@ class IoSenderManage {
|
|||||||
String? userID,
|
String? userID,
|
||||||
int? openMode,
|
int? openMode,
|
||||||
int? openTime,
|
int? openTime,
|
||||||
|
String? onlineToken,
|
||||||
List<int>? token,
|
List<int>? token,
|
||||||
int? needAuthor,
|
int? needAuthor,
|
||||||
List<int>? signKey,
|
List<int>? signKey,
|
||||||
@ -172,6 +173,7 @@ class IoSenderManage {
|
|||||||
userID: userID,
|
userID: userID,
|
||||||
openMode: openMode,
|
openMode: openMode,
|
||||||
openTime: openTime,
|
openTime: openTime,
|
||||||
|
onlineToken: onlineToken,
|
||||||
token: token,
|
token: token,
|
||||||
needAuthor: needAuthor,
|
needAuthor: needAuthor,
|
||||||
signKey: signKey,
|
signKey: signKey,
|
||||||
|
|||||||
@ -194,24 +194,6 @@ class _AuthorizedAdminDetailPageState extends State<AuthorizedAdminDetailPage> {
|
|||||||
hintText: "请输入要修改的名字",
|
hintText: "请输入要修改的名字",
|
||||||
//不需要输入框下划线
|
//不需要输入框下划线
|
||||||
border: InputBorder.none,
|
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,),
|
|
||||||
// ),
|
|
||||||
// )
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|||||||
@ -79,7 +79,7 @@ class _SendElectronicKeyManageTabbarState
|
|||||||
return Tab(
|
return Tab(
|
||||||
// text: item.title,
|
// text: item.title,
|
||||||
child: Container(
|
child: Container(
|
||||||
width: 1.sw / 8,
|
// width: 1.sw / 8,
|
||||||
margin: EdgeInsets.all(10.w),
|
margin: EdgeInsets.all(10.w),
|
||||||
// color: Colors.red,
|
// color: Colors.red,
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|||||||
@ -138,7 +138,7 @@ class AutomaticBlockingLogic extends BaseGetXController{
|
|||||||
privateKey: getPrivateKeyList
|
privateKey: getPrivateKeyList
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, isShowLoading: true);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置支持功能(带参数)
|
// 设置支持功能(带参数)
|
||||||
|
|||||||
@ -36,7 +36,7 @@ class AdminOpenLockPasswordLogic extends BaseGetXController{
|
|||||||
privateKey: getPrivateKeyList
|
privateKey: getPrivateKeyList
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, isShowLoading: true);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@ -133,7 +133,7 @@ class BurglarAlarmLogic extends BaseGetXController{
|
|||||||
privateKey: getPrivateKeyList
|
privateKey: getPrivateKeyList
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, isShowLoading: true);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置支持功能(带参数)
|
// 设置支持功能(带参数)
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import 'package:star_lock/main/lockDetail/lcokSet/catEyeSet/catEyeSet_state.dart';
|
|
||||||
import 'package:star_lock/tools/baseGetXController.dart';
|
import 'package:star_lock/tools/baseGetXController.dart';
|
||||||
|
|
||||||
|
import 'catEyeSet_state.dart';
|
||||||
|
|
||||||
class CatEyeSetLogic extends BaseGetXController {
|
class CatEyeSetLogic extends BaseGetXController {
|
||||||
final CatEyeSetState state = CatEyeSetState();
|
final CatEyeSetState state = CatEyeSetState();
|
||||||
}
|
}
|
||||||
@ -1,13 +1,14 @@
|
|||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/appRouters.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/commonItem.dart';
|
||||||
import 'package:star_lock/tools/custom_bottom_sheet.dart';
|
import 'package:star_lock/tools/custom_bottom_sheet.dart';
|
||||||
|
|
||||||
import '../../../../app_settings/app_colors.dart';
|
import '../../../../../app_settings/app_colors.dart';
|
||||||
import '../../../../tools/titleAppBar.dart';
|
import '../../../../../tools/titleAppBar.dart';
|
||||||
|
|
||||||
class CatEyeSetPage extends StatefulWidget {
|
class CatEyeSetPage extends StatefulWidget {
|
||||||
const CatEyeSetPage({Key? key}) : super(key: key);
|
const CatEyeSetPage({Key? key}) : super(key: key);
|
||||||
@ -23,7 +24,7 @@ class _CatEyeSetPageState extends State<CatEyeSetPage> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: Colors.white,
|
backgroundColor: AppColors.mainBackgroundColor,
|
||||||
appBar: TitleAppBar(
|
appBar: TitleAppBar(
|
||||||
barTitle: '猫眼设置',
|
barTitle: '猫眼设置',
|
||||||
haveBack: true,
|
haveBack: true,
|
||||||
@ -33,6 +34,7 @@ class _CatEyeSetPageState extends State<CatEyeSetPage> {
|
|||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: '猫眼工作模式',
|
leftTitel: '猫眼工作模式',
|
||||||
rightTitle: "",
|
rightTitle: "",
|
||||||
|
allHeight: 70.h,
|
||||||
isHaveLine: true,
|
isHaveLine: true,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
action: () {
|
action: () {
|
||||||
@ -1,8 +1,9 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
|
||||||
import '../../../../app_settings/app_colors.dart';
|
import '../../../../../app_settings/app_colors.dart';
|
||||||
import '../../../../tools/titleAppBar.dart';
|
import '../../../../../tools/titleAppBar.dart';
|
||||||
|
|
||||||
|
|
||||||
class CatEyeWorkModePage extends StatefulWidget {
|
class CatEyeWorkModePage extends StatefulWidget {
|
||||||
const CatEyeWorkModePage({Key? key}) : super(key: key);
|
const CatEyeWorkModePage({Key? key}) : super(key: key);
|
||||||
@ -172,7 +172,7 @@ class ConfiguringWifiLogic extends BaseGetXController{
|
|||||||
privateKey: getPrivateKeyList,
|
privateKey: getPrivateKeyList,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
}, isShowLoading: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
final _networkInfo = NetworkInfo();
|
final _networkInfo = NetworkInfo();
|
||||||
|
|||||||
@ -33,6 +33,7 @@ class _FaceUnlockPageState extends State<FaceUnlockPage> {
|
|||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: '面容开锁',
|
leftTitel: '面容开锁',
|
||||||
rightTitle: "",
|
rightTitle: "",
|
||||||
|
allHeight: 70.h,
|
||||||
isHaveLine: true,
|
isHaveLine: true,
|
||||||
isHaveRightWidget: true,
|
isHaveRightWidget: true,
|
||||||
rightWidget:
|
rightWidget:
|
||||||
|
|||||||
@ -202,7 +202,13 @@ class LockSetLogic extends BaseGetXController {
|
|||||||
//成功
|
//成功
|
||||||
print("${reply.commandType}数据解析成功");
|
print("${reply.commandType}数据解析成功");
|
||||||
// Toast.show(msg: "操作成功");featureEnable = state.isOpenStayWarn.value == 1 ? 0 : 1;
|
// 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.isOpenBlueBroadcast.value = state.isOpenBlueBroadcast.value == 1 ? 0 : 1;
|
||||||
state.lockSetInfoData.value.lockSettingInfo!.bluetoothBroadcast = state.isOpenBlueBroadcast.value;
|
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.isOpenExceptionWarnings.value = state.isOpenExceptionWarnings.value == 1 ? 0 : 1;
|
||||||
state.lockSetInfoData.value.lockSettingInfo!.abnormalWarn = state.isOpenExceptionWarnings.value;
|
state.lockSetInfoData.value.lockSettingInfo!.abnormalWarn = state.isOpenExceptionWarnings.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
print("isOpenBlueBroadcast111:${state.isOpenBlueBroadcast.value}");
|
print("isOpenBlueBroadcast111:${state.isOpenBlueBroadcast.value}");
|
||||||
break;
|
break;
|
||||||
case 0x06:
|
case 0x06:
|
||||||
@ -337,7 +342,10 @@ class LockSetLogic extends BaseGetXController {
|
|||||||
state.settingUpSupportFeatures = type;
|
state.settingUpSupportFeatures = type;
|
||||||
|
|
||||||
var featureEnable = 0;
|
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;
|
featureEnable = state.isOpenBlueBroadcast.value == 1 ? 0 : 1;
|
||||||
}else if(type == 61){
|
}else if(type == 61){
|
||||||
@ -371,9 +379,11 @@ class LockSetLogic extends BaseGetXController {
|
|||||||
state.lockFeature.value = state.lockSetInfoData.value.lockFeature!;
|
state.lockFeature.value = state.lockSetInfoData.value.lockFeature!;
|
||||||
state.lockStatus.value = state.lockSetInfoData.value.lockStatus!;
|
state.lockStatus.value = state.lockSetInfoData.value.lockStatus!;
|
||||||
state.isAttendance.value = state.lockSettingInfo.value.attendance!;
|
state.isAttendance.value = state.lockSettingInfo.value.attendance!;
|
||||||
|
state.isOpenLockNeedOnline.value = state.lockSettingInfo.value.appUnlockOnline!;
|
||||||
|
|
||||||
state.isOpenBlueBroadcast.value = state.lockSettingInfo.value.bluetoothBroadcast!;
|
state.isOpenBlueBroadcast.value = state.lockSettingInfo.value.bluetoothBroadcast!;
|
||||||
state.isOpenExceptionWarnings.value = state.lockSettingInfo.value.bluetoothBroadcast!;
|
state.isOpenExceptionWarnings.value = state.lockSettingInfo.value.bluetoothBroadcast!;
|
||||||
|
|
||||||
// await _readSupportFunctionsNoParameters(56);
|
// await _readSupportFunctionsNoParameters(56);
|
||||||
// _readSupportFunctionsNoParameters(62);
|
// _readSupportFunctionsNoParameters(62);
|
||||||
}
|
}
|
||||||
@ -406,7 +416,7 @@ class LockSetLogic extends BaseGetXController {
|
|||||||
password: state.passwordTF.text,
|
password: state.passwordTF.text,
|
||||||
);
|
);
|
||||||
if (entity.errorCode!.codeIsSuccessful) {
|
if (entity.errorCode!.codeIsSuccessful) {
|
||||||
// deletLockInfoData();
|
deletLockInfoData();
|
||||||
|
|
||||||
blockDeletNumberCheckPasswordCallback();
|
blockDeletNumberCheckPasswordCallback();
|
||||||
// if(state.currentDeviceUUid.value.isEmpty){
|
// if(state.currentDeviceUUid.value.isEmpty){
|
||||||
@ -459,6 +469,8 @@ class LockSetLogic extends BaseGetXController {
|
|||||||
|
|
||||||
state.isAttendance.value = (state.isAttendance.value == 1 ? 0 : 1);
|
state.isAttendance.value = (state.isAttendance.value == 1 ? 0 : 1);
|
||||||
state.lockSettingInfo.value.attendance = state.isAttendance.value;
|
state.lockSettingInfo.value.attendance = state.isAttendance.value;
|
||||||
|
|
||||||
|
eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(0, state.lockSettingInfo.value.attendance!));
|
||||||
print("state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}");
|
print("state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}");
|
||||||
Toast.show(msg: "设置成功");
|
Toast.show(msg: "设置成功");
|
||||||
}
|
}
|
||||||
@ -479,6 +491,24 @@ class LockSetLogic extends BaseGetXController {
|
|||||||
} else {}
|
} 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;
|
StreamSubscription? _passCurrentLockInformationEvent;
|
||||||
void initLoadDataAction(BlockSetStateCallback blockSetStateCallback) {
|
void initLoadDataAction(BlockSetStateCallback blockSetStateCallback) {
|
||||||
|
|||||||
@ -414,6 +414,19 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
|
|||||||
isHaveRightWidget: true,
|
isHaveRightWidget: true,
|
||||||
rightWidget: _lockRemindSwitch())),
|
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),
|
SizedBox(height: 10.h),
|
||||||
// wifi配网
|
// wifi配网
|
||||||
Obx(
|
Obx(
|
||||||
@ -533,6 +546,7 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
|
|||||||
style: TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor));
|
style: TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 开启考勤
|
||||||
CupertinoSwitch _openCheckInSwitch() {
|
CupertinoSwitch _openCheckInSwitch() {
|
||||||
// print("111111state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}");
|
// print("111111state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}");
|
||||||
return CupertinoSwitch(
|
return CupertinoSwitch(
|
||||||
@ -552,6 +566,7 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 开锁提醒
|
||||||
CupertinoSwitch _lockRemindSwitch() {
|
CupertinoSwitch _lockRemindSwitch() {
|
||||||
return CupertinoSwitch(
|
return CupertinoSwitch(
|
||||||
activeColor: CupertinoColors.activeBlue,
|
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() {
|
CupertinoSwitch _lockExceptionWarningsSwitch() {
|
||||||
print("isOpenBlueBroadcast222:${state.isOpenExceptionWarnings.value}");
|
print("isOpenBlueBroadcast222:${state.isOpenExceptionWarnings.value}");
|
||||||
|
|||||||
@ -13,6 +13,7 @@ class LockSetState {
|
|||||||
|
|
||||||
var isAttendance = 0.obs;// 是否开启考勤
|
var isAttendance = 0.obs;// 是否开启考勤
|
||||||
var currentDeviceUUid = "".obs;// 当前设备的uuid
|
var currentDeviceUUid = "".obs;// 当前设备的uuid
|
||||||
|
var isOpenLockNeedOnline = 0.obs;// APP开锁时是否需联网
|
||||||
|
|
||||||
var isLockPickingReminder = 0.obs;// 是否开启开锁提醒
|
var isLockPickingReminder = 0.obs;// 是否开启开锁提醒
|
||||||
var isOpenBlueBroadcast = 0.obs;// 是否开启蓝牙广播
|
var isOpenBlueBroadcast = 0.obs;// 是否开启蓝牙广播
|
||||||
|
|||||||
@ -141,7 +141,7 @@ class LockSoundSetLogic extends BaseGetXController {
|
|||||||
privateKey: getPrivateKeyList
|
privateKey: getPrivateKeyList
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, isShowLoading: true);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置支持功能(带参数)
|
// 设置支持功能(带参数)
|
||||||
|
|||||||
@ -31,58 +31,58 @@ class LockTimeLogic extends BaseGetXController{
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取锁状态
|
// 获取锁状态
|
||||||
if(reply is GetLockStatuReply) {
|
// if(reply is GetLockStatuReply) {
|
||||||
_replyGetLockStatus(reply);
|
// _replyGetLockStatus(reply);
|
||||||
}
|
// }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取锁状态数据解析
|
// 获取锁状态数据解析
|
||||||
Future<void> _replyGetLockStatus(Reply reply) async {
|
// Future<void> _replyGetLockStatus(Reply reply) async {
|
||||||
int status = reply.data[2];
|
// int status = reply.data[2];
|
||||||
switch(status){
|
// switch(status){
|
||||||
case 0x00:
|
// case 0x00:
|
||||||
//成功
|
// //成功
|
||||||
print("${reply.commandType}数据解析成功");
|
// print("${reply.commandType}数据解析成功");
|
||||||
|
//
|
||||||
// 锁当前时间
|
// // 锁当前时间
|
||||||
var lockTime = reply.data.sublist(60, 64);
|
// var lockTime = reply.data.sublist(60, 64);
|
||||||
|
//
|
||||||
int value = (
|
// int value = (
|
||||||
(0xff & lockTime[(0)]) << 24 |
|
// (0xff & lockTime[(0)]) << 24 |
|
||||||
(0xff & lockTime[1]) << 16 |
|
// (0xff & lockTime[1]) << 16 |
|
||||||
(0xff & lockTime[2]) << 8 |
|
// (0xff & lockTime[2]) << 8 |
|
||||||
(0xFF & lockTime[3]));
|
// (0xFF & lockTime[3]));
|
||||||
|
//
|
||||||
String dataEime = DateTool().dateToYMDHNSString("$value");
|
// String dataEime = DateTool().dateToYMDHNSString("$value");
|
||||||
state.dateTime.value = dataEime;
|
// state.dateTime.value = dataEime;
|
||||||
|
//
|
||||||
// String dataEime = DateTool().dateToYMDHNSString("${value}");
|
// // String dataEime = DateTool().dateToYMDHNSString("${value}");
|
||||||
// state.dateTime.value = dataEime;
|
// // state.dateTime.value = dataEime;
|
||||||
print("lockTime:$lockTime value:$value dataEime:$dataEime");
|
// print("lockTime:$lockTime value:$value dataEime:$dataEime");
|
||||||
break;
|
// break;
|
||||||
case 0x06:
|
// case 0x06:
|
||||||
//无权限
|
// //无权限
|
||||||
print("${reply.commandType}需要鉴权");
|
// print("${reply.commandType}需要鉴权");
|
||||||
|
//
|
||||||
break;
|
// break;
|
||||||
case 0x07:
|
// case 0x07:
|
||||||
//无权限
|
// //无权限
|
||||||
print("${reply.commandType}用户无权限");
|
// print("${reply.commandType}用户无权限");
|
||||||
|
//
|
||||||
break;
|
// break;
|
||||||
case 0x09:
|
// case 0x09:
|
||||||
// 权限校验错误
|
// // 权限校验错误
|
||||||
print("${reply.commandType}权限校验错误");
|
// print("${reply.commandType}权限校验错误");
|
||||||
|
//
|
||||||
break;
|
// break;
|
||||||
default:
|
// default:
|
||||||
//失败
|
// //失败
|
||||||
print("${reply.commandType}失败");
|
// print("${reply.commandType}失败");
|
||||||
|
//
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 校时数据解析
|
// 校时数据解析
|
||||||
Future<void> _replyTiming(Reply reply) async {
|
Future<void> _replyTiming(Reply reply) async {
|
||||||
@ -129,20 +129,20 @@ class LockTimeLogic extends BaseGetXController{
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 获取锁状态
|
// 获取锁状态
|
||||||
Future<void> _getLockStatus() async {
|
// Future<void> _getLockStatus() async {
|
||||||
// 进来之后首先连接
|
// // 进来之后首先连接
|
||||||
BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, (DeviceConnectionState state) async {
|
// BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, (DeviceConnectionState state) async {
|
||||||
if (state == DeviceConnectionState.connected) {
|
// if (state == DeviceConnectionState.connected) {
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
// var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
// List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
IoSenderManage.senderGetLockStatu(
|
// IoSenderManage.senderGetLockStatu(
|
||||||
lockID:BlueManage().connectDeviceName,
|
// lockID:BlueManage().connectDeviceName,
|
||||||
userID:await Storage.getUid(),
|
// userID:await Storage.getUid(),
|
||||||
privateKey:getPrivateKeyList,
|
// privateKey:getPrivateKeyList,
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
}, isShowLoading: false);
|
// }, isShowLoading: false);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 校验时间
|
// 校验时间
|
||||||
Future<void> sendTiming() async {
|
Future<void> sendTiming() async {
|
||||||
|
|||||||
@ -132,7 +132,7 @@ class MotorPowerLogic extends BaseGetXController {
|
|||||||
privateKey: getPrivateKeyList
|
privateKey: getPrivateKeyList
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, isShowLoading: true);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置支持功能(带参数)
|
// 设置支持功能(带参数)
|
||||||
|
|||||||
@ -5,8 +5,8 @@ import 'package:star_lock/appRouters.dart';
|
|||||||
import 'package:star_lock/tools/commonItem.dart';
|
import 'package:star_lock/tools/commonItem.dart';
|
||||||
import 'package:star_lock/tools/submitBtn.dart';
|
import 'package:star_lock/tools/submitBtn.dart';
|
||||||
|
|
||||||
import '../../../../../app_settings/app_colors.dart';
|
import '../../../../../../app_settings/app_colors.dart';
|
||||||
import '../../../../../tools/titleAppBar.dart';
|
import '../../../../../../tools/titleAppBar.dart';
|
||||||
|
|
||||||
class CoerceFingerprintPage extends StatefulWidget {
|
class CoerceFingerprintPage extends StatefulWidget {
|
||||||
const CoerceFingerprintPage({Key? key}) : super(key: key);
|
const CoerceFingerprintPage({Key? key}) : super(key: key);
|
||||||
@ -2,10 +2,11 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/main/lockDetail/lcokSet/lockUser/lockUser_logic.dart';
|
import 'package:star_lock/main/lockDetail/lcokSet/lockUser/lockUser_logic.dart';
|
||||||
import '../../../../app_settings/app_colors.dart';
|
|
||||||
import '../../../../tools/submitBtn.dart';
|
import '../../../../../../app_settings/app_colors.dart';
|
||||||
import '../../../../tools/titleAppBar.dart';
|
import '../../../../../../tools/submitBtn.dart';
|
||||||
import '../../../../translations/trans_lib.dart';
|
import '../../../../../../tools/titleAppBar.dart';
|
||||||
|
import '../../../../../../translations/trans_lib.dart';
|
||||||
|
|
||||||
class CoerceFingerprintListPage extends StatefulWidget {
|
class CoerceFingerprintListPage extends StatefulWidget {
|
||||||
const CoerceFingerprintListPage({Key? key}) : super(key: key);
|
const CoerceFingerprintListPage({Key? key}) : super(key: key);
|
||||||
@ -1,6 +1,7 @@
|
|||||||
import 'package:star_lock/main/lockDetail/lcokSet/coerceOpenDoor/coerceOpenDoor_state.dart';
|
|
||||||
import 'package:star_lock/tools/baseGetXController.dart';
|
import 'package:star_lock/tools/baseGetXController.dart';
|
||||||
|
|
||||||
|
import 'coerceOpenDoor_state.dart';
|
||||||
|
|
||||||
class CoerceOpenDoorLogic extends BaseGetXController {
|
class CoerceOpenDoorLogic extends BaseGetXController {
|
||||||
final CoerceOpenDoorState state = CoerceOpenDoorState();
|
final CoerceOpenDoorState state = CoerceOpenDoorState();
|
||||||
}
|
}
|
||||||
@ -2,10 +2,11 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/appRouters.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 '../../../../../../app_settings/app_colors.dart';
|
||||||
import '../../../../tools/submitBtn.dart';
|
import '../../../../../../tools/submitBtn.dart';
|
||||||
import '../../../../tools/titleAppBar.dart';
|
import '../../../../../../tools/titleAppBar.dart';
|
||||||
|
import 'coerceOpenDoor_logic.dart';
|
||||||
|
|
||||||
class CoerceOpenDoorPage extends StatefulWidget {
|
class CoerceOpenDoorPage extends StatefulWidget {
|
||||||
const CoerceOpenDoorPage({Key? key}) : super(key: key);
|
const CoerceOpenDoorPage({Key? key}) : super(key: key);
|
||||||
@ -1,6 +1,7 @@
|
|||||||
import 'package:star_lock/main/lockDetail/lcokSet/lowBatteryReminder/lowBatteryReminder_state.dart';
|
|
||||||
import 'package:star_lock/tools/baseGetXController.dart';
|
import 'package:star_lock/tools/baseGetXController.dart';
|
||||||
|
|
||||||
|
import 'lowBatteryReminder_state.dart';
|
||||||
|
|
||||||
class LowBatteryReminderLogic extends BaseGetXController {
|
class LowBatteryReminderLogic extends BaseGetXController {
|
||||||
LowBatteryReminderState state = LowBatteryReminderState();
|
LowBatteryReminderState state = LowBatteryReminderState();
|
||||||
}
|
}
|
||||||
@ -3,12 +3,12 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/appRouters.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/commonItem.dart';
|
||||||
import 'package:star_lock/tools/submitBtn.dart';
|
import 'package:star_lock/tools/submitBtn.dart';
|
||||||
|
|
||||||
import '../../../../../app_settings/app_colors.dart';
|
import '../../../../../app_settings/app_colors.dart';
|
||||||
import '../../../../../tools/titleAppBar.dart';
|
import '../../../../../tools/titleAppBar.dart';
|
||||||
|
import 'lowBatteryReminder_logic.dart';
|
||||||
|
|
||||||
class LowBatteryReminderPage extends StatefulWidget {
|
class LowBatteryReminderPage extends StatefulWidget {
|
||||||
const LowBatteryReminderPage({Key? key}) : super(key: key);
|
const LowBatteryReminderPage({Key? key}) : super(key: key);
|
||||||
@ -1,5 +1,6 @@
|
|||||||
import 'package:star_lock/main/lockDetail/lcokSet/msgNotification/msgNotification_state.dart';
|
|
||||||
import 'package:star_lock/tools/baseGetXController.dart';
|
import 'package:star_lock/tools/baseGetXController.dart';
|
||||||
|
import 'msgNotification_state.dart';
|
||||||
|
|
||||||
class MsgNotificationLogic extends BaseGetXController {
|
class MsgNotificationLogic extends BaseGetXController {
|
||||||
final MsgNotificationState state = MsgNotificationState();
|
final MsgNotificationState state = MsgNotificationState();
|
||||||
@ -3,11 +3,11 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/appRouters.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 '../../../../../app_settings/app_colors.dart';
|
||||||
import '../../../../tools/commonItem.dart';
|
import '../../../../../tools/commonItem.dart';
|
||||||
import '../../../../tools/titleAppBar.dart';
|
import '../../../../../tools/titleAppBar.dart';
|
||||||
|
|
||||||
class MsgNotificationPage extends StatefulWidget {
|
class MsgNotificationPage extends StatefulWidget {
|
||||||
const MsgNotificationPage({Key? key}) : super(key: key);
|
const MsgNotificationPage({Key? key}) : super(key: key);
|
||||||
@ -38,7 +38,7 @@ class _MsgNotificationPageState extends State<MsgNotificationPage> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: Colors.white,
|
backgroundColor: AppColors.mainBackgroundColor,
|
||||||
appBar: TitleAppBar(
|
appBar: TitleAppBar(
|
||||||
barTitle: '消息提醒',
|
barTitle: '消息提醒',
|
||||||
haveBack: true,
|
haveBack: true,
|
||||||
@ -51,31 +51,33 @@ class _MsgNotificationPageState extends State<MsgNotificationPage> {
|
|||||||
Widget _buildMainItem() {
|
Widget _buildMainItem() {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
Container(
|
// Container(
|
||||||
alignment: Alignment.centerLeft,
|
// alignment: Alignment.centerLeft,
|
||||||
margin: EdgeInsets.only(left: 40.w, top: 40.h, bottom: 30.h),
|
// margin: EdgeInsets.only(left: 40.w, top: 20.h, bottom: 20.h),
|
||||||
child: Text(
|
// child: Text(
|
||||||
'门锁通知',
|
// '门锁通知',
|
||||||
style:
|
// style: TextStyle(color: Colors.black, fontSize: 26.sp, fontWeight: FontWeight.w500),
|
||||||
TextStyle(color: AppColors.msgNoticeTextColor, fontSize: 24.sp),
|
// ),
|
||||||
),
|
// ),
|
||||||
),
|
// Divider(
|
||||||
|
// color: AppColors.greyLineColor,
|
||||||
|
// indent: 20.w,
|
||||||
|
// endIndent: 20.w,
|
||||||
|
// height: 1,
|
||||||
|
// ),
|
||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: '开门通知',
|
leftTitel: '开门通知',
|
||||||
rightTitle: "已启用",
|
rightTitle: "已启用",
|
||||||
isHaveLine: false,
|
isHaveLine: true,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
action: () {
|
action: () {
|
||||||
Get.toNamed(Routers.openDoorNotifyPage);
|
Get.toNamed(Routers.openDoorNotifyPage);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
SizedBox(
|
|
||||||
height: 20.h,
|
|
||||||
),
|
|
||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: 'N天未开门',
|
leftTitel: 'N天未开门',
|
||||||
rightTitle: "已启用",
|
rightTitle: "已启用",
|
||||||
isHaveLine: false,
|
isHaveLine: true,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
action: () {
|
action: () {
|
||||||
Get.toNamed(Routers.nDaysUnopenedPage);
|
Get.toNamed(Routers.nDaysUnopenedPage);
|
||||||
@ -91,40 +93,28 @@ class _MsgNotificationPageState extends State<MsgNotificationPage> {
|
|||||||
// isHaveRightWidget: true,
|
// isHaveRightWidget: true,
|
||||||
// rightWidget:
|
// rightWidget:
|
||||||
// SizedBox(width: 60.w, height: 50.h, child: _switch(1)))),
|
// SizedBox(width: 60.w, height: 50.h, child: _switch(1)))),
|
||||||
SizedBox(
|
|
||||||
height: 20.h,
|
|
||||||
),
|
|
||||||
Obx(() => CommonItem(
|
Obx(() => CommonItem(
|
||||||
leftTitel: '门未关好',
|
leftTitel: '门未关好',
|
||||||
rightTitle: "",
|
rightTitle: "",
|
||||||
isHaveLine: false,
|
isHaveLine: true,
|
||||||
isHaveRightWidget: true,
|
isHaveRightWidget: true,
|
||||||
rightWidget:
|
rightWidget:
|
||||||
SizedBox(width: 60.w, height: 50.h, child: _switch(2)))),
|
SizedBox(width: 60.w, height: 50.h, child: _switch(2)))),
|
||||||
SizedBox(
|
|
||||||
height: 20.h,
|
|
||||||
),
|
|
||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: '防拆报警',
|
leftTitel: '防拆报警',
|
||||||
rightTitle: "已启用",
|
rightTitle: "已启用",
|
||||||
isHaveLine: false,
|
isHaveLine: true,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
),
|
),
|
||||||
SizedBox(
|
|
||||||
height: 20.h,
|
|
||||||
),
|
|
||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: '低电量提醒',
|
leftTitel: '低电量提醒',
|
||||||
rightTitle: "已启用",
|
rightTitle: "已启用",
|
||||||
isHaveLine: false,
|
isHaveLine: true,
|
||||||
isHaveDirection: true,
|
isHaveDirection: true,
|
||||||
action: () {
|
action: () {
|
||||||
Get.toNamed(Routers.lowBatteryReminderPage);
|
Get.toNamed(Routers.lowBatteryReminderPage);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
SizedBox(
|
|
||||||
height: 20.h,
|
|
||||||
),
|
|
||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: '胁迫开门',
|
leftTitel: '胁迫开门',
|
||||||
rightTitle: "",
|
rightTitle: "",
|
||||||
@ -134,17 +124,16 @@ class _MsgNotificationPageState extends State<MsgNotificationPage> {
|
|||||||
Get.toNamed(Routers.coerceOpenDoorPage);
|
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(
|
SizedBox(
|
||||||
height: 30.h,
|
height: 10.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),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
Obx(() => CommonItem(
|
Obx(() => CommonItem(
|
||||||
leftTitel: '有人按门铃',
|
leftTitel: '有人按门铃',
|
||||||
@ -153,22 +142,21 @@ class _MsgNotificationPageState extends State<MsgNotificationPage> {
|
|||||||
isHaveRightWidget: true,
|
isHaveRightWidget: true,
|
||||||
rightWidget:
|
rightWidget:
|
||||||
SizedBox(width: 60.w, height: 50.h, child: _switch(3)))),
|
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(
|
SizedBox(
|
||||||
height: 30.h,
|
height: 10.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),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
Obx(() => CommonItem(
|
Obx(() => CommonItem(
|
||||||
leftTitel: '有人出现在门口',
|
leftTitel: '有人出现在门口',
|
||||||
rightTitle: "",
|
rightTitle: "",
|
||||||
isHaveLine: false,
|
isHaveLine: true,
|
||||||
isHaveRightWidget: true,
|
isHaveRightWidget: true,
|
||||||
rightWidget:
|
rightWidget:
|
||||||
SizedBox(width: 60.w, height: 50.h, child: _switch(4)))),
|
SizedBox(width: 60.w, height: 50.h, child: _switch(4)))),
|
||||||
@ -1,6 +1,7 @@
|
|||||||
import 'package:star_lock/main/lockDetail/lcokSet/nDaysUnopened/nDaysUnopened_state.dart';
|
|
||||||
import 'package:star_lock/tools/baseGetXController.dart';
|
import 'package:star_lock/tools/baseGetXController.dart';
|
||||||
|
|
||||||
|
import 'nDaysUnopened_state.dart';
|
||||||
|
|
||||||
class NDaysUnopenedLogic extends BaseGetXController {
|
class NDaysUnopenedLogic extends BaseGetXController {
|
||||||
NDaysUnopenedState state = NDaysUnopenedState();
|
NDaysUnopenedState state = NDaysUnopenedState();
|
||||||
}
|
}
|
||||||
@ -5,12 +5,12 @@ import 'package:flutter_pickers/style/default_style.dart';
|
|||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/appRouters.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/commonItem.dart';
|
||||||
import 'package:star_lock/tools/submitBtn.dart';
|
import 'package:star_lock/tools/submitBtn.dart';
|
||||||
|
|
||||||
import '../../../../../app_settings/app_colors.dart';
|
import '../../../../../app_settings/app_colors.dart';
|
||||||
import '../../../../../tools/titleAppBar.dart';
|
import '../../../../../tools/titleAppBar.dart';
|
||||||
|
import 'nDaysUnopened_logic.dart';
|
||||||
|
|
||||||
class NDaysUnopenedPage extends StatefulWidget {
|
class NDaysUnopenedPage extends StatefulWidget {
|
||||||
const NDaysUnopenedPage({Key? key}) : super(key: key);
|
const NDaysUnopenedPage({Key? key}) : super(key: key);
|
||||||
@ -1,5 +1,6 @@
|
|||||||
import 'package:star_lock/main/lockDetail/lcokSet/openDoorNotify/openDoorNotify_state.dart';
|
|
||||||
import 'package:star_lock/tools/baseGetXController.dart';
|
import 'package:star_lock/tools/baseGetXController.dart';
|
||||||
|
import 'openDoorNotify_state.dart';
|
||||||
|
|
||||||
class OpenDoorNotifyLogic extends BaseGetXController {
|
class OpenDoorNotifyLogic extends BaseGetXController {
|
||||||
final OpenDoorNotifyState state = OpenDoorNotifyState();
|
final OpenDoorNotifyState state = OpenDoorNotifyState();
|
||||||
@ -2,10 +2,11 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/appRouters.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 '../../../../../app_settings/app_colors.dart';
|
||||||
import '../../../../tools/submitBtn.dart';
|
import '../../../../../tools/submitBtn.dart';
|
||||||
import '../../../../tools/titleAppBar.dart';
|
import '../../../../../tools/titleAppBar.dart';
|
||||||
|
import 'openDoorNotify_logic.dart';
|
||||||
|
|
||||||
class OpenDoorNotifyPage extends StatefulWidget {
|
class OpenDoorNotifyPage extends StatefulWidget {
|
||||||
const OpenDoorNotifyPage({Key? key}) : super(key: key);
|
const OpenDoorNotifyPage({Key? key}) : super(key: key);
|
||||||
@ -160,7 +160,7 @@ class NormallyOpenModeLogic extends BaseGetXController{
|
|||||||
privateKey: getPrivateKeyList
|
privateKey: getPrivateKeyList
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, isShowLoading: true);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置支持功能(带参数)
|
// 设置支持功能(带参数)
|
||||||
|
|||||||
@ -134,7 +134,7 @@ class OpenDoorDirectionLogic extends BaseGetXController {
|
|||||||
privateKey: getPrivateKeyList
|
privateKey: getPrivateKeyList
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, isShowLoading: true);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置支持功能(带参数)
|
// 设置支持功能(带参数)
|
||||||
|
|||||||
@ -135,7 +135,7 @@ class ResetButtonLogic extends BaseGetXController{
|
|||||||
privateKey: getPrivateKeyList
|
privateKey: getPrivateKeyList
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, isShowLoading: true);
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置支持功能(带参数)
|
// 设置支持功能(带参数)
|
||||||
|
|||||||
@ -27,7 +27,7 @@ class _UploadDataPageState extends State<UploadDataPage> {
|
|||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
children: [
|
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,),
|
SizedBox(height: 30.h,),
|
||||||
|
|||||||
@ -1,14 +1,10 @@
|
|||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:convert';
|
|
||||||
import 'dart:io';
|
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:flutter_reactive_ble/flutter_reactive_ble.dart';
|
||||||
import 'package:permission_handler/permission_handler.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_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_protocol/io_getLockStatu.dart';
|
||||||
import 'package:star_lock/blue/io_type.dart';
|
import 'package:star_lock/blue/io_type.dart';
|
||||||
import 'package:star_lock/tools/toast.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_openLock.dart';
|
||||||
import '../../../blue/io_protocol/io_referEventRecordTime.dart';
|
import '../../../blue/io_protocol/io_referEventRecordTime.dart';
|
||||||
import '../../../blue/io_reply.dart';
|
import '../../../blue/io_reply.dart';
|
||||||
import '../../../blue/io_tool/io_manager.dart';
|
|
||||||
import '../../../blue/io_tool/io_tool.dart';
|
import '../../../blue/io_tool/io_tool.dart';
|
||||||
import '../../../blue/io_tool/manager_event_bus.dart';
|
import '../../../blue/io_tool/manager_event_bus.dart';
|
||||||
import '../../../blue/sender_manage.dart';
|
import '../../../blue/sender_manage.dart';
|
||||||
import '../../../login/login/entity/LoginData.dart';
|
|
||||||
import '../../../login/login/entity/LoginEntity.dart';
|
|
||||||
import '../../../network/api_repository.dart';
|
import '../../../network/api_repository.dart';
|
||||||
import '../../../tools/baseGetXController.dart';
|
import '../../../tools/baseGetXController.dart';
|
||||||
import '../../../tools/eventBusEventManage.dart';
|
import '../../../tools/eventBusEventManage.dart';
|
||||||
@ -31,6 +24,7 @@ import '../../../tools/storage.dart';
|
|||||||
import '../electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart';
|
import '../electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart';
|
||||||
import '../lockOperatingRecord/lockOperatingRecordGetLastRecordTime_entity.dart';
|
import '../lockOperatingRecord/lockOperatingRecordGetLastRecordTime_entity.dart';
|
||||||
import 'lockDetail_state.dart';
|
import 'lockDetail_state.dart';
|
||||||
|
import 'lockNetToken_entity.dart';
|
||||||
|
|
||||||
class LockDetailLogic extends BaseGetXController{
|
class LockDetailLogic extends BaseGetXController{
|
||||||
final LockDetailState state = LockDetailState();
|
final LockDetailState state = LockDetailState();
|
||||||
@ -44,15 +38,10 @@ class LockDetailLogic extends BaseGetXController{
|
|||||||
_replyOpenLock(reply);
|
_replyOpenLock(reply);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取锁状态
|
|
||||||
if(reply is GetLockStatuReply) {
|
|
||||||
_replyGetLockStatus(reply);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 编辑锁用户
|
// 编辑锁用户
|
||||||
if(reply is EditUserReply){
|
// if(reply is EditUserReply){
|
||||||
_replyEditUserKey(reply);
|
// _replyEditUserKey(reply);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 获取星锁状态信息
|
// 获取星锁状态信息
|
||||||
if(reply is GetStarLockStatuInfoReply){
|
if(reply is GetStarLockStatuInfoReply){
|
||||||
@ -76,11 +65,12 @@ class LockDetailLogic extends BaseGetXController{
|
|||||||
|
|
||||||
var tokenData = reply.data.sublist(2, 6);
|
var tokenData = reply.data.sublist(2, 6);
|
||||||
var saveStrList = changeIntListToStringList(tokenData);
|
var saveStrList = changeIntListToStringList(tokenData);
|
||||||
print("openDoorToken:$tokenData");
|
// print("openDoorToken:$tokenData");
|
||||||
Storage.setStringList(saveBlueToken, saveStrList);
|
Storage.setStringList(saveBlueToken, saveStrList);
|
||||||
|
|
||||||
// 电量
|
// 电量
|
||||||
int power = reply.data[7];
|
int power = reply.data[7];
|
||||||
|
state.electricQuantity.value = power;
|
||||||
|
|
||||||
int status = reply.data[6];
|
int status = reply.data[6];
|
||||||
print("status:$status");
|
print("status:$status");
|
||||||
@ -96,15 +86,15 @@ class LockDetailLogic extends BaseGetXController{
|
|||||||
// state.animationController.isCompleted;
|
// state.animationController.isCompleted;
|
||||||
break;
|
break;
|
||||||
case 0x06:
|
case 0x06:
|
||||||
//无权限
|
//无权限
|
||||||
print("${reply.commandType}需要鉴权");
|
print("${reply.commandType}需要鉴权");
|
||||||
|
|
||||||
print("millisecondsSinceEpoch/1000:${DateTime.now().millisecondsSinceEpoch~/1000}");
|
|
||||||
IoSenderManage.senderOpenLock(
|
IoSenderManage.senderOpenLock(
|
||||||
keyID: BlueManage().connectDeviceName,
|
keyID: BlueManage().connectDeviceName,
|
||||||
userID: await Storage.getUid(),
|
userID: await Storage.getUid(),
|
||||||
openMode: 1,
|
openMode: 1,
|
||||||
openTime: DateTime.now().millisecondsSinceEpoch~/1000,
|
openTime: DateTime.now().millisecondsSinceEpoch~/1000,
|
||||||
|
onlineToken:state.lockNetToken,
|
||||||
token: tokenData,
|
token: tokenData,
|
||||||
needAuthor: 1,
|
needAuthor: 1,
|
||||||
signKey: signKeyDataList,
|
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 {
|
// Future<void> _replyEditUserKey(Reply reply) async {
|
||||||
var token = reply.data.sublist(2, 6);
|
// var token = reply.data.sublist(2, 6);
|
||||||
var saveStrList = changeIntListToStringList(token);
|
// var saveStrList = changeIntListToStringList(token);
|
||||||
print("_replyEditUserKeyToken:$token");
|
// print("_replyEditUserKeyToken:$token");
|
||||||
Storage.setStringList(saveBlueToken, saveStrList);
|
// Storage.setStringList(saveBlueToken, saveStrList);
|
||||||
|
//
|
||||||
int status = reply.data[6];
|
// int status = reply.data[6];
|
||||||
print("status:$status");
|
// print("status:$status");
|
||||||
|
//
|
||||||
switch(status){
|
// switch(status){
|
||||||
case 0x00:
|
// case 0x00:
|
||||||
//成功
|
// //成功
|
||||||
print("${reply.commandType!.typeValue} 数据解析成功");
|
// print("${reply.commandType!.typeValue} 数据解析成功");
|
||||||
|
//
|
||||||
break;
|
// break;
|
||||||
case 0x06:
|
// case 0x06:
|
||||||
//无权限
|
// //无权限
|
||||||
print("${reply.commandType!.typeValue} 需要鉴权");
|
// print("${reply.commandType!.typeValue} 需要鉴权");
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
// var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
// List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
//
|
||||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||||
|
//
|
||||||
IoSenderManage.senderEditUser(
|
// IoSenderManage.senderEditUser(
|
||||||
lockID:BlueManage().connectDeviceName,
|
// lockID:BlueManage().connectDeviceName,
|
||||||
authUserID:await Storage.getUid(),
|
// authUserID:await Storage.getUid(),
|
||||||
keyID:"1",
|
// keyID:"1",
|
||||||
userID:await Storage.getUid(),
|
// userID:await Storage.getUid(),
|
||||||
openMode:1,
|
// openMode:1,
|
||||||
keyType:1,
|
// keyType:1,
|
||||||
startDate:0x11223344,
|
// startDate:0x11223344,
|
||||||
expireDate:0x11223344,
|
// expireDate:0x11223344,
|
||||||
role:255,
|
// role:255,
|
||||||
password:"123456",
|
// password:"123456",
|
||||||
needAuthor:1,
|
// needAuthor:1,
|
||||||
publicKey:publicKeyDataList,
|
// publicKey:publicKeyDataList,
|
||||||
privateKey:getPrivateKeyList,
|
// privateKey:getPrivateKeyList,
|
||||||
token: token
|
// token: token
|
||||||
);
|
// );
|
||||||
break;
|
// break;
|
||||||
case 0x07:
|
// case 0x07:
|
||||||
//无权限
|
// //无权限
|
||||||
print("${reply.commandType!.typeValue} 用户无权限");
|
// print("${reply.commandType!.typeValue} 用户无权限");
|
||||||
|
//
|
||||||
break;
|
// break;
|
||||||
case 0x09:
|
// case 0x09:
|
||||||
// 权限校验错误
|
// // 权限校验错误
|
||||||
print("${reply.commandType!.typeValue} 权限校验错误");
|
// print("${reply.commandType!.typeValue} 权限校验错误");
|
||||||
|
//
|
||||||
break;
|
// break;
|
||||||
default:
|
// default:
|
||||||
//失败
|
// //失败
|
||||||
print("${reply.commandType!.typeValue} 失败");
|
// print("${reply.commandType!.typeValue} 失败");
|
||||||
|
//
|
||||||
break;
|
// break;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
// 获取锁状态数据解析
|
||||||
Future<void> _replyGetStarLockStatusInfo(Reply reply) async {
|
Future<void> _replyGetStarLockStatusInfo(Reply reply) async {
|
||||||
int status = reply.data[2];
|
int status = reply.data[2];
|
||||||
switch(status){
|
switch(status){
|
||||||
@ -271,55 +189,55 @@ class LockDetailLogic extends BaseGetXController{
|
|||||||
print("${reply.commandType}数据解析成功");
|
print("${reply.commandType}数据解析成功");
|
||||||
// 厂商名称
|
// 厂商名称
|
||||||
var vendor = reply.data.sublist(3, 23);
|
var vendor = reply.data.sublist(3, 23);
|
||||||
print("vendor:$vendor");
|
// print("vendor:$vendor");
|
||||||
|
|
||||||
// 锁设备类型
|
// 锁设备类型
|
||||||
var product = reply.data[23];
|
var product = reply.data[23];
|
||||||
print("product:$product");
|
// print("product:$product");
|
||||||
|
|
||||||
// 产品名称
|
// 产品名称
|
||||||
var model = reply.data.sublist(24, 44);
|
var model = reply.data.sublist(24, 44);
|
||||||
print("model:$model");
|
// print("model:$model");
|
||||||
|
|
||||||
// 软件版本
|
// 软件版本
|
||||||
var fwVersion = reply.data.sublist(44, 64);
|
var fwVersion = reply.data.sublist(44, 64);
|
||||||
print("fwVersion:$fwVersion");
|
// print("fwVersion:$fwVersion");
|
||||||
|
|
||||||
// 硬件版本
|
// 硬件版本
|
||||||
var hwVersion = reply.data.sublist(64, 84);
|
var hwVersion = reply.data.sublist(64, 84);
|
||||||
print("hwVersion:$hwVersion");
|
// print("hwVersion:$hwVersion");
|
||||||
|
|
||||||
// 厂商序列号
|
// 厂商序列号
|
||||||
var serialNum0 = reply.data.sublist(84, 100);
|
var serialNum0 = reply.data.sublist(84, 100);
|
||||||
print("serialNum0:$serialNum0");
|
// print("serialNum0:$serialNum0");
|
||||||
|
|
||||||
// 成品商序列号
|
// 成品商序列号
|
||||||
var serialNum1 = reply.data.sublist(100, 116);
|
var serialNum1 = reply.data.sublist(100, 116);
|
||||||
print("serialNum1:$serialNum1");
|
// print("serialNum1:$serialNum1");
|
||||||
|
|
||||||
// 蓝牙名称
|
// 蓝牙名称
|
||||||
var btDeviceName = reply.data.sublist(116, 132);
|
var btDeviceName = reply.data.sublist(116, 132);
|
||||||
print("btDeviceName:$btDeviceName");
|
// print("btDeviceName:$btDeviceName");
|
||||||
|
|
||||||
// 电池剩余电量
|
// 电池剩余电量
|
||||||
var battRemCap = reply.data[132];
|
var battRemCap = reply.data[132];
|
||||||
print("battRemCap:$battRemCap");
|
// print("battRemCap:$battRemCap");
|
||||||
|
|
||||||
// 重置次数
|
// 重置次数
|
||||||
var restoreCounter = reply.data.sublist(133, 135);
|
var restoreCounter = reply.data.sublist(133, 135);
|
||||||
print("restoreCounter:$restoreCounter");
|
// print("restoreCounter:$restoreCounter");
|
||||||
|
|
||||||
// 重置时间
|
// 重置时间
|
||||||
var restoreDate = reply.data.sublist(135, 139);
|
var restoreDate = reply.data.sublist(135, 139);
|
||||||
print("restoreDate:$restoreDate");
|
// print("restoreDate:$restoreDate");
|
||||||
|
|
||||||
// 主控芯片型号
|
// 主控芯片型号
|
||||||
var icPartNo = reply.data.sublist(139, 149);
|
var icPartNo = reply.data.sublist(139, 149);
|
||||||
print("icPartNo:$icPartNo");
|
// print("icPartNo:$icPartNo");
|
||||||
|
|
||||||
// 有效时间
|
// 有效时间
|
||||||
var indate = reply.data.sublist(149, 153);
|
var indate = reply.data.sublist(149, 153);
|
||||||
print("indate:$indate");
|
// print("indate:$indate");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 0x06:
|
case 0x06:
|
||||||
@ -356,9 +274,11 @@ class LockDetailLogic extends BaseGetXController{
|
|||||||
reply.data.removeRange(0, 6);
|
reply.data.removeRange(0, 6);
|
||||||
// 把得到的数据按8位分割成数组 然后塞进一个新的数组里面
|
// 把得到的数据按8位分割成数组 然后塞进一个新的数组里面
|
||||||
var getList = splitList(reply.data, 8);
|
var getList = splitList(reply.data, 8);
|
||||||
|
// print("getList:$getList");
|
||||||
var uploadList = [];
|
var uploadList = [];
|
||||||
for(int i = 0; i<getList.length; i++){
|
for(int i = 0; i<getList.length; i++){
|
||||||
var indexList = getList[i];
|
var indexList = getList[i];
|
||||||
|
// print("indexList:$indexList");
|
||||||
var indexMap = {};
|
var indexMap = {};
|
||||||
indexMap["seq"] = indexList[0].toString();
|
indexMap["seq"] = indexList[0].toString();
|
||||||
indexMap["user"] = indexList[3].toString();
|
indexMap["user"] = indexList[3].toString();
|
||||||
@ -409,8 +329,8 @@ class LockDetailLogic extends BaseGetXController{
|
|||||||
// Toast.show(msg: "正在连接设备,请稍等。");
|
// Toast.show(msg: "正在连接设备,请稍等。");
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, state.keyInfos.value.bluetooth!.bluetoothDeviceName!, (DeviceConnectionState state) async {
|
BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, state.keyInfos.value.bluetooth!.bluetoothDeviceName!, (DeviceConnectionState deviceConnectionState) async {
|
||||||
if (state == DeviceConnectionState.connected){
|
if (deviceConnectionState == DeviceConnectionState.connected){
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|
||||||
@ -433,13 +353,14 @@ class LockDetailLogic extends BaseGetXController{
|
|||||||
userID: await Storage.getUid(),
|
userID: await Storage.getUid(),
|
||||||
openMode: 1,
|
openMode: 1,
|
||||||
openTime: DateTime.now().millisecondsSinceEpoch~/1000,
|
openTime: DateTime.now().millisecondsSinceEpoch~/1000,
|
||||||
|
onlineToken:state.lockNetToken,
|
||||||
token: getTokenList,
|
token: getTokenList,
|
||||||
needAuthor: 1,
|
needAuthor: 1,
|
||||||
signKey: signKeyDataList,
|
signKey: signKeyDataList,
|
||||||
privateKey: getPrivateKeyList,
|
privateKey: getPrivateKeyList,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}, isShowLoading: false);
|
}, isShowLoading: false, isShowToast: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 编辑用户事件
|
// 编辑用户事件
|
||||||
@ -524,12 +445,12 @@ class LockDetailLogic extends BaseGetXController{
|
|||||||
privateKey:getPrivateKeyList,
|
privateKey:getPrivateKeyList,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
}, isShowLoading: false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void startScanAction(){
|
void startScanAction(){
|
||||||
BlueManage().startScan(true, (v){
|
BlueManage().startScan(true, (v){
|
||||||
print("startScanAllDevice:${v}");
|
// print("startScanAllDevice:${v}");
|
||||||
final knownDeviceIndex = v.indexWhere((d) => d.name == state.keyInfos.value.bluetooth!.bluetoothDeviceName!);
|
final knownDeviceIndex = v.indexWhere((d) => d.name == state.keyInfos.value.bluetooth!.bluetoothDeviceName!);
|
||||||
// 当扫描到的时候
|
// 当扫描到的时候
|
||||||
if (knownDeviceIndex >= 0) {
|
if (knownDeviceIndex >= 0) {
|
||||||
@ -545,7 +466,12 @@ class LockDetailLogic extends BaseGetXController{
|
|||||||
startConnect() {
|
startConnect() {
|
||||||
state.lockState.value = 1;
|
state.lockState.value = 1;
|
||||||
state.animationController.forward();
|
state.animationController.forward();
|
||||||
openDoorAction();
|
|
||||||
|
if(state.isOpenLockNeedOnline.value == 0){
|
||||||
|
openDoorAction();
|
||||||
|
}else{
|
||||||
|
getLockNetToken();
|
||||||
|
}
|
||||||
|
|
||||||
Future.delayed(const Duration(seconds: 10), () {
|
Future.delayed(const Duration(seconds: 10), () {
|
||||||
if(state.lockState.value == 1){
|
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 {
|
void getLockRecordLastUploadDataTime() async {
|
||||||
LockOperatingRecordGetLastRecordTimeEntity entity =
|
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
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
// TODO: implement onReady
|
// TODO: implement onReady
|
||||||
super.onReady();
|
super.onReady();
|
||||||
print("onReady()");
|
print("onReady()");
|
||||||
_initReplySubscription();
|
_initReplySubscription();
|
||||||
|
initLockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceAction();
|
||||||
|
|
||||||
if(Platform.isIOS){
|
if(Platform.isIOS){
|
||||||
|
print("有蓝牙权限开始扫描");
|
||||||
startScanAction();
|
startScanAction();
|
||||||
}else{
|
}else{
|
||||||
getMicrophonePermission()
|
getMicrophonePermission()
|
||||||
.then((value) {
|
.then((value) {
|
||||||
if (value) {
|
if (value) {
|
||||||
// 有权限
|
// 有权限
|
||||||
|
print("有蓝牙权限开始扫描");
|
||||||
startScanAction();
|
startScanAction();
|
||||||
}else{
|
}else{
|
||||||
//没有权限
|
//没有权限
|
||||||
@ -610,7 +568,7 @@ class LockDetailLogic extends BaseGetXController{
|
|||||||
void onInit() {
|
void onInit() {
|
||||||
// TODO: implement onInit
|
// TODO: implement onInit
|
||||||
super.onInit();
|
super.onInit();
|
||||||
print("lockDetail_onInit()");
|
// print("lockDetail_onInit()");
|
||||||
|
|
||||||
// 进来获取锁状态
|
// 进来获取锁状态
|
||||||
// connectBlue();
|
// connectBlue();
|
||||||
@ -621,7 +579,10 @@ class LockDetailLogic extends BaseGetXController{
|
|||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
// TODO: implement onClose
|
// TODO: implement onClose
|
||||||
|
print("锁详情界面销毁了");
|
||||||
|
|
||||||
_replySubscription.cancel();
|
_replySubscription.cancel();
|
||||||
|
_lockSetOpenOrCloseCheckInRefreshLockDetailWithAttendanceEvent!.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
///请求录音相机权限
|
///请求录音相机权限
|
||||||
|
|||||||
@ -38,6 +38,10 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
super.initState();
|
super.initState();
|
||||||
|
|
||||||
state.keyInfos.value = widget.lockListInfoItemEntity;
|
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 =
|
BlueManage().connectDeviceName =
|
||||||
state.keyInfos.value.bluetooth!.bluetoothDeviceName!;
|
state.keyInfos.value.bluetooth!.bluetoothDeviceName!;
|
||||||
// BlueManage().connectDeviceMacAddress =
|
// BlueManage().connectDeviceMacAddress =
|
||||||
@ -74,7 +78,7 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
topWidget(),
|
topWidget(),
|
||||||
Expanded(child: bottomWidget())
|
Expanded(child: Obx(() => bottomWidget()))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@ -85,35 +89,6 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
SizedBox(height: 50.h),
|
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(
|
Stack(
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
@ -126,15 +101,15 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
TextStyle(fontSize: 22.sp, fontWeight: FontWeight.w400),
|
TextStyle(fontSize: 22.sp, fontWeight: FontWeight.w400),
|
||||||
))),
|
))),
|
||||||
Positioned(
|
Positioned(
|
||||||
child: Row(
|
child: Obx(() => Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
children: [
|
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),
|
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),
|
SizedBox(width: 30.w),
|
||||||
],
|
],
|
||||||
)
|
))
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -299,9 +274,9 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
|
|
||||||
List<Widget> getShowWidget() {
|
List<Widget> getShowWidget() {
|
||||||
var showWidgetArr = <Widget>[];
|
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',
|
showWidgetArr.add(bottomItem('images/main/icon_main_clockingIn.png',
|
||||||
TranslationLoader.lanKeys!.checkingIn!.tr, () {
|
TranslationLoader.lanKeys!.checkingIn!.tr, () {
|
||||||
Get.toNamed(Routers.checkingInListPage,
|
Get.toNamed(Routers.checkingInListPage,
|
||||||
@ -410,9 +385,7 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
Get.toNamed(Routers.msgNotificationPage);
|
Get.toNamed(Routers.msgNotificationPage);
|
||||||
}),
|
}),
|
||||||
// 设置
|
// 设置
|
||||||
bottomItem(
|
bottomItem('images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr, () {
|
||||||
'images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr,
|
|
||||||
() {
|
|
||||||
BlueManage().stopScan();
|
BlueManage().stopScan();
|
||||||
Get.toNamed(Routers.lockSetPage,
|
Get.toNamed(Routers.lockSetPage,
|
||||||
arguments: {"lockId": widget.lockListInfoItemEntity.lockId});
|
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,
|
static Future<dynamic> tokNative(String method,
|
||||||
{required Map arguments}) async {
|
{required Map arguments}) async {
|
||||||
if (arguments == null) {
|
if (arguments == null) {
|
||||||
|
|||||||
@ -17,6 +17,12 @@ import '../../lockMian/entity/lockListInfo_entity.dart';
|
|||||||
class LockDetailState {
|
class LockDetailState {
|
||||||
Rx<LockListInfoItemEntity> keyInfos = LockListInfoItemEntity().obs;
|
Rx<LockListInfoItemEntity> keyInfos = LockListInfoItemEntity().obs;
|
||||||
|
|
||||||
|
String lockNetToken = "";
|
||||||
|
|
||||||
|
var isAttendance = 0.obs;// 是否开启考勤
|
||||||
|
var isOpenLockNeedOnline = 0.obs; // APP开锁时是否需联网
|
||||||
|
var electricQuantity = 0.obs; // 电量
|
||||||
|
|
||||||
//过渡动画控制器
|
//过渡动画控制器
|
||||||
late AnimationController animationController;
|
late AnimationController animationController;
|
||||||
var lockState = 0.obs;// 0未连接普通状态 1连接开锁中(展示动画) 2已连接开锁成功 3检测可用性 4连接失败
|
var lockState = 0.obs;// 0未连接普通状态 1连接开锁中(展示动画) 2已连接开锁成功 3检测可用性 4连接失败
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -81,9 +81,11 @@ class LockOperatingRecordLogic extends BaseGetXController{
|
|||||||
reply.data.removeRange(0, 6);
|
reply.data.removeRange(0, 6);
|
||||||
// 把得到的数据按8位分割成数组 然后塞进一个新的数组里面
|
// 把得到的数据按8位分割成数组 然后塞进一个新的数组里面
|
||||||
var getList = splitList(reply.data, 8);
|
var getList = splitList(reply.data, 8);
|
||||||
|
print("getList:$getList");
|
||||||
var uploadList = [];
|
var uploadList = [];
|
||||||
for(int i = 0; i<getList.length; i++){
|
for(int i = 0; i<getList.length; i++){
|
||||||
var indexList = getList[i];
|
var indexList = getList[i];
|
||||||
|
print("indexList:$indexList");
|
||||||
var indexMap = {};
|
var indexMap = {};
|
||||||
indexMap["seq"] = indexList[0].toString();
|
indexMap["seq"] = indexList[0].toString();
|
||||||
indexMap["user"] = indexList[3].toString();
|
indexMap["user"] = indexList[3].toString();
|
||||||
|
|||||||
@ -307,7 +307,7 @@ class OtherTypeKeyListLogic extends BaseGetXController{
|
|||||||
}
|
}
|
||||||
// 获取指纹状态
|
// 获取指纹状态
|
||||||
Future<void> senderQueryingFingerprintStatus() async {
|
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) {
|
if (state == DeviceConnectionState.connected) {
|
||||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||||
|
|||||||
@ -84,8 +84,8 @@ class _PasswordKeyManageTabbarPageState
|
|||||||
Tab _tab(ItemView item) {
|
Tab _tab(ItemView item) {
|
||||||
return Tab(
|
return Tab(
|
||||||
// text: item.title,
|
// text: item.title,
|
||||||
child: SizedBox(
|
child: Container(
|
||||||
width: item.title.length > 2 ? 1.sw / 8 : 1.sw / 12,
|
// width: item.title.length > 2 ? 1.sw / 8 : 1.sw / 12,
|
||||||
// margin: EdgeInsets.all(10.w),
|
// margin: EdgeInsets.all(10.w),
|
||||||
// color: Colors.red,
|
// color: Colors.red,
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|||||||
@ -102,7 +102,10 @@ class _VideoLogPageState extends State<VideoLogPage> {
|
|||||||
state.isNavLocal.value = false;
|
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(
|
TextButton(
|
||||||
onPressed: (){
|
onPressed: (){
|
||||||
@ -110,7 +113,10 @@ class _VideoLogPageState extends State<VideoLogPage> {
|
|||||||
state.isNavLocal.value = true;
|
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(
|
Expanded(child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Text("3天滚动储存", style: TextStyle(fontSize: 26.sp)),
|
Text("3天滚动储存", style: TextStyle(fontSize: 24.sp)),
|
||||||
SizedBox(height: 10.h),
|
SizedBox(height: 10.h),
|
||||||
Text("星锁已为本设备免费提供3大滚动视频储存服务", style: TextStyle(fontSize: 22.sp, color: Colors.grey)),
|
Text("星锁已为本设备免费提供3大滚动视频储存服务", style: TextStyle(fontSize: 22.sp, color: Colors.grey)),
|
||||||
],
|
],
|
||||||
)),
|
)),
|
||||||
SizedBox(width: 15.w),
|
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"))
|
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,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
// SizedBox(height: 20.h),
|
// SizedBox(height: 20.h),
|
||||||
Text("下载列表", style: TextStyle(fontSize: 26.sp)),
|
Text("下载列表", style: TextStyle(fontSize: 24.sp)),
|
||||||
SizedBox(height: 15.h),
|
SizedBox(height: 15.h),
|
||||||
Text("暂无下载内容", style: TextStyle(fontSize: 22.sp, color: Colors.grey)),
|
Text("暂无下载内容", style: TextStyle(fontSize: 22.sp, color: Colors.grey)),
|
||||||
],
|
],
|
||||||
@ -191,7 +197,7 @@ class _VideoLogPageState extends State<VideoLogPage> {
|
|||||||
child: Row(
|
child: Row(
|
||||||
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
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)),
|
Expanded(child: SizedBox(width: 10.w)),
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: Image(width: 40.w, height: 40.w, image: const AssetImage("images/main/icon_lockDetail_monitoringEditVoice.png")),
|
icon: Image(width: 40.w, height: 40.w, image: const AssetImage("images/main/icon_lockDetail_monitoringEditVoice.png")),
|
||||||
|
|||||||
@ -41,7 +41,11 @@ class _DemoModeLockDetailPageState extends State<DemoModeLockDetailPage> {
|
|||||||
height: 1.sh - ScreenUtil().statusBarHeight * 2,
|
height: 1.sh - ScreenUtil().statusBarHeight * 2,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
child: Column(
|
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);
|
// Get.toNamed(Routers.seletLockTypePage);
|
||||||
Toast.show(msg: "演示模式");
|
Toast.show(msg: "演示模式");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -242,6 +242,12 @@ class _DemoModeLockSetPageState extends State<DemoModeLockSetPage> {
|
|||||||
isHaveLine: false,
|
isHaveLine: false,
|
||||||
isHaveRightWidget: true,
|
isHaveRightWidget: true,
|
||||||
rightWidget: _lockRemindSwitch()),
|
rightWidget: _lockRemindSwitch()),
|
||||||
|
CommonItem(
|
||||||
|
leftTitel: "开锁时是否需联网",
|
||||||
|
rightTitle: "",
|
||||||
|
isHaveLine: false,
|
||||||
|
isHaveRightWidget: true,
|
||||||
|
rightWidget: _lockRemindSwitch()),
|
||||||
SizedBox(height: 10.h),
|
SizedBox(height: 10.h),
|
||||||
// wifi配网
|
// wifi配网
|
||||||
CommonItem(
|
CommonItem(
|
||||||
|
|||||||
@ -144,7 +144,7 @@ class _LockListPageState extends State<LockListPage> {
|
|||||||
),
|
),
|
||||||
SizedBox(width: 2.w),
|
SizedBox(width: 2.w),
|
||||||
Image.asset(
|
Image.asset(
|
||||||
'images/main/icon_main_cell.png',
|
showElectricIcon(keyInfo.electricQuantity!),
|
||||||
width: 30.w,
|
width: 30.w,
|
||||||
height: 24.w,
|
height: 24.w,
|
||||||
),
|
),
|
||||||
@ -201,4 +201,19 @@ class _LockListPageState extends State<LockListPage> {
|
|||||||
return useDateStr;
|
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';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -90,6 +90,8 @@ class LockMainLogic extends BaseGetXController {
|
|||||||
}
|
}
|
||||||
state.lockListInfoEntity.value = entity;
|
state.lockListInfoEntity.value = entity;
|
||||||
}else{
|
}else{
|
||||||
|
print("首页锁列表请求失败");
|
||||||
|
state.dataLength.value = 0;
|
||||||
// refreshController.loadFailed();
|
// refreshController.loadFailed();
|
||||||
}
|
}
|
||||||
// refreshController.refreshCompleted();
|
// refreshController.refreshCompleted();
|
||||||
|
|||||||
@ -46,7 +46,7 @@ class _AbountPageState extends State<AbountPage> {
|
|||||||
height: 20.h,
|
height: 20.h,
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
"星锁 1.0.0.01(preRelease-20231118)",
|
"星锁 1.0.0.02(preRelease-20231124)",
|
||||||
style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor),
|
style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor),
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:amap_flutter_location/amap_flutter_location.dart';
|
import 'package:amap_flutter_location/amap_flutter_location.dart';
|
||||||
@ -57,7 +58,7 @@ class _LockAddressGaoDePageState extends State<LockAddressGaoDePage>{
|
|||||||
// EasyLoading.dismiss();
|
// EasyLoading.dismiss();
|
||||||
// }
|
// }
|
||||||
// });
|
// });
|
||||||
requestLocation();
|
// requestLocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> requestPermission() async {
|
Future<void> requestPermission() async {
|
||||||
@ -69,8 +70,13 @@ class _LockAddressGaoDePageState extends State<LockAddressGaoDePage>{
|
|||||||
print("拒绝");
|
print("拒绝");
|
||||||
break;
|
break;
|
||||||
case PermissionStatus.granted:
|
case PermissionStatus.granted:
|
||||||
_setLocationOption();
|
if(Platform.isIOS){
|
||||||
location.startLocation();
|
_setLocationOption();
|
||||||
|
requestIOSLocation();
|
||||||
|
}else{
|
||||||
|
requestAndroidLocation();
|
||||||
|
location.startLocation();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case PermissionStatus.limited:
|
case PermissionStatus.limited:
|
||||||
print("限制");
|
print("限制");
|
||||||
@ -82,7 +88,7 @@ class _LockAddressGaoDePageState extends State<LockAddressGaoDePage>{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> requestLocation() async {
|
Future<void> requestAndroidLocation() async {
|
||||||
location.onLocationChanged().listen((event) {
|
location.onLocationChanged().listen((event) {
|
||||||
print("listenLocationChanged$event");
|
print("listenLocationChanged$event");
|
||||||
// EasyLoading.dismiss();
|
// 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
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
@ -123,9 +145,7 @@ class _LockAddressGaoDePageState extends State<LockAddressGaoDePage>{
|
|||||||
// ),
|
// ),
|
||||||
// ],
|
// ],
|
||||||
),
|
),
|
||||||
body:
|
body: ListView(
|
||||||
addressInfo != null ?
|
|
||||||
ListView(
|
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
margin: EdgeInsets.only(left: 25.w, top: 40.h, bottom: 40.w),
|
margin: EdgeInsets.only(left: 25.w, top: 40.h, bottom: 40.w),
|
||||||
@ -137,83 +157,73 @@ class _LockAddressGaoDePageState extends State<LockAddressGaoDePage>{
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 1.sw/5*4,
|
|
||||||
width: 1.sw,
|
|
||||||
child:
|
child:
|
||||||
(addressInfo!["address"].toString().isNotEmpty) ?
|
addressInfo != null ?
|
||||||
AMapWidget(
|
Column(
|
||||||
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,
|
|
||||||
children: [
|
children: [
|
||||||
Text("检查以确保以下地址是正确的", style: TextStyle(fontSize: 24.sp)),
|
SizedBox(
|
||||||
],
|
height: 1.sw/5*4,
|
||||||
),
|
width: 1.sw,
|
||||||
),
|
child: AMapWidget(
|
||||||
// SizedBox(height: 20.h),
|
apiKey: amapApiKeys,
|
||||||
Container(
|
// 初始化地图中心
|
||||||
margin: EdgeInsets.only(left: 25.w, top: 20.h, right: 25.w),
|
initialCameraPosition: (
|
||||||
// decoration: BoxDecoration(
|
CameraPosition(
|
||||||
// color: AppColors.mainColor,
|
target: LatLng(double.parse(addressInfo!['latitude'].toString()), double.parse(addressInfo!['longitude'].toString())),
|
||||||
// borderRadius: BorderRadius.circular(15.w),
|
zoom: 10.0,
|
||||||
// ),
|
)
|
||||||
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))
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
|
//定位小蓝点
|
||||||
|
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(
|
||||||
// Container(
|
// color: Colors.red,
|
||||||
// // height: h(52),
|
height: 45.h,
|
||||||
// padding: EdgeInsets.only(top: 15.h, bottom: 15, left:15.w, right: 15.w),
|
margin: EdgeInsets.only(left: 25.w, top: 20.h, right: 25.w),
|
||||||
// child: Row(
|
child: Row(
|
||||||
// children: [
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
// Image.asset('images/main/icon_addUserAddressShowTime.png', width: 30.w, height: 30.w),
|
children: [
|
||||||
// SizedBox(width: 10.w,),
|
Text("检查以确保以下地址是正确的", style: TextStyle(fontSize: 24.sp)),
|
||||||
// Expanded(
|
],
|
||||||
// child: Text(DateTool().getNowDateYMDHM(), style: const TextStyle(color: Colors.white, fontSize: 16, fontWeight: FontWeight.w500),)
|
),
|
||||||
// ),
|
),
|
||||||
// ],
|
// 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),
|
SizedBox(height:200.h),
|
||||||
Row(
|
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);
|
location.setLocationOption(locationOption);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
|
location.stopLocation();
|
||||||
location.destroy();
|
location.destroy();
|
||||||
print("地图界面销毁了");
|
print("地图界面销毁了");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,6 +36,7 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 添加用户
|
||||||
Future<void> _replyAddUserKey(Reply reply) async {
|
Future<void> _replyAddUserKey(Reply reply) async {
|
||||||
var lockId = reply.data.sublist(2, 42);
|
var lockId = reply.data.sublist(2, 42);
|
||||||
// print("lockId:$lockId");
|
// print("lockId:$lockId");
|
||||||
@ -101,6 +102,7 @@ class SaveLockLogic extends BaseGetXController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取星锁状态
|
||||||
Future<void> _replyGetStarLockStatusInfo(Reply reply) async {
|
Future<void> _replyGetStarLockStatusInfo(Reply reply) async {
|
||||||
int status = reply.data[2];
|
int status = reply.data[2];
|
||||||
switch(status){
|
switch(status){
|
||||||
|
|||||||
@ -1,19 +1,12 @@
|
|||||||
import 'dart:convert';
|
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:star_lock/common/safetyVerification/entity/Data.dart';
|
|
||||||
import 'package:star_lock/tools/toast.dart';
|
|
||||||
|
|
||||||
import '../../appRouters.dart';
|
import '../../appRouters.dart';
|
||||||
import '../../app_settings/app_colors.dart';
|
import '../../app_settings/app_colors.dart';
|
||||||
import '../../baseWidget.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/submitBtn.dart';
|
||||||
import '../../tools/titleAppBar.dart';
|
|
||||||
import '../../translations/trans_lib.dart';
|
import '../../translations/trans_lib.dart';
|
||||||
import 'starLockMine_logic.dart';
|
import 'starLockMine_logic.dart';
|
||||||
|
|
||||||
@ -39,9 +32,7 @@ class _StarLockMinePageState extends State<StarLockMinePage> with BaseWidget {
|
|||||||
children: [
|
children: [
|
||||||
topWidget(),
|
topWidget(),
|
||||||
bottomListWidget(),
|
bottomListWidget(),
|
||||||
SizedBox(
|
SizedBox(height: 40.h,),
|
||||||
height: 40.h,
|
|
||||||
),
|
|
||||||
// keyBottomWidget()
|
// keyBottomWidget()
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -93,7 +84,7 @@ class _StarLockMinePageState extends State<StarLockMinePage> with BaseWidget {
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20.h,
|
height: 20.h,
|
||||||
),
|
),
|
||||||
Text(state.mobile(),
|
Text(state.nickname(),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 22.sp,
|
fontSize: 22.sp,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
@ -101,7 +92,7 @@ class _StarLockMinePageState extends State<StarLockMinePage> with BaseWidget {
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
height: 10.h,
|
height: 10.h,
|
||||||
),
|
),
|
||||||
Text("${TranslationLoader.lanKeys!.accountNumber!.tr}:-",
|
Text("${TranslationLoader.lanKeys!.accountNumber!.tr}:${state.mobile().isNotEmpty ? state.mobile() : state.email()}",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 18.sp,
|
fontSize: 18.sp,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
|
|||||||
@ -40,6 +40,14 @@ class StarLockMineState {
|
|||||||
return loginData.value.mobile ?? '-';
|
return loginData.value.mobile ?? '-';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String email() {
|
||||||
|
return loginData.value.email ?? '-';
|
||||||
|
}
|
||||||
|
|
||||||
|
String nickname() {
|
||||||
|
return loginData.value.nickname ?? '-';
|
||||||
|
}
|
||||||
|
|
||||||
///用户头像
|
///用户头像
|
||||||
String headUrl() {
|
String headUrl() {
|
||||||
return loginData.value.headUrl ?? '';
|
return loginData.value.headUrl ?? '';
|
||||||
|
|||||||
@ -43,7 +43,6 @@ class _MineMultiLanguagePageState extends State<MineMultiLanguagePage> {
|
|||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: '跟随系统',
|
leftTitel: '跟随系统',
|
||||||
rightTitle: "",
|
rightTitle: "",
|
||||||
allHeight: 90.h,
|
|
||||||
isHaveLine: true,
|
isHaveLine: true,
|
||||||
isHaveDirection: false,
|
isHaveDirection: false,
|
||||||
isHaveRightWidget: true,
|
isHaveRightWidget: true,
|
||||||
@ -59,7 +58,6 @@ class _MineMultiLanguagePageState extends State<MineMultiLanguagePage> {
|
|||||||
CommonItem(
|
CommonItem(
|
||||||
leftTitel: lanType.lanTitle,
|
leftTitel: lanType.lanTitle,
|
||||||
rightTitle: "",
|
rightTitle: "",
|
||||||
allHeight: 90.h,
|
|
||||||
isHaveLine: true,
|
isHaveLine: true,
|
||||||
isHaveDirection: false,
|
isHaveDirection: false,
|
||||||
isHaveRightWidget: true,
|
isHaveRightWidget: true,
|
||||||
|
|||||||
@ -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;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
@ -1,10 +1,14 @@
|
|||||||
import 'dart:async';
|
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/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_state.dart';
|
||||||
import 'package:star_lock/tools/toast.dart';
|
import 'package:star_lock/tools/toast.dart';
|
||||||
import '../../../../network/api_repository.dart';
|
import '../../../../network/api_repository.dart';
|
||||||
import '../../../../tools/baseGetXController.dart';
|
import '../../../../tools/baseGetXController.dart';
|
||||||
|
import 'minePersonGetUploadFileInfo_entity.dart';
|
||||||
|
|
||||||
class MinePersonInfoLogic extends BaseGetXController {
|
class MinePersonInfoLogic extends GetConnect{
|
||||||
final MinePersonInfoState state = MinePersonInfoState();
|
final MinePersonInfoState state = MinePersonInfoState();
|
||||||
//用户信息
|
//用户信息
|
||||||
Future<void> getUserInfoRequest() async {
|
Future<void> getUserInfoRequest() async {
|
||||||
@ -20,9 +24,57 @@ class MinePersonInfoLogic extends BaseGetXController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//上传头像 先获取upToken 再调用updateUserInfo
|
//上传头像 先获取upToken 再调用updateUserInfo
|
||||||
Future<void> getUpTokenRequest() async {
|
Future<void> getUpTokenRequest(String filename, int size) async {
|
||||||
var entity = await ApiRepository.to.getUpToken(state.typeStr.value);
|
var entity = await ApiRepository.to.getUpToken(
|
||||||
if (entity.errorCode!.codeIsSuccessful) {}
|
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: '操作成功');
|
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
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,12 +23,12 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
|
|||||||
final logic = Get.put(MinePersonInfoLogic());
|
final logic = Get.put(MinePersonInfoLogic());
|
||||||
final state = Get.find<MinePersonInfoLogic>().state;
|
final state = Get.find<MinePersonInfoLogic>().state;
|
||||||
|
|
||||||
@override
|
// @override
|
||||||
void initState() {
|
// void initState() {
|
||||||
super.initState();
|
// super.initState();
|
||||||
|
//
|
||||||
logic.getUserInfoRequest();
|
// logic.getUserInfoRequest();
|
||||||
}
|
// }
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -198,7 +198,14 @@ class _MinePersonInfoPageState extends State<MinePersonInfoPage> {
|
|||||||
maxHeight: 250,
|
maxHeight: 250,
|
||||||
maxWidth: 250,
|
maxWidth: 250,
|
||||||
);
|
);
|
||||||
if (image != null) state.image = image;
|
if (image != null) {
|
||||||
setState(() {});
|
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((){});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -198,6 +198,14 @@ class _MineSetPageState extends State<MineSetPage> {
|
|||||||
action: () {
|
action: () {
|
||||||
Toast.show(msg: "功能暂未开放");
|
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: (){
|
// CommonItem(leftTitel:TranslationLoader.lanKeys!.valueAddedServices!.tr, rightTitle:"", isHaveDirection: true, action: (){
|
||||||
//
|
//
|
||||||
// }),
|
// }),
|
||||||
|
|||||||
@ -26,6 +26,8 @@ abstract class Api {
|
|||||||
final String lockRecordUploadURL = '/lockRecords/fromLock'; //操作上传
|
final String lockRecordUploadURL = '/lockRecords/fromLock'; //操作上传
|
||||||
final String getLockRecordLastUploadDataTimeURL = '/lockRecords/getLastRecordTime'; //查询锁记录最后时间
|
final String getLockRecordLastUploadDataTimeURL = '/lockRecords/getLastRecordTime'; //查询锁记录最后时间
|
||||||
|
|
||||||
|
final String getLockNetTokenURL = '/lock/getLockNetToken'; //获取手机联网token
|
||||||
|
|
||||||
final String bindingBlueAdminURL = '/lock/bindAdmin'; //绑定蓝牙管理员
|
final String bindingBlueAdminURL = '/lock/bindAdmin'; //绑定蓝牙管理员
|
||||||
final String modifyKeyNameURL = '/key/modifyKeyName'; //修改锁名称
|
final String modifyKeyNameURL = '/key/modifyKeyName'; //修改锁名称
|
||||||
final String updateLockNameURL = '/lock/updateLockName'; //修改锁名(新)
|
final String updateLockNameURL = '/lock/updateLockName'; //修改锁名(新)
|
||||||
@ -141,7 +143,7 @@ abstract class Api {
|
|||||||
'/safeAnswer/getOwnQuestionList'; //获取已设置的安全信息
|
'/safeAnswer/getOwnQuestionList'; //获取已设置的安全信息
|
||||||
final String setSafeAnswerURL = '/safeAnswer/set'; //设置安全信息
|
final String setSafeAnswerURL = '/safeAnswer/set'; //设置安全信息
|
||||||
final String getUpTokenURL =
|
final String getUpTokenURL =
|
||||||
'/user/getUpToken'; //上传头像 先获取upToken 再调用updateUserInfo
|
'/file/getUploadParams'; //上传头像 先获取upToken 再调用updateUserInfo
|
||||||
final String unbindPhoneTokenURL = '/user/unbindPhoneToken'; //获取解绑手机号Token
|
final String unbindPhoneTokenURL = '/user/unbindPhoneToken'; //获取解绑手机号Token
|
||||||
final String unbindEmailTokenURL = '/user/unbindEmailToken'; //获取解绑邮箱Token
|
final String unbindEmailTokenURL = '/user/unbindEmailToken'; //获取解绑邮箱Token
|
||||||
final String pushBindAppIdURL = '/user/bindAppId'; //推送绑定APP设备
|
final String pushBindAppIdURL = '/user/bindAppId'; //推送绑定APP设备
|
||||||
|
|||||||
@ -260,14 +260,24 @@ class ApiProvider extends BaseProvider {
|
|||||||
jsonEncode({
|
jsonEncode({
|
||||||
'lockId': lockId,
|
'lockId': lockId,
|
||||||
'records': records,
|
'records': records,
|
||||||
}));
|
}),
|
||||||
|
isUnShowLoading:true);
|
||||||
|
|
||||||
// 查询锁记录最后时间
|
// 查询锁记录最后时间
|
||||||
Future<Response> getLockRecordLastUploadDataTime(String lockId) => post(
|
Future<Response> getLockRecordLastUploadDataTime(String lockId) => post(
|
||||||
getLockRecordLastUploadDataTimeURL.toUrl,
|
getLockRecordLastUploadDataTimeURL.toUrl,
|
||||||
jsonEncode({
|
jsonEncode({
|
||||||
'lockId': lockId,
|
'lockId': lockId,
|
||||||
}));
|
}),
|
||||||
|
isUnShowLoading: true);
|
||||||
|
|
||||||
|
// 获取手机联网token
|
||||||
|
Future<Response> getLockNetToken(String lockId) => post(
|
||||||
|
getLockNetTokenURL.toUrl,
|
||||||
|
jsonEncode({
|
||||||
|
'lockId': lockId,
|
||||||
|
}),
|
||||||
|
isUnShowLoading: true);
|
||||||
|
|
||||||
// 绑定蓝牙管理员
|
// 绑定蓝牙管理员
|
||||||
Future<Response> bindingBlueAdmin(
|
Future<Response> bindingBlueAdmin(
|
||||||
@ -603,6 +613,15 @@ class ApiProvider extends BaseProvider {
|
|||||||
'attendance': resetSwitch,
|
'attendance': resetSwitch,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
// 设置开锁时是否需联网
|
||||||
|
Future<Response> setOpenLockNeedOnlineData(int lockId, int appUnlockOnline) =>
|
||||||
|
post(
|
||||||
|
updateLockSettingUrl.toUrl,
|
||||||
|
jsonEncode({
|
||||||
|
'lockId': lockId,
|
||||||
|
'appUnlockOnline': appUnlockOnline,
|
||||||
|
}));
|
||||||
|
|
||||||
// 设置标记房态
|
// 设置标记房态
|
||||||
Future<Response> setRoomStatusData(int lockId, int roomStatus) =>
|
Future<Response> setRoomStatusData(int lockId, int roomStatus) =>
|
||||||
post(
|
post(
|
||||||
@ -1319,9 +1338,19 @@ class ApiProvider extends BaseProvider {
|
|||||||
setSafeAnswerURL.toUrl,
|
setSafeAnswerURL.toUrl,
|
||||||
jsonEncode({"questionAndAnswerList": questionAndAnswerList}));
|
jsonEncode({"questionAndAnswerList": questionAndAnswerList}));
|
||||||
|
|
||||||
//上传头像 先获取upToken 再调用updateUserInfo
|
// 获取上传文件的upToken 再调用updateUserInfo
|
||||||
Future<Response> getUpToken(String type) =>
|
Future<Response> getUpToken(String module, String typeKey, String type, String filename, int size) =>
|
||||||
post(getUpTokenURL.toUrl, jsonEncode({"type": type}));
|
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
|
//获取解绑手机号Token
|
||||||
Future<Response> unbindPhoneToken(String verificationCode) => post(
|
Future<Response> unbindPhoneToken(String verificationCode) => post(
|
||||||
|
|||||||