Merge branch 'master' of gitee.com:starlock-cn/app-starlock

This commit is contained in:
Daisy 2024-04-16 18:04:26 +08:00
commit 4a6a4077af
58 changed files with 864 additions and 703 deletions

View File

@ -666,6 +666,25 @@
"邮箱绑定成功": "Email binding success", "邮箱绑定成功": "Email binding success",
"手机绑定成功": "Mobile phone binding success", "手机绑定成功": "Mobile phone binding success",
"网络访问失败,请检查网络是否正常": "网络访问失败,请检查网络是否正常", "网络访问失败,请检查网络是否正常": "网络访问失败,请检查网络是否正常",
"清空": "Clear",
"是否清空?": "Whether to empty?",
"消息详情": "Message details",
"创建时间": "Creation time",
"管理员详情": "Administrator details",
"当被胁迫要求强行开锁时,使用胁迫卡会触发报警,报警信息回推送给管理员,该功能需要锁联网。": "When being coerced to forcibly unlock, using a coercion card will trigger an alarm, and the alarm information will be pushed to the administrator. This function requires the lock to be networked.",
"请不要将胁迫卡用于日常开锁": "Please do not use coercion cards for daily unlocking",
"当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警信息回推送给管理员,该功能需要锁联网。": "When being coerced to forcibly unlock, using coercion fingerprints will trigger an alarm, and the alarm information will be pushed to the administrator. This function requires the lock to be networked.",
"请不要将胁迫指纹用于日常开锁": "Please do not use coercion fingerprints for daily unlocking",
"创建公司": "Create company",
"公司名称不能超过30个字符": "Company name cannot exceed 30 characters",
"公司名称不能小于6个字符": "Company name cannot be less than 6 characters",
"WIFI列表": "WIFI list",
"刷新": "Refresh",
"手动配网": "Manual distribution network",
"远距离": "Long distance",
"近距离": "Short distance",
"锁时间更新成功": "Lock time update success",
"锁用户": "Lock user",
"相机": "camera", "相机": "camera",
"相册": "photos", "相册": "photos",

View File

@ -665,6 +665,25 @@
"邮箱绑定成功": "邮箱绑定成功", "邮箱绑定成功": "邮箱绑定成功",
"手机绑定成功": "手机绑定成功", "手机绑定成功": "手机绑定成功",
"网络访问失败,请检查网络是否正常": "网络访问失败,请检查网络是否正常", "网络访问失败,请检查网络是否正常": "网络访问失败,请检查网络是否正常",
"清空": "清空",
"是否清空?": "是否清空?",
"消息详情": "消息详情",
"创建时间": "创建时间",
"管理员详情": "管理员详情",
"当被胁迫要求强行开锁时,使用胁迫卡会触发报警,报警信息回推送给管理员,该功能需要锁联网。": "当被胁迫要求强行开锁时,使用胁迫卡会触发报警,报警信息回推送给管理员,该功能需要锁联网。",
"请不要将胁迫卡用于日常开锁": "请不要将胁迫卡用于日常开锁",
"当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警信息回推送给管理员,该功能需要锁联网。": "当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警信息回推送给管理员,该功能需要锁联网。",
"请不要将胁迫指纹用于日常开锁": "请不要将胁迫指纹用于日常开锁",
"创建公司": "创建公司",
"公司名称不能超过30个字符": "公司名称不能超过30个字符",
"公司名称不能小于6个字符": "公司名称不能小于6个字符",
"WIFI列表": "WIFI列表",
"刷新": "刷新",
"手动配网": "手动配网",
"远距离": "远距离",
"近距离": "近距离",
"锁时间更新成功": "锁时间更新成功",
"锁用户": "锁用户",
"相机": "相机", "相机": "相机",
"相册": "相册", "相册": "相册",

View File

@ -667,6 +667,25 @@
"邮箱绑定成功": "邮箱绑定成功", "邮箱绑定成功": "邮箱绑定成功",
"手机绑定成功": "手机绑定成功", "手机绑定成功": "手机绑定成功",
"网络访问失败,请检查网络是否正常": "网络访问失败,请检查网络是否正常", "网络访问失败,请检查网络是否正常": "网络访问失败,请检查网络是否正常",
"清空": "清空",
"是否清空?": "是否清空?",
"消息详情": "消息详情",
"创建时间": "创建时间",
"管理员详情": "管理员详情",
"当被胁迫要求强行开锁时,使用胁迫卡会触发报警,报警信息回推送给管理员,该功能需要锁联网。": "当被胁迫要求强行开锁时,使用胁迫卡会触发报警,报警信息回推送给管理员,该功能需要锁联网。",
"请不要将胁迫卡用于日常开锁": "请不要将胁迫卡用于日常开锁",
"当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警信息回推送给管理员,该功能需要锁联网。": "当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警信息回推送给管理员,该功能需要锁联网。",
"请不要将胁迫指纹用于日常开锁": "请不要将胁迫指纹用于日常开锁",
"创建公司": "创建公司",
"公司名称不能超过30个字符": "公司名称不能超过30个字符",
"公司名称不能小于6个字符": "公司名称不能小于6个字符",
"WIFI列表": "WIFI列表",
"刷新": "刷新",
"手动配网": "手动配网",
"远距离": "远距离",
"近距离": "近距离",
"锁时间更新成功": "锁时间更新成功",
"锁用户": "锁用户",
"相机": "相机", "相机": "相机",
"相册": "相册", "相册": "相册",

View File

@ -1,4 +1,3 @@
import 'dart:convert'; import 'dart:convert';
import '../io_reply.dart'; import '../io_reply.dart';
@ -9,13 +8,14 @@ import 'package:crypto/crypto.dart' as crypto;
import '../sm4Encipher/sm4.dart'; import '../sm4Encipher/sm4.dart';
///TODO: 使SenderAddICCardWithTimeCycleCoercionCommand 2024.4.16 addby
///
///TODO: ///TODO:
/* /*
UseCountLimit 0 UseCountLimit 0FingerNo 255userId Delete All !@# UseCountLimit 0 UseCountLimit 0FingerNo 255userId Delete All !@#
**/ **/
class SenderAddICCardCommand extends SenderProtocol { class SenderAddICCardCommand extends SenderProtocol {
String? keyID; String? keyID;
String? userID; String? userID;
int? cardNo; int? cardNo;
@ -92,7 +92,7 @@ class SenderAddICCardCommand extends SenderProtocol {
subData.add((endTime! & 0xff00) >> 8); subData.add((endTime! & 0xff00) >> 8);
subData.add((endTime! & 0xff)); subData.add((endTime! & 0xff));
if(needAuthor == 0){ if (needAuthor == 0) {
//AuthCodeLen 1 //AuthCodeLen 1
subData.add(0); subData.add(0);
} else { } else {
@ -141,7 +141,8 @@ class SenderAddICCardReply extends Reply {
} }
class SenderAddICCardConfirmationReply extends Reply { class SenderAddICCardConfirmationReply extends Reply {
SenderAddICCardConfirmationReply.parseData(CommandType commandType, List<int> dataDetail) SenderAddICCardConfirmationReply.parseData(
CommandType commandType, List<int> dataDetail)
: super.parseData(commandType, dataDetail) { : super.parseData(commandType, dataDetail) {
data = dataDetail; data = dataDetail;
} }

View File

@ -8,6 +8,8 @@ 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: 使SenderAddICCardWithTimeCycleCoercionCommand 2024.4.16 addby
///
///TODO: ///TODO:
/* /*

View File

@ -25,7 +25,7 @@ import 'io_protocol/io_addFingerprintWithTimeCycleCoercion.dart';
// import 'io_protocol/io_addICCard.dart'; // import 'io_protocol/io_addICCard.dart';
import 'io_protocol/io_addICCardWithTimeCycleCoercion.dart'; import 'io_protocol/io_addICCardWithTimeCycleCoercion.dart';
import 'io_protocol/io_addStressFingerprint.dart'; import 'io_protocol/io_addStressFingerprint.dart';
import 'io_protocol/io_addStressICCard.dart'; // import 'io_protocol/io_addStressICCard.dart';
import 'io_protocol/io_addStressPassword.dart'; import 'io_protocol/io_addStressPassword.dart';
import 'io_protocol/io_addUser.dart'; import 'io_protocol/io_addUser.dart';
import 'io_protocol/io_automaticPadlock.dart'; import 'io_protocol/io_automaticPadlock.dart';
@ -329,13 +329,13 @@ class CommandReciverManager {
SenderAddStressPasswordReply.parseData(commandType, data); SenderAddStressPasswordReply.parseData(commandType, data);
} }
break; break;
case 61: // case 61:
{ // {
// // //
reply = // reply =
SenderAddStressICCardReply.parseData(commandType, data); // SenderAddStressICCardReply.parseData(commandType, data);
} // }
break; // break;
case 62: case 62:
{ {
// //

View File

@ -1,19 +1,17 @@
import 'package:star_lock/blue/io_protocol/io_addFace.dart'; import 'package:star_lock/blue/io_protocol/io_addFace.dart';
import 'package:star_lock/blue/io_protocol/io_addICCard.dart'; // import 'package:star_lock/blue/io_protocol/io_addICCard.dart';
import 'package:star_lock/blue/io_protocol/io_addStressICCard.dart'; // import 'package:star_lock/blue/io_protocol/io_addStressICCard.dart';
import 'package:star_lock/blue/io_protocol/io_changeAdministratorPassword.dart'; import 'package:star_lock/blue/io_protocol/io_changeAdministratorPassword.dart';
import 'package:star_lock/blue/io_protocol/io_deletUser.dart'; import 'package:star_lock/blue/io_protocol/io_deletUser.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_protocol/io_queryingFaceStatus.dart'; import 'package:star_lock/blue/io_protocol/io_queryingFaceStatus.dart';
import 'package:star_lock/blue/io_protocol/io_readAdminPassword.dart'; import 'package:star_lock/blue/io_protocol/io_readAdminPassword.dart';
import 'io_protocol/io_addFingerprint.dart';
import 'io_protocol/io_addFingerprintWithTimeCycleCoercion.dart'; import 'io_protocol/io_addFingerprintWithTimeCycleCoercion.dart';
import 'io_protocol/io_addICCardWithTimeCycleCoercion.dart'; import 'io_protocol/io_addICCardWithTimeCycleCoercion.dart';
import 'io_protocol/io_addStressFingerprint.dart'; import 'io_protocol/io_addStressFingerprint.dart';
import 'io_protocol/io_addStressPassword.dart'; import 'io_protocol/io_addStressPassword.dart';
import 'io_protocol/io_addUser.dart'; import 'io_protocol/io_addUser.dart';
import 'io_protocol/io_automaticPadlock.dart';
import 'io_protocol/io_checkingCardStatus.dart'; import 'io_protocol/io_checkingCardStatus.dart';
import 'io_protocol/io_checkingUserInfoCount.dart'; import 'io_protocol/io_checkingUserInfoCount.dart';
import 'io_protocol/io_configuringWifi.dart'; import 'io_protocol/io_configuringWifi.dart';
@ -330,34 +328,34 @@ class IoSenderManage {
callBack: callBack); callBack: callBack);
} }
//todo: //todo:
static void senderAddFingerprintCommand( // static void senderAddFingerprintCommand(
{required String? keyID, // {required String? keyID,
required String? userID, // required String? userID,
required int? fingerNo, // required int? fingerNo,
required int? useCountLimit, // required int? useCountLimit,
required List<int>? token, // required List<int>? token,
required int? startTime, // required int? startTime,
required int? endTime, // required int? endTime,
required int? needAuthor, // required int? needAuthor,
required List<int>? signKey, // required List<int>? signKey,
required List<int>? privateKey, // required List<int>? privateKey,
CommandSendCallBack? callBack}) { // CommandSendCallBack? callBack}) {
CommandSenderManager().managerSendData( // CommandSenderManager().managerSendData(
command: SenderAddFingerprintCommand( // command: SenderAddFingerprintCommand(
keyID: keyID, // keyID: keyID,
userID: userID, // userID: userID,
fingerNo: fingerNo, // fingerNo: fingerNo,
useCountLimit: useCountLimit, // useCountLimit: useCountLimit,
token: token, // token: token,
startTime: startTime, // startTime: startTime,
endTime: endTime, // endTime: endTime,
needAuthor: needAuthor, // needAuthor: needAuthor,
signKey: signKey, // signKey: signKey,
privateKey: privateKey, // privateKey: privateKey,
), // ),
callBack: callBack); // callBack: callBack);
} // }
//todo:(...) //todo:(...)
static void senderAddFingerprintWithTimeCycleCoercionCommand( static void senderAddFingerprintWithTimeCycleCoercionCommand(
@ -399,34 +397,34 @@ class IoSenderManage {
callBack: callBack); callBack: callBack);
} }
//todo: //todo:
static void senderAddICCardCommand( // static void senderAddICCardCommand(
{required String? keyID, // {required String? keyID,
required String? userID, // required String? userID,
required int? cardNo, // required int? cardNo,
required int? useCountLimit, // required int? useCountLimit,
required List<int>? token, // required List<int>? token,
required int? startTime, // required int? startTime,
required int? endTime, // required int? endTime,
required int? needAuthor, // required int? needAuthor,
required List<int>? signKey, // required List<int>? signKey,
required List<int>? privateKey, // required List<int>? privateKey,
CommandSendCallBack? callBack}) { // CommandSendCallBack? callBack}) {
CommandSenderManager().managerSendData( // CommandSenderManager().managerSendData(
command: SenderAddICCardCommand( // command: SenderAddICCardCommand(
keyID: keyID, // keyID: keyID,
userID: userID, // userID: userID,
cardNo: cardNo, // cardNo: cardNo,
useCountLimit: useCountLimit, // useCountLimit: useCountLimit,
token: token, // token: token,
startTime: startTime, // startTime: startTime,
endTime: endTime, // endTime: endTime,
needAuthor: needAuthor, // needAuthor: needAuthor,
signKey: signKey, // signKey: signKey,
privateKey: privateKey, // privateKey: privateKey,
), // ),
callBack: callBack); // callBack: callBack);
} // }
//todo:(...) //todo:(...)
static void senderAddCardWithTimeCycleCoercionCommand( static void senderAddCardWithTimeCycleCoercionCommand(
@ -785,36 +783,36 @@ class IoSenderManage {
} }
//todo: //todo:
static void senderAddStressICCardCommand( // static void senderAddStressICCardCommand(
{required String? keyID, // {required String? keyID,
required String? userID, // required String? userID,
required int? icCardNo, // required int? icCardNo,
required int? cardType, // required int? cardType,
required int? useCountLimit, // required int? useCountLimit,
required List<int>? token, // required List<int>? token,
required int? startTime, // required int? startTime,
required int? endTime, // required int? endTime,
required int? needAuthor, // required int? needAuthor,
required List<int>? publicKey, // required List<int>? publicKey,
required List<int>? privateKey, // required List<int>? privateKey,
required List<int>? signKey, // required List<int>? signKey,
CommandSendCallBack? callBack}) { // CommandSendCallBack? callBack}) {
CommandSenderManager().managerSendData( // CommandSenderManager().managerSendData(
command: SenderAddStressICCardCommand( // command: SenderAddStressICCardCommand(
keyID: keyID, // keyID: keyID,
userID: userID, // userID: userID,
icCardNo: icCardNo, // icCardNo: icCardNo,
cardType: cardType, // cardType: cardType,
useCountLimit: useCountLimit, // useCountLimit: useCountLimit,
token: token, // token: token,
startTime: startTime, // startTime: startTime,
endTime: endTime, // endTime: endTime,
needAuthor: needAuthor, // needAuthor: needAuthor,
publicKey: publicKey, // publicKey: publicKey,
privateKey: privateKey, // privateKey: privateKey,
signKey: signKey), // signKey: signKey),
callBack: callBack); // callBack: callBack);
} // }
//todo: //todo:
static void senderAddStressPasswordCommand( static void senderAddStressPasswordCommand(

View File

@ -126,7 +126,7 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
inputFormatters: [ inputFormatters: [
LengthLimitingTextInputFormatter(20), LengthLimitingTextInputFormatter(20),
]), ]),
SizedBox(height: 20.h), // SizedBox(height: 15.h),
Row( Row(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
@ -135,16 +135,20 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
state.agree.value = !state.agree.value; state.agree.value = !state.agree.value;
logic.changeAgreeState(); logic.changeAgreeState();
}, },
child: Image.asset( child: Container(
state.agree.value // color: Colors.red,
? 'images/icon_round_select.png' padding: EdgeInsets.only(left: 5.w, top:20.w, right: 10.w, bottom:20.h),
: 'images/icon_round_unSelect.png', child: Image.asset(
width: 30.w, state.agree.value
height: 30.w, ? 'images/icon_round_select.png'
: 'images/icon_round_unSelect.png',
width: 35.w,
height: 35.w,
),
))), ))),
SizedBox( // SizedBox(
width: 15.w, // width: 5.w,
), // ),
Flexible( Flexible(
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(

View File

@ -77,8 +77,7 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
// color: Colors.red, // color: Colors.red,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(30.h)), borderRadius: BorderRadius.all(Radius.circular(30.h)),
border: border: Border.all(width: 1.0, color: AppColors.greyLineColor)),
Border.all(width: 1.0, color: AppColors.greyLineColor)),
child: Row( child: Row(
children: [ children: [
GestureDetector( GestureDetector(

View File

@ -17,6 +17,7 @@ import '../../../../blue/sender_manage.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';
import '../../../../tools/showTipView.dart';
import '../../../../tools/storage.dart'; import '../../../../tools/storage.dart';
import 'authorizedAdmin_state.dart'; import 'authorizedAdmin_state.dart';
@ -299,7 +300,10 @@ class AuthorizedAdminLogic extends BaseGetXController {
if (entity.errorCode == 425) { if (entity.errorCode == 425) {
// //
state.isCreateUser.value = true; state.isCreateUser.value = true;
_showDialog('${entity.errorMsg}'); // _showDialog('${entity.errorMsg}');
ShowTipView().showIosTipWithContentDialog('${"是否发送授权管理员给未注册账号".tr}\n${state.emailOrPhoneController.text}', (){
sendElectronicKeyRequest();
});
} }
} }
} }
@ -316,39 +320,39 @@ class AuthorizedAdminLogic extends BaseGetXController {
} }
// //
void _showDialog(String errMsg) { // void _showDialog(String errMsg) {
showCupertinoDialog( // showCupertinoDialog(
context: Get.context!, // context: Get.context!,
builder: (context) { // builder: (context) {
return CupertinoAlertDialog( // return CupertinoAlertDialog(
title: const Text('接收者号码未注册,请重新发送'), // title: const Text('接收者号码未注册,请重新发送'),
actions: [ // actions: [
CupertinoDialogAction( // CupertinoDialogAction(
child: Text(TranslationLoader.lanKeys!.cancel!.tr), // child: Text(TranslationLoader.lanKeys!.cancel!.tr),
onPressed: () { // onPressed: () {
Navigator.of(context).pop(); // Get.back();
}, // },
), // ),
CupertinoDialogAction( // CupertinoDialogAction(
child: Text(TranslationLoader.lanKeys!.sure!.tr), // child: Text(TranslationLoader.lanKeys!.sure!.tr),
onPressed: () async { // onPressed: () async {
// // //
Get.back(); // Get.back();
//
// var result = await Get.toNamed(Routers.selectCountryRegionPage); // // var result = await Get.toNamed(Routers.selectCountryRegionPage);
// if (result != null) { // // if (result != null) {
// result as Map<String, dynamic>; // // result as Map<String, dynamic>;
// state.countryCode.value = result['code']; // // state.countryCode.value = result['code'];
// state.countryName.value = result['countryName']; // // state.countryName.value = result['countryName'];
// } // // }
sendElectronicKeyRequest(); // sendElectronicKeyRequest();
}, // },
), // ),
], // ],
); // );
}, // },
); // );
} // }
@override @override
void onReady() { void onReady() {

View File

@ -248,8 +248,7 @@ class _AddCardPageState extends State<AddCardPage> {
rightTitle: "", rightTitle: "",
isTipsImg: false, isTipsImg: false,
isHaveRightWidget: true, isHaveRightWidget: true,
rightWidget: rightWidget: SizedBox(width: 60.w, height: 50.h, child: _isAdmin()))),
SizedBox(width: 60.w, height: 50.h, child: _isAdmin()))),
SizedBox(height: 10.h), SizedBox(height: 10.h),
Obx(() => CommonItem( Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.stressCard!.tr, leftTitel: TranslationLoader.lanKeys!.stressCard!.tr,
@ -258,6 +257,15 @@ class _AddCardPageState extends State<AddCardPage> {
isHaveRightWidget: true, isHaveRightWidget: true,
rightWidget: SizedBox( rightWidget: SizedBox(
width: 60.w, height: 50.h, child: _isStressFingerprint()))), width: 60.w, height: 50.h, child: _isStressFingerprint()))),
Container(
color: Colors.white,
padding: EdgeInsets.only(left:20.w, right: 20.w, bottom: 20.h),
child: Text(
"${"当被胁迫要求强行开锁时,使用胁迫卡会触发报警,报警信息回推送给管理员,该功能需要锁联网。".tr}\n${"请不要将胁迫卡用于日常开锁".tr}",
style: TextStyle(
fontSize: 22.sp, color: AppColors.darkGrayTextColor),
)
),
SizedBox(height: 30.h), SizedBox(height: 30.h),
SubmitBtn( SubmitBtn(
btnName: TranslationLoader.lanKeys!.next!.tr, btnName: TranslationLoader.lanKeys!.next!.tr,

View File

@ -8,7 +8,7 @@ import 'package:star_lock/tools/baseGetXController.dart';
import '../../../../blue/blue_manage.dart'; import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_protocol/io_addICCardWithTimeCycleCoercion.dart'; import '../../../../blue/io_protocol/io_addICCardWithTimeCycleCoercion.dart';
import '../../../../blue/io_protocol/io_addStressICCard.dart'; // import '../../../../blue/io_protocol/io_addStressICCard.dart';
import '../../../../blue/io_reply.dart'; import '../../../../blue/io_reply.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';
@ -26,7 +26,7 @@ class AddICCardLogic extends BaseGetXController{
void _initReplySubscription() { void _initReplySubscription() {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async { _replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
// IC卡开始 // IC卡开始
if(reply is SenderAddICCardWithTimeCycleCoercionReply) { if((reply is SenderAddICCardWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) {
_replyAddICCardBegin(reply); _replyAddICCardBegin(reply);
} }
@ -36,9 +36,9 @@ class AddICCardLogic extends BaseGetXController{
} }
// //
if(reply is SenderAddStressICCardReply) { // if(reply is SenderAddStressICCardReply) {
_replyAddICStressCard(reply); // _replyAddICStressCard(reply);
} // }
}); });
} }
@ -63,17 +63,30 @@ class AddICCardLogic extends BaseGetXController{
// var publicKey = await Storage.getStringList(saveBluePublicKey); // var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!); // List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var weekStr = "00000000";
for (var day in state.weekDay.value) {
int index = day % 7; // 0
weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}';
}
// print("weekStrweekStrweekStr:$weekStr");
int weekRound = int.parse(weekStr, radix: 2);
var token = reply.data.sublist(5, 9); var token = reply.data.sublist(5, 9);
var saveStrList = changeIntListToStringList(token); var saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList); Storage.setStringList(saveBlueToken, saveStrList);
IoSenderManage.senderAddICCardCommand( IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
keyID:"1", keyID:"1",
userID:await Storage.getUid(), userID:await Storage.getUid(),
cardNo:state.isAdministrator.value == "2" ? 254 : 1, cardNo:state.isAdministrator.value == "2" ? 254 : 1,
useCountLimit:0xff, useCountLimit:0xff,
startTime:int.parse(state.startDate.value)~/1000, isForce:state.isCoerced.value == "1" ? 0 : 1, //
endTime:int.parse(state.endDate.value)~/1000, isRound:state.selectType.value == "2" ? 1: 0, //
weekRound:weekRound, //
startDate: int.parse(state.startDate.value)~/1000,
endDate: int.parse(state.endDate.value)~/1000,
startTime:int.parse(state.effectiveDateTime.value)~/1000,
endTime:int.parse(state.failureDateTime.value)~/1000,
needAuthor:1, needAuthor:1,
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
@ -107,7 +120,7 @@ class AddICCardLogic extends BaseGetXController{
}else{ }else{
state.cardNumber.value = (reply.data[6]).toString(); state.cardNumber.value = (reply.data[6]).toString();
} }
if(state.isCoerced.value == "1"){ // if(state.isCoerced.value == "1"){
// //
int addResultStatus = reply.data[5]; int addResultStatus = reply.data[5];
if(addResultStatus == 0){ if(addResultStatus == 0){
@ -117,10 +130,10 @@ class AddICCardLogic extends BaseGetXController{
// 255 退 // 255 退
Get.close(2); Get.close(2);
} }
}else{ // }else{
// // //
senderAddStressICCard(); // addICCardData();
} // }
break; break;
case 0x06: case 0x06:
// //
@ -143,62 +156,62 @@ class AddICCardLogic extends BaseGetXController{
} }
} }
Future<void> _replyAddICStressCard(Reply reply) async { // Future<void> _replyAddICStressCard(Reply reply) async {
int status = reply.data[2]; // int status = reply.data[2];
//
switch(status){ // switch(status){
case 0x00: // case 0x00:
// // //
Get.log("${reply.commandType!.typeValue} 数据解析成功"); // Get.log("${reply.commandType!.typeValue} 数据解析成功");
addICCardData(); // addICCardData();
break; // break;
case 0x06: // case 0x06:
// // //
var publicKey = await Storage.getStringList(saveBluePublicKey); // var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!); // List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
//
var privateKey = await Storage.getStringList(saveBluePrivateKey); // var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!); // List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
//
var signKey = await Storage.getStringList(saveBlueSignKey); // var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> getSignKeyList = changeStringListToIntList(signKey!); // List<int> getSignKeyList = changeStringListToIntList(signKey!);
//
var token = reply.data.sublist(5, 9); // var token = reply.data.sublist(5, 9);
var saveStrList = changeIntListToStringList(token); // var saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList); // Storage.setStringList(saveBlueToken, saveStrList);
//
Get.log("state.isAdministrator.value:${state.isAdministrator.value}"); // Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
IoSenderManage.senderAddStressICCardCommand( // IoSenderManage.senderAddStressICCardCommand(
keyID:"1", // keyID:"1",
userID:await Storage.getUid(), // userID:await Storage.getUid(),
icCardNo:state.isAdministrator.value == "2" ? 254 : 1, // icCardNo:state.isAdministrator.value == "2" ? 254 : 1,
cardType:1, // cardType:1,
useCountLimit:1, // useCountLimit:1,
startTime:int.parse(state.startDate.value)~/1000, // startTime:int.parse(state.startDate.value)~/1000,
endTime:int.parse(state.endDate.value)~/1000, // endTime:int.parse(state.endDate.value)~/1000,
needAuthor:1, // needAuthor:1,
publicKey:publicKeyDataList, // publicKey:publicKeyDataList,
privateKey:getPrivateKeyList, // privateKey:getPrivateKeyList,
token: token, // token: token,
signKey: getSignKeyList, // signKey: getSignKeyList,
); // );
break; // break;
case 0x07: // case 0x07:
// // //
Get.log("${reply.commandType!.typeValue} 用户无权限"); // Get.log("${reply.commandType!.typeValue} 用户无权限");
//
break; // break;
case 0x09: // case 0x09:
// // //
Get.log("${reply.commandType!.typeValue} 权限校验错误"); // Get.log("${reply.commandType!.typeValue} 权限校验错误");
//
break; // break;
default: // default:
// // //
Get.log("${reply.commandType!.typeValue} 失败"); // Get.log("${reply.commandType!.typeValue} 失败");
break; // break;
} // }
} // }
// //
Future<void> senderAddICCard() async { Future<void> senderAddICCard() async {
@ -229,10 +242,10 @@ class AddICCardLogic extends BaseGetXController{
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
Get.log("state.isAdministrator.value:${state.isAdministrator.value}"); Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand( IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
keyID:"1", keyID:"1",
userID:await Storage.getUid(), userID:await Storage.getUid(),
fingerNo:state.isAdministrator.value == "2" ? 254 : 1, cardNo:state.isAdministrator.value == "2" ? 254 : 1,
useCountLimit:0xff, useCountLimit:0xff,
isForce:state.isCoerced.value == "1" ? 0 : 1, // isForce:state.isCoerced.value == "1" ? 0 : 1, //
isRound:state.selectType.value == "2" ? 1: 0, // isRound:state.selectType.value == "2" ? 1: 0, //
@ -270,38 +283,38 @@ class AddICCardLogic extends BaseGetXController{
} }
// //
Future<void> senderAddStressICCard() async { // Future<void> senderAddStressICCard() async {
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async { // BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected){ // if (deviceConnectionState == BluetoothConnectionState.connected){
var publicKey = await Storage.getStringList(saveBluePublicKey); // var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!); // List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
//
var privateKey = await Storage.getStringList(saveBluePrivateKey); // var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!); // List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
//
var signKey = await Storage.getStringList(saveBlueSignKey); // var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> getSignKeyList = changeStringListToIntList(signKey!); // List<int> getSignKeyList = changeStringListToIntList(signKey!);
//
var token = await Storage.getStringList(saveBlueToken); // var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); // List<int> getTokenList = changeStringListToIntList(token!);
//
IoSenderManage.senderAddStressICCardCommand( // IoSenderManage.senderAddStressICCardCommand(
keyID:"1", // keyID:"1",
userID:await Storage.getUid(), // userID:await Storage.getUid(),
icCardNo:state.isAdministrator.value == "2" ? 254 : 1, // icCardNo:state.isAdministrator.value == "2" ? 254 : 1,
cardType:1, // cardType:1,
useCountLimit:1, // useCountLimit:1,
startTime:int.parse(state.startDate.value)~/1000, // startTime:int.parse(state.startDate.value)~/1000,
endTime:int.parse(state.endDate.value)~/1000, // endTime:int.parse(state.endDate.value)~/1000,
needAuthor:1, // needAuthor:1,
publicKey:publicKeyDataList, // publicKey:publicKeyDataList,
privateKey:getPrivateKeyList, // privateKey:getPrivateKeyList,
token: getTokenList, // token: getTokenList,
signKey: getSignKeyList, // signKey: getSignKeyList,
); // );
} // }
}); // });
} // }
void addICCardData() async { void addICCardData() async {
var entity = await ApiRepository.to.addICCardData( var entity = await ApiRepository.to.addICCardData(

View File

@ -1,7 +1,6 @@
import 'dart:async'; import 'dart:async';
// import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/blue/io_type.dart'; import 'package:star_lock/blue/io_type.dart';
@ -9,7 +8,7 @@ import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/eventBusEventManage.dart'; import 'package:star_lock/tools/eventBusEventManage.dart';
import '../../../../blue/blue_manage.dart'; import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_protocol/io_addICCard.dart'; import '../../../../blue/io_protocol/io_addICCardWithTimeCycleCoercion.dart';
import '../../../../blue/io_reply.dart'; import '../../../../blue/io_reply.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';
@ -27,7 +26,7 @@ class CardDetailLogic extends BaseGetXController{
void _initReplySubscription() { void _initReplySubscription() {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async { _replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
// () // ()
if((reply is SenderAddICCardReply)) { if((reply is SenderAddICCardWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) {
_replyAddICCardBegin(reply); _replyAddICCardBegin(reply);
} }
}); });
@ -60,14 +59,18 @@ class CardDetailLogic extends BaseGetXController{
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
String? userID = await Storage.getUid(); IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
IoSenderManage.senderAddICCardCommand( keyID:"1",
keyID:state.keyId.value.toString(), userID:await Storage.getUid(),
userID:userID,
cardNo:int.parse(state.typeNumber.value), cardNo:int.parse(state.typeNumber.value),
useCountLimit:0, useCountLimit:0xff,
startTime:int.parse(state.starDate.value), isForce:0, //
endTime:int.parse(state.endDate.value), isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:0x11223344,
endTime:0x11223344,
needAuthor:1, needAuthor:1,
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
@ -115,19 +118,36 @@ class CardDetailLogic extends BaseGetXController{
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
String? userID = await Storage.getUid(); IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
IoSenderManage.senderAddICCardCommand(
keyID:state.keyId.value.toString(), keyID:state.keyId.value.toString(),
userID:userID, userID:await Storage.getUid(),
cardNo:int.parse(state.typeNumber.value), cardNo:int.parse(state.typeNumber.value),
useCountLimit:0, useCountLimit:0,
startTime:int.parse(state.starDate.value), isForce:0, //
endTime:int.parse(state.endDate.value), isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:0x11223344,
endTime:0x11223344,
needAuthor:1, needAuthor:1,
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: getTokenList,
); );
// IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
// keyID:state.keyId.value.toString(),
// userID:userID,
// cardNo:int.parse(state.typeNumber.value),
// useCountLimit:0,
// startTime:int.parse(state.starDate.value),
// endTime:int.parse(state.endDate.value),
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) { } else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
dismissEasyLoading(); dismissEasyLoading();
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();

View File

@ -7,7 +7,7 @@ import 'package:star_lock/blue/io_type.dart';
import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/dateTool.dart'; import 'package:star_lock/tools/dateTool.dart';
import '../../../../blue/blue_manage.dart'; import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_protocol/io_addICCard.dart'; import '../../../../blue/io_protocol/io_addICCardWithTimeCycleCoercion.dart';
import '../../../../blue/io_protocol/io_checkingCardStatus.dart'; import '../../../../blue/io_protocol/io_checkingCardStatus.dart';
import '../../../../blue/io_protocol/io_checkingUserInfoCount.dart'; import '../../../../blue/io_protocol/io_checkingUserInfoCount.dart';
import '../../../../blue/io_reply.dart'; import '../../../../blue/io_reply.dart';
@ -29,7 +29,7 @@ class CardListLogic extends BaseGetXController {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) { _replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) {
// () // ()
if((reply is SenderAddICCardReply) && (state.isDeletCardData == true)) { if((reply is SenderAddICCardWithTimeCycleCoercionReply) && (state.isDeletCardData == true)) {
_replyAddICCardBegin(reply); _replyAddICCardBegin(reply);
} }
@ -68,20 +68,26 @@ class CardListLogic extends BaseGetXController {
// var publicKey = await Storage.getStringList(saveBluePublicKey); // var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!); // List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var token = await Storage.getStringList(saveBlueToken); var token = reply.data.sublist(5, 9);
List<int> getTokenList = changeStringListToIntList(token!); var saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList);
IoSenderManage.senderAddICCardCommand( IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
keyID:state.deletKeyID, keyID:state.deletKeyID,
userID:state.deletUserID, userID:state.deletUserID,
cardNo:state.deletCardNo, cardNo:state.deletCardNo,
useCountLimit:0, useCountLimit:0,
isForce:0, //
isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:0x11223344, startTime:0x11223344,
endTime:0x11223344, endTime:0x11223344,
needAuthor:1, needAuthor:1,
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: token,
); );
break; break;
case 0x07: case 0x07:
@ -273,11 +279,16 @@ class CardListLogic extends BaseGetXController {
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
IoSenderManage.senderAddICCardCommand( IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
keyID:state.deletKeyID, keyID:state.deletKeyID,
userID:state.deletUserID, userID:state.deletUserID,
cardNo:state.deletCardNo, cardNo:state.deletCardNo,
useCountLimit:0, useCountLimit:0,
isForce:0, //
isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:0x11223344, startTime:0x11223344,
endTime:0x11223344, endTime:0x11223344,
needAuthor:1, needAuthor:1,
@ -285,6 +296,19 @@ class CardListLogic extends BaseGetXController {
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: getTokenList,
); );
// IoSenderManage.senderAddICCardCommand(
// keyID:state.deletKeyID,
// userID:state.deletUserID,
// cardNo:state.deletCardNo,
// useCountLimit:0,
// startTime:0x11223344,
// endTime:0x11223344,
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) { } else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
dismissEasyLoading(); dismissEasyLoading();
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();

View File

@ -49,6 +49,8 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Get.log("DateTime.now().timeZoneName:${DateTime.now().timeZoneName} timeZoneOffset:${DateTime.now().timeZoneOffset}");
return Scaffold( return Scaffold(
backgroundColor: AppColors.mainBackgroundColor, backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar( appBar: TitleAppBar(
@ -142,6 +144,7 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
state.deletUserID = (await Storage.getUid())!; state.deletUserID = (await Storage.getUid())!;
state.deletKeyID = fingerprintItemData.cardId.toString(); state.deletKeyID = fingerprintItemData.cardId.toString();
state.deletCardNo = int.parse(fingerprintItemData.cardNumber!); state.deletCardNo = int.parse(fingerprintItemData.cardNumber!);
state.fingerprintDeletItem = fingerprintItemData;
logic.senderAddICCard(); logic.senderAddICCard();
}); });
}, },

View File

@ -14,6 +14,7 @@ class CardListState {
var deletCardNo = 0; var deletCardNo = 0;
final fingerprintItemListData = <FingerprintItemData>[].obs; final fingerprintItemListData = <FingerprintItemData>[].obs;
var fingerprintDeletItem = FingerprintItemData();
final TextEditingController searchController = TextEditingController(); final TextEditingController searchController = TextEditingController();
var ifCurrentScreen = true.obs; // , var ifCurrentScreen = true.obs; // ,

View File

@ -1,4 +1,5 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.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/app_settings/app_colors.dart'; import 'package:star_lock/app_settings/app_colors.dart';
@ -10,6 +11,8 @@ import 'package:star_lock/tools/dateTool.dart';
import 'package:star_lock/tools/eventBusEventManage.dart'; import 'package:star_lock/tools/eventBusEventManage.dart';
import 'package:star_lock/translations/trans_lib.dart'; import 'package:star_lock/translations/trans_lib.dart';
import '../../../../../tools/showTipView.dart';
class SendElectronicKeyLogic extends BaseGetXController { class SendElectronicKeyLogic extends BaseGetXController {
final SendElectronicKeyState state = SendElectronicKeyState(); final SendElectronicKeyState state = SendElectronicKeyState();
@ -115,11 +118,14 @@ class SendElectronicKeyLogic extends BaseGetXController {
if (entity.errorCode == 425) { if (entity.errorCode == 425) {
// //
state.isCreateUser.value = true; state.isCreateUser.value = true;
if (isPhoneNumber(state.emailOrPhoneController.text) == true) { ShowTipView().showIosTipWithContentDialog('${"是否发送电子钥匙给未注册账号".tr}\n${state.emailOrPhoneController.text}', (){
_showEmailDialog(); sendElectronicKeyRequest();
} else { });
_showEmailDialog(); // if (isPhoneNumber(state.emailOrPhoneController.text) == true) {
} // _showEmailDialog();
// } else {
// _showEmailDialog();
// }
} }
} }
} }
@ -179,38 +185,38 @@ class SendElectronicKeyLogic extends BaseGetXController {
// } // }
//--- //---
void _showEmailDialog() { // void _showEmailDialog() {
showCupertinoDialog( // showCupertinoDialog(
context: Get.context!, // context: Get.context!,
builder: (context) { // builder: (context) {
return CupertinoAlertDialog( // return CupertinoAlertDialog(
title: Text('${"是否发送电子钥匙给未注册账号".tr}\n${state.emailOrPhoneController.text}'), // title: Text('${"是否发送电子钥匙给未注册账号".tr}\n${state.emailOrPhoneController.text}'),
actions: [ // actions: [
CupertinoDialogAction( // CupertinoDialogAction(
child: Text( // child: Text(
TranslationLoader.lanKeys!.cancel!.tr, // TranslationLoader.lanKeys!.cancel!.tr,
style: TextStyle(color: AppColors.mainColor), // style: TextStyle(color: AppColors.mainColor),
), // ),
onPressed: () { // onPressed: () {
Get.back(); // Get.back();
}, // },
), // ),
CupertinoDialogAction( // CupertinoDialogAction(
child: Text( // child: Text(
TranslationLoader.lanKeys!.sure!.tr, // TranslationLoader.lanKeys!.sure!.tr,
style: TextStyle(color: AppColors.mainColor), // style: TextStyle(color: AppColors.mainColor),
), // ),
onPressed: () { // onPressed: () {
Get.back(); // Get.back();
//
sendElectronicKeyRequest(); // sendElectronicKeyRequest();
}, // },
), // ),
], // ],
); // );
}, // },
); // );
} // }
void resetData() { void resetData() {
state.emailOrPhoneController.text = ""; state.emailOrPhoneController.text = "";

View File

@ -258,6 +258,15 @@ class _AddFingerprintTypePageState extends State<AddFingerprintTypePage> {
isHaveRightWidget: true, isHaveRightWidget: true,
rightWidget: SizedBox( rightWidget: SizedBox(
width: 60.w, height: 50.h, child: _isStressFingerprint()))), width: 60.w, height: 50.h, child: _isStressFingerprint()))),
Container(
color: Colors.white,
padding: EdgeInsets.only(left:20.w, right: 20.w, bottom: 20.h),
child: Text(
"${"当被胁迫要求强行开锁时,使用胁迫指纹会触发报警,报警信息回推送给管理员,该功能需要锁联网。".tr}\n${"请不要将胁迫指纹用于日常开锁".tr}",
style: TextStyle(
fontSize: 22.sp, color: AppColors.darkGrayTextColor),
)
),
SizedBox(height: 30.h), SizedBox(height: 30.h),
SubmitBtn( SubmitBtn(
btnName: TranslationLoader.lanKeys!.next!.tr, btnName: TranslationLoader.lanKeys!.next!.tr,
@ -382,6 +391,10 @@ class _AddFingerprintTypePageState extends State<AddFingerprintTypePage> {
enabledBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)), enabledBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
border: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)), border: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
contentPadding: const EdgeInsets.symmetric(vertical: 0), contentPadding: const EdgeInsets.symmetric(vertical: 0),
// suffixIcon: IconButton(
// icon: const Icon(Icons.clear),
// onPressed: state.nameController.clear,
// ),
), ),
), ),
), ),

View File

@ -6,7 +6,7 @@ import 'package:get/get.dart';
import 'package:star_lock/blue/io_type.dart'; import 'package:star_lock/blue/io_type.dart';
import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/baseGetXController.dart';
import '../../../../blue/blue_manage.dart'; import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_protocol/io_addFingerprint.dart'; import '../../../../blue/io_protocol/io_addFingerprintWithTimeCycleCoercion.dart';
import '../../../../blue/io_reply.dart'; import '../../../../blue/io_reply.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';
@ -25,7 +25,7 @@ class FingerprintDetailLogic extends BaseGetXController{
void _initReplySubscription() { void _initReplySubscription() {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) { _replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) {
// () // ()
if((reply is SenderAddFingerprintReply)) { if((reply is SenderAddFingerprintWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) {
_replyAddFingerprintBegin(reply); _replyAddFingerprintBegin(reply);
} }
}); });
@ -61,14 +61,18 @@ class FingerprintDetailLogic extends BaseGetXController{
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
String? userID = await Storage.getUid(); IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
IoSenderManage.senderAddFingerprintCommand(
keyID:state.keyId.value.toString(), keyID:state.keyId.value.toString(),
userID:userID, userID:await Storage.getUid(),
fingerNo:int.parse(state.typeNumber.value), fingerNo:int.parse(state.typeNumber.value),
useCountLimit:0, useCountLimit:0xff,
startTime:int.parse(state.starDate.value), isForce:0, //
endTime:int.parse(state.endDate.value), isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:0x11223344,
endTime:0x11223344,
needAuthor:1, needAuthor:1,
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
@ -116,20 +120,36 @@ class FingerprintDetailLogic extends BaseGetXController{
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
String? userID = await Storage.getUid(); IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
IoSenderManage.senderAddFingerprintCommand(
keyID:state.keyId.value.toString(), keyID:state.keyId.value.toString(),
userID:userID, userID:await Storage.getUid(),
fingerNo:int.parse(state.typeNumber.value), fingerNo:int.parse(state.typeNumber.value),
useCountLimit:0, useCountLimit:0xff,
startTime:int.parse(state.starDate.value), isForce:0, //
endTime:int.parse(state.endDate.value), isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:0x11223344,
endTime:0x11223344,
needAuthor:1, needAuthor:1,
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: getTokenList,
); );
// IoSenderManage.senderAddFingerprintCommand(
// keyID:state.keyId.value.toString(),
// userID:userID,
// fingerNo:int.parse(state.typeNumber.value),
// useCountLimit:0,
// startTime:int.parse(state.starDate.value),
// endTime:int.parse(state.endDate.value),
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) { } else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
dismissEasyLoading(); dismissEasyLoading();
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();

View File

@ -1,13 +1,12 @@
import 'dart:async'; import 'dart:async';
// import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/blue/io_type.dart'; import 'package:star_lock/blue/io_type.dart';
import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/baseGetXController.dart';
import '../../../../blue/blue_manage.dart'; import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_protocol/io_addFingerprint.dart'; import '../../../../blue/io_protocol/io_addFingerprintWithTimeCycleCoercion.dart';
import '../../../../blue/io_protocol/io_checkingUserInfoCount.dart'; import '../../../../blue/io_protocol/io_checkingUserInfoCount.dart';
import '../../../../blue/io_protocol/io_queryingFingerprintStatus.dart'; import '../../../../blue/io_protocol/io_queryingFingerprintStatus.dart';
import '../../../../blue/io_reply.dart'; import '../../../../blue/io_reply.dart';
@ -29,7 +28,7 @@ class FingerprintListLogic extends BaseGetXController{
void _initReplySubscription() { void _initReplySubscription() {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) { _replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) {
// () // ()
if((reply is SenderAddFingerprintReply) && (state.isDeletFingerprintData == true)) { if((reply is SenderAddFingerprintWithTimeCycleCoercionReply) && (state.isDeletFingerprintData == true)) {
_replyAddFingerprintBegin(reply); _replyAddFingerprintBegin(reply);
} }
@ -73,11 +72,29 @@ class FingerprintListLogic extends BaseGetXController{
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
IoSenderManage.senderAddFingerprintCommand( // IoSenderManage.senderAddFingerprintCommand(
// keyID:state.deletKeyID,
// userID:state.deletUserID,
// fingerNo:state.deletFingerNo,
// useCountLimit:0,
// startTime:0x11223344,
// endTime:0x11223344,
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:state.deletKeyID, keyID:state.deletKeyID,
userID:state.deletUserID, userID:state.deletUserID,
fingerNo:state.deletFingerNo, fingerNo:state.deletFingerNo,
useCountLimit:0, useCountLimit:0,
isForce:0, //
isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:0x11223344, startTime:0x11223344,
endTime:0x11223344, endTime:0x11223344,
needAuthor:1, needAuthor:1,
@ -314,11 +331,16 @@ class FingerprintListLogic extends BaseGetXController{
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
IoSenderManage.senderAddFingerprintCommand( IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:state.deletKeyID, keyID:state.deletKeyID,
userID:state.deletUserID, userID:state.deletUserID,
fingerNo:state.deletFingerNo, fingerNo:state.deletFingerNo,
useCountLimit:0, useCountLimit:0,
isForce:0, //
isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:0x11223344, startTime:0x11223344,
endTime:0x11223344, endTime:0x11223344,
needAuthor:1, needAuthor:1,
@ -326,6 +348,19 @@ class FingerprintListLogic extends BaseGetXController{
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: getTokenList,
); );
// IoSenderManage.senderAddFingerprintCommand(
// keyID:state.deletKeyID,
// userID:state.deletUserID,
// fingerNo:state.deletFingerNo,
// useCountLimit:0,
// startTime:0x11223344,
// endTime:0x11223344,
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) { } else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
dismissEasyLoading(); dismissEasyLoading();
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();

View File

@ -1,6 +1,5 @@
import 'dart:async'; import 'dart:async';
// import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/blue/io_type.dart'; import 'package:star_lock/blue/io_type.dart';
@ -9,7 +8,7 @@ import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/eventBusEventManage.dart'; import 'package:star_lock/tools/eventBusEventManage.dart';
import '../../../../blue/blue_manage.dart'; import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_protocol/io_addICCard.dart'; // import '../../../../blue/io_protocol/io_addICCard.dart';
import '../../../../blue/io_reply.dart'; import '../../../../blue/io_reply.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';
@ -27,9 +26,9 @@ class IrisDetailLogic extends BaseGetXController {
_replySubscription = _replySubscription =
EventBusManager().eventBus!.on<Reply>().listen((reply) async { EventBusManager().eventBus!.on<Reply>().listen((reply) async {
// () // ()
if ((reply is SenderAddICCardReply)) { // if ((reply is SenderAddICCardReply)) {
_replyAddICCardBegin(reply); // _replyAddICCardBegin(reply);
} // }
}); });
} }
@ -62,18 +61,18 @@ class IrisDetailLogic extends BaseGetXController {
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
String? userID = await Storage.getUid(); String? userID = await Storage.getUid();
IoSenderManage.senderAddICCardCommand( // IoSenderManage.senderAddICCardCommand(
keyID: state.keyId.value.toString(), // keyID: state.keyId.value.toString(),
userID: userID, // userID: userID,
cardNo: int.parse(state.typeNumber.value), // cardNo: int.parse(state.typeNumber.value),
useCountLimit: 0, // useCountLimit: 0,
startTime: int.parse(state.starDate.value), // startTime: int.parse(state.starDate.value),
endTime: int.parse(state.endDate.value), // endTime: int.parse(state.endDate.value),
needAuthor: 1, // needAuthor: 1,
signKey: signKeyDataList, // signKey: signKeyDataList,
privateKey: getPrivateKeyList, // privateKey: getPrivateKeyList,
token: getTokenList, // token: getTokenList,
); // );
break; break;
case 0x07: case 0x07:
// //
@ -122,18 +121,18 @@ class IrisDetailLogic extends BaseGetXController {
print("openDoorTokenPubToken:$getTokenList"); print("openDoorTokenPubToken:$getTokenList");
String? userID = await Storage.getUid(); String? userID = await Storage.getUid();
IoSenderManage.senderAddICCardCommand( // IoSenderManage.senderAddICCardCommand(
keyID: state.keyId.value.toString(), // keyID: state.keyId.value.toString(),
userID: userID, // userID: userID,
cardNo: int.parse(state.typeNumber.value), // cardNo: int.parse(state.typeNumber.value),
useCountLimit: 0, // useCountLimit: 0,
startTime: int.parse(state.starDate.value), // startTime: int.parse(state.starDate.value),
endTime: int.parse(state.endDate.value), // endTime: int.parse(state.endDate.value),
needAuthor: 1, // needAuthor: 1,
signKey: signKeyDataList, // signKey: signKeyDataList,
privateKey: getPrivateKeyList, // privateKey: getPrivateKeyList,
token: getTokenList, // token: getTokenList,
); // );
} else if (deviceConnectionState == } else if (deviceConnectionState ==
BluetoothConnectionState.disconnected) { BluetoothConnectionState.disconnected) {
dismissEasyLoading(); dismissEasyLoading();

View File

@ -19,6 +19,7 @@ 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 '../../../network/api_repository.dart'; import '../../../network/api_repository.dart';
import '../../../permission/permission_dialog.dart';
import '../../../tools/baseGetXController.dart'; import '../../../tools/baseGetXController.dart';
import '../../../tools/eventBusEventManage.dart'; import '../../../tools/eventBusEventManage.dart';
import '../../../tools/storage.dart'; import '../../../tools/storage.dart';
@ -900,7 +901,7 @@ class LockDetailLogic extends BaseGetXController {
} }
@override @override
void onReady() { Future<void> onReady() async {
// TODO: implement onReady // TODO: implement onReady
super.onReady(); super.onReady();
@ -910,9 +911,9 @@ class LockDetailLogic extends BaseGetXController {
// openBlueSet(); // openBlueSet();
positionPermissionAlert(); await PermissionDialog.request(Permission.location);
// _scanListDiscoveredDeviceSubscriptionAction(); // positionPermissionAlert();
} }
@override @override

View File

@ -105,31 +105,27 @@ class AutomaticBlockingLogic extends BaseGetXController{
switch(status){ switch(status){
case 0x00: case 0x00:
// //
print("${reply.commandType}数据解析成功"); Get.log("${reply.commandType}数据解析成功");
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
dismissEasyLoading(); dismissEasyLoading();
setAutoUnLock(); setAutoUnLock();
break; break;
case 0x06: case 0x06:
// //
print("${reply.commandType}需要鉴权"); Get.log("${reply.commandType}需要鉴权");
break; break;
case 0x07: case 0x07:
// //
print("${reply.commandType}用户无权限"); Get.log("${reply.commandType}用户无权限");
break; break;
case 0x09: case 0x09:
// //
print("${reply.commandType}权限校验错误"); Get.log("${reply.commandType}权限校验错误");
break; break;
default: default:
// //
print("${reply.commandType}失败"); Get.log("${reply.commandType}失败");
break; break;
} }
} }

View File

@ -198,33 +198,6 @@ class _AutomaticBlockingPageState extends State<AutomaticBlockingPage> with Rout
); );
} }
// void showDeletAlertTipDialog(BuildContext context) {
// showCupertinoDialog(
// context: context,
// builder: (context) {
// return CupertinoAlertDialog(
// // title: const Text("提示"),
// content: Text('关闭后,智能锁将设置为全天常开模式,直到手动关闭'.tr),
// actions: [
// CupertinoDialogAction(
// child: Text(TranslationLoader.lanKeys!.cancel!.tr),
// onPressed: () {
// Get.back();
// },
// ),
// CupertinoDialogAction(
// child: Text(TranslationLoader.lanKeys!.sure!.tr),
// onPressed: () {
// Get.back();
// logic.sendAutoLock();
// },
// ),
// ],
// );
// },
// );
// }
@override @override
void didChangeDependencies() { void didChangeDependencies() {
// TODO: implement didChangeDependencies // TODO: implement didChangeDependencies

View File

@ -1,3 +1,4 @@
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';

View File

@ -1,3 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';

View File

@ -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/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart';
import 'package:star_lock/tools/showTFView.dart';
import '../../../../../app_settings/app_colors.dart'; import '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/commonItem.dart'; import '../../../../../tools/commonItem.dart';
import '../../../../../tools/noData.dart'; import '../../../../../tools/noData.dart';
import '../../../../../tools/showTipView.dart';
import '../../../../../tools/submitBtn.dart'; import '../../../../../tools/submitBtn.dart';
import '../../../../../tools/titleAppBar.dart'; import '../../../../../tools/titleAppBar.dart';
import '../../../../../translations/trans_lib.dart'; import '../../../../../translations/trans_lib.dart';
@ -43,8 +43,11 @@ class _LockSelectGroupingPageState extends State<LockSelectGroupingPage> {
left: 30.w, right: 30.w, top: 30.w, bottom: 30.w), left: 30.w, right: 30.w, top: 30.w, bottom: 30.w),
padding: EdgeInsets.only(top: 25.w, bottom: 25.w), padding: EdgeInsets.only(top: 25.w, bottom: 25.w),
onClick: () { onClick: () {
showCupertinoAlertDialog(context); // showCupertinoAlertDialog(context);
// Navigator.pop(context); ShowTipView().showTFViewAlertDialog(state.changeNameController, TranslationLoader.lanKeys!.createNewGroup!.tr, "请输入分组名称".tr, (){
logic.addLockGroupRequest();
Get.back();
});
}), }),
SizedBox( SizedBox(
height: 40.h, height: 40.h,
@ -80,28 +83,4 @@ class _LockSelectGroupingPageState extends State<LockSelectGroupingPage> {
}) : NoData()); }) : NoData());
} }
void showCupertinoAlertDialog(BuildContext context) {
showDialog(
context: context,
builder: (BuildContext context) {
return ShowTFView(
title: TranslationLoader.lanKeys!.createNewGroup!.tr,
tipTitle: TranslationLoader.lanKeys!.pleaseEnter!.tr,
controller: state.changeNameController,
sureClick: () {
//
if (state.changeNameController.text.isNotEmpty) {
logic.addLockGroupRequest();
Get.back();
} else {
logic.showToast("请输入分组名称".tr);
}
},
cancelClick: () {
Navigator.pop(context);
},
);
},
);
}
} }

View File

@ -31,7 +31,7 @@ class BurglarAlarmLogic extends BaseGetXController{
state.burglarAlarmEnable.value = state.burglarAlarmEnable.value == 1 ? 0 : 1; state.burglarAlarmEnable.value = state.burglarAlarmEnable.value == 1 ? 0 : 1;
state.lockSetInfoData.value.lockSettingInfo!.antiPrySwitch = state.burglarAlarmEnable.value; state.lockSetInfoData.value.lockSettingInfo!.antiPrySwitch = state.burglarAlarmEnable.value;
showToast("操作成功", something: (){ showToast("操作成功".tr, something: (){
eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value)); eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value));
}); });
} }
@ -85,32 +85,28 @@ class BurglarAlarmLogic extends BaseGetXController{
int status = reply.data[2]; int status = reply.data[2];
switch(status){ switch(status){
case 0x00: case 0x00:
// //
print("${reply.commandType}数据解析成功"); Get.log("${reply.commandType}数据解析成功");
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
dismissEasyLoading(); dismissEasyLoading();
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
_setLockSetGeneralSetting(); _setLockSetGeneralSetting();
break; break;
case 0x06: case 0x06:
// //
print("${reply.commandType}需要鉴权"); Get.log("${reply.commandType}需要鉴权");
break; break;
case 0x07: case 0x07:
// //
print("${reply.commandType}用户无权限"); Get.log("${reply.commandType}用户无权限");
break; break;
case 0x09: case 0x09:
// //
print("${reply.commandType}权限校验错误"); Get.log("${reply.commandType}权限校验错误");
break; break;
default: default:
// //
print("${reply.commandType}失败"); Get.log("${reply.commandType}失败");
break; break;
} }
} }
@ -188,7 +184,6 @@ class BurglarAlarmLogic extends BaseGetXController{
void onReady() { void onReady() {
// TODO: implement onReady // TODO: implement onReady
super.onReady(); super.onReady();
print("onReady()");
_initReplySubscription(); _initReplySubscription();
} }
@ -197,7 +192,6 @@ class BurglarAlarmLogic extends BaseGetXController{
void onInit() { void onInit() {
// TODO: implement onInit // TODO: implement onInit
super.onInit(); super.onInit();
print("onInit()");
// _readSupportFunctionsNoParameters(); // _readSupportFunctionsNoParameters();
} }
@ -206,6 +200,7 @@ class BurglarAlarmLogic extends BaseGetXController{
void onClose() { void onClose() {
// TODO: implement onClose // TODO: implement onClose
super.onClose(); super.onClose();
_replySubscription.cancel(); _replySubscription.cancel();
} }

View File

@ -97,7 +97,7 @@ class _BurglarAlarmPageState extends State<BurglarAlarmPage> with RouteAware{
@override @override
void didPush() { void didPush() {
super.didPush(); super.didPush();
print("lockSet===didPush");
state.ifCurrentScreen.value = true; state.ifCurrentScreen.value = true;
} }
@ -105,7 +105,7 @@ class _BurglarAlarmPageState extends State<BurglarAlarmPage> with RouteAware{
@override @override
void didPop() { void didPop() {
super.didPop(); super.didPop();
print("lockSet===didPop");
logic.cancelBlueConnetctToastTimer(); logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) EasyLoading.dismiss(animation: true); if (EasyLoading.isShow) EasyLoading.dismiss(animation: true);
BlueManage().stopScan(); BlueManage().stopScan();
@ -117,7 +117,7 @@ class _BurglarAlarmPageState extends State<BurglarAlarmPage> with RouteAware{
@override @override
void didPopNext() { void didPopNext() {
super.didPopNext(); super.didPopNext();
print("lockSet===didPopNext");
state.ifCurrentScreen.value = true; state.ifCurrentScreen.value = true;
} }
@ -125,7 +125,7 @@ class _BurglarAlarmPageState extends State<BurglarAlarmPage> with RouteAware{
@override @override
void didPushNext() { void didPushNext() {
super.didPushNext(); super.didPushNext();
print("lockSet===didPushNext");
logic.cancelBlueConnetctToastTimer(); logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) EasyLoading.dismiss(animation: true); if (EasyLoading.isShow) EasyLoading.dismiss(animation: true);
BlueManage().stopScan(); BlueManage().stopScan();

View File

@ -12,12 +12,12 @@ class CheckInCreatCompanyLogic extends BaseGetXController{
// //
void setCheckInCreateCompany() async{ void setCheckInCreateCompany() async{
if(state.companyNameController.text.length > 50){ if(state.companyNameController.text.length > 50){
showToast("公司名称不能超过30个字符"); showToast("公司名称不能超过30个字符".tr);
return; return;
} }
if(state.companyNameController.text.length < 6){ if(state.companyNameController.text.length < 6){
showToast("公司名称不能小于6个字符"); showToast("公司名称不能小于6个字符".tr);
return; return;
} }
@ -30,7 +30,7 @@ class CheckInCreatCompanyLogic extends BaseGetXController{
workStartTime: state.beginTimeTimestamp.value, workStartTime: state.beginTimeTimestamp.value,
); );
if(entity.errorCode!.codeIsSuccessful){ if(entity.errorCode!.codeIsSuccessful){
showToast("创建成功", something: (){ showToast("创建成功".tr, something: (){
setLockSetGeneralSetting(); setLockSetGeneralSetting();
}); });
} }
@ -46,11 +46,10 @@ class CheckInCreatCompanyLogic extends BaseGetXController{
eventBus.fire(RefreshLockListInfoDataEvent()); eventBus.fire(RefreshLockListInfoDataEvent());
state.lockSetInfoData.value.lockSettingInfo!.attendance = 1; state.lockSetInfoData.value.lockSettingInfo!.attendance = 1;
print("333state.lockSetInfoData.value.lockSettingInfo!.attendance:${state.lockSetInfoData.value.lockSettingInfo!.attendance}");
eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value)); eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value));
eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(0, "1")); eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(0, "1"));
Get.back(); Get.back();
showToast("设置成功"); showToast("设置成功".tr);
} }
} }

View File

@ -60,12 +60,11 @@ class ConfiguringWifiLogic extends BaseGetXController{
// WIFI配网结果 // WIFI配网结果
Future<void> _replySenderConfiguringWifi(Reply reply) async { Future<void> _replySenderConfiguringWifi(Reply reply) async {
int status = reply.data[5]; int status = reply.data[5];
print("status:$status");
switch(status){ switch(status){
case 0x00: case 0x00:
// //
print("${reply.commandType}数据解析成功"); Get.log("${reply.commandType}数据解析成功");
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
dismissEasyLoading(); dismissEasyLoading();
@ -74,8 +73,8 @@ class ConfiguringWifiLogic extends BaseGetXController{
}); });
break; break;
case 0x06: case 0x06:
// //
print("${reply.commandType}需要鉴权"); Get.log("${reply.commandType}需要鉴权");
var privateKey = await Storage.getStringList(saveBluePrivateKey); var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!); List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -85,16 +84,15 @@ class ConfiguringWifiLogic extends BaseGetXController{
var tokenData = reply.data.sublist(7, 10); var tokenData = reply.data.sublist(7, 10);
var saveStrList = changeIntListToStringList(tokenData); var saveStrList = changeIntListToStringList(tokenData);
print("openDoorToken:$tokenData");
Storage.setStringList(saveBlueToken, saveStrList); Storage.setStringList(saveBlueToken, saveStrList);
var serversList = <int>[]; var serversList = <int>[];
for(int i = 0; i<state.configuringWifiEntity.value.data!.serviceList!.length; i++){ for(int i = 0; i<state.configuringWifiEntity.value.data!.serviceList!.length; i++){
var item = state.configuringWifiEntity.value.data!.serviceList![i]; var item = state.configuringWifiEntity.value.data!.serviceList![i];
var itemList = item.serviceIp!.split("."); var itemList = item.serviceIp!.split(".");
itemList.forEach((element) { for (var element in itemList) {
serversList.add(int.parse(element)); serversList.add(int.parse(element));
}); }
double typeDouble = int.parse(item.port!) / 256; double typeDouble = int.parse(item.port!) / 256;
int type1 = typeDouble.toInt(); int type1 = typeDouble.toInt();
@ -121,23 +119,20 @@ class ConfiguringWifiLogic extends BaseGetXController{
break; break;
case 0x07: case 0x07:
// //
print("${reply.commandType}用户无权限"); Get.log("${reply.commandType}用户无权限");
break; break;
case 0x09: case 0x09:
// //
print("${reply.commandType}校验错误"); Get.log("${reply.commandType}校验错误");
break; break;
case 0xff: case 0xff:
// //
showToast("配网失败"); showToast("配网失败");
break; break;
default: default:
// //
print("${reply.commandType}失败"); Get.log("${reply.commandType}失败");
break; break;
} }
} }
@ -164,7 +159,6 @@ class ConfiguringWifiLogic extends BaseGetXController{
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
print("openDoorTokenPubToken:$getTokenList");
// print("millisecondsSinceEpoch/1000:${DateTime.now().millisecondsSinceEpoch~/1000}"); // print("millisecondsSinceEpoch/1000:${DateTime.now().millisecondsSinceEpoch~/1000}");
var serversList = <int>[]; var serversList = <int>[];
@ -181,7 +175,7 @@ class ConfiguringWifiLogic extends BaseGetXController{
for (var element in itemList) { for (var element in itemList) {
serversList.add(int.parse(element)); serversList.add(int.parse(element));
} }
print('Resolved google.com to address: ${addresses.first.address} serversList$serversList'); Get.log('Resolved google.com to address: ${addresses.first.address} serversList$serversList');
} }
double typeDouble = int.parse(item.port!) / 256; double typeDouble = int.parse(item.port!) / 256;
@ -262,7 +256,6 @@ class ConfiguringWifiLogic extends BaseGetXController{
void onInit() { void onInit() {
// TODO: implement onInit // TODO: implement onInit
super.onInit(); super.onInit();
} }
@override @override

View File

@ -37,8 +37,8 @@ class WifiListLogic extends BaseGetXController {
int status = reply.data[2]; int status = reply.data[2];
switch(status){ switch(status){
case 0x00: case 0x00:
// //
print("${reply.commandType}数据解析成功"); Get.log("${reply.commandType}数据解析成功");
showEasyLoading(); showEasyLoading();
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
Future.delayed(5.seconds, (){ Future.delayed(5.seconds, (){
@ -46,24 +46,20 @@ class WifiListLogic extends BaseGetXController {
}); });
break; break;
case 0x06: case 0x06:
// //
print("${reply.commandType}需要鉴权"); Get.log("${reply.commandType}需要鉴权");
break; break;
case 0x07: case 0x07:
// //
print("${reply.commandType}用户无权限"); Get.log("${reply.commandType}用户无权限");
break; break;
case 0x09: case 0x09:
// //
print("${reply.commandType}权限校验错误"); Get.log("${reply.commandType}权限校验错误");
break; break;
default: default:
// //
print("${reply.commandType}失败"); Get.log("${reply.commandType}失败");
break; break;
} }
} }
@ -73,8 +69,8 @@ class WifiListLogic extends BaseGetXController {
int status = reply.data[2]; int status = reply.data[2];
switch(status){ switch(status){
case 0x00: case 0x00:
// //
print("${reply.commandType}数据解析成功"); Get.log("${reply.commandType}数据解析成功");
// showEasyLoading(); // showEasyLoading();
dismissEasyLoading(); dismissEasyLoading();
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
@ -101,24 +97,20 @@ class WifiListLogic extends BaseGetXController {
break; break;
case 0x06: case 0x06:
// //
print("${reply.commandType}需要鉴权"); Get.log("${reply.commandType}需要鉴权");
break; break;
case 0x07: case 0x07:
// //
print("${reply.commandType}用户无权限"); Get.log("${reply.commandType}用户无权限");
break; break;
case 0x09: case 0x09:
// //
print("${reply.commandType}权限校验错误"); Get.log("${reply.commandType}权限校验错误");
break; break;
default: default:
// //
print("${reply.commandType}失败"); Get.log("${reply.commandType}失败");
break; break;
} }
} }
@ -139,7 +131,6 @@ class WifiListLogic extends BaseGetXController {
if (connectionState == BluetoothConnectionState.connected){ if (connectionState == BluetoothConnectionState.connected){
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
print("openDoorTokenPubToken:$getTokenList");
var privateKey = await Storage.getStringList(saveBluePrivateKey); var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!); List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -170,17 +161,14 @@ class WifiListLogic extends BaseGetXController {
void onReady() { void onReady() {
// TODO: implement onReady // TODO: implement onReady
super.onReady(); super.onReady();
print("onReady()");
_initReplySubscription(); _initReplySubscription();
} }
@override @override
void onInit() { void onInit() {
// TODO: implement onInit // TODO: implement onInit
super.onInit(); super.onInit();
print("onInit()");
senderGetWifiListWifiAction(); senderGetWifiListWifiAction();
} }

View File

@ -26,12 +26,12 @@ class _WifiListPageState extends State<WifiListPage> {
return Scaffold( return Scaffold(
backgroundColor: Colors.white, backgroundColor: Colors.white,
appBar: TitleAppBar( appBar: TitleAppBar(
barTitle: "WIFI列表", barTitle: "WIFI列表".tr,
haveBack: true, haveBack: true,
actionsList: [ actionsList: [
TextButton( TextButton(
child: Text( child: Text(
"刷新", style: TextStyle(color: Colors.white, fontSize: 24.sp), "刷新".tr, style: TextStyle(color: Colors.white, fontSize: 24.sp),
), ),
onPressed: () { onPressed: () {
logic.senderGetWifiListWifiAction(); logic.senderGetWifiListWifiAction();
@ -55,7 +55,7 @@ class _WifiListPageState extends State<WifiListPage> {
}) : NoData(noDataHeight: 1.sh - ScreenUtil().statusBarHeight - ScreenUtil().bottomBarHeight - 64.h)), }) : NoData(noDataHeight: 1.sh - ScreenUtil().statusBarHeight - ScreenUtil().bottomBarHeight - 64.h)),
), ),
SubmitBtn( SubmitBtn(
btnName: "手动配网", btnName: "手动配网".tr,
fontSize: 28.sp, fontSize: 28.sp,
borderRadius: 20.w, borderRadius: 20.w,
padding: EdgeInsets.only(top: 25.w, bottom: 25.w), padding: EdgeInsets.only(top: 25.w, bottom: 25.w),

View File

@ -1,3 +1,4 @@
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/lockSet/faceUnlock/faceUnlock_state.dart'; import 'package:star_lock/main/lockDetail/lockSet/faceUnlock/faceUnlock_state.dart';
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart'; import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSetInfo_entity.dart';
import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/network/api_repository.dart';
@ -19,8 +20,8 @@ class FaceUnlockLogic extends BaseGetXController {
entity.data!.lockSettingInfo!.faceAutoLightScreen == 0 ? false : true; entity.data!.lockSettingInfo!.faceAutoLightScreen == 0 ? false : true;
state.senseDistance.value = state.senseDistance.value =
entity.data!.lockSettingInfo!.faceInductionDistance! == 0 entity.data!.lockSettingInfo!.faceInductionDistance! == 0
? '远距离' ? '远距离'.tr
: '近距离'; : '近距离'.tr;
state.antiMisoperation.value = state.antiMisoperation.value =
entity.data!.lockSettingInfo!.faceAntiMistakeOpen!; entity.data!.lockSettingInfo!.faceAntiMistakeOpen!;
} }
@ -34,7 +35,7 @@ class FaceUnlockLogic extends BaseGetXController {
faceSwitch: state.faceOn.value == false ? 0 : 1, faceSwitch: state.faceOn.value == false ? 0 : 1,
); );
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
showToast('设置成功'); showToast('设置成功'.tr);
} }
} }
@ -45,7 +46,7 @@ class FaceUnlockLogic extends BaseGetXController {
faceAutoLightScreen: state.autoBright.value == false ? 0 : 1, faceAutoLightScreen: state.autoBright.value == false ? 0 : 1,
); );
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
showToast('设置成功'); showToast('设置成功'.tr);
} }
} }
@ -53,10 +54,10 @@ class FaceUnlockLogic extends BaseGetXController {
void updateFaceSenseDistance() async { void updateFaceSenseDistance() async {
var entity = await ApiRepository.to.updateFaceSenseDistance( var entity = await ApiRepository.to.updateFaceSenseDistance(
lockId: state.lockSetInfoData.value.lockId ?? 0, lockId: state.lockSetInfoData.value.lockId ?? 0,
faceInductionDistance: state.senseDistance.value == '远距离' ? 0 : 1, faceInductionDistance: state.senseDistance.value == '远距离'.tr ? 0 : 1,
); );
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
showToast('设置成功'); showToast('设置成功'.tr);
} }
} }

View File

@ -506,7 +506,7 @@ class LockSetLogic extends BaseGetXController {
} }
void showDeletAlertTipDialog({String? showContent = ""}) { void showDeletAlertTipDialog({String? showContent = ""}) {
var content = showContent!.isEmpty ? "删除设备失败,请确保在设备附近,设备未被连接,设备已打开${BlueManage().connectDeviceName!.contains("T9A") == true ? "。如果是全自动锁,请使屏幕变亮" : ""}" : showContent; var content = showContent!.isEmpty ? "${"删除设备失败,请确保在设备附近,设备未被连接,设备已打开".tr}${BlueManage().connectDeviceName!.contains("T9A") == true ? "。如果是全自动锁,请使屏幕变亮".tr : ""}" : showContent;
ShowTipView().showSureAlertDialog(content); ShowTipView().showSureAlertDialog(content);
} }

View File

@ -767,7 +767,7 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
@override @override
void didPush() { void didPush() {
super.didPush(); super.didPush();
print("lockSet===didPush");
state.ifCurrentScreen.value = true; state.ifCurrentScreen.value = true;
} }
@ -775,7 +775,7 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
@override @override
void didPop() { void didPop() {
super.didPop(); super.didPop();
print("lockSet===didPop");
logic.cancelBlueConnetctToastTimer(); logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) EasyLoading.dismiss(animation: true); if (EasyLoading.isShow) EasyLoading.dismiss(animation: true);
// if (state.deletWaitScanTimer != null) { // if (state.deletWaitScanTimer != null) {
@ -793,7 +793,7 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
@override @override
void didPopNext() { void didPopNext() {
super.didPopNext(); super.didPopNext();
print("lockSet===didPopNext");
state.ifCurrentScreen.value = true; state.ifCurrentScreen.value = true;
} }
@ -801,18 +801,9 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
@override @override
void didPushNext() { void didPushNext() {
super.didPushNext(); super.didPushNext();
print("lockSet===didPushNext");
logic.cancelBlueConnetctToastTimer();
logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) EasyLoading.dismiss(animation: true); if (EasyLoading.isShow) EasyLoading.dismiss(animation: true);
// if (state.deletWaitScanTimer != null) {
// state.deletWaitScanTimer!.cancel();
// }
// if (state.deletWaitScanCompleter != null &&
// !state.deletWaitScanCompleter!.isCompleted) {
// state.deletWaitScanCompleter!.complete();
// }
// BlueManage().stopScan();
state.ifCurrentScreen.value = false; state.ifCurrentScreen.value = false;
} }
} }

View File

@ -13,11 +13,9 @@ class LockSetState {
final lockBasicInfo = LockBasicInfo().obs; final lockBasicInfo = LockBasicInfo().obs;
final lockId = 0.obs; final lockId = 0.obs;
// var lockCount = 1;
var isOnlyOneData = false.obs; var isOnlyOneData = false.obs;
var isAttendance = 0.obs;// var isAttendance = 0.obs;//
// var currentDeviceUUid = "".obs;// uuid
var isOpenLockNeedOnline = 0.obs;// APP开锁时是否需联网 var isOpenLockNeedOnline = 0.obs;// APP开锁时是否需联网
var isLockPickingReminder = 0.obs;// var isLockPickingReminder = 0.obs;//
@ -31,15 +29,9 @@ class LockSetState {
var ifCurrentScreen = true.obs; // , var ifCurrentScreen = true.obs; // ,
var deleteAdministratorIsHaveAllData = false.obs; // var deleteAdministratorIsHaveAllData = false.obs; //
// Completer? deletWaitScanCompleter;
// Timer? deletWaitScanTimer;
LockSetState() { LockSetState() {
Map map = Get.arguments; Map map = Get.arguments;
lockId.value = map["lockId"]; lockId.value = map["lockId"];
isOnlyOneData.value = map["isOnlyOneData"]; isOnlyOneData.value = map["isOnlyOneData"];
// getKeyInfosData.value = Get.arguments as KeyInfos;
// isAttendance.value = getKeyInfosData.value.isAttendance!;
// isLockPickingReminder.value = getKeyInfosData.value.monitorFlag!;
} }
} }

View File

@ -1,6 +1,5 @@
import 'dart:async'; import 'dart:async';
// import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/baseGetXController.dart';
@ -32,7 +31,7 @@ class LockSoundSetLogic extends BaseGetXController {
state.lockSetInfoData.value.lockSettingInfo!.lockSound = state.isOpenLockSound.value == true ? 1 :0; state.lockSetInfoData.value.lockSettingInfo!.lockSound = state.isOpenLockSound.value == true ? 1 :0;
state.lockSetInfoData.value.lockSettingInfo!.lockSoundVolume = state.lockSoundLevel.value; state.lockSetInfoData.value.lockSettingInfo!.lockSoundVolume = state.lockSoundLevel.value;
ifCanNext(); ifCanNext();
showToast("操作成功", something: (){ showToast("操作成功".tr, something: (){
eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value)); eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value));
Get.back(); Get.back();
}); });
@ -93,32 +92,28 @@ class LockSoundSetLogic extends BaseGetXController {
int status = reply.data[2]; int status = reply.data[2];
switch(status){ switch(status){
case 0x00: case 0x00:
// //
print("${reply.commandType}数据解析成功"); Get.log("${reply.commandType}数据解析成功");
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
dismissEasyLoading(); dismissEasyLoading();
_setLockSetGeneralSetting(); _setLockSetGeneralSetting();
break; break;
case 0x06: case 0x06:
// //
print("${reply.commandType}需要鉴权"); Get.log("${reply.commandType}需要鉴权");
break; break;
case 0x07: case 0x07:
// //
print("${reply.commandType}用户无权限"); Get.log("${reply.commandType}用户无权限");
break; break;
case 0x09: case 0x09:
// //
print("${reply.commandType}权限校验错误"); Get.log("${reply.commandType}权限校验错误");
break; break;
default: default:
// //
print("${reply.commandType}失败"); Get.log("${reply.commandType}失败");
break; break;
} }
} }
@ -187,7 +182,6 @@ class LockSoundSetLogic extends BaseGetXController {
void onReady() { void onReady() {
// TODO: implement onReady // TODO: implement onReady
super.onReady(); super.onReady();
print("onReady()");
_initReplySubscription(); _initReplySubscription();
} }
@ -196,9 +190,7 @@ class LockSoundSetLogic extends BaseGetXController {
void onInit() { void onInit() {
// TODO: implement onInit // TODO: implement onInit
super.onInit(); super.onInit();
print("onInit()");
// _readSupportFunctionsWithParameters();
} }
@override @override

View File

@ -235,7 +235,6 @@ class _LockSoundSetPageState extends State<LockSoundSetPage> with RouteAware {
@override @override
void didPush() { void didPush() {
super.didPush(); super.didPush();
print("lockSet===didPush");
state.ifCurrentScreen.value = true; state.ifCurrentScreen.value = true;
} }
@ -243,7 +242,6 @@ class _LockSoundSetPageState extends State<LockSoundSetPage> with RouteAware {
@override @override
void didPop() { void didPop() {
super.didPop(); super.didPop();
print("lockSet===didPop");
logic.cancelBlueConnetctToastTimer(); logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) EasyLoading.dismiss(animation: true); if (EasyLoading.isShow) EasyLoading.dismiss(animation: true);
BlueManage().stopScan(); BlueManage().stopScan();
@ -255,7 +253,6 @@ class _LockSoundSetPageState extends State<LockSoundSetPage> with RouteAware {
@override @override
void didPopNext() { void didPopNext() {
super.didPopNext(); super.didPopNext();
print("lockSet===didPopNext");
state.ifCurrentScreen.value = true; state.ifCurrentScreen.value = true;
} }
@ -263,7 +260,6 @@ class _LockSoundSetPageState extends State<LockSoundSetPage> with RouteAware {
@override @override
void didPushNext() { void didPushNext() {
super.didPushNext(); super.didPushNext();
print("lockSet===didPushNext");
logic.cancelBlueConnetctToastTimer(); logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) EasyLoading.dismiss(animation: true); if (EasyLoading.isShow) EasyLoading.dismiss(animation: true);
BlueManage().stopScan(); BlueManage().stopScan();

View File

@ -2,6 +2,7 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart';
import '../../../../blue/blue_manage.dart'; import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_protocol/io_getStarLockStatusInfo.dart'; import '../../../../blue/io_protocol/io_getStarLockStatusInfo.dart';
@ -39,8 +40,8 @@ class LockTimeLogic extends BaseGetXController{
int status = reply.data[2]; int status = reply.data[2];
switch (status) { switch (status) {
case 0x00: case 0x00:
// //
print("${reply.commandType}数据解析成功"); Get.log("${reply.commandType}数据解析成功");
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
dismissEasyLoading(); dismissEasyLoading();
@ -53,28 +54,24 @@ class LockTimeLogic extends BaseGetXController{
(0xFF & indate[3])); (0xFF & indate[3]));
state.dateTime.value = DateTool().dateToYMDHNString("$indateValue"); state.dateTime.value = DateTool().dateToYMDHNString("$indateValue");
// state.dateTime = indateValue * 1000; // state.dateTime = indateValue * 1000;
print("indate:$indate indateValue:$indateValue"); Get.log("indate:$indate indateValue:$indateValue");
break; break;
case 0x06: case 0x06:
// //
print("${reply.commandType}需要鉴权"); Get.log("${reply.commandType}需要鉴权");
break; break;
case 0x07: case 0x07:
// //
print("${reply.commandType}用户无权限"); Get.log("${reply.commandType}用户无权限");
break; break;
case 0x09: case 0x09:
// //
print("${reply.commandType}权限校验错误"); Get.log("${reply.commandType}权限校验错误");
break; break;
default: default:
// //
print("${reply.commandType}失败"); Get.log("${reply.commandType}失败");
break; break;
} }
} }
@ -84,18 +81,8 @@ class LockTimeLogic extends BaseGetXController{
int status = reply.data[2]; int status = reply.data[2];
switch(status){ switch(status){
case 0x00: case 0x00:
// //
print("${reply.commandType}数据解析成功"); Get.log("${reply.commandType}数据解析成功");
// var lockTime = reply.data.sublist(4, 8);
// int value = (
// (0xff & lockTime[(0)]) << 24 |
// (0xff & lockTime[1]) << 16 |
// (0xff & lockTime[2]) << 8 |
// (0xFF & lockTime[3]));
// String dataEime = DateTool().dateToYMDHNSString("$value");
// state.dateTime.value = dataEime;
String dataEime = DateTool().dateToYMDHNString("${state.dateTimestamp.value}"); String dataEime = DateTool().dateToYMDHNString("${state.dateTimestamp.value}");
state.dateTime.value = dataEime; state.dateTime.value = dataEime;
@ -103,27 +90,23 @@ class LockTimeLogic extends BaseGetXController{
state.sureBtnState.value = 0; state.sureBtnState.value = 0;
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();
dismissEasyLoading(); dismissEasyLoading();
showToast("锁时间更新成功"); showToast("锁时间更新成功".tr);
break; break;
case 0x06: case 0x06:
// //
print("${reply.commandType}需要鉴权"); Get.log("${reply.commandType}需要鉴权");
break; break;
case 0x07: case 0x07:
// //
print("${reply.commandType}用户无权限"); Get.log("${reply.commandType}用户无权限");
break; break;
case 0x09: case 0x09:
// //
print("${reply.commandType}权限校验错误"); Get.log("${reply.commandType}权限校验错误");
break; break;
default: default:
// //
print("${reply.commandType}失败"); Get.log("${reply.commandType}失败");
break; break;
} }
} }
@ -215,7 +198,7 @@ class LockTimeLogic extends BaseGetXController{
lockId: state.lockSetInfoData.value.lockId.toString(), lockId: state.lockSetInfoData.value.lockId.toString(),
); );
if(entity.errorCode!.codeIsSuccessful){ if(entity.errorCode!.codeIsSuccessful){
state.dateTimestamp.value = entity.data!.date!; state.dateTimestamp.value = entity.data!.date!.toString().length > 10 ? entity.data!.date!~/ 1000 : entity.data!.date!;
if(isSendBlue){ if(isSendBlue){
sendTiming(); sendTiming();
} }
@ -226,7 +209,7 @@ class LockTimeLogic extends BaseGetXController{
void onReady() { void onReady() {
// TODO: implement onReady // TODO: implement onReady
super.onReady(); super.onReady();
print("onReady()"); Get.log("onReady()");
_initReplySubscription(); _initReplySubscription();
@ -239,7 +222,7 @@ class LockTimeLogic extends BaseGetXController{
void onInit() { void onInit() {
// TODO: implement onInit // TODO: implement onInit
super.onInit(); super.onInit();
print("onInit()"); Get.log("onInit()");
// _getLockStatus(); // _getLockStatus();
} }

View File

@ -23,7 +23,7 @@ class _LockUserPageState extends State<LockUserPage> {
return Scaffold( return Scaffold(
backgroundColor: AppColors.mainBackgroundColor, backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar( appBar: TitleAppBar(
barTitle: '锁用户', barTitle: '锁用户'.tr,
haveBack: true, haveBack: true,
backgroundColor: AppColors.mainColor, backgroundColor: AppColors.mainColor,
), ),
@ -35,7 +35,7 @@ class _LockUserPageState extends State<LockUserPage> {
), ),
Expanded(child: _buildMainUI()), Expanded(child: _buildMainUI()),
SubmitBtn( SubmitBtn(
btnName: '确定', btnName: '确定'.tr,
onClick: () {}, onClick: () {},
), ),
SizedBox( SizedBox(

View File

@ -8,7 +8,7 @@ import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/eventBusEventManage.dart'; import 'package:star_lock/tools/eventBusEventManage.dart';
import '../../../../blue/blue_manage.dart'; import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_protocol/io_addICCard.dart'; // import '../../../../blue/io_protocol/io_addICCard.dart';
import '../../../../blue/io_reply.dart'; import '../../../../blue/io_reply.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';
@ -26,9 +26,9 @@ class PalmDetailLogic extends BaseGetXController {
_replySubscription = _replySubscription =
EventBusManager().eventBus!.on<Reply>().listen((reply) async { EventBusManager().eventBus!.on<Reply>().listen((reply) async {
// () // ()
if ((reply is SenderAddICCardReply)) { // if ((reply is SenderAddICCardReply)) {
_replyAddICCardBegin(reply); // _replyAddICCardBegin(reply);
} // }
}); });
} }
@ -61,18 +61,18 @@ class PalmDetailLogic extends BaseGetXController {
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
String? userID = await Storage.getUid(); String? userID = await Storage.getUid();
IoSenderManage.senderAddICCardCommand( // IoSenderManage.senderAddICCardCommand(
keyID: state.keyId.value.toString(), // keyID: state.keyId.value.toString(),
userID: userID, // userID: userID,
cardNo: int.parse(state.typeNumber.value), // cardNo: int.parse(state.typeNumber.value),
useCountLimit: 0, // useCountLimit: 0,
startTime: int.parse(state.starDate.value), // startTime: int.parse(state.starDate.value),
endTime: int.parse(state.endDate.value), // endTime: int.parse(state.endDate.value),
needAuthor: 1, // needAuthor: 1,
signKey: signKeyDataList, // signKey: signKeyDataList,
privateKey: getPrivateKeyList, // privateKey: getPrivateKeyList,
token: getTokenList, // token: getTokenList,
); // );
break; break;
case 0x07: case 0x07:
// //
@ -121,18 +121,18 @@ class PalmDetailLogic extends BaseGetXController {
print("openDoorTokenPubToken:$getTokenList"); print("openDoorTokenPubToken:$getTokenList");
String? userID = await Storage.getUid(); String? userID = await Storage.getUid();
IoSenderManage.senderAddICCardCommand( // IoSenderManage.senderAddICCardCommand(
keyID: state.keyId.value.toString(), // keyID: state.keyId.value.toString(),
userID: userID, // userID: userID,
cardNo: int.parse(state.typeNumber.value), // cardNo: int.parse(state.typeNumber.value),
useCountLimit: 0, // useCountLimit: 0,
startTime: int.parse(state.starDate.value), // startTime: int.parse(state.starDate.value),
endTime: int.parse(state.endDate.value), // endTime: int.parse(state.endDate.value),
needAuthor: 1, // needAuthor: 1,
signKey: signKeyDataList, // signKey: signKeyDataList,
privateKey: getPrivateKeyList, // privateKey: getPrivateKeyList,
token: getTokenList, // token: getTokenList,
); // );
} else if (deviceConnectionState == } else if (deviceConnectionState ==
BluetoothConnectionState.disconnected) { BluetoothConnectionState.disconnected) {
dismissEasyLoading(); dismissEasyLoading();

View File

@ -58,7 +58,6 @@ class LockAddressGaoDeLogic extends BaseGetXController{
void onReady() { void onReady() {
// TODO: implement onReady // TODO: implement onReady
super.onReady(); super.onReady();
print("onReady()");
} }
@ -66,7 +65,6 @@ class LockAddressGaoDeLogic extends BaseGetXController{
void onInit() { void onInit() {
// TODO: implement onInit // TODO: implement onInit
super.onInit(); super.onInit();
print("onInit()");
// AMapFlutterLocation.updatePrivacyAgree(true); // AMapFlutterLocation.updatePrivacyAgree(true);
// AMapFlutterLocation.updatePrivacyShow(true, true); // AMapFlutterLocation.updatePrivacyShow(true, true);
@ -79,7 +77,6 @@ class LockAddressGaoDeLogic extends BaseGetXController{
void onClose() { void onClose() {
// TODO: implement onClose // TODO: implement onClose
super.onClose(); super.onClose();
print("地图界面onClose()");
} }
} }

View File

@ -24,7 +24,7 @@ class _MessageDetailPageState extends State<MessageDetailPage> {
return Scaffold( return Scaffold(
backgroundColor: AppColors.mainBackgroundColor, backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar( appBar: TitleAppBar(
barTitle: "消息详情", barTitle: "消息详情".tr,
haveBack: true, haveBack: true,
backgroundColor: AppColors.mainColor), backgroundColor: AppColors.mainColor),
body: Container( body: Container(
@ -33,7 +33,7 @@ class _MessageDetailPageState extends State<MessageDetailPage> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
"创建时间:${DateTool().dateToYMDHNString(state.itemData.value.createdAt!.toString())}", "${"创建时间".tr}:${DateTool().dateToYMDHNString(state.itemData.value.createdAt!.toString())}",
style: TextStyle(fontSize: 22.sp, color: AppColors.placeholderTextColor), style: TextStyle(fontSize: 22.sp, color: AppColors.placeholderTextColor),
), ),
SizedBox(height: 20.h), SizedBox(height: 20.h),

View File

@ -23,7 +23,6 @@ class MessageListLogic extends BaseGetXController {
} else { } else {
if (entity.data!.list!.isNotEmpty) { if (entity.data!.list!.isNotEmpty) {
state.itemDataList.value.addAll(entity.data!.list!); state.itemDataList.value.addAll(entity.data!.list!);
print("state.itemDataList.value.length:${state.itemDataList.value.length}");
pageNo++; pageNo++;
} }
} }
@ -39,12 +38,21 @@ class MessageListLogic extends BaseGetXController {
} }
} }
/// //
void deletAllMessageDataRequest() async {
MessageListEntity entity = await ApiRepository.to.deletAllMessageLoadData();
if (entity.errorCode!.codeIsSuccessful) {
pageNo = 1;
messageListDataRequest();
}
}
//
StreamSubscription? _readMessageRefreshUIEvent; StreamSubscription? _readMessageRefreshUIEvent;
void _readMessageRefreshUIAction() { void _readMessageRefreshUIAction() {
// eventBus // eventBus
_readMessageRefreshUIEvent = eventBus.on<ReadMessageRefreshUI>().listen((event) { _readMessageRefreshUIEvent = eventBus.on<ReadMessageRefreshUI>().listen((event) {
pageNo == 1; pageNo = 1;
messageListDataRequest(); messageListDataRequest();
}); });
} }

View File

@ -7,6 +7,8 @@ import '../../../appRouters.dart';
import '../../../app_settings/app_colors.dart'; import '../../../app_settings/app_colors.dart';
import '../../../tools/EasyRefreshTool.dart'; import '../../../tools/EasyRefreshTool.dart';
import '../../../tools/dateTool.dart'; import '../../../tools/dateTool.dart';
import '../../../tools/showTipView.dart';
import '../../../tools/storage.dart';
import '../../../tools/titleAppBar.dart'; import '../../../tools/titleAppBar.dart';
import '../../../translations/trans_lib.dart'; import '../../../translations/trans_lib.dart';
import 'messageList_entity.dart'; import 'messageList_entity.dart';
@ -47,6 +49,24 @@ class _MessageListPageState extends State<MessageListPage>
? TitleAppBar( ? TitleAppBar(
barTitle: TranslationLoader.lanKeys!.message!.tr, barTitle: TranslationLoader.lanKeys!.message!.tr,
haveBack: true, haveBack: true,
actionsList: [
TextButton(
child: Text(
"清空".tr,
style: TextStyle(color: Colors.white, fontSize: 24.sp),
),
onPressed: () async {
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) {
ShowTipView().showIosTipWithContentDialog("是否清空?".tr, () async {
logic.deletAllMessageDataRequest();
});
} else {
logic.showToast("演示模式".tr);
}
},
),
],
backgroundColor: AppColors.mainColor) backgroundColor: AppColors.mainColor)
: null, : null,
body: EasyRefreshTool(onRefresh: () { body: EasyRefreshTool(onRefresh: () {
@ -79,7 +99,7 @@ class _MessageListPageState extends State<MessageListPage>
}, },
backgroundColor: Colors.red, backgroundColor: Colors.red,
foregroundColor: Colors.white, foregroundColor: Colors.white,
label: '删除', label: '删除'.tr,
padding: EdgeInsets.only(left: 5.w, right: 5.w), padding: EdgeInsets.only(left: 5.w, right: 5.w),
), ),
], ],
@ -116,6 +136,15 @@ class _MessageListPageState extends State<MessageListPage>
children: [ children: [
Row( Row(
children: [ children: [
messageItemEntity.readAt! == 0 ? Container(
width: 10.w,
height: 10.w,
decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.circular(5.w),
),
):Container(),
messageItemEntity.readAt! == 0 ? SizedBox(width: 5.w) : Container(),
Flexible( Flexible(
child: Text( child: Text(
messageItemEntity.data!, messageItemEntity.data!,

View File

@ -35,7 +35,7 @@ class StarLockMineLogic extends BaseGetXController {
state.userEmail.value = (await Storage.getEmail())!; state.userEmail.value = (await Storage.getEmail())!;
state.userHeadUrl.value = (await Storage.getHeadUrl())!; state.userHeadUrl.value = (await Storage.getHeadUrl())!;
Get.log("userNickName:${state.userNickName.value} userMobile:${state.userMobile.value} userEmail:${state.userEmail.value} userHeadUrl:${state.userHeadUrl.value}"); // Get.log("userNickName:${state.userNickName.value} userMobile:${state.userMobile.value} userEmail:${state.userEmail.value} userHeadUrl:${state.userHeadUrl.value}");
} }
} }

View File

@ -1,3 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -103,7 +104,7 @@ class _MinePersonInfoResetPasswordPageState
GestureDetector( GestureDetector(
child: SizedBox( child: SizedBox(
// width: 150.w, // width: 150.w,
height: 50.h, height: 60.h,
// color: Colors.red, // color: Colors.red,
child: Center( child: Center(
child: Text( child: Text(
@ -113,8 +114,7 @@ class _MinePersonInfoResetPasswordPageState
), ),
), ),
onTap: () { onTap: () {
Navigator.pushNamed( Get.toNamed(Routers.starLockForgetPasswordPage);
context, Routers.starLockForgetPasswordPage);
}, },
) )
], ],

View File

@ -21,7 +21,6 @@ class AdministratorDetailsLogic extends BaseGetXController{
Future<void> administratorDetailRequest() async { Future<void> administratorDetailRequest() async {
AdministratorDetailEntity entity = await ApiRepository.to.authorizedAdminDetail(state.itemData.value.uid ?? 0); AdministratorDetailEntity entity = await ApiRepository.to.authorizedAdminDetail(state.itemData.value.uid ?? 0);
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
print("管理员详情请求成功啦啦啦啦啦");
state.lockItemList.value = entity.data!.lockList!; state.lockItemList.value = entity.data!.lockList!;
} }
} }
@ -36,10 +35,9 @@ class AdministratorDetailsLogic extends BaseGetXController{
'', '',
isRemoteUnlock); isRemoteUnlock);
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
print("修改管理员信息成功啦啦啦啦啦"); showToast("修改成功".tr);
showToast("修改成功", something: (){ }else{
Get.back(); state.isOnRemote.value = !state.isOnRemote.value;
});
} }
} }
@ -50,8 +48,7 @@ class AdministratorDetailsLogic extends BaseGetXController{
includeUnderlings.toString() includeUnderlings.toString()
); );
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
print("删除授权管理员成功"); showToast("删除成功".tr, something: (){
showToast("删除成功", something: (){
// eventBus.fire(AuthorizedAdministratorListPageRefreshUI()); // eventBus.fire(AuthorizedAdministratorListPageRefreshUI());
Get.back(); Get.back();
}); });
@ -65,10 +62,9 @@ class AdministratorDetailsLogic extends BaseGetXController{
includeUnderlings: includeUnderlings includeUnderlings: includeUnderlings
); );
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
showToast("设置成功", something: () { showToast("设置成功".tr, something: () {
eventBus.fire(ElectronicKeyListRefreshUI()); eventBus.fire(ElectronicKeyListRefreshUI());
eventBus.fire(AuthorizedAdminPageRefreshUI()); eventBus.fire(AuthorizedAdminPageRefreshUI());
Get.back();
}); });
} }
} }
@ -80,10 +76,9 @@ class AdministratorDetailsLogic extends BaseGetXController{
includeUnderlings: includeUnderlings includeUnderlings: includeUnderlings
); );
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
showToast("设置成功", something: () { showToast("设置成功".tr, something: () {
eventBus.fire(ElectronicKeyListRefreshUI()); eventBus.fire(ElectronicKeyListRefreshUI());
eventBus.fire(AuthorizedAdminPageRefreshUI()); eventBus.fire(AuthorizedAdminPageRefreshUI());
Get.back();
}); });
} }
} }
@ -94,7 +89,7 @@ class AdministratorDetailsLogic extends BaseGetXController{
keyId:state.itemData.value.keyId.toString(), keyId:state.itemData.value.keyId.toString(),
); );
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
showToast("设置成功", something: () { showToast("设置成功".tr, something: () {
eventBus.fire(ElectronicKeyListRefreshUI()); eventBus.fire(ElectronicKeyListRefreshUI());
eventBus.fire(AuthorizedAdminPageRefreshUI()); eventBus.fire(AuthorizedAdminPageRefreshUI());
Get.back(); Get.back();
@ -103,7 +98,7 @@ class AdministratorDetailsLogic extends BaseGetXController{
} }
Future openModalBottomSheet() async { Future openModalBottomSheet() async {
var textList = [state.itemData.value.keyStatus == 110405 ? '取消冻结' : "冻结", '取消授权']; var textList = [state.itemData.value.keyStatus == 110405 ? '取消冻结'.tr : "冻结".tr, '取消授权'.tr];
showModalBottomSheet( showModalBottomSheet(
context: Get.context!, context: Get.context!,
@ -118,18 +113,18 @@ class AdministratorDetailsLogic extends BaseGetXController{
if(index == 0){ if(index == 0){
if(state.itemData.value.keyStatus == 110405){ if(state.itemData.value.keyStatus == 110405){
// //
ShowTipView().showDeleteAdministratorIsHaveAllDataDialog('同时解冻其发送的钥匙', (isAllData) { ShowTipView().showDeleteAdministratorIsHaveAllDataDialog('同时解冻其发送的钥匙'.tr, (isAllData) {
cancelFreeze(isAllData ? 1 : 0); cancelFreeze(isAllData ? 1 : 0);
}); });
}else{ }else{
ShowTipView().showDeleteAdministratorIsHaveAllDataDialog('同时冻其发送的钥匙', (isAllData) { ShowTipView().showDeleteAdministratorIsHaveAllDataDialog('同时其发送的钥匙'.tr, (isAllData) {
freezeKey(isAllData ? 1 : 0); freezeKey(isAllData ? 1 : 0);
}); });
} }
}else{ }else{
// / // /
// //
ShowTipView().showIosTipWithContentDialog("取消授权会在用户APP连网后生效", (){ ShowTipView().showIosTipWithContentDialog("取消授权会在用户APP连网后生效".tr, (){
cancelAdministrator(); cancelAdministrator();
}); });
} }
@ -152,14 +147,14 @@ class AdministratorDetailsLogic extends BaseGetXController{
} else if (indexEntity.keyType == XSConstantMacro.keyTypeLong) { } else if (indexEntity.keyType == XSConstantMacro.keyTypeLong) {
// //
DateTime dateStr = DateTime.fromMillisecondsSinceEpoch(indexEntity.date!); DateTime dateStr = DateTime.fromMillisecondsSinceEpoch(indexEntity.date!);
useDateStr = '${dateStr.toLocal().toString().substring(0, 16)}\n永久'; useDateStr = '${dateStr.toLocal().toString().substring(0, 16)}\n${"永久".tr}';
} else if (indexEntity.keyType == XSConstantMacro.keyTypeOnce) { } else if (indexEntity.keyType == XSConstantMacro.keyTypeOnce) {
// //
DateTime dateStr = DateTime.fromMillisecondsSinceEpoch(indexEntity.date!); DateTime dateStr = DateTime.fromMillisecondsSinceEpoch(indexEntity.date!);
useDateStr = '${dateStr.toLocal().toString().substring(0, 16)} \n单次'; useDateStr = '${dateStr.toLocal().toString().substring(0, 16)} \n${"单次".tr}';
} else if (indexEntity.keyType == XSConstantMacro.keyTypeLoop) { } else if (indexEntity.keyType == XSConstantMacro.keyTypeLoop) {
// //
useDateStr = '循环'; useDateStr = '循环'.tr;
} }
return useDateStr; return useDateStr;
} }

View File

@ -38,7 +38,7 @@ class _AdministratorDetailsPageState extends State<AdministratorDetailsPage> {
resizeToAvoidBottomInset: false, resizeToAvoidBottomInset: false,
backgroundColor: AppColors.mainBackgroundColor, backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar( appBar: TitleAppBar(
barTitle: '管理员详情', barTitle: '管理员详情'.tr,
haveBack: true, haveBack: true,
actionsList: [ actionsList: [
IconButton( IconButton(
@ -100,7 +100,7 @@ class _AdministratorDetailsPageState extends State<AdministratorDetailsPage> {
left: 30.w, right: 30.w, top: 30.w, bottom: 30.w), left: 30.w, right: 30.w, top: 30.w, bottom: 30.w),
padding: EdgeInsets.only(top: 25.w, bottom: 25.w), padding: EdgeInsets.only(top: 25.w, bottom: 25.w),
onClick: () { onClick: () {
ShowTipView().showDeleteAdministratorIsHaveAllDataDialog('同时删除其发送的所有钥匙,钥匙删除后不能恢复', (isAllData) { ShowTipView().showDeleteAdministratorIsHaveAllDataDialog('同时删除其发送的所有钥匙,钥匙删除后不能恢复'.tr, (isAllData) {
logic.deleteAdministratorRequest(isAllData ? 1 : 0); logic.deleteAdministratorRequest(isAllData ? 1 : 0);
}); });
}), }),
@ -194,7 +194,7 @@ class _AdministratorDetailsPageState extends State<AdministratorDetailsPage> {
return ShowTFView( return ShowTFView(
title: title:
"${TranslationLoader.lanKeys!.amend!.tr} ${TranslationLoader.lanKeys!.name!.tr}", "${TranslationLoader.lanKeys!.amend!.tr} ${TranslationLoader.lanKeys!.name!.tr}",
tipTitle: "请输入", tipTitle: "请输入".tr,
controller: state.changeNameController, controller: state.changeNameController,
sureClick: () { sureClick: () {
// //

View File

@ -2,7 +2,6 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart';
import 'package:star_lock/blue/blue_manage.dart'; import 'package:star_lock/blue/blue_manage.dart';
import 'package:star_lock/blue/io_reply.dart'; import 'package:star_lock/blue/io_reply.dart';
import 'package:star_lock/blue/io_tool/io_tool.dart'; import 'package:star_lock/blue/io_tool/io_tool.dart';
@ -11,7 +10,7 @@ import 'package:star_lock/blue/io_type.dart';
import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/dateTool.dart'; import 'package:star_lock/tools/dateTool.dart';
import '../../../../../blue/io_protocol/io_addICCard.dart'; import '../../../../../blue/io_protocol/io_addICCardWithTimeCycleCoercion.dart';
import '../../../../../blue/sender_manage.dart'; import '../../../../../blue/sender_manage.dart';
import '../../../../../network/api_repository.dart'; import '../../../../../network/api_repository.dart';
import '../../../../../tools/eventBusEventManage.dart'; import '../../../../../tools/eventBusEventManage.dart';
@ -27,7 +26,7 @@ class ExpireCardLogic extends BaseGetXController {
void _initReplySubscription() { void _initReplySubscription() {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async { _replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
// () // ()
if((reply is SenderAddICCardReply)) { if((reply is SenderAddICCardWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) {
_replyAddICCardBegin(reply); _replyAddICCardBegin(reply);
} }
}); });
@ -61,14 +60,18 @@ class ExpireCardLogic extends BaseGetXController {
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
String? userID = await Storage.getUid(); IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
IoSenderManage.senderAddICCardCommand( keyID:"1",
keyID:state.deletExpireCardItemEntity.cardId.toString(), userID:await Storage.getUid(),
userID:userID,
cardNo:state.deletExpireCardItemEntity.cardUserNo!, cardNo:state.deletExpireCardItemEntity.cardUserNo!,
useCountLimit:0, useCountLimit:0xff,
startTime:state.deletExpireCardItemEntity.startDate!~/1000, isForce:0, //
endTime:state.deletExpireCardItemEntity.endDate!~/1000, isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:0x11223344,
endTime:0x11223344,
needAuthor:1, needAuthor:1,
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
@ -120,14 +123,18 @@ class ExpireCardLogic extends BaseGetXController {
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
print("openDoorTokenPubToken:$getTokenList"); print("openDoorTokenPubToken:$getTokenList");
String? userID = await Storage.getUid(); IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
IoSenderManage.senderAddICCardCommand( keyID:"1",
keyID:state.deletExpireCardItemEntity.cardId.toString(), userID:await Storage.getUid(),
userID:userID,
cardNo:state.deletExpireCardItemEntity.cardUserNo!, cardNo:state.deletExpireCardItemEntity.cardUserNo!,
useCountLimit:0, useCountLimit:0xff,
startTime:state.deletExpireCardItemEntity.startDate!~/1000, isForce:0, //
endTime:state.deletExpireCardItemEntity.endDate!~/1000, isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:0x11223344,
endTime:0x11223344,
needAuthor:1, needAuthor:1,
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,

View File

@ -2,13 +2,13 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:star_lock/blue/io_protocol/io_addFingerprint.dart';
import 'package:star_lock/blue/io_tool/io_tool.dart'; import 'package:star_lock/blue/io_tool/io_tool.dart';
import 'package:star_lock/blue/io_type.dart'; import 'package:star_lock/blue/io_type.dart';
import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/dateTool.dart'; import 'package:star_lock/tools/dateTool.dart';
import '../../../../../blue/blue_manage.dart'; import '../../../../../blue/blue_manage.dart';
import '../../../../../blue/io_protocol/io_addFingerprintWithTimeCycleCoercion.dart';
import '../../../../../blue/io_reply.dart'; import '../../../../../blue/io_reply.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';
@ -26,7 +26,7 @@ class ExpireFingerprintLogic extends BaseGetXController {
void _initReplySubscription() { void _initReplySubscription() {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) { _replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) {
// () // ()
if((reply is SenderAddFingerprintReply)) { if((reply is SenderAddFingerprintWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) {
_replyAddFingerprintBegin(reply); _replyAddFingerprintBegin(reply);
} }
}); });
@ -62,14 +62,18 @@ class ExpireFingerprintLogic extends BaseGetXController {
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
String? userID = await Storage.getUid(); IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
IoSenderManage.senderAddFingerprintCommand(
keyID:state.deletExpireFingerprintItemEntity.fingerprintId.toString(), keyID:state.deletExpireFingerprintItemEntity.fingerprintId.toString(),
userID:userID, userID:await Storage.getUid(),
fingerNo:int.parse(state.deletExpireFingerprintItemEntity.fingerprintNumber!), fingerNo:int.parse(state.deletExpireFingerprintItemEntity.fingerprintNumber!),
useCountLimit:0, useCountLimit:0xff,
startTime:state.deletExpireFingerprintItemEntity.startDate!~/1000, isForce:0, //
endTime:state.deletExpireFingerprintItemEntity.endDate!~/1000, isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:0x11223344,
endTime:0x11223344,
needAuthor:1, needAuthor:1,
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
@ -122,18 +126,36 @@ class ExpireFingerprintLogic extends BaseGetXController {
String? userID = await Storage.getUid(); String? userID = await Storage.getUid();
IoSenderManage.senderAddFingerprintCommand( IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:state.deletExpireFingerprintItemEntity.fingerprintId.toString(), keyID:state.deletExpireFingerprintItemEntity.fingerprintId.toString(),
userID:userID, userID:await Storage.getUid(),
fingerNo:int.parse(state.deletExpireFingerprintItemEntity.fingerprintNumber!), fingerNo:int.parse(state.deletExpireFingerprintItemEntity.fingerprintNumber!),
useCountLimit:0, useCountLimit:0xff,
startTime:state.deletExpireFingerprintItemEntity.startDate!~/1000, isForce:0, //
endTime:state.deletExpireFingerprintItemEntity.endDate!~/1000, isRound:0, //
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:0x11223344,
endTime:0x11223344,
needAuthor:1, needAuthor:1,
signKey:signKeyDataList, signKey:signKeyDataList,
privateKey:getPrivateKeyList, privateKey:getPrivateKeyList,
token: getTokenList, token: getTokenList,
); );
// IoSenderManage.senderAddFingerprintCommand(
// keyID:state.deletExpireFingerprintItemEntity.fingerprintId.toString(),
// userID:userID,
// fingerNo:int.parse(state.deletExpireFingerprintItemEntity.fingerprintNumber!),
// useCountLimit:0,
// startTime:state.deletExpireFingerprintItemEntity.startDate!~/1000,
// endTime:state.deletExpireFingerprintItemEntity.endDate!~/1000,
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) { } else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
dismissEasyLoading(); dismissEasyLoading();
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();

View File

@ -185,6 +185,7 @@ abstract class Api {
final String messageListURL = '/notifications/list'; // final String messageListURL = '/notifications/list'; //
final String readMessageURL = '/notifications/markAsRead'; // final String readMessageURL = '/notifications/markAsRead'; //
final String deletMessageURL = '/notifications/delete'; // final String deletMessageURL = '/notifications/delete'; //
final String deletAllMessageURL = '/notifications/deleteAll'; //
final String getVersionURL = '/app/getVersion'; // final String getVersionURL = '/app/getVersion'; //

View File

@ -1682,6 +1682,11 @@ class ApiProvider extends BaseProvider {
'id': messageId, 'id': messageId,
})); }));
//
Future<Response> deletAllMessageLoadData() => post(
deletAllMessageURL.toUrl,
jsonEncode({}));
// //
Future<Response> getVersionData(String brandName, String currentVersion) => Future<Response> getVersionData(String brandName, String currentVersion) =>
post( post(

View File

@ -1728,6 +1728,12 @@ class ApiRepository {
return MessageListEntity.fromJson(res.body); return MessageListEntity.fromJson(res.body);
} }
//
Future<MessageListEntity> deletAllMessageLoadData() async {
final res = await apiProvider.deletAllMessageLoadData();
return MessageListEntity.fromJson(res.body);
}
// //
Future<VersionUndateEntity> getVersionData( Future<VersionUndateEntity> getVersionData(
{required String brandName, required String currentVersion}) async { {required String brandName, required String currentVersion}) async {

View File

@ -127,6 +127,9 @@ class DateTool {
String dateToYMDHNString(String timestamp){ String dateToYMDHNString(String timestamp){
// Get.log('dateToYMDHNString timestamp: $timestamp'); // Get.log('dateToYMDHNString timestamp: $timestamp');
int time = int.parse(timestamp); int time = int.parse(timestamp);
if(timestamp.length == 10){
time = time * 1000;
}
DateTime nowDate = DateTime.fromMillisecondsSinceEpoch(time); DateTime nowDate = DateTime.fromMillisecondsSinceEpoch(time);
String appointmentDate = formatDate(nowDate, [yyyy,'-',mm,'-',dd,' ',HH,':',nn]); String appointmentDate = formatDate(nowDate, [yyyy,'-',mm,'-',dd,' ',HH,':',nn]);
return appointmentDate; return appointmentDate;

View File

@ -59,7 +59,7 @@ class ShowTFView extends StatelessWidget {
decoration: InputDecoration( decoration: InputDecoration(
contentPadding: contentPadding:
const EdgeInsets.only(left: 5, top: -8, bottom: 6), const EdgeInsets.only(left: 5, top: -8, bottom: 6),
hintText: TranslationLoader.lanKeys!.pleaseEnter!.tr, hintText: tipTitle??TranslationLoader.lanKeys!.pleaseEnter!.tr,
hintStyle: TextStyle(fontSize: 22.sp, height: 1.0), hintStyle: TextStyle(fontSize: 22.sp, height: 1.0),
//线 //线
border: InputBorder.none, border: InputBorder.none,

View File

@ -103,7 +103,7 @@ class ShowTipView {
builder: (BuildContext context) { builder: (BuildContext context) {
return ShowTFView( return ShowTFView(
title: title, title: title,
tipTitle: "", tipTitle: tipTitle??"",
controller: controller, controller: controller,
sureClick: () { sureClick: () {
// //