From 04b7a0e9f5a9ca217403c9c13d7b9f70fc5828dd Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Mon, 16 Oct 2023 17:18:10 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8C=E4=BC=98=E5=8C=96=E6=9C=AA=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E7=94=A8=E6=88=B7=E5=8F=91=E9=80=81=E9=92=A5=E5=8C=99?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=202=EF=BC=8C=E8=A7=A3=E5=86=B3=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E9=80=9A=E8=AE=AF=E5=BD=95=E6=97=A0=E6=B3=95=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=88=B0=E6=89=8B=E6=9C=BA=E5=8F=B7=E9=97=AE=E9=A2=98?= =?UTF-8?q?=203=EF=BC=8C=E5=AE=8C=E6=88=90=E5=88=86=E4=BA=AB=E5=BA=95?= =?UTF-8?q?=E9=83=A8=E5=BC=B9=E5=87=BA=E6=A1=86=EF=BC=8C=E5=B9=B6=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E7=B3=BB=E7=BB=9F=E5=88=86=E4=BA=AB=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?=E9=82=AE=E4=BB=B6=E8=B7=B3=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/images/icon_email.png | Bin 0 -> 6177 bytes star_lock/images/icon_message.png | Bin 0 -> 4611 bytes star_lock/images/icon_more.png | Bin 0 -> 2730 bytes star_lock/images/icon_wechat.png | Bin 0 -> 7837 bytes .../ios/Runner.xcodeproj/project.pbxproj | 31 ++- star_lock/ios/Runner/AppDelegate.m | 15 +- star_lock/ios/Runner/Info.plist | 5 + ...ordViewController.h => XSFlutterManager.h} | 2 +- ...ordViewController.m => XSFlutterManager.m} | 11 +- .../authorizedAdmin_entity.dart | 6 +- .../authorizedAdmin_logic.dart | 164 +++++++----- .../authorizedAdmin/authorizedAdmin_page.dart | 12 +- .../massSendReceiverCell.dart | 13 +- .../sendElectronicKey_logic.dart | 79 ++++-- .../sendElectronicKey_page.dart | 10 +- .../passwordKeyDetail_page.dart | 238 +++++++++--------- .../passwordKey_perpetual_page.dart | 126 +++++++++- star_lock/lib/network/api_provider_base.dart | 7 +- star_lock/lib/network/api_repository.dart | 32 +-- 19 files changed, 493 insertions(+), 258 deletions(-) create mode 100644 star_lock/images/icon_email.png create mode 100644 star_lock/images/icon_message.png create mode 100644 star_lock/images/icon_more.png create mode 100644 star_lock/images/icon_wechat.png rename star_lock/ios/Runner/{SharePasswordViewController.h => XSFlutterManager.h} (73%) rename star_lock/ios/Runner/{SharePasswordViewController.m => XSFlutterManager.m} (94%) diff --git a/star_lock/images/icon_email.png b/star_lock/images/icon_email.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f66993072b8eaa53e7548843c4e809ad17452c GIT binary patch literal 6177 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 literal 0 HcmV?d00001 diff --git a/star_lock/images/icon_message.png b/star_lock/images/icon_message.png new file mode 100644 index 0000000000000000000000000000000000000000..39971655340411f9fcfb8f4de4708a325bc44e4d GIT binary patch literal 4611 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 UILaunchStoryboardName LaunchScreen + UIApplicationSceneManifest + + UISceneConfigurations + + UIMainStoryboardFile Main UISupportedInterfaceOrientations diff --git a/star_lock/ios/Runner/SharePasswordViewController.h b/star_lock/ios/Runner/XSFlutterManager.h similarity index 73% rename from star_lock/ios/Runner/SharePasswordViewController.h rename to star_lock/ios/Runner/XSFlutterManager.h index dd0348d0..2be71177 100644 --- a/star_lock/ios/Runner/SharePasswordViewController.h +++ b/star_lock/ios/Runner/XSFlutterManager.h @@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface SharePasswordViewController : FlutterViewController +@interface XSFlutterManager : FlutterViewController @end diff --git a/star_lock/ios/Runner/SharePasswordViewController.m b/star_lock/ios/Runner/XSFlutterManager.m similarity index 94% rename from star_lock/ios/Runner/SharePasswordViewController.m rename to star_lock/ios/Runner/XSFlutterManager.m index 11a147f1..8d037ec6 100644 --- a/star_lock/ios/Runner/SharePasswordViewController.m +++ b/star_lock/ios/Runner/XSFlutterManager.m @@ -1,23 +1,23 @@ // -// SharePasswordViewController.m +// XSFlutterManager.m // Runner // // Created by DaisyWu on 2023/10/14. // -#import "SharePasswordViewController.h" +#import "XSFlutterManager.h" #include "GeneratedPluginRegistrant.h" #import "CommonDefine.h" -@interface SharePasswordViewController () +@interface XSFlutterManager () @property(nonatomic,strong) FlutterMethodChannel* methodChannel; @property (nonatomic, copy) NSString *textToShare; @end -@implementation SharePasswordViewController +@implementation XSFlutterManager - (void)viewDidLoad { [super viewDidLoad]; @@ -34,6 +34,7 @@ [self.methodChannel setMethodCallHandler:^(FlutterMethodCall* call, FlutterResult result) { // TODO NSString *method=call.method; + //调用系统分享 if ([method isEqualToString:flutterMethodSharePassword]) { id params = call.arguments; self.textToShare = @"您好,您的密码是:"; @@ -59,7 +60,7 @@ if (completed) { NSLog(@"completed"); - + //分享 成功 } else { diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_entity.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_entity.dart index 9079f6f9..c0768789 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_entity.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_entity.dart @@ -27,7 +27,7 @@ class AuthorizedAdminSendEntity { } class Data { - String? receiverUid; + int? receiverUid; ReceiverUser? receiverUser; int? keyId; @@ -105,7 +105,7 @@ class Phone { int? userId; String? phoneNumberHash; String? phoneNumberEncrypt; - String? countryCode; + int? countryCode; String? phoneNumberVerifiedAt; String? updatedAt; String? createdAt; @@ -149,7 +149,7 @@ class Phone { class Cloud { String? username; String? password; - String? cloudUid; + int? cloudUid; int? userId; String? updatedAt; String? createdAt; diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart index 38ca6395..c489ea16 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart @@ -1,7 +1,11 @@ import 'dart:async'; +import 'package:flutter/cupertino.dart'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/appRouters.dart'; import 'package:star_lock/blue/io_type.dart'; +import 'package:star_lock/translations/trans_lib.dart'; import '../../../../blue/blue_manage.dart'; import '../../../../blue/io_protocol/io_addUser.dart'; @@ -23,7 +27,8 @@ class AuthorizedAdminLogic extends BaseGetXController { // 监听设备返回的数据 late StreamSubscription _replySubscription; void _initReplySubscription() { - _replySubscription = EventBusManager().eventBus!.on().listen((reply) async { + _replySubscription = + EventBusManager().eventBus!.on().listen((reply) async { // 转移权限 if (reply is TransferPermissionsReply) { var token = reply.data.sublist(2, 6); @@ -73,7 +78,7 @@ class AuthorizedAdminLogic extends BaseGetXController { break; case 0x14: - // 权限校验错误 + // 权限校验错误 print("${reply.commandType!.typeValue} 用户已存在"); break; @@ -85,7 +90,7 @@ class AuthorizedAdminLogic extends BaseGetXController { } } - if(reply is AddUserReply) { + if (reply is AddUserReply) { _replyAddUserKey(reply); } }); @@ -105,16 +110,16 @@ class AuthorizedAdminLogic extends BaseGetXController { // userNo = reply.data[46]; // print("status:$status"); - switch(status){ + switch (status) { case 0x00: - //成功 + //成功 print("添加用户数据解析成功"); state.isSendSuccess.value = true; Toast.show(msg: "添加成功"); // bindBlueAdmin(); break; case 0x06: - //无权限 + //无权限 print("需要鉴权"); var privateKey = await Storage.getStringList(saveBluePrivateKey); List getPrivateKeyList = changeStringListToIntList(privateKey!); @@ -124,33 +129,32 @@ class AuthorizedAdminLogic extends BaseGetXController { IoSenderManage.senderAddUser( lockID: BlueManage().connectDeviceName, - authUserID:await Storage.getUid(), - keyID:"1", - userID:state.addUserId.value, - openMode:1, - keyType:(state.type.value == "1") ? 0 : 1, - startDate:state.effectiveDateTime.value.millisecondsSinceEpoch, - expireDate:state.failureDateTime.value.millisecondsSinceEpoch, - role:0, - password:"123456", - needAuthor:1, - publicKey:publicKeyDataList, - privateKey:getPrivateKeyList, - token: token - ); + authUserID: await Storage.getUid(), + keyID: "1", + userID: state.addUserId.value, + openMode: 1, + keyType: (state.type.value == "1") ? 0 : 1, + startDate: state.effectiveDateTime.value.millisecondsSinceEpoch, + expireDate: state.failureDateTime.value.millisecondsSinceEpoch, + role: 0, + password: "123456", + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, + token: token); break; case 0x07: - //无权限 + //无权限 print("用户无权限"); break; case 0x09: - // 权限校验错误 + // 权限校验错误 print("添加用户权限校验错误"); break; default: - //失败 + //失败 print("领锁失败"); break; @@ -190,8 +194,10 @@ class AuthorizedAdminLogic extends BaseGetXController { // 添加用户 Future addUserConnectBlue(String receiveId) async { // 进来之后首先连接 - BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, (DeviceConnectionState connecteState) async { - if (connecteState == DeviceConnectionState.connected){ + BlueManage().judgeReconnect( + BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, + (DeviceConnectionState connecteState) async { + if (connecteState == DeviceConnectionState.connected) { // 私钥 var privateKey = await Storage.getStringList(saveBluePrivateKey); List getPrivateKeyList = changeStringListToIntList(privateKey!); @@ -200,59 +206,60 @@ class AuthorizedAdminLogic extends BaseGetXController { List publicKeyDataList = changeStringListToIntList(publicKey!); var token = await Storage.getStringList(saveBlueToken); - List getTokenList = [0,0,0,0]; - if(token != null){ + List getTokenList = [0, 0, 0, 0]; + if (token != null) { getTokenList = changeStringListToIntList(token); } IoSenderManage.senderAddUser( lockID: BlueManage().connectDeviceName, - authUserID:await Storage.getUid(), - keyID:"1", - userID:receiveId, - openMode:1, - keyType:(state.type.value == "1") ? 0 : 1, - startDate:state.effectiveDateTime.value.millisecondsSinceEpoch, - expireDate:state.failureDateTime.value.millisecondsSinceEpoch, - role:0, - password:"123456", - needAuthor:1, - publicKey:publicKeyDataList, - privateKey:getPrivateKeyList, - token: getTokenList - ); + authUserID: await Storage.getUid(), + keyID: "1", + userID: receiveId, + openMode: 1, + keyType: (state.type.value == "1") ? 0 : 1, + startDate: state.effectiveDateTime.value.millisecondsSinceEpoch, + expireDate: state.failureDateTime.value.millisecondsSinceEpoch, + role: 0, + password: "123456", + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, + token: getTokenList); } }); } //发送授权管理员列表请求 - Future sendElectronicKeyRequest() async { + Future sendElectronicKeyRequest(BuildContext widgetContext) async { String getFailureDateTime = '0'; String getEffectiveDateTime = '0'; String lockID = state.keyInfo.value.lockId.toString(); String getKeyType = (int.parse(state.type.value) + 1).toString(); if (state.type.value == '0') { - getFailureDateTime = state.failureDateTime.value.millisecondsSinceEpoch.toString(); + getFailureDateTime = + state.failureDateTime.value.millisecondsSinceEpoch.toString(); getEffectiveDateTime = state.effectiveDateTime.value.millisecondsSinceEpoch.toString(); } + var entity = await ApiRepository.to.sendElectronicKey( - state.isCreateUser.value ? "1" : "0", - state.countryCode.value, - '1', - getFailureDateTime, - state.isAuthentication.value == true ? '1' : '2', - '2', - '2', - state.keyNameController.text, - '1', - getKeyType, - lockID, - '', - state.emailOrPhoneController.text, - '', - getEffectiveDateTime, - state.weekdaysList); + createUser: state.isCreateUser.value ? "1" : "0", + countryCode: state.countryCode.value, + usernameType: '1', + endDate: getFailureDateTime, + faceAuthentication: state.isAuthentication.value == true ? '1' : '2', + isCameraEnable: '2', + isRemoteUnlock: '2', + keyNameForAdmin: state.keyNameController.text, + keyRight: '1', + keyType: getKeyType, + lockId: lockID, + operatorUid: '', + receiverUsername: state.emailOrPhoneController.text, + remarks: '', + startDate: getEffectiveDateTime, + weekDays: state.weekdaysList); if (entity.errorCode!.codeIsSuccessful) { print('发送电子钥匙成功'); state.isSendSuccess.value = true; @@ -260,15 +267,48 @@ class AuthorizedAdminLogic extends BaseGetXController { state.addUserId.value = entity.data!.receiverUser!.id.toString(); addUserConnectBlue(state.addUserId.value); } else { - // Toast.show(msg: '${entity.errorMsg}'); if (entity.errorCode == 425) { //用户未注册 - state.isCreateUser.value = true; - sendElectronicKeyRequest(); + _showDialog(widgetContext, '${entity.errorMsg}'); } } } + //用户未注册确认弹窗 + void _showDialog(widgetContext, String errMsg) { + showCupertinoDialog( + context: widgetContext, + builder: (context) { + return CupertinoAlertDialog( + title: const Text('接收者号码未注册,请选择号码所在的国家并重新发送'), + actions: [ + CupertinoDialogAction( + child: Text(TranslationLoader.lanKeys!.cancel!.tr), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + CupertinoDialogAction( + child: Text(TranslationLoader.lanKeys!.selet!.tr), + onPressed: () async { + //选择国家代码 + state.isCreateUser.value = true; + Navigator.of(context).pop(); + + var result = await Get.toNamed(Routers.seletCountryRegionPage); + if (result != null) { + result as Map; + state.countryCode.value = result['code']; + state.countryName.value = result['countryName']; + } + }, + ), + ], + ); + }, + ); + } + @override void onReady() { // TODO: implement onReady diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart index 85e53505..ba059f08 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart @@ -202,7 +202,7 @@ class _AuthorizedAdminPageState extends State { if (state.emailOrPhoneController.text.isNotEmpty && state.keyNameController.value.text.isNotEmpty) { // logic.addUserConnectBlue(); - logic.sendElectronicKeyRequest(); + logic.sendElectronicKeyRequest(context); } }), Container( @@ -358,11 +358,15 @@ class _AuthorizedAdminPageState extends State { alignment: Alignment.center, child: InkWell( onTap: () async { - Contact? contact = + Contact? currentContact = await state.contactPicker.selectContact(); setState(() { - state.contact = contact!; - // print("object111111111111 ${_contact.fullName} ${_contact.phoneNumbers}"); + state.contact = currentContact!; + if (currentContact.phoneNumbers!.isNotEmpty) { + state.emailOrPhoneController.text = currentContact + .phoneNumbers![0] + .replaceAll(RegExp(r"\s+\b|\b\s"), ""); + } }); }, ), diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiverCell.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiverCell.dart index 507674c6..ff2d1e9f 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiverCell.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiverCell.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get_utils/get_utils.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart'; @@ -9,6 +10,8 @@ class MassSendReceiverCell extends StatelessWidget { final int currentIndex; LockUserData userData; final VoidCallback clickDeleteUser; + final FlutterContactPicker contactPicker = FlutterContactPicker(); + late Contact contact; MassSendReceiverCell(int index, {Key? key, @@ -138,10 +141,14 @@ class MassSendReceiverCell extends StatelessWidget { child: InkWell( onTap: () async { // Contact? currentContact = - // await _contactPicker.selectContact(); + // await contactPicker.selectContact(); // setState(() { - // _contact = currentContact!; - // // print("object111111111111 ${_contact.fullName} ${_contact.phoneNumbers}"); + // state.contact = currentContact!; + // if (currentContact.phoneNumbers!.isNotEmpty) { + // state.emailOrPhoneController.text = currentContact + // .phoneNumbers![0] + // .replaceAll(RegExp(r"\s+\b|\b\s"), ""); + // } // }); }, ), diff --git a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart index c5f0ade9..71b58301 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_logic.dart @@ -1,13 +1,18 @@ +import 'package:flutter/cupertino.dart'; +import 'package:get/get.dart'; +import 'package:get/get_utils/get_utils.dart'; +import 'package:star_lock/appRouters.dart'; import 'package:star_lock/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_state.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/toast.dart'; +import 'package:star_lock/translations/trans_lib.dart'; class SendElectronicKeyLogic extends BaseGetXController { final SendElectronicKeyState state = SendElectronicKeyState(); //发送钥匙请求 - Future sendElectronicKeyRequest() async { + Future sendElectronicKeyRequest(BuildContext widgetContext) async { String getFailureDateTime = '0'; String getEffectiveDateTime = '0'; String lockID = state.keyInfo.value.lockId.toString(); @@ -18,33 +23,67 @@ class SendElectronicKeyLogic extends BaseGetXController { getEffectiveDateTime = state.effectiveDateTime.value.millisecondsSinceEpoch.toString(); } + var entity = await ApiRepository.to.sendElectronicKey( - state.isCreateUser.value ? "1" : "0", - state.countryCode.value, - '1', - getFailureDateTime, - state.isAuthentication.value == true ? '1' : '2', - '2', - state.isRemoteUnlock.value == true ? '1' : '2', - state.keyNameController.text, - '0', - getKeyType, - lockID, - '', - state.emailOrPhoneController.text, - '', - getEffectiveDateTime, - state.weekdaysList); + createUser: state.isCreateUser.value ? "1" : "0", + countryCode: state.countryCode.value, + usernameType: '1', + endDate: getFailureDateTime, + faceAuthentication: state.isAuthentication.value == true ? '1' : '2', + isCameraEnable: '2', + isRemoteUnlock: state.isRemoteUnlock.value == true ? '1' : '2', + keyNameForAdmin: state.keyNameController.text, + keyRight: '0', + keyType: getKeyType, + lockId: lockID, + operatorUid: '', + receiverUsername: state.emailOrPhoneController.text, + remarks: '', + startDate: getEffectiveDateTime, + weekDays: state.weekdaysList); if (entity.errorCode!.codeIsSuccessful) { print('发送电子钥匙成功'); state.isSendSuccess.value = true; } else { - Toast.show(msg: '${entity.errorMsg}'); if (entity.errorCode == 425) { //用户未注册 - state.isCreateUser.value = true; - sendElectronicKeyRequest(); + _showDialog(widgetContext, '${entity.errorMsg}'); } } } + + //用户未注册确认弹窗 + void _showDialog(widgetContext, String errMsg) { + showCupertinoDialog( + context: widgetContext, + builder: (context) { + return CupertinoAlertDialog( + title: const Text('接收者号码未注册,请选择号码所在的国家并重新发送'), + actions: [ + CupertinoDialogAction( + child: Text(TranslationLoader.lanKeys!.cancel!.tr), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + CupertinoDialogAction( + child: Text(TranslationLoader.lanKeys!.selet!.tr), + onPressed: () async { + //选择国家代码 + state.isCreateUser.value = true; + Navigator.of(context).pop(); + + var result = await Get.toNamed(Routers.seletCountryRegionPage); + if (result != null) { + result as Map; + state.countryCode.value = result['code']; + state.countryName.value = result['countryName']; + } + }, + ), + ], + ); + }, + ); + } } diff --git a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart index abfdff73..3fa0163b 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart @@ -260,12 +260,12 @@ class _SendElectronicKeyPageState extends State { if (state.failureDateTime.value .compareTo(state.effectiveDateTime.value) == 1) { - logic.sendElectronicKeyRequest(); + logic.sendElectronicKeyRequest(context); } else { Toast.show(msg: '失效时间需大于生效时间'); } } else { - logic.sendElectronicKeyRequest(); + logic.sendElectronicKeyRequest(context); } } else { Toast.show(msg: '请完善信息'); @@ -428,7 +428,11 @@ class _SendElectronicKeyPageState extends State { await state.contactPicker.selectContact(); setState(() { state.contact = currentContact!; - // print("object111111111111 ${_contact.fullName} ${_contact.phoneNumbers}"); + if (currentContact.phoneNumbers!.isNotEmpty) { + state.emailOrPhoneController.text = currentContact + .phoneNumbers![0] + .replaceAll(RegExp(r"\s+\b|\b\s"), ""); + } }); }, ), diff --git a/star_lock/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart b/star_lock/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart index ff67f08a..d82bd6fa 100644 --- a/star_lock/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart +++ b/star_lock/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart @@ -1,3 +1,4 @@ +import 'package:date_format/date_format.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -37,15 +38,6 @@ class _PasswordKeyDetailPageState extends State { _inputNameController = TextEditingController(); } - static Future tokNative(String method, - {required Map arguments}) async { - if (arguments == null) { - return await methodChannel.invokeMethod(method); - } else { - return await methodChannel.invokeMethod(method, arguments); - } - } - @override Widget build(BuildContext context) { dynamic obj = ModalRoute.of(context)?.settings.arguments; @@ -66,36 +58,7 @@ class _PasswordKeyDetailPageState extends State { width: 30.w, ), onPressed: () { - String pwdShareStr = - '您好,您的密码是:${itemData.keyboardPwd}\n生效时间:${itemData.startDate}\n类型:永久\n锁名:${itemData.keyboardPwdName}'; - tokNative('flutter_sharePassword_to_ios', - arguments: {'pwdShareStr': pwdShareStr}).then((result) { - print('$result'); - }); - print('与原生交互'); - /* - showModalBottomSheet( - context: context, - isScrollControlled: true, - builder: (context) { - return Container( - decoration: const BoxDecoration( - color: Colors.white, - ), - constraints: const BoxConstraints(maxHeight: 700), - child: Row( - children: [ - Image.asset( - 'images/icon_wechat.png', - width: 50.0, - height: 50.0, - fit: BoxFit.fill, - ) - ], - ), - ); //设置maxHeight为你想要的数字就行 - }); - */ + _openModalBottomSheet(); }, ), ], @@ -361,91 +324,124 @@ class _PasswordKeyDetailPageState extends State { ); } - Widget _shareWidget(BuildContext context) { - List nameItems = [ - '微信', - '朋友圈', - 'QQ', - 'QQ空间', - '微博', - 'FaceBook', - '邮件', - '链接' - ]; - List urlItems = [ - 'icon_wechat.png', - 'icon_wechat_moments.png', - 'icon_qq.png', - 'icon_qzone.png', - 'icon_sina.png', - 'icon_facebook.png', - 'icon_email.png', - 'icon_copylink.png' - ]; - - return Container( - color: Colors.red, - height: 250.0, - child: GridView.builder( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 4, mainAxisSpacing: 5.0, childAspectRatio: 1.0), - itemBuilder: (BuildContext context, int index) { - return Image.asset( - 'images/${urlItems[index]}', - width: 50.0, - height: 50.0, - fit: BoxFit.fill, - ); - }, - itemCount: nameItems.length, - ), - /* - child: Column( - children: [ - Padding( - padding: const EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 0.0), - child: SizedBox( - height: 190.0, - child: GridView.builder( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 4, - mainAxisSpacing: 5.0, - childAspectRatio: 1.0), - itemBuilder: (BuildContext context, int index) { - return Column( - children: [ - Padding( - padding: - const EdgeInsets.fromLTRB(0.0, 6.0, 0.0, 6.0), - child: Image.asset( - 'images/${urlItems[index]}', - width: 50.0, - height: 50.0, - fit: BoxFit.fill, - )), - Text(nameItems[index]) - ], - ); - }, - itemCount: nameItems.length, + Future _openModalBottomSheet() async { + showModalBottomSheet( + context: context, + shape: RoundedRectangleBorder( + borderRadius: BorderRadiusDirectional.circular(10)), + constraints: BoxConstraints(maxHeight: 260.h), + builder: (BuildContext context) { + return Column( + children: [ + SizedBox( + width: ScreenUtil().screenWidth, + height: 180.h, + child: ListView( + scrollDirection: Axis.horizontal, //横向滚动 + children: initBottomSheetList()), ), - ), - ), - Container( - height: 0.5, - color: Colors.blueGrey, - ), - const Center( - child: Padding( - padding: EdgeInsets.fromLTRB(0.0, 8.0, 0.0, 8.0), + Container( + height: 8.h, + color: AppColors.greyBackgroundColor, + ), + TextButton( + style: ButtonStyle( + overlayColor: + MaterialStateProperty.all(Colors.white)), child: Text( - '取 消', - style: TextStyle(fontSize: 18.0, color: Colors.blueGrey), - )), - ) - ], + '取消', + style: TextStyle( + color: Colors.black, fontSize: ScreenUtil().setSp(24)), + ), + onPressed: () { + Navigator.pop(context); + }, + ) + ], + ); + }); + } + + List initBottomSheetList() { + List widgetList = []; + + widgetList.add(buildCenter3('images/icon_wechat.png', '微信好友', 0)); + widgetList.add(buildCenter3('images/icon_message.png', '短信', 1)); + widgetList.add(buildCenter3('images/icon_email.png', '邮件', 2)); + widgetList.add(buildCenter3('images/icon_more.png', '更多', 3)); + + return widgetList; + } + + GestureDetector buildCenter3( + String imageName, String titleStr, int itemIndex) { + return GestureDetector( + child: Container( + width: 120.w, + // height: 64.h, + margin: + EdgeInsets.only(top: 20.w, bottom: 20.w, left: 10.w, right: 10.w), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + imageName, + width: 50.w, + height: 50.h, + ), + SizedBox( + height: 16.w, + ), + Text( + titleStr, + style: TextStyle( + fontSize: ScreenUtil().setSp(20), color: Colors.black), + ), + ], + ), ), - */ + onTap: () => _jumpSmartDeviceRoute(itemIndex), ); } + + _jumpSmartDeviceRoute(int itemIndex) { + switch (itemIndex) { + case 0: + //微信好友 + { + String pwdShareStr = + '您好,您的密码是:${itemData.keyboardPwd}\n生效时间:${itemData.startDate}\n类型:永久\n锁名:${itemData.keyboardPwdName}'; + tokNative('flutter_sharePassword_to_ios', + arguments: {'pwdShareStr': pwdShareStr}).then((result) { + print('$result'); + }); + print('与原生交互'); + } + break; + case 1: + //短信 + {} + break; + case 2: + //邮件 + { + Navigator.pushNamed(context, Routers.sendEmailNotificationPage); + } + break; + case 3: + //更多 + {} + break; + default: + } + } + + static Future tokNative(String method, + {required Map arguments}) async { + if (arguments == null) { + return await methodChannel.invokeMethod(method); + } else { + return await methodChannel.invokeMethod(method, arguments); + } + } } diff --git a/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart b/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart index f2fa3b17..e992b02b 100644 --- a/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart +++ b/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart @@ -1,11 +1,13 @@ import 'package:date_format/date_format.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_pickers/pickers.dart'; import 'package:flutter_pickers/style/default_style.dart'; import 'package:flutter_pickers/time_picker/model/date_mode.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart'; import 'package:star_lock/main/lockMian/entity/lockInfoEntity.dart'; import 'package:star_lock/network/api_repository.dart'; @@ -37,6 +39,7 @@ class _PasswordKeyPerpetualPageState extends State { final TextEditingController _nameController = TextEditingController(); final TextEditingController _pwdController = TextEditingController(); final logic = Get.put(PasswordKeyPerpetualLogic()); + static const methodChannel = MethodChannel('flutter_native_ios'); late bool _isSendSuccess; //是否发送成功 late bool _isPermanent; //是否永久 @@ -581,7 +584,7 @@ class _PasswordKeyPerpetualPageState extends State { OutLineBtn( btnName: '分享', onClick: () { - Navigator.pushNamed(context, Routers.sendEmailNotificationPage); + _openModalBottomSheet(); }, ), SizedBox( @@ -644,4 +647,125 @@ class _PasswordKeyPerpetualPageState extends State { String intToStr(int v) { return (v < 10) ? "0$v" : "$v"; } + + Future _openModalBottomSheet() async { + showModalBottomSheet( + context: context, + shape: RoundedRectangleBorder( + borderRadius: BorderRadiusDirectional.circular(10)), + constraints: BoxConstraints(maxHeight: 260.h), + builder: (BuildContext context) { + return Column( + children: [ + SizedBox( + width: ScreenUtil().screenWidth, + height: 180.h, + child: ListView( + scrollDirection: Axis.horizontal, //横向滚动 + children: initBottomSheetList()), + ), + Container( + height: 8.h, + color: AppColors.greyBackgroundColor, + ), + TextButton( + style: ButtonStyle( + overlayColor: + MaterialStateProperty.all(Colors.white)), + child: Text( + '取消', + style: TextStyle( + color: Colors.black, fontSize: ScreenUtil().setSp(24)), + ), + onPressed: () { + Navigator.pop(context); + }, + ) + ], + ); + }); + } + + List initBottomSheetList() { + List widgetList = []; + + widgetList.add(buildCenter3('images/icon_wechat.png', '微信好友', 0)); + widgetList.add(buildCenter3('images/icon_message.png', '短信', 1)); + widgetList.add(buildCenter3('images/icon_email.png', '邮件', 2)); + widgetList.add(buildCenter3('images/icon_more.png', '更多', 3)); + + return widgetList; + } + + GestureDetector buildCenter3( + String imageName, String titleStr, int itemIndex) { + return GestureDetector( + child: Container( + width: 120.w, + // height: 64.h, + margin: + EdgeInsets.only(top: 20.w, bottom: 20.w, left: 10.w, right: 10.w), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + imageName, + width: 50.w, + height: 50.h, + ), + SizedBox( + height: 16.w, + ), + Text( + titleStr, + style: TextStyle( + fontSize: ScreenUtil().setSp(20), color: Colors.black), + ), + ], + ), + ), + onTap: () => _jumpSmartDeviceRoute(itemIndex), + ); + } + +//\n生效时间:${itemData.startDate}\n类型:永久\n锁名:${itemData.keyboardPwdName} + _jumpSmartDeviceRoute(int itemIndex) { + switch (itemIndex) { + case 0: + //微信好友 + { + String pwdShareStr = '您好,您的密码是:$_getPwdStr'; + tokNative('flutter_sharePassword_to_ios', + arguments: {'pwdShareStr': pwdShareStr}).then((result) { + print('$result'); + }); + print('与原生交互'); + } + break; + case 1: + //短信 + {} + break; + case 2: + //邮件 + { + Navigator.pushNamed(context, Routers.sendEmailNotificationPage); + } + break; + case 3: + //更多 + {} + break; + default: + } + } + + static Future tokNative(String method, + {required Map arguments}) async { + if (arguments == null) { + return await methodChannel.invokeMethod(method); + } else { + return await methodChannel.invokeMethod(method, arguments); + } + } } diff --git a/star_lock/lib/network/api_provider_base.dart b/star_lock/lib/network/api_provider_base.dart index 648e868d..f8ebd259 100644 --- a/star_lock/lib/network/api_provider_base.dart +++ b/star_lock/lib/network/api_provider_base.dart @@ -74,9 +74,10 @@ class BaseProvider extends GetConnect with Api { case 430: //与葛工约定弹出ErrorMsg Toast.show(msg: T["errorMsg"]); break; - case 425: - Toast.show(msg: "用户不存在"); - break; + //已单独处理,暂不做全局弹窗 + // case 425: + // Toast.show(msg: "用户不存在"); + // break; case 10001: Toast.show(msg: "数据不存在"); break; diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index 32e5abcf..fb8e57bf 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -136,22 +136,22 @@ class ApiRepository { //发送电子钥匙 Future sendElectronicKey( - String createUser, - String countryCode, - String usernameType, - String endDate, - String faceAuthentication, - String isCameraEnable, - String isRemoteUnlock, - String keyNameForAdmin, - String keyRight, - String keyType, - String lockId, - String operatorUid, - String receiverUsername, - String remarks, - String startDate, - List weekDays) async { + {required String createUser, + required String countryCode, + required String usernameType, + required String endDate, + required String faceAuthentication, + required String isCameraEnable, + required String isRemoteUnlock, + required String keyNameForAdmin, + required String keyRight, + required String keyType, + required String lockId, + required String operatorUid, + required String receiverUsername, + required String remarks, + required String startDate, + required List weekDays}) async { final res = await apiProvider.sendElectronicKey( createUser, countryCode,