修改测试部门提出的问题
This commit is contained in:
parent
d0174fdf3e
commit
408a077211
@ -4,12 +4,12 @@ import 'dart:async';
|
||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/app_settings/app_settings.dart';
|
||||
import 'package:star_lock/blue/io_type.dart';
|
||||
import 'package:star_lock/login/login/entity/LoginEntity.dart';
|
||||
import 'package:star_lock/main/lockDetail/card/addICCard/addICCard_entity.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
|
||||
import '../../../../blue/blue_manage.dart';
|
||||
import '../../../../blue/io_protocol/io_addICCardWithTimeCycleCoercion.dart';
|
||||
// import '../../../../blue/io_protocol/io_addStressICCard.dart';
|
||||
import '../../../../blue/io_reply.dart';
|
||||
import '../../../../blue/io_tool/io_tool.dart';
|
||||
import '../../../../blue/io_tool/manager_event_bus.dart';
|
||||
@ -26,7 +26,7 @@ class AddICCardLogic extends BaseGetXController{
|
||||
// 监听设备返回的数据
|
||||
late StreamSubscription<Reply> _replySubscription;
|
||||
void _initReplySubscription() {
|
||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
|
||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
|
||||
// 添加IC卡开始
|
||||
if((reply is SenderAddICCardWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) {
|
||||
_replyAddICCardBegin(reply);
|
||||
@ -40,13 +40,13 @@ class AddICCardLogic extends BaseGetXController{
|
||||
}
|
||||
|
||||
Future<void> _replyAddICCardBegin(Reply reply) async {
|
||||
int status = reply.data[2];
|
||||
final int status = reply.data[2];
|
||||
|
||||
switch(status){
|
||||
case 0x00:
|
||||
//成功
|
||||
var cardNumberList = reply.data.sublist(reply.data.length - 2);
|
||||
var cardNumber = listChangInt(cardNumberList).toString();
|
||||
final List<int> cardNumberList = reply.data.sublist(reply.data.length - 2);
|
||||
final String cardNumber = listChangInt(cardNumberList).toString();
|
||||
// AppLog.log("添加卡号:$cardNumberList cardNumber:$cardNumber");
|
||||
state.cardNumber.value = cardNumber.toString();
|
||||
cancelBlueConnetctToastTimer();
|
||||
@ -56,29 +56,29 @@ class AddICCardLogic extends BaseGetXController{
|
||||
break;
|
||||
case 0x06:
|
||||
//无权限
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||
|
||||
var token = reply.data.sublist(5, 9);
|
||||
var saveStrList = changeIntListToStringList(token);
|
||||
final List<int> token = reply.data.sublist(5, 9);
|
||||
final List<String> saveStrList = changeIntListToStringList(token);
|
||||
Storage.setStringList(saveBlueToken, saveStrList);
|
||||
AppLog.log("添加卡token:$token");
|
||||
AppLog.log('添加卡token:$token');
|
||||
|
||||
IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
|
||||
keyID:"1",
|
||||
keyID:'1',
|
||||
userID:await Storage.getUid(),
|
||||
cardNo:0,
|
||||
useCountLimit:0xffff,
|
||||
operate:0, // 0:注册 1:修改 2:删除 3:删除全部
|
||||
isAdmin:state.isAdministrator.value == "2" ? 1 : 0,
|
||||
isForce:state.isCoerced.value == "2" ? 1 : 0, // 是否是胁迫
|
||||
isRound:state.selectType.value == "2" ? 1: 0, // 是否是循环
|
||||
isAdmin:state.isAdministrator.value == '2' ? 1 : 0,
|
||||
isForce:state.isCoerced.value == '2' ? 1 : 0, // 是否是胁迫
|
||||
isRound:state.selectType.value == '2' ? 1: 0, // 是否是循环
|
||||
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环
|
||||
startDate: int.parse(state.startDate.value)~/1000,
|
||||
endDate: int.parse(state.endDate.value)~/1000,
|
||||
@ -98,7 +98,7 @@ class AddICCardLogic extends BaseGetXController{
|
||||
}
|
||||
|
||||
Future<void> _replyAddICCardConfirmation(Reply reply) async {
|
||||
int status = reply.data[2];
|
||||
final int status = reply.data[2];
|
||||
state.ifAddState.value = false;
|
||||
switch(status){
|
||||
case 0x00:
|
||||
@ -107,27 +107,27 @@ class AddICCardLogic extends BaseGetXController{
|
||||
switch(reply.data[5]){
|
||||
case 0xff:
|
||||
// 注册指纹失败
|
||||
showToast("退出添加".tr);
|
||||
showToast('退出添加'.tr);
|
||||
Get.close(1);
|
||||
break;
|
||||
case 0xFE:
|
||||
// 管理员已满
|
||||
showToast("管理员已满".tr);
|
||||
showToast('管理员已满'.tr);
|
||||
Get.close(1);
|
||||
break;
|
||||
case 0xFD:
|
||||
// 用户已满
|
||||
showToast("用户已满".tr);
|
||||
showToast('用户已满'.tr);
|
||||
Get.close(1);
|
||||
break;
|
||||
case 0xFC:
|
||||
// 指纹已满
|
||||
showToast("锁上面添加卡已满".tr);
|
||||
showToast('锁上面添加卡已满'.tr);
|
||||
Get.close(1);
|
||||
break;
|
||||
case 0xFB:
|
||||
// 指纹已存在
|
||||
showToast("卡已存在".tr);
|
||||
showToast('卡已存在'.tr);
|
||||
break;
|
||||
default:
|
||||
// 添加指纹中
|
||||
@ -153,24 +153,24 @@ class AddICCardLogic extends BaseGetXController{
|
||||
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var token = await Storage.getStringList(saveBlueToken);
|
||||
List<int> getTokenList = changeStringListToIntList(token!);
|
||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
||||
final List<int> getTokenList = changeStringListToIntList(token!);
|
||||
|
||||
IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
|
||||
keyID:"1",
|
||||
keyID:'1',
|
||||
userID:await Storage.getUid(),
|
||||
cardNo:0,
|
||||
useCountLimit:0xffff,
|
||||
operate:0, // 0:注册 1:修改 2:删除 3:删除全部
|
||||
isAdmin:state.isAdministrator.value == "2" ? 1 : 0,
|
||||
isForce:state.isCoerced.value == "2" ? 1 : 0, // 是否是胁迫
|
||||
isRound:state.selectType.value == "2" ? 1: 0, // 是否是循环
|
||||
isAdmin:state.isAdministrator.value == '2' ? 1 : 0,
|
||||
isForce:state.isCoerced.value == '2' ? 1 : 0, // 是否是胁迫
|
||||
isRound:state.selectType.value == '2' ? 1: 0, // 是否是循环
|
||||
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), // 周循环
|
||||
startDate: int.parse(state.startDate.value)~/1000,
|
||||
endDate: int.parse(state.endDate.value)~/1000,
|
||||
@ -195,17 +195,17 @@ class AddICCardLogic extends BaseGetXController{
|
||||
Future<void> senderCancelAddCardCommand() async {
|
||||
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||
if (deviceConnectionState == BluetoothConnectionState.connected){
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var token = await Storage.getStringList(saveBlueToken);
|
||||
List<int> getTokenList = changeStringListToIntList(token!);
|
||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
||||
final List<int> getTokenList = changeStringListToIntList(token!);
|
||||
|
||||
IoSenderManage.senderCancelAddCardCommand(
|
||||
keyID:"1",
|
||||
keyID:'1',
|
||||
userID:await Storage.getUid(),
|
||||
needAuthor:1,
|
||||
signKey:signKeyDataList,
|
||||
@ -222,8 +222,8 @@ class AddICCardLogic extends BaseGetXController{
|
||||
});
|
||||
}
|
||||
|
||||
void addICCardData() async {
|
||||
var entity = await ApiRepository.to.addICCardData(
|
||||
Future<void> addICCardData() async {
|
||||
final AddICCardEntity entity = await ApiRepository.to.addICCardData(
|
||||
lockId: state.lockId.value.toString(),
|
||||
endDate: state.endDate.value,
|
||||
cardName: state.cardName.value.toString(),
|
||||
@ -235,21 +235,21 @@ class AddICCardLogic extends BaseGetXController{
|
||||
weekDay: state.weekDay.value,
|
||||
startTime: int.parse(state.effectiveDateTime.value),
|
||||
endTime: int.parse(state.failureDateTime.value),
|
||||
cardRight: state.isAdministrator.value == "2" ? 1 : 0,
|
||||
cardRight: state.isAdministrator.value == '2' ? 1 : 0,
|
||||
);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
updateIdCardUserNoLoadData(entity.data!.cardId.toString());
|
||||
}
|
||||
}
|
||||
|
||||
void updateIdCardUserNoLoadData(String cardId) async{
|
||||
var entity = await ApiRepository.to.updateIdCardUserNoLoadData(
|
||||
Future<void> updateIdCardUserNoLoadData(String cardId) async{
|
||||
final LoginEntity entity = await ApiRepository.to.updateIdCardUserNoLoadData(
|
||||
lockId: state.lockId.value.toString(),
|
||||
cardId: cardId,
|
||||
cardUserNo: state.cardNumber.value,
|
||||
);
|
||||
if(entity.errorCode!.codeIsSuccessful){
|
||||
showToast("添加成功".tr, something:(){
|
||||
showToast('添加成功'.tr, something:(){
|
||||
if(state.fromType.value == 2){
|
||||
// 回调指纹号
|
||||
eventBus.fire(ChickInAddStaffCardAndFingerprintBlockNumberEvent(state.cardNumber.value));
|
||||
@ -263,7 +263,6 @@ class AddICCardLogic extends BaseGetXController{
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
// TODO: implement onReady
|
||||
super.onReady();
|
||||
|
||||
_initReplySubscription();
|
||||
@ -271,7 +270,6 @@ class AddICCardLogic extends BaseGetXController{
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
// TODO: implement onInit
|
||||
super.onInit();
|
||||
|
||||
senderAddICCard();
|
||||
@ -279,7 +277,6 @@ class AddICCardLogic extends BaseGetXController{
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
// TODO: implement onClose
|
||||
_replySubscription.cancel();
|
||||
}
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@ import 'dart:async';
|
||||
|
||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/blue/io_type.dart';
|
||||
import 'package:star_lock/login/login/entity/LoginEntity.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
import '../../../../blue/blue_manage.dart';
|
||||
import '../../../../blue/io_protocol/io_addFace.dart';
|
||||
@ -14,7 +14,6 @@ import '../../../../blue/io_tool/io_tool.dart';
|
||||
import '../../../../blue/io_tool/manager_event_bus.dart';
|
||||
import '../../../../blue/sender_manage.dart';
|
||||
import '../../../../network/api_repository.dart';
|
||||
import '../../../../tools/dateTool.dart';
|
||||
import '../../../../tools/eventBusEventManage.dart';
|
||||
import '../../../../tools/storage.dart';
|
||||
import 'otherTypeKeyChangeDate_state.dart';
|
||||
@ -25,7 +24,7 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
// 监听设备返回的数据
|
||||
late StreamSubscription<Reply> _replySubscription;
|
||||
void _initReplySubscription() {
|
||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
|
||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
|
||||
// 添加卡片开始(重置锁里面所有卡)
|
||||
if((reply is SenderAddICCardWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) {
|
||||
_replyAddICCardBegin(reply);
|
||||
@ -45,7 +44,7 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
|
||||
// 添加人脸开始
|
||||
Future<void> _replyAddFaceBegin(Reply reply) async {
|
||||
int status = reply.data[2];
|
||||
final int status = reply.data[2];
|
||||
|
||||
switch (status) {
|
||||
case 0x00:
|
||||
@ -57,14 +56,14 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
break;
|
||||
case 0x06:
|
||||
//无权限
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var token = reply.data.sublist(5, 9);
|
||||
var saveStrList = changeIntListToStringList(token);
|
||||
final List<int> token = reply.data.sublist(5, 9);
|
||||
final List<String> saveStrList = changeIntListToStringList(token);
|
||||
Storage.setStringList(saveBlueToken, saveStrList);
|
||||
|
||||
IoSenderManage.senderAddFaceCommand(
|
||||
@ -76,11 +75,11 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
isAdmin:state.fingerprintItemData.value.faceRight!,
|
||||
isForce:state.fingerprintItemData.value.isCoerced, // 是否是胁迫
|
||||
isRound:0, // 是否是循环
|
||||
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), // 周循环
|
||||
weekRound:0, // 周循环
|
||||
startDate: state.beginTimeTimestamp.value~/1000,
|
||||
endDate: state.endTimeTimestamp.value~/1000,
|
||||
startTime:"0",
|
||||
endTime:"0",
|
||||
startTime:'0',
|
||||
endTime:'0',
|
||||
needAuthor:1,
|
||||
signKey:signKeyDataList,
|
||||
privateKey:getPrivateKeyList,
|
||||
@ -107,14 +106,14 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
});
|
||||
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var token = await Storage.getStringList(saveBlueToken);
|
||||
List<int> getTokenList = changeStringListToIntList(token!);
|
||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
||||
final List<int> getTokenList = changeStringListToIntList(token!);
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
IoSenderManage.senderAddFaceCommand(
|
||||
keyID:state.fingerprintItemData.value.faceId!.toString(),
|
||||
@ -125,11 +124,11 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
isAdmin:state.fingerprintItemData.value.faceRight!,
|
||||
isForce:state.fingerprintItemData.value.isCoerced, // 是否是胁迫
|
||||
isRound:0, // 是否是循环
|
||||
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), // 周循环
|
||||
weekRound:0, // 周循环
|
||||
startDate: state.beginTimeTimestamp.value~/1000,
|
||||
endDate: state.endTimeTimestamp.value~/1000,
|
||||
startTime:"0",
|
||||
endTime:"0",
|
||||
startTime:'0',
|
||||
endTime:'0',
|
||||
needAuthor:1,
|
||||
signKey:signKeyDataList,
|
||||
privateKey:getPrivateKeyList,
|
||||
@ -149,7 +148,7 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
|
||||
// 添加卡片开始(此处用作删除卡片)
|
||||
Future<void> _replyAddICCardBegin(Reply reply) async {
|
||||
int status = reply.data[2];
|
||||
final int status = reply.data[2];
|
||||
|
||||
switch(status){
|
||||
case 0x00:
|
||||
@ -160,14 +159,14 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
break;
|
||||
case 0x06:
|
||||
//无权限
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var token = reply.data.sublist(5, 9);
|
||||
var saveStrList = changeIntListToStringList(token);
|
||||
final List<int> token = reply.data.sublist(5, 9);
|
||||
final List<String> saveStrList = changeIntListToStringList(token);
|
||||
Storage.setStringList(saveBlueToken, saveStrList);
|
||||
|
||||
IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
|
||||
@ -179,11 +178,11 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
isAdmin:state.fingerprintItemData.value.cardRight!,
|
||||
isForce:state.fingerprintItemData.value.isCoerced, // 是否是胁迫
|
||||
isRound:0, // 是否是循环
|
||||
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), // 周循环
|
||||
weekRound:0, // 周循环
|
||||
startDate: state.beginTimeTimestamp.value~/1000,
|
||||
endDate: state.endTimeTimestamp.value~/1000,
|
||||
startTime:"0",
|
||||
endTime:"0",
|
||||
startTime:'0',
|
||||
endTime:'0',
|
||||
needAuthor:1,
|
||||
signKey:signKeyDataList,
|
||||
privateKey:getPrivateKeyList,
|
||||
@ -198,7 +197,7 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
|
||||
// 添加指纹开始
|
||||
Future<void> _replyAddFingerprintBegin(Reply reply) async {
|
||||
int status = reply.data[2];
|
||||
final int status = reply.data[2];
|
||||
switch(status){
|
||||
case 0x00:
|
||||
//成功
|
||||
@ -209,14 +208,14 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
break;
|
||||
case 0x06:
|
||||
//无权限
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var token = reply.data.sublist(5, 9);
|
||||
var saveStrList = changeIntListToStringList(token);
|
||||
final List<int> token = reply.data.sublist(5, 9);
|
||||
final List<String> saveStrList = changeIntListToStringList(token);
|
||||
Storage.setStringList(saveBlueToken, saveStrList);
|
||||
|
||||
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
|
||||
@ -228,11 +227,11 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
isAdmin:state.fingerprintItemData.value.fingerRight,
|
||||
isForce:state.fingerprintItemData.value.isCoerced, // 是否是胁迫
|
||||
isRound:0, // 是否是循环
|
||||
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), // 周循环
|
||||
weekRound:0, // 周循环
|
||||
startDate: state.beginTimeTimestamp.value~/1000,
|
||||
endDate: state.endTimeTimestamp.value~/1000,
|
||||
startTime:"0",
|
||||
endTime:"0",
|
||||
startTime:'0',
|
||||
endTime:'0',
|
||||
needAuthor:1,
|
||||
signKey:signKeyDataList,
|
||||
privateKey:getPrivateKeyList,
|
||||
@ -262,14 +261,14 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var token = await Storage.getStringList(saveBlueToken);
|
||||
List<int> getTokenList = changeStringListToIntList(token!);
|
||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
||||
final List<int> getTokenList = changeStringListToIntList(token!);
|
||||
|
||||
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
|
||||
keyID:state.fingerprintItemData.value.fingerprintId.toString(),
|
||||
@ -280,11 +279,11 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
isAdmin:state.fingerprintItemData.value.fingerRight,
|
||||
isForce:state.fingerprintItemData.value.isCoerced, // 是否是胁迫
|
||||
isRound:0, // 是否是循环
|
||||
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), // 周循环
|
||||
weekRound:0, // 周循环
|
||||
startDate: state.beginTimeTimestamp.value~/1000,
|
||||
endDate: state.endTimeTimestamp.value~/1000,
|
||||
startTime:"0",
|
||||
endTime:"0",
|
||||
startTime:'0',
|
||||
endTime:'0',
|
||||
needAuthor:1,
|
||||
signKey:signKeyDataList,
|
||||
privateKey:getPrivateKeyList,
|
||||
@ -316,14 +315,14 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||
if (deviceConnectionState == BluetoothConnectionState.connected){
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var token = await Storage.getStringList(saveBlueToken);
|
||||
List<int> getTokenList = changeStringListToIntList(token!);
|
||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
||||
final List<int> getTokenList = changeStringListToIntList(token!);
|
||||
|
||||
IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
|
||||
keyID:state.fingerprintItemData.value.cardId!.toString(),
|
||||
@ -334,11 +333,11 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
isAdmin:state.fingerprintItemData.value.cardRight!,
|
||||
isForce:state.fingerprintItemData.value.isCoerced, // 是否是胁迫
|
||||
isRound:0, // 是否是循环
|
||||
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.fingerprintItemData.value.weekDay!), // 周循环
|
||||
weekRound:0, // 周循环
|
||||
startDate: state.beginTimeTimestamp.value~/1000,
|
||||
endDate: state.endTimeTimestamp.value~/1000,
|
||||
startTime:"0",
|
||||
endTime:"0",
|
||||
startTime:'0',
|
||||
endTime:'0',
|
||||
needAuthor:1,
|
||||
signKey:signKeyDataList,
|
||||
privateKey:getPrivateKeyList,
|
||||
@ -356,38 +355,38 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
}
|
||||
|
||||
// 修改指纹信息
|
||||
void editFingerprintsData() async{
|
||||
var entity = await ApiRepository.to.editFingerprintsData(
|
||||
Future<void> editFingerprintsData() async{
|
||||
final LoginEntity entity = await ApiRepository.to.editFingerprintsData(
|
||||
fingerprintId: state.fingerprintItemData.value.fingerprintId.toString(),
|
||||
lockId: state.fingerprintItemData.value.lockId.toString(),
|
||||
weekDay: state.fingerprintItemData.value.weekDay!,
|
||||
weekDay: [],
|
||||
startDate: state.beginTimeTimestamp.value.toString(),
|
||||
endDate: state.endTimeTimestamp.value.toString(),
|
||||
isCoerced: state.fingerprintItemData.value.isCoerced.toString(),
|
||||
fingerprintName: state.fingerprintItemData.value.fingerprintName!,
|
||||
changeType: "1",
|
||||
changeType: '1',
|
||||
startTime: 0,
|
||||
endTime: 0,
|
||||
fingerprintType: state.fingerprintItemData.value.fingerprintType! == 4 ? 4 : 2,
|
||||
fingerprintType: 2,
|
||||
fingerRight: state.fingerprintItemData.value.fingerRight!,
|
||||
);
|
||||
if(entity.errorCode!.codeIsSuccessful){
|
||||
showToast("修改成功".tr, something: (){
|
||||
showToast('修改成功'.tr, something: (){
|
||||
eventBus.fire(OtherTypeRefreshListEvent());
|
||||
Get.back(result: {
|
||||
"beginTimeTimestamp":state.beginTimeTimestamp.value.toString(),
|
||||
"endTimeTimestamp":state.endTimeTimestamp.value.toString(),
|
||||
Get.back(result: <String, String>{
|
||||
'beginTimeTimestamp':state.beginTimeTimestamp.value.toString(),
|
||||
'endTimeTimestamp':state.endTimeTimestamp.value.toString(),
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 编辑iC卡
|
||||
void editICCardData() async{
|
||||
var entity = await ApiRepository.to.editICCardData(
|
||||
Future<void> editICCardData() async{
|
||||
final LoginEntity entity = await ApiRepository.to.editICCardData(
|
||||
cardId: state.fingerprintItemData.value.cardId.toString(),
|
||||
lockId: state.fingerprintItemData.value.lockId.toString(),
|
||||
weekDay: state.fingerprintItemData.value.weekDay!,
|
||||
weekDay: [],
|
||||
startDate: state.beginTimeTimestamp.value.toString(),
|
||||
endDate: state.endTimeTimestamp.value.toString(),
|
||||
isCoerced: state.fingerprintItemData.value.isCoerced.toString(),
|
||||
@ -399,10 +398,10 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
cardRight: state.fingerprintItemData.value.cardRight!,
|
||||
);
|
||||
if(entity.errorCode!.codeIsSuccessful){
|
||||
showToast("修改成功".tr, something: (){
|
||||
Get.back(result: {
|
||||
"beginTimeTimestamp":state.beginTimeTimestamp.value.toString(),
|
||||
"endTimeTimestamp":state.endTimeTimestamp.value.toString(),
|
||||
showToast('修改成功'.tr, something: (){
|
||||
Get.back(result: <String, String>{
|
||||
'beginTimeTimestamp':state.beginTimeTimestamp.value.toString(),
|
||||
'endTimeTimestamp':state.endTimeTimestamp.value.toString(),
|
||||
});
|
||||
eventBus.fire(OtherTypeRefreshListEvent());
|
||||
});
|
||||
@ -410,23 +409,8 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
}
|
||||
|
||||
// 修改人脸有效期
|
||||
void editFaceData() async {
|
||||
// var entity = await ApiRepository.to.updateFaceValidity(
|
||||
// lockId: state.faceItemData.value.lockId!,
|
||||
// faceId: state.faceItemData.value.faceId!,
|
||||
// startDate: int.parse(state.startDate.value),
|
||||
// endDate: int.parse(state.endDate.value),
|
||||
// startTime: int.parse(state.startTime.value),
|
||||
// endTime: int.parse(state.endTime.value),
|
||||
// faceType: state.keyType.value,
|
||||
// weekDay: state.weekDay.value,
|
||||
// faceName: state.changeNameController.text,
|
||||
// addType: "1",
|
||||
// isCoerced: state.isStressFace.value ? 2 : 1,
|
||||
// faceRight: state.isAdministrator.value ? 1 : 0,
|
||||
// );
|
||||
|
||||
var entity = await ApiRepository.to.updateFaceValidity(
|
||||
Future<void> editFaceData() async {
|
||||
final LoginEntity entity = await ApiRepository.to.updateFaceValidity(
|
||||
lockId: state.fingerprintItemData.value.lockId!,
|
||||
faceId: state.fingerprintItemData.value.faceId!,
|
||||
startDate: state.beginTimeTimestamp.value,
|
||||
@ -434,17 +418,17 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
startTime: 0,
|
||||
endTime: 0,
|
||||
faceType: 2,
|
||||
weekDay: state.fingerprintItemData.value.weekDay!,
|
||||
weekDay: [],
|
||||
faceName: state.fingerprintItemData.value.faceName!,
|
||||
addType: "1",
|
||||
addType: '1',
|
||||
isCoerced: state.fingerprintItemData.value.isCoerced!,
|
||||
faceRight: state.fingerprintItemData.value.faceRight!,
|
||||
);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
showToast("修改成功", something: () {
|
||||
Get.back(result: {
|
||||
"beginTimeTimestamp":state.beginTimeTimestamp.value.toString(),
|
||||
"endTimeTimestamp":state.endTimeTimestamp.value.toString(),
|
||||
showToast('修改成功', something: () {
|
||||
Get.back(result: <String, String>{
|
||||
'beginTimeTimestamp':state.beginTimeTimestamp.value.toString(),
|
||||
'endTimeTimestamp':state.endTimeTimestamp.value.toString(),
|
||||
});
|
||||
eventBus.fire(OtherTypeRefreshListEvent());
|
||||
});
|
||||
@ -453,7 +437,6 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
// TODO: implement onReady
|
||||
super.onReady();
|
||||
|
||||
_initReplySubscription();
|
||||
@ -461,14 +444,12 @@ class OtherTypeKeyChangeDateLogic extends BaseGetXController{
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
// TODO: implement onInit
|
||||
super.onInit();
|
||||
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
// TODO: implement onClose
|
||||
super.onClose();
|
||||
|
||||
_replySubscription.cancel();
|
||||
|
||||
@ -4,29 +4,19 @@ import 'package:star_lock/app_settings/app_settings.dart';
|
||||
import '../../../../tools/dateTool.dart';
|
||||
import '../../fingerprint/fingerprintList/fingerprintListData_entity.dart';
|
||||
|
||||
class OtherTypeKeyChangeDateState{
|
||||
final fingerprintItemData = FingerprintItemData().obs;
|
||||
|
||||
var beginTime = "".obs;// 开始时间
|
||||
var endTime = "".obs;// 结束时间
|
||||
var beginTimeTimestamp = 0.obs;// 开始时间
|
||||
var endTimeTimestamp = 0.obs;// 结束时间
|
||||
|
||||
var pushType = 0.obs;// 0卡 1指纹 2遥控 3人脸
|
||||
var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示
|
||||
var sureBtnState = 0.obs;// 0普通状态(可用) 1连接中(不可用)
|
||||
class OtherTypeKeyChangeDateState{// 0普通状态(可用) 1连接中(不可用)
|
||||
|
||||
OtherTypeKeyChangeDateState() {
|
||||
Map map = Get.arguments;
|
||||
if(map["pushType"] != null){
|
||||
pushType.value = map["pushType"];
|
||||
if(map['pushType'] != null){
|
||||
pushType.value = map['pushType'];
|
||||
}
|
||||
|
||||
if(map["fingerprintItemData"] != null){
|
||||
fingerprintItemData.value = map["fingerprintItemData"];
|
||||
if(map['fingerprintItemData'] != null){
|
||||
fingerprintItemData.value = map['fingerprintItemData'];
|
||||
}
|
||||
|
||||
AppLog.log("fingerprintItemData.value.startDate:${fingerprintItemData.value.startDate} fingerprintItemData.value.endDate:${fingerprintItemData.value.endDate}");
|
||||
AppLog.log('fingerprintItemData.value.startDate:${fingerprintItemData.value.startDate} fingerprintItemData.value.endDate:${fingerprintItemData.value.endDate}');
|
||||
if(fingerprintItemData.value.startDate == 0){
|
||||
beginTime.value = DateTool().dateToYMDHNString(DateTime.now().millisecondsSinceEpoch.toString());
|
||||
endTime.value = DateTool().dateToYMDHNString(DateTime.now().millisecondsSinceEpoch.toString());
|
||||
@ -39,6 +29,17 @@ class OtherTypeKeyChangeDateState{
|
||||
endTimeTimestamp.value = fingerprintItemData.value.endDate!;
|
||||
}
|
||||
|
||||
AppLog.log("beginTime.value:${beginTime.value} endTime.value:${endTime.value} beginTimeTimestamp.value:${beginTimeTimestamp.value} endTimeTimestamp.value:${endTimeTimestamp.value}");
|
||||
AppLog.log('beginTime.value:${beginTime.value} endTime.value:${endTime.value} beginTimeTimestamp.value:${beginTimeTimestamp.value} endTimeTimestamp.value:${endTimeTimestamp.value}');
|
||||
}
|
||||
|
||||
final Rx<FingerprintItemData> fingerprintItemData = FingerprintItemData().obs;
|
||||
|
||||
RxString beginTime = ''.obs;// 开始时间
|
||||
RxString endTime = ''.obs;// 结束时间
|
||||
RxInt beginTimeTimestamp = 0.obs;// 开始时间
|
||||
RxInt endTimeTimestamp = 0.obs;// 结束时间
|
||||
|
||||
RxInt pushType = 0.obs;// 0卡 1指纹 2遥控 3人脸
|
||||
RxBool ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示
|
||||
RxInt sureBtnState = 0.obs;
|
||||
}
|
||||
@ -1,3 +1,4 @@
|
||||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||
@ -22,10 +23,10 @@ class PasswordKeyDetailLogic extends BaseGetXController {
|
||||
// 监听设备返回的数据
|
||||
late StreamSubscription<Reply> _replySubscription;
|
||||
void _initReplySubscription() {
|
||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
|
||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
|
||||
// 设置自定义密码
|
||||
if (reply is SenderCustomPasswordsReply && state.ifCurrentScreen.value == true) {
|
||||
int status = reply.data[2];
|
||||
final int status = reply.data[2];
|
||||
switch (status) {
|
||||
case 0x00:
|
||||
//成功
|
||||
@ -40,14 +41,14 @@ class PasswordKeyDetailLogic extends BaseGetXController {
|
||||
break;
|
||||
case 0x06:
|
||||
//无权限
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var token = reply.data.sublist(5, 9);
|
||||
var saveStrList = changeIntListToStringList(token);
|
||||
final List<int> token = reply.data.sublist(5, 9);
|
||||
final List<String> saveStrList = changeIntListToStringList(token);
|
||||
Storage.setStringList(saveBlueToken, saveStrList);
|
||||
|
||||
IoSenderManage.senderCustomPasswordsCommand(
|
||||
@ -77,21 +78,21 @@ class PasswordKeyDetailLogic extends BaseGetXController {
|
||||
|
||||
//删除密码请求 deleteType:1-蓝牙 2-网关
|
||||
Future<void> deletePwdRequest() async {
|
||||
PasswordKeyEntity entity = await ApiRepository.to.deleteKeyboardPwd(
|
||||
final PasswordKeyEntity entity = await ApiRepository.to.deleteKeyboardPwd(
|
||||
lockId:state.itemData.value.lockId.toString(),
|
||||
keyboardPwdId:state.itemData.value.keyboardPwdId.toString(),
|
||||
deleteType:1);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
showToast("删除成功".tr, something: (){
|
||||
showToast('删除成功'.tr, something: (){
|
||||
// eventBus.fire(GetPasswordListRefreshUI());
|
||||
Get.back(result: "deletScuess");
|
||||
Get.back(result: 'deletScuess');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//更新密码请求
|
||||
Future<void> updatePwdRequest(int changType) async {
|
||||
PasswordKeyEntity entity = await ApiRepository.to.updatePasswordKey(
|
||||
final PasswordKeyEntity entity = await ApiRepository.to.updatePasswordKey(
|
||||
lockId: state.itemData.value.lockId!,
|
||||
keyboardPwdId: state.itemData.value.keyboardPwdId.toString(),
|
||||
keyboardPwdName: state.inputNameController.text,
|
||||
@ -106,7 +107,7 @@ class PasswordKeyDetailLogic extends BaseGetXController {
|
||||
pwdRight: state.isAdministrator.value == true ? 1 : 0);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
Get.back();
|
||||
showToast("修改成功".tr, something: (){
|
||||
showToast('修改成功'.tr, something: (){
|
||||
if(changType == 1){
|
||||
// 修改名字
|
||||
state.keyboardPwdName.value = state.inputNameController.text;
|
||||
@ -129,28 +130,14 @@ class PasswordKeyDetailLogic extends BaseGetXController {
|
||||
});
|
||||
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var token = await Storage.getStringList(saveBlueToken);
|
||||
List<int> getTokenList = changeStringListToIntList(token!);
|
||||
|
||||
// IoSenderManage.senderCustomPasswordsCommand(
|
||||
// keyID:state.keyId.value.toString(),
|
||||
// userID:await Storage.getUid(),
|
||||
// pwdNo: state.keyboardUserNo.value,
|
||||
// pwd: "000000",
|
||||
// useCountLimit: 0,
|
||||
// startTime:0x11223344,
|
||||
// endTime:0x11223344,
|
||||
// needAuthor: 1,
|
||||
// isBeforeAddUser: false,
|
||||
// signKey: signKeyDataList,
|
||||
// privateKey: getPrivateKeyList,
|
||||
// token: getTokenList);
|
||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
||||
final List<int> getTokenList = changeStringListToIntList(token!);
|
||||
|
||||
IoSenderManage.senderCustomPasswordsCommand(
|
||||
keyID:state.itemData.value.keyboardPwdId!.toString(),
|
||||
@ -180,12 +167,12 @@ class PasswordKeyDetailLogic extends BaseGetXController {
|
||||
|
||||
//使用期限详情显示
|
||||
String getUseDateStr() {
|
||||
int? getPwdType = state.itemData.value.keyboardPwdType;
|
||||
final int? getPwdType = state.itemData.value.keyboardPwdType;
|
||||
String useDateStr = '';
|
||||
DateTime startDateStr = DateTime.fromMillisecondsSinceEpoch(state.itemData.value.startDate!);
|
||||
DateTime endDateStr = DateTime.fromMillisecondsSinceEpoch(state.itemData.value.endDate!);
|
||||
String starHour = "${state.itemData.value.hoursStart}";
|
||||
String endHour = "${state.itemData.value.hoursEnd}";
|
||||
final DateTime startDateStr = DateTime.fromMillisecondsSinceEpoch(state.itemData.value.startDate!);
|
||||
final DateTime endDateStr = DateTime.fromMillisecondsSinceEpoch(state.itemData.value.endDate!);
|
||||
final String starHour = '${state.itemData.value.hoursStart}';
|
||||
final String endHour = '${state.itemData.value.hoursEnd}';
|
||||
|
||||
switch (getPwdType) {
|
||||
case 1:
|
||||
@ -267,14 +254,14 @@ class PasswordKeyDetailLogic extends BaseGetXController {
|
||||
}
|
||||
|
||||
String getShareContentStr() {
|
||||
int? getPwdType = state.itemData.value.keyboardPwdType;
|
||||
final int? getPwdType = state.itemData.value.keyboardPwdType;
|
||||
String useDateStr = '';
|
||||
DateTime startDateStr =
|
||||
final DateTime startDateStr =
|
||||
DateTime.fromMillisecondsSinceEpoch(state.itemData.value.startDate!);
|
||||
DateTime endDateStr =
|
||||
final DateTime endDateStr =
|
||||
DateTime.fromMillisecondsSinceEpoch(state.itemData.value.endDate!);
|
||||
int starHour = startDateStr.hour;
|
||||
int endHour = endDateStr.hour;
|
||||
final int starHour = startDateStr.hour;
|
||||
final int endHour = endDateStr.hour;
|
||||
|
||||
switch (getPwdType) {
|
||||
case 1:
|
||||
@ -335,30 +322,21 @@ class PasswordKeyDetailLogic extends BaseGetXController {
|
||||
//周日循环 14 每周日开始和结束时间指定时间段内有效
|
||||
useDateStr = '类型:循环\n周日 $starHour:00-$endHour:00';
|
||||
break;
|
||||
|
||||
default:
|
||||
}
|
||||
return "您好,您的密码是:${state.itemData.value.keyboardPwd}\n$useDateStr\n密码名字:${state.itemData.value.keyboardPwdName}";
|
||||
return '您好,您的密码是:${state.itemData.value.keyboardPwd}\n$useDateStr\n密码名字:${state.itemData.value.keyboardPwdName}';
|
||||
}
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
// TODO: implement onReady
|
||||
super.onReady();
|
||||
|
||||
_initReplySubscription();
|
||||
// getPasswordTypeUpdateIndexAction();
|
||||
}
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
// TODO: implement onInit
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
// TODO: implement onClose
|
||||
_replySubscription.cancel();
|
||||
}
|
||||
|
||||
|
||||
@ -1,28 +1,12 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart';
|
||||
|
||||
class PasswordKeyDetailState {
|
||||
final itemData = PasswordKeyListItem().obs;
|
||||
final TextEditingController inputPwdController = TextEditingController();
|
||||
final TextEditingController inputNameController = TextEditingController();
|
||||
final changeType = '1'.obs; //1-通过APP走蓝牙修改,不传默认1,必需先通过APP SDK蓝牙修改后调用该接口 2-通过网关或WiFi锁修改,如果是WiFi锁或有连接网关,则可以传2,直接调用该接口修改生效
|
||||
final keyboardPwd = ''.obs;//
|
||||
final keyboardUserNo = 0.obs;//
|
||||
final keyboardPwdName = ''.obs;
|
||||
final keyboardPwdType = ''.obs;// 1单次 2永久 3限时 4删除 5周末循环 6周日循环 7工作日循环 8周一循环 9周二循环 10周三循环 11周四循环 12周五循环 13周六循环 14周天循环
|
||||
final isCirculation = false.obs;// 是否是循环
|
||||
var keyId = 0.obs;// 卡id
|
||||
|
||||
var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示
|
||||
var sureBtnState = 0.obs;// 0普通状态(可用) 1连接中(不可用)
|
||||
final passwordKeyNumber = "".obs;// 密码号
|
||||
var isDeletPasswordKey = true.obs;// 是否删除密码
|
||||
var isAdministrator = false.obs;// 是否是管理员
|
||||
|
||||
PasswordKeyDetailState() {
|
||||
Map map = Get.arguments;
|
||||
itemData.value = map["itemData"];
|
||||
final Map map = Get.arguments;
|
||||
itemData.value = map['itemData'];
|
||||
// isCoerced.value = itemData.value.isCoerced!.toString();
|
||||
keyboardPwd.value = itemData.value.keyboardPwd!;
|
||||
keyboardPwdName.value = itemData.value.keyboardPwdName!;
|
||||
@ -30,10 +14,27 @@ class PasswordKeyDetailState {
|
||||
inputPwdController.text = itemData.value.keyboardPwd!;
|
||||
keyId.value = itemData.value.keyboardPwdId!;
|
||||
keyboardUserNo.value = itemData.value.pwdUserNo!;
|
||||
isAdministrator.value = itemData.value.pwdRight! == 1 ? true : false;
|
||||
isAdministrator.value = itemData.value.pwdRight! == 1;
|
||||
// startDate.value = itemData.value.startDate!;
|
||||
// endDate.value = itemData.value.endDate!;
|
||||
// hoursStart.value = itemData.value.hoursStart!;
|
||||
// hoursEnd.value = itemData.value.hoursEnd!;
|
||||
}
|
||||
|
||||
final Rx<PasswordKeyListItem> itemData = PasswordKeyListItem().obs;
|
||||
final TextEditingController inputPwdController = TextEditingController();
|
||||
final TextEditingController inputNameController = TextEditingController();
|
||||
final RxString changeType = '1'.obs; //1-通过APP走蓝牙修改,不传默认1,必需先通过APP SDK蓝牙修改后调用该接口 2-通过网关或WiFi锁修改,如果是WiFi锁或有连接网关,则可以传2,直接调用该接口修改生效
|
||||
final RxString keyboardPwd = ''.obs;//
|
||||
final RxInt keyboardUserNo = 0.obs;//
|
||||
final RxString keyboardPwdName = ''.obs;
|
||||
final RxString keyboardPwdType = ''.obs;// 1单次 2永久 3限时 4删除 5周末循环 6周日循环 7工作日循环 8周一循环 9周二循环 10周三循环 11周四循环 12周五循环 13周六循环 14周天循环
|
||||
final RxBool isCirculation = false.obs;// 是否是循环
|
||||
RxInt keyId = 0.obs;// 卡id
|
||||
|
||||
RxBool ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示
|
||||
RxInt sureBtnState = 0.obs;// 0普通状态(可用) 1连接中(不可用)
|
||||
final RxString passwordKeyNumber = ''.obs;// 密码号
|
||||
RxBool isDeletPasswordKey = true.obs;// 是否删除密码
|
||||
RxBool isAdministrator = false.obs;// 是否是管理员
|
||||
}
|
||||
|
||||
@ -24,10 +24,10 @@ class PasswordKeyDetailChangeDateLogic extends BaseGetXController {
|
||||
// 监听设备返回的数据
|
||||
late StreamSubscription<Reply> _replySubscription;
|
||||
void _initReplySubscription() {
|
||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
|
||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
|
||||
// 设置自定义密码
|
||||
if ((reply is SenderCustomPasswordsReply) && (state.ifCurrentScreen.value == true)) {
|
||||
int status = reply.data[2];
|
||||
final int status = reply.data[2];
|
||||
switch (status) {
|
||||
case 0x00:
|
||||
//成功
|
||||
@ -38,14 +38,14 @@ class PasswordKeyDetailChangeDateLogic extends BaseGetXController {
|
||||
break;
|
||||
case 0x06:
|
||||
//无权限
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var token = reply.data.sublist(5, 9);
|
||||
var saveStrList = changeIntListToStringList(token);
|
||||
final List<int> token = reply.data.sublist(5, 9);
|
||||
final List<String> saveStrList = changeIntListToStringList(token);
|
||||
Storage.setStringList(saveBlueToken, saveStrList);
|
||||
|
||||
IoSenderManage.senderCustomPasswordsCommand(
|
||||
@ -75,20 +75,20 @@ class PasswordKeyDetailChangeDateLogic extends BaseGetXController {
|
||||
|
||||
//更新密码请求
|
||||
Future<void> updatePwdRequest() async {
|
||||
var beginTimeTimestamp = DateTool().dateToTimestamp(state.selectEffectiveDate.value, 1);
|
||||
var endTimeTimestamp = DateTool().dateToTimestamp(state.selectFailureDate.value, 1);
|
||||
final int beginTimeTimestamp = DateTool().dateToTimestamp(state.selectEffectiveDate.value, 1);
|
||||
final int endTimeTimestamp = DateTool().dateToTimestamp(state.selectFailureDate.value, 1);
|
||||
if (beginTimeTimestamp > endTimeTimestamp ||
|
||||
beginTimeTimestamp == endTimeTimestamp) {
|
||||
showToast("失效时间需大于生效时间");
|
||||
showToast('失效时间需大于生效时间');
|
||||
return;
|
||||
}
|
||||
|
||||
if (endTimeTimestamp < DateTime.now().millisecondsSinceEpoch) {
|
||||
showToast("生效时间需大于当前时间");
|
||||
showToast('生效时间需大于当前时间');
|
||||
return;
|
||||
}
|
||||
|
||||
PasswordKeyEntity entity = await ApiRepository.to.updatePasswordKey(
|
||||
final PasswordKeyEntity entity = await ApiRepository.to.updatePasswordKey(
|
||||
lockId: state.itemData.value.lockId!,
|
||||
keyboardPwdId: state.itemData.value.keyboardPwdId.toString(),
|
||||
keyboardPwdName: state.itemData.value.keyboardPwdName!,
|
||||
@ -98,16 +98,16 @@ class PasswordKeyDetailChangeDateLogic extends BaseGetXController {
|
||||
changeType: '1',
|
||||
hoursStart: state.itemData.value.hoursStart!,
|
||||
hoursEnd: state.itemData.value.hoursEnd!,
|
||||
isCoerced: "1",
|
||||
isCoerced: '1',
|
||||
keyboardPwdType: 3,
|
||||
pwdRight: state.itemData.value.pwdRight!);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
showToast("修改成功", something: (){
|
||||
showToast('修改成功', something: (){
|
||||
eventBus.fire(GetPasswordListRefreshUI());
|
||||
AppLog.log("beginTimeTimestamp:$beginTimeTimestamp endTimeTimestamp:$endTimeTimestamp");
|
||||
Get.back(result: {
|
||||
"beginTimeTimestamp": beginTimeTimestamp.toString(),
|
||||
"endTimeTimestamp": endTimeTimestamp.toString(),
|
||||
AppLog.log('beginTimeTimestamp:$beginTimeTimestamp endTimeTimestamp:$endTimeTimestamp');
|
||||
Get.back(result: <String, String>{
|
||||
'beginTimeTimestamp': beginTimeTimestamp.toString(),
|
||||
'endTimeTimestamp': endTimeTimestamp.toString(),
|
||||
});
|
||||
});
|
||||
}
|
||||
@ -123,14 +123,14 @@ class PasswordKeyDetailChangeDateLogic extends BaseGetXController {
|
||||
});
|
||||
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var token = await Storage.getStringList(saveBlueToken);
|
||||
List<int> getTokenList = changeStringListToIntList(token!);
|
||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
||||
final List<int> getTokenList = changeStringListToIntList(token!);
|
||||
|
||||
IoSenderManage.senderCustomPasswordsCommand(
|
||||
keyID:state.itemData.value.keyboardPwdId!.toString(),
|
||||
@ -138,7 +138,7 @@ class PasswordKeyDetailChangeDateLogic extends BaseGetXController {
|
||||
pwdNo: state.itemData.value.pwdUserNo!,
|
||||
pwd: state.itemData.value.keyboardPwd!.toString(),
|
||||
operate: 1,
|
||||
isAdmin: state.itemData.value.pwdUserNo!,
|
||||
isAdmin: state.itemData.value.pwdRight!,
|
||||
useCountLimit: 0xffff,
|
||||
startTime:DateTool().dateToTimestamp(state.selectEffectiveDate.value, 1) ~/ 1000,
|
||||
endTime:DateTool().dateToTimestamp(state.selectFailureDate.value, 1) ~/ 1000,
|
||||
@ -160,22 +160,14 @@ class PasswordKeyDetailChangeDateLogic extends BaseGetXController {
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
// TODO: implement onReady
|
||||
super.onReady();
|
||||
|
||||
_initReplySubscription();
|
||||
// getPasswordTypeUpdateIndexAction();
|
||||
}
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
// TODO: implement onInit
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
// TODO: implement onClose
|
||||
_replySubscription.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,23 +1,22 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart';
|
||||
import 'package:star_lock/tools/dateTool.dart';
|
||||
|
||||
class PasswordKeyDetailChangeDateState {
|
||||
final itemData = PasswordKeyListItem().obs;
|
||||
|
||||
final selectEffectiveDate = ''.obs; //生效时间
|
||||
final selectFailureDate = ''.obs; //失效时间
|
||||
|
||||
var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示
|
||||
var sureBtnState = 0.obs;// 0普通状态(可用) 1连接中(不可用)
|
||||
|
||||
PasswordKeyDetailChangeDateState() {
|
||||
Map map = Get.arguments;
|
||||
if ((map["itemData"] != null)) {
|
||||
itemData.value = map["itemData"];
|
||||
final Map map = Get.arguments;
|
||||
if (map['itemData'] != null) {
|
||||
itemData.value = map['itemData'];
|
||||
selectEffectiveDate.value = itemData.value.startDate == 0 ? DateTool().getNowDateWithType(2) : DateTool().dateToYMDHNString(itemData.value.startDate.toString());
|
||||
selectFailureDate.value = itemData.value.endDate == 0 ? DateTool().getNowDateWithType(2) : DateTool().dateToYMDHNString(itemData.value.endDate.toString());
|
||||
}
|
||||
}
|
||||
final Rx<PasswordKeyListItem> itemData = PasswordKeyListItem().obs;
|
||||
|
||||
final RxString selectEffectiveDate = ''.obs; //生效时间
|
||||
final RxString selectFailureDate = ''.obs; //失效时间
|
||||
|
||||
RxBool ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示
|
||||
RxInt sureBtnState = 0.obs; // 0普通状态(可用) 1连接中(不可用)
|
||||
}
|
||||
|
||||
@ -1,18 +1,17 @@
|
||||
// ignore_for_file: slash_for_doc_comments
|
||||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/app_settings/app_settings.dart';
|
||||
import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKeyEntity.dart';
|
||||
import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_state.dart';
|
||||
import 'package:star_lock/network/api_repository.dart';
|
||||
import 'package:star_lock/tools/eventBusEventManage.dart';
|
||||
|
||||
import '../../../../blue/blue_manage.dart';
|
||||
import '../../../../blue/io_modelVendor.dart';
|
||||
import '../../../../blue/io_reply.dart';
|
||||
import '../../../../blue/io_protocol/io_senderCustomPasswords.dart';
|
||||
import '../../../../blue/io_reply.dart';
|
||||
import '../../../../blue/io_tool/io_tool.dart';
|
||||
import '../../../../blue/io_tool/manager_event_bus.dart';
|
||||
import '../../../../blue/sender_manage.dart';
|
||||
@ -25,18 +24,16 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
final PasswordKeyPerpetualState state = PasswordKeyPerpetualState();
|
||||
|
||||
/// 收到点击密码类型更新
|
||||
/**
|
||||
* getKeyType 单次1 永久2 限期3 删除4 周未循环5 每日循环6 工作日循环7 周一循环8 周二循环9 周三循环10 周四循环11 周五循环12 周六循环13 周天循环14
|
||||
*/
|
||||
/// getKeyType 单次1 永久2 限期3 删除4 周未循环5 每日循环6 工作日循环7 周一循环8 周二循环9 周三循环10 周四循环11 周五循环12 周六循环13 周天循环14
|
||||
//获取密码请求
|
||||
Future<void> getKeyboardPwdRequest() async {
|
||||
var startDate = DateTool().dateToTimestamp(state.beginTime.value, 1);
|
||||
var endDate = DateTool().dateToTimestamp(state.endTime.value, 1);
|
||||
String lockId = state.keyInfo.value.lockId.toString();
|
||||
String getKeyType = "0";
|
||||
final int startDate = DateTool().dateToTimestamp(state.beginTime.value, 1);
|
||||
final int endDate = DateTool().dateToTimestamp(state.endTime.value, 1);
|
||||
final String lockId = state.keyInfo.value.lockId.toString();
|
||||
String getKeyType = '0';
|
||||
|
||||
if (state.nameController.text.isEmpty) {
|
||||
showToast("请输入姓名".tr);
|
||||
showToast('请输入姓名'.tr);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -48,7 +45,7 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
// 鑫鸿佳不需要生效时间
|
||||
if(CommonDataManage().currentKeyInfo.vendor == IoModelVendor.vendor_XHJ && (CommonDataManage().currentKeyInfo.model == IoModelVendor.model_XHJ_SYD || CommonDataManage().currentKeyInfo.model == IoModelVendor.model_XHJ_JL)){
|
||||
if (endDate <= DateTool().dateToTimestamp(DateTool().getNowDateWithType(3), 1)) {
|
||||
showToast("失效时间要大于当前时间".tr);
|
||||
showToast('失效时间要大于当前时间'.tr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -57,12 +54,12 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
if(CommonDataManage().currentKeyInfo.vendor == IoModelVendor.vendor_XL && (CommonDataManage().currentKeyInfo.model == IoModelVendor.model_XL_BLE || CommonDataManage().currentKeyInfo.model == IoModelVendor.model_XL_WIFI)){
|
||||
//限时
|
||||
if (startDate < DateTool().dateToTimestamp(DateTool().getNowDateWithType(3), 1)) {
|
||||
showToast("生效时间不能小于当前时间".tr);
|
||||
showToast('生效时间不能小于当前时间'.tr);
|
||||
return;
|
||||
}
|
||||
|
||||
if (startDate >= endDate) {
|
||||
showToast("失效时间要大于生效时间".tr);
|
||||
showToast('失效时间要大于生效时间'.tr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -77,13 +74,13 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
// 芯连需要结束时间
|
||||
if(CommonDataManage().currentKeyInfo.vendor == IoModelVendor.vendor_XL && (CommonDataManage().currentKeyInfo.model == IoModelVendor.model_XL_BLE || CommonDataManage().currentKeyInfo.model == IoModelVendor.model_XL_WIFI)){
|
||||
if (endDate < DateTool().dateToTimestamp(DateTool().getNowDateWithType(3), 1)) {
|
||||
showToast("结束时间不能小于当前时间".tr);
|
||||
showToast('结束时间不能小于当前时间'.tr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (state.loopStartHours.value >= state.loopEndHours.value) {
|
||||
showToast("失效时间要大于生效时间".tr);
|
||||
showToast('失效时间要大于生效时间'.tr);
|
||||
return;
|
||||
}
|
||||
if (state.loopModeStr.value == '周末') {
|
||||
@ -111,7 +108,7 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
//清空码
|
||||
getKeyType = '4';
|
||||
}
|
||||
var entity = await ApiRepository.to.getPasswordKey(
|
||||
final PasswordKeyEntity entity = await ApiRepository.to.getPasswordKey(
|
||||
endDate: endDate.toString(),
|
||||
keyboardPwdName: state.nameController.text,
|
||||
keyboardPwdType: getKeyType,
|
||||
@ -124,8 +121,8 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
state.isSendSuccess.value = true;
|
||||
state.sendSucceedType.value = state.widgetType.value;
|
||||
state.pwdNameStr = state.nameController.text;
|
||||
state.nameController.text = "";
|
||||
state.pwdController.text = "";
|
||||
state.nameController.text = '';
|
||||
state.pwdController.text = '';
|
||||
if (entity.data != null) {
|
||||
state.getPwdStr.value = entity.data!.keyboardPwd!;
|
||||
}
|
||||
@ -140,7 +137,7 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
Future<void> addKeyboardPwdRequest() async {
|
||||
String getEffectiveDateTime = '0';
|
||||
String getFailureDateTime = '0';
|
||||
String lockId = state.keyInfo.value.lockId.toString();
|
||||
final String lockId = state.keyInfo.value.lockId.toString();
|
||||
String getKeyType = '2';
|
||||
//是否为永久
|
||||
if (state.isPermanent.value == false) {
|
||||
@ -148,7 +145,7 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
getEffectiveDateTime = DateTool().dateToTimestamp(state.customBeginTime.value, 1).toString();
|
||||
getFailureDateTime = DateTool().dateToTimestamp(state.customEndTime.value, 1).toString();
|
||||
}
|
||||
var entity = await ApiRepository.to.addPasswordKey(
|
||||
final PasswordKeyEntity entity = await ApiRepository.to.addPasswordKey(
|
||||
lockId:lockId,
|
||||
keyboardPwdName:state.nameController.text,
|
||||
keyboardPwd:state.pwdController.text,
|
||||
@ -156,13 +153,14 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
startDate:getEffectiveDateTime,
|
||||
endDate:getFailureDateTime,
|
||||
addType:'1',
|
||||
pwdRight:state.isAdministrator.value == true ? 1 : 0,);
|
||||
pwdRight:state.isAdministrator.value == true ? 1 : 0
|
||||
);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
state.isSendSuccess.value = true;
|
||||
state.sendSucceedType.value = state.widgetType.value;
|
||||
state.pwdNameStr = state.nameController.text;
|
||||
state.nameController.text = "";
|
||||
state.pwdController.text = "";
|
||||
state.nameController.text = '';
|
||||
state.pwdController.text = '';
|
||||
if (entity.data != null) {
|
||||
state.getPwdStr.value = entity.data!.keyboardPwd!;
|
||||
updatePWDNumberRequest(entity.data!.keyboardPwdId.toString());
|
||||
@ -173,7 +171,7 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
}
|
||||
|
||||
Future<void> updatePWDNumberRequest(String pwdNumberId) async {
|
||||
var entity = await ApiRepository.to.updatePWDNumber(
|
||||
final PasswordKeyEntity entity = await ApiRepository.to.updatePWDNumber(
|
||||
lockId: state.keyInfo.value.lockId.toString(),
|
||||
keyboardPwdId: pwdNumberId,
|
||||
pwdUserNo: state.pwdNumber.value.toString());
|
||||
@ -184,14 +182,14 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
|
||||
Future<void> checkKeyboardpwdNameRequest() async {
|
||||
if (state.nameController.text.isEmpty) {
|
||||
showToast("请输入姓名".tr);
|
||||
showToast('请输入姓名'.tr);
|
||||
return;
|
||||
}
|
||||
if (state.pwdController.text.isEmpty) {
|
||||
showToast("请输入密码".tr);
|
||||
showToast('请输入密码'.tr);
|
||||
return;
|
||||
}
|
||||
var entity = await ApiRepository.to.checkKeyboardpwdName(
|
||||
final PasswordKeyEntity entity = await ApiRepository.to.checkKeyboardpwdName(
|
||||
lockId:state.keyInfo.value.lockId.toString(),
|
||||
keyboardPwdName:state.nameController.text,
|
||||
keyboardPwd:state.pwdController.text,);
|
||||
@ -206,10 +204,10 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
// 监听设备返回的数据
|
||||
late StreamSubscription<Reply> _replySubscription;
|
||||
void _initReplySubscription() {
|
||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
|
||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((Reply reply) async {
|
||||
// 设置自定义密码
|
||||
if ((reply is SenderCustomPasswordsReply) && (state.ifCurrentScreen.value == true)) {
|
||||
int status = reply.data[2];
|
||||
final int status = reply.data[2];
|
||||
switch (status) {
|
||||
case 0x00:
|
||||
//成功
|
||||
@ -227,23 +225,23 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
break;
|
||||
case 0xff:
|
||||
// 注册人脸失败
|
||||
showToast("退出添加".tr);
|
||||
showToast('退出添加'.tr);
|
||||
break;
|
||||
case 0xFE:
|
||||
// 管理员已满
|
||||
showToast("管理员已满".tr);
|
||||
showToast('管理员已满'.tr);
|
||||
break;
|
||||
case 0xFD:
|
||||
// 用户已满
|
||||
showToast("用户已满".tr);
|
||||
showToast('用户已满'.tr);
|
||||
break;
|
||||
case 0xFC:
|
||||
// 指纹已满
|
||||
showToast("锁上面添加密码已满".tr);
|
||||
showToast('锁上面添加密码已满'.tr);
|
||||
break;
|
||||
case 0xFB:
|
||||
// 指纹已存在
|
||||
showToast("密码已存在".tr);
|
||||
showToast('密码已存在'.tr);
|
||||
break;
|
||||
default:
|
||||
// 添加密码
|
||||
@ -252,26 +250,26 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
break;
|
||||
case 0x06:
|
||||
//无权限
|
||||
var token = reply.data.sublist(5, 9);
|
||||
final List<int> token = reply.data.sublist(5, 9);
|
||||
// AppLog.log("token:$token");
|
||||
var saveStrList = changeIntListToStringList(token);
|
||||
final List<String> saveStrList = changeIntListToStringList(token);
|
||||
Storage.setStringList(saveBlueToken, saveStrList);
|
||||
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var startDate = DateTool().dateToTimestamp(state.customBeginTime.value, 1);
|
||||
var endDate = DateTool().dateToTimestamp(state.customEndTime.value, 1);
|
||||
int startDate = DateTool().dateToTimestamp(state.customBeginTime.value, 1);
|
||||
int endDate = DateTool().dateToTimestamp(state.customEndTime.value, 1);
|
||||
//非永久 须有时限
|
||||
if (state.isPermanent.value == true) {
|
||||
startDate = 0;
|
||||
endDate = 0;
|
||||
}
|
||||
IoSenderManage.senderCustomPasswordsCommand(
|
||||
keyID: "1",
|
||||
keyID: '1',
|
||||
userID: await Storage.getUid(),
|
||||
pwdNo: 0,
|
||||
pwd:state.pwdController.text,
|
||||
@ -309,17 +307,17 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
|
||||
// 设置自定义密码
|
||||
Future<void> senderCustomPasswords() async {
|
||||
var startDate = DateTool().dateToTimestamp(state.customBeginTime.value, 1);
|
||||
var endDate = DateTool().dateToTimestamp(state.customEndTime.value, 1);
|
||||
int startDate = DateTool().dateToTimestamp(state.customBeginTime.value, 1);
|
||||
int endDate = DateTool().dateToTimestamp(state.customEndTime.value, 1);
|
||||
//非永久 须有时限
|
||||
if (state.isPermanent.value == false) {
|
||||
if (startDate < DateTool().dateToTimestamp(DateTool().getNowDateWithType(2), 1)) {
|
||||
showToast("生效时间要大于当前时间");
|
||||
showToast('生效时间要大于当前时间');
|
||||
return;
|
||||
}
|
||||
|
||||
if (endDate <= startDate) {
|
||||
showToast("失效时间需大于生效时间");
|
||||
showToast('失效时间需大于生效时间');
|
||||
return;
|
||||
}
|
||||
}else{
|
||||
@ -328,7 +326,7 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
}
|
||||
|
||||
if (state.pwdController.text.length < 6 || state.pwdController.text.length > 9) {
|
||||
showToast("请输入6-9位数字密码");
|
||||
showToast('请输入6-9位数字密码');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -344,17 +342,17 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
});
|
||||
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
|
||||
if (deviceConnectionState == BluetoothConnectionState.connected) {
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var token = await Storage.getStringList(saveBlueToken);
|
||||
List<int> getTokenList = changeStringListToIntList(token!);
|
||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
||||
final List<int> getTokenList = changeStringListToIntList(token!);
|
||||
|
||||
IoSenderManage.senderCustomPasswordsCommand(
|
||||
keyID: "1",
|
||||
keyID: '1',
|
||||
userID: await Storage.getUid(),
|
||||
pwdNo: 0,
|
||||
pwd:state.pwdController.text,
|
||||
@ -380,7 +378,7 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
}
|
||||
|
||||
String getShareContentStr() {
|
||||
int? getPwdType = state.widgetType.value;
|
||||
final int getPwdType = state.widgetType.value;
|
||||
String useDateStr = '';
|
||||
// DateTime startDateStr = DateTime.fromMillisecondsSinceEpoch(state.itemData.value.startDate!);
|
||||
// DateTime endDateStr = DateTime.fromMillisecondsSinceEpoch(state.itemData.value.endDate!);
|
||||
@ -421,11 +419,11 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
|
||||
|
||||
default:
|
||||
}
|
||||
return "您好,您的密码是:${state.getPwdStr.value}\n$useDateStr\n密码名字:${state.pwdNameStr}";
|
||||
return '您好,您的密码是:${state.getPwdStr.value}\n$useDateStr\n密码名字:${state.pwdNameStr}';
|
||||
}
|
||||
|
||||
String addSpaces(String input) {
|
||||
return input.replaceAllMapped(RegExp(r'.{4}'), (match) {
|
||||
return input.replaceAllMapped(RegExp(r'.{4}'), (Match match) {
|
||||
return '${match.group(0)} ';
|
||||
}).trim();
|
||||
}
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
@ -7,6 +8,7 @@ import 'package:get/get.dart';
|
||||
import 'package:star_lock/app_settings/app_colors.dart';
|
||||
import 'package:star_lock/app_settings/app_settings.dart';
|
||||
import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart';
|
||||
import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_state.dart';
|
||||
import 'package:star_lock/tools/commonDataManage.dart';
|
||||
import 'package:star_lock/tools/pickers/pickers.dart';
|
||||
import 'package:star_lock/tools/pickers/style/default_style.dart';
|
||||
@ -25,7 +27,6 @@ import '../../../../tools/pickers/time_picker/model/pduration.dart';
|
||||
import '../../../../tools/submitBtn.dart';
|
||||
import '../../../../tools/titleAppBar.dart';
|
||||
import '../../../../translations/trans_lib.dart';
|
||||
import '../../../lockMian/entity/lockListInfo_entity.dart';
|
||||
|
||||
class PasswordKeyPerpetualPage extends StatefulWidget {
|
||||
const PasswordKeyPerpetualPage({Key? key}) : super(key: key);
|
||||
@ -37,12 +38,11 @@ class PasswordKeyPerpetualPage extends StatefulWidget {
|
||||
|
||||
class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
with RouteAware, SingleTickerProviderStateMixin {
|
||||
final logic = Get.put(PasswordKeyPerpetualLogic());
|
||||
final state = Get.find<PasswordKeyPerpetualLogic>().state;
|
||||
final PasswordKeyPerpetualLogic logic = Get.put(PasswordKeyPerpetualLogic());
|
||||
final PasswordKeyPerpetualState state = Get.find<PasswordKeyPerpetualLogic>().state;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
// TODO: implement initState
|
||||
super.initState();
|
||||
|
||||
state.tabController =
|
||||
@ -67,7 +67,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
haveBack: true,
|
||||
backgroundColor: AppColors.mainColor),
|
||||
body: Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
_tabBar(),
|
||||
_pageWidget(),
|
||||
],
|
||||
@ -86,14 +86,14 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
// 永久
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
perpetualKeyWidget(
|
||||
false,
|
||||
TranslationLoader.lanKeys!.name!.tr,
|
||||
TranslationLoader.lanKeys!.pleaseNameYourPassword!.tr,
|
||||
state.nameController),
|
||||
keyBottomWidget(
|
||||
"密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。密码激活后,有效期内不限次数使用。"
|
||||
'密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。密码激活后,有效期内不限次数使用。'
|
||||
.tr)
|
||||
],
|
||||
),
|
||||
@ -104,7 +104,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
// 限时
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
keyTimeLimitWidget(),
|
||||
perpetualKeyWidget(
|
||||
false,
|
||||
@ -112,7 +112,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
TranslationLoader.lanKeys!.pleaseNameYourPassword!.tr,
|
||||
state.nameController),
|
||||
keyBottomWidget(
|
||||
"密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。密码激活后,有效期内不限次数使用。"
|
||||
'密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。密码激活后,有效期内不限次数使用。'
|
||||
.tr)
|
||||
],
|
||||
),
|
||||
@ -123,7 +123,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
// 单次
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
perpetualKeyWidget(
|
||||
false,
|
||||
TranslationLoader.lanKeys!.name!.tr,
|
||||
@ -140,11 +140,9 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
// 自定义
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
keyIfPerpetualWidget(),
|
||||
state.isPermanent.value == false
|
||||
? keyCustomTimeLimitWidget()
|
||||
: Container(),
|
||||
if (state.isPermanent.value == false) keyCustomTimeLimitWidget() else Container(),
|
||||
perpetualKeyWidget(
|
||||
false,
|
||||
TranslationLoader.lanKeys!.name!.tr,
|
||||
@ -153,7 +151,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
perpetualKeyWidget(
|
||||
false,
|
||||
TranslationLoader.lanKeys!.password!.tr,
|
||||
"请输入6-9位数字",
|
||||
'请输入6-9位数字',
|
||||
state.pwdController),
|
||||
keyIfAdministratorWidget(),
|
||||
keyBottomWidget(
|
||||
@ -167,7 +165,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
// 循环
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
keyCirculationWidget(),
|
||||
perpetualKeyWidget(
|
||||
true,
|
||||
@ -175,7 +173,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
TranslationLoader.lanKeys!.pleaseNameYourPassword!.tr,
|
||||
state.nameController),
|
||||
keyBottomWidget(
|
||||
"密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。密码激活后,有效期内不限次数使用。"
|
||||
'密码生成后,请在当日23:59前使用一次进行激活,否则过0点后未激活则失效。密码激活后,有效期内不限次数使用。'
|
||||
.tr)
|
||||
],
|
||||
),
|
||||
@ -186,14 +184,14 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
// 清空
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
perpetualKeyWidget(
|
||||
false,
|
||||
TranslationLoader.lanKeys!.name!.tr,
|
||||
TranslationLoader.lanKeys!.pleaseNameYourPassword!.tr,
|
||||
state.nameController),
|
||||
keyBottomWidget(
|
||||
"清空密码底部提示".tr)
|
||||
'清空密码底部提示'.tr)
|
||||
],
|
||||
),
|
||||
);
|
||||
@ -208,11 +206,11 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
Widget perpetualKeyWidget(bool isTopHeight, String titleStr,
|
||||
String rightTitle, TextEditingController controller) {
|
||||
return Column(
|
||||
children: [
|
||||
isTopHeight ? SizedBox(height: 10.h) : Container(),
|
||||
children: <Widget>[
|
||||
if (isTopHeight) SizedBox(height: 10.h) else Container(),
|
||||
CommonItem(
|
||||
leftTitel: titleStr,
|
||||
rightTitle: "",
|
||||
rightTitle: '',
|
||||
isHaveRightWidget: true,
|
||||
rightWidget: getTFWidget(rightTitle, controller)),
|
||||
SizedBox(height: 10.h),
|
||||
@ -223,17 +221,17 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
// 限时顶部选择日期
|
||||
Widget keyTimeLimitWidget() {
|
||||
return Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
Visibility(
|
||||
visible:
|
||||
CommonDataManage().currentKeyInfo.vendor == "XHJ" ? false : true,
|
||||
CommonDataManage().currentKeyInfo.vendor == 'XHJ' ? false : true,
|
||||
child: CommonItem(
|
||||
leftTitel: TranslationLoader.lanKeys!.effectiveTime!.tr,
|
||||
rightTitle: state.beginTime.value,
|
||||
isHaveLine: true,
|
||||
isHaveDirection: true,
|
||||
action: () {
|
||||
PDuration selectDate =
|
||||
final PDuration selectDate =
|
||||
PDuration.parse(DateTime.tryParse(state.beginTime.value));
|
||||
Pickers.showDatePicker(context,
|
||||
selectDate: selectDate,
|
||||
@ -243,7 +241,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
day: DateTime.now().day,
|
||||
hour: 24),
|
||||
// minDate: PDuration.now(),
|
||||
mode: DateMode.YMDHM, onConfirm: (p) {
|
||||
mode: DateMode.YMDHM, onConfirm: (PDuration p) {
|
||||
state.beginTime.value = DateTool().getYMDHNDateString(p, 4);
|
||||
});
|
||||
}),
|
||||
@ -253,7 +251,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
rightTitle: state.endTime.value,
|
||||
isHaveDirection: true,
|
||||
action: () {
|
||||
PDuration selectDate =
|
||||
final PDuration selectDate =
|
||||
PDuration.parse(DateTime.tryParse(state.endTime.value));
|
||||
Pickers.showDatePicker(context,
|
||||
selectDate: selectDate,
|
||||
@ -266,7 +264,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
year: DateTime.now().year,
|
||||
month: DateTime.now().month,
|
||||
day: DateTime.now().day),
|
||||
mode: DateMode.YMDH, onConfirm: (p) {
|
||||
mode: DateMode.YMDH, onConfirm: (PDuration p) {
|
||||
state.endTime.value = DateTool().getYMDHNDateString(p, 4);
|
||||
});
|
||||
}),
|
||||
@ -278,20 +276,20 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
// 自定义限时顶部选择日期
|
||||
Widget keyCustomTimeLimitWidget() {
|
||||
return Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
CommonItem(
|
||||
leftTitel: TranslationLoader.lanKeys!.effectiveTime!.tr,
|
||||
rightTitle: state.customBeginTime.value,
|
||||
isHaveLine: true,
|
||||
isHaveDirection: true,
|
||||
action: () {
|
||||
PDuration selectDate = PDuration.parse(
|
||||
final PDuration selectDate = PDuration.parse(
|
||||
DateTime.tryParse(state.customBeginTime.value));
|
||||
Pickers.showDatePicker(context,
|
||||
selectDate: selectDate,
|
||||
// maxDate: PDuration(year: DateTime.now().year + 3, month: DateTime.now().month, day: DateTime.now().day, hour: 24),
|
||||
// minDate: PDuration.now(),
|
||||
mode: DateMode.YMDHM, onConfirm: (p) {
|
||||
mode: DateMode.YMDHM, onConfirm: (PDuration p) {
|
||||
state.customBeginTime.value =
|
||||
DateTool().getYMDHNDateString(p, 1);
|
||||
});
|
||||
@ -301,14 +299,14 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
rightTitle: state.customEndTime.value,
|
||||
isHaveDirection: true,
|
||||
action: () {
|
||||
PDuration selectDate =
|
||||
final PDuration selectDate =
|
||||
PDuration.parse(DateTime.tryParse(state.customEndTime.value));
|
||||
Pickers.showDatePicker(context,
|
||||
selectDate: selectDate,
|
||||
// maxDate传入三年以后得今天的时间
|
||||
// maxDate: PDuration(year: DateTime.now().year + 3, month: DateTime.now().month, day: DateTime.now().day),
|
||||
// minDate: PDuration(year: DateTime.now().year, month: DateTime.now().month, day: DateTime.now().day),
|
||||
mode: DateMode.YMDHM, onConfirm: (p) {
|
||||
mode: DateMode.YMDHM, onConfirm: (PDuration p) {
|
||||
state.customEndTime.value = DateTool().getYMDHNDateString(p, 1);
|
||||
});
|
||||
}),
|
||||
@ -320,15 +318,13 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
// 自定义是否永久
|
||||
Widget keyIfPerpetualWidget() {
|
||||
return Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
CommonItem(
|
||||
leftTitel: TranslationLoader.lanKeys!.permanent!.tr,
|
||||
rightTitle: "",
|
||||
rightTitle: '',
|
||||
isHaveRightWidget: true,
|
||||
rightWidget: SizedBox(width: 60.w, height: 50.h, child: _switch())),
|
||||
state.isPermanent.value == true
|
||||
? Container(height: 10.h)
|
||||
: Container(height: 1.h),
|
||||
if (state.isPermanent.value == true) Container(height: 10.h) else Container(height: 1.h),
|
||||
],
|
||||
);
|
||||
}
|
||||
@ -339,11 +335,11 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
visible:
|
||||
CommonDataManage().currentKeyInfo.isLockOwner == 1 ? true : false,
|
||||
child: Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
// SizedBox(height: 10.h),
|
||||
Obx(() => CommonItem(
|
||||
leftTitel: "是否为管理员".tr,
|
||||
rightTitle: "",
|
||||
leftTitel: '是否为管理员'.tr,
|
||||
rightTitle: '',
|
||||
isTipsImg: false,
|
||||
isHaveRightWidget: true,
|
||||
rightWidget: SizedBox(
|
||||
@ -357,14 +353,14 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
// 循环
|
||||
Widget keyCirculationWidget() {
|
||||
return Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
CommonItem(
|
||||
leftTitel: "有效日",
|
||||
leftTitel: '有效日',
|
||||
rightTitle: state.loopModeStr.value,
|
||||
isHaveLine: true,
|
||||
isHaveDirection: true,
|
||||
action: () {
|
||||
List<String> pickerDataList = [
|
||||
final List<String> pickerDataList = <String>[
|
||||
'周末',
|
||||
'每日',
|
||||
'工作日',
|
||||
@ -393,11 +389,11 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
isHaveLine: true,
|
||||
isHaveDirection: true,
|
||||
action: () {
|
||||
PDuration selectDate =
|
||||
final PDuration selectDate =
|
||||
PDuration.parse(DateTime.tryParse(state.endTime.value));
|
||||
Pickers.showDatePicker(context,
|
||||
selectDate: selectDate,
|
||||
mode: DateMode.YMDH, onConfirm: (p) {
|
||||
mode: DateMode.YMDH, onConfirm: (PDuration p) {
|
||||
state.endTime.value = DateTool().getYMDHNDateString(p, 4);
|
||||
});
|
||||
}),
|
||||
@ -408,10 +404,10 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
isHaveLine: true,
|
||||
isHaveDirection: true,
|
||||
action: () {
|
||||
PDuration selectDate = PDuration.parse(
|
||||
final PDuration selectDate = PDuration.parse(
|
||||
DateTool().dateToDateTime(state.loopEffectiveDate.value, 0));
|
||||
Pickers.showDatePicker(context,
|
||||
selectDate: selectDate, mode: DateMode.H, onConfirm: (p) {
|
||||
selectDate: selectDate, mode: DateMode.H, onConfirm: (PDuration p) {
|
||||
state.loopEffectiveDate.value =
|
||||
DateTool().getYMDHNDateString(p, 5);
|
||||
state.loopStartHours.value = p.hour!;
|
||||
@ -422,10 +418,10 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
rightTitle: state.loopFailureDate.value,
|
||||
isHaveDirection: true,
|
||||
action: () {
|
||||
PDuration selectDate = PDuration.parse(
|
||||
final PDuration selectDate = PDuration.parse(
|
||||
DateTool().dateToDateTime(state.loopFailureDate.value, 0));
|
||||
Pickers.showDatePicker(context,
|
||||
selectDate: selectDate, mode: DateMode.H, onConfirm: (p) {
|
||||
selectDate: selectDate, mode: DateMode.H, onConfirm: (PDuration p) {
|
||||
state.loopFailureDate.value =
|
||||
DateTool().getYMDHNDateString(p, 5);
|
||||
state.loopEndHours.value = p.hour!;
|
||||
@ -445,19 +441,19 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
showPickerView(BuildContext context, List dataList) {
|
||||
Pickers.showSinglePicker(context,
|
||||
data: dataList,
|
||||
pickerStyle: DefaultPickerStyle(), onConfirm: (p, position) {
|
||||
pickerStyle: DefaultPickerStyle(), onConfirm: (p, int position) {
|
||||
state.loopModeStr.value = p;
|
||||
}, onChanged: (p, position) {});
|
||||
}, onChanged: (p, int position) {});
|
||||
}
|
||||
|
||||
Widget keyBottomWidget(String tipStr) {
|
||||
return Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
Container(
|
||||
padding: EdgeInsets.all(20.w),
|
||||
child: Row(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: Text(
|
||||
tipStr,
|
||||
@ -472,10 +468,10 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
),
|
||||
SubmitBtn(
|
||||
btnName: state.widgetType.value == 3
|
||||
? "设置密码"
|
||||
? '设置密码'
|
||||
: TranslationLoader.lanKeys!.getPassword!.tr,
|
||||
onClick: () async {
|
||||
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
|
||||
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
|
||||
if (isDemoMode == false) {
|
||||
//自定义密码
|
||||
if (state.widgetType.value == 3) {
|
||||
@ -484,7 +480,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
logic.getKeyboardPwdRequest();
|
||||
}
|
||||
} else {
|
||||
logic.showToast("演示模式");
|
||||
logic.showToast('演示模式');
|
||||
}
|
||||
}),
|
||||
],
|
||||
@ -494,13 +490,13 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
// 发送电子钥匙成功
|
||||
Widget sendElectronicKeySucceed() {
|
||||
return Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
Container(
|
||||
height: 270.h,
|
||||
width: 1.sw,
|
||||
color: Colors.white,
|
||||
child: Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
SizedBox(
|
||||
height: 30.h,
|
||||
),
|
||||
@ -513,7 +509,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
height: 20.h,
|
||||
),
|
||||
Text(
|
||||
"操作成功,密码为",
|
||||
'操作成功,密码为',
|
||||
style: TextStyle(fontSize: 22.sp, color: Colors.black),
|
||||
),
|
||||
SizedBox(
|
||||
@ -536,8 +532,8 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
btnName: '完成'.tr,
|
||||
onClick: () {
|
||||
state.isSendSuccess.value = false;
|
||||
state.nameController.text = "";
|
||||
state.pwdController.text = "";
|
||||
state.nameController.text = '';
|
||||
state.pwdController.text = '';
|
||||
// Navigator.pop(context, true);
|
||||
}),
|
||||
SizedBox(
|
||||
@ -566,7 +562,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
height: 65.h,
|
||||
width: 300.w,
|
||||
child: Row(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
Expanded(
|
||||
child: TextField(
|
||||
//输入框一行
|
||||
@ -630,7 +626,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
trackColor: CupertinoColors.systemGrey5,
|
||||
thumbColor: CupertinoColors.white,
|
||||
value: state.isPermanent.value,
|
||||
onChanged: (value) {
|
||||
onChanged: (bool value) {
|
||||
state.isPermanent.value = value;
|
||||
},
|
||||
);
|
||||
@ -643,15 +639,15 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
trackColor: CupertinoColors.systemGrey5,
|
||||
thumbColor: CupertinoColors.white,
|
||||
value: state.isAdministrator.value,
|
||||
onChanged: (value) {
|
||||
onChanged: (bool value) {
|
||||
state.isAdministrator.value = value;
|
||||
AppLog.log("isAdministrator:${state.isAdministrator.value}");
|
||||
AppLog.log('isAdministrator:${state.isAdministrator.value}');
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
String intToStr(int v) {
|
||||
return (v < 10) ? "0$v" : "$v";
|
||||
return (v < 10) ? '0$v' : '$v';
|
||||
}
|
||||
|
||||
Future _openModalBottomSheet() async {
|
||||
@ -662,7 +658,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
constraints: BoxConstraints(maxHeight: 270.h),
|
||||
builder: (BuildContext context) {
|
||||
return Column(
|
||||
children: [
|
||||
children: <Widget>[
|
||||
SizedBox(
|
||||
width: ScreenUtil().screenWidth,
|
||||
height: 180.h,
|
||||
@ -695,7 +691,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
TabBar _tabBar() {
|
||||
return TabBar(
|
||||
controller: state.tabController,
|
||||
onTap: (index) {
|
||||
onTap: (int index) {
|
||||
FocusScope.of(context).requestFocus(FocusNode());
|
||||
},
|
||||
tabs: _itemTabs.map((ItemView item) => _tab(item)).toList(),
|
||||
@ -746,16 +742,16 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
}
|
||||
|
||||
final List<ItemView> _itemTabs = <ItemView>[
|
||||
ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, type: "0"),
|
||||
ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, type: "1"),
|
||||
ItemView(title: TranslationLoader.lanKeys!.once!.tr, type: "2"),
|
||||
ItemView(title: TranslationLoader.lanKeys!.custom!.tr, type: "3"),
|
||||
ItemView(title: TranslationLoader.lanKeys!.circulation!.tr, type: "4"),
|
||||
ItemView(title: TranslationLoader.lanKeys!.clearAll!.tr, type: "5"),
|
||||
ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, type: '0'),
|
||||
ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, type: '1'),
|
||||
ItemView(title: TranslationLoader.lanKeys!.once!.tr, type: '2'),
|
||||
ItemView(title: TranslationLoader.lanKeys!.custom!.tr, type: '3'),
|
||||
ItemView(title: TranslationLoader.lanKeys!.circulation!.tr, type: '4'),
|
||||
ItemView(title: TranslationLoader.lanKeys!.clearAll!.tr, type: '5'),
|
||||
];
|
||||
|
||||
List<Widget> initBottomSheetList() {
|
||||
List<Widget> widgetList = [];
|
||||
final List<Widget> widgetList = <Widget>[];
|
||||
|
||||
widgetList.add(buildCenter3('images/icon_wechat.png', '微信好友'.tr, 0));
|
||||
widgetList.add(buildCenter3('images/icon_message.png', '短信'.tr, 1));
|
||||
@ -775,7 +771,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
EdgeInsets.only(top: 20.w, bottom: 20.w, left: 10.w, right: 10.w),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
children: <Widget>[
|
||||
Image.asset(
|
||||
imageName,
|
||||
width: 50.w,
|
||||
@ -799,7 +795,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
|
||||
//\n生效时间:${itemData.startDate}\n类型:永久\n锁名:${itemData.keyboardPwdName}
|
||||
_jumpSmartDeviceRoute(int itemIndex) {
|
||||
Get.back();
|
||||
String pwdShareStr = logic.getShareContentStr();
|
||||
final String pwdShareStr = logic.getShareContentStr();
|
||||
switch (itemIndex) {
|
||||
case 0:
|
||||
//微信好友
|
||||
|
||||
@ -4,42 +4,42 @@ import 'package:star_lock/main/lockMian/entity/lockListInfo_entity.dart';
|
||||
import 'package:star_lock/tools/dateTool.dart';
|
||||
|
||||
class PasswordKeyPerpetualState {
|
||||
|
||||
PasswordKeyPerpetualState() {
|
||||
Map map = Get.arguments;
|
||||
if (map['keyInfo'] != null) {
|
||||
keyInfo.value = map['keyInfo'];
|
||||
}
|
||||
}
|
||||
final TextEditingController nameController = TextEditingController();
|
||||
final TextEditingController pwdController = TextEditingController();
|
||||
|
||||
// final isInitialized = false.obs;
|
||||
final isSendSuccess = false.obs; //是否发送成功
|
||||
final isPermanent = true.obs; //是否永久
|
||||
var getPwdStr = ''.obs;
|
||||
var pwdNameStr = '';
|
||||
final isAdministrator = false.obs; // 是否为管理员
|
||||
final RxBool isSendSuccess = false.obs; //是否发送成功
|
||||
final RxBool isPermanent = true.obs; //是否永久
|
||||
RxString getPwdStr = ''.obs;
|
||||
String pwdNameStr = '';
|
||||
final RxBool isAdministrator = false.obs; // 是否为管理员
|
||||
|
||||
var beginTime = DateTool().getNowDateWithType(3).obs; //默认为当前时间 开始时间
|
||||
var endTime = DateTool().getNowDateWithType(3).obs; //默认为当前时间 结束时间
|
||||
RxString beginTime = DateTool().getNowDateWithType(3).obs; //默认为当前时间 开始时间
|
||||
RxString endTime = DateTool().getNowDateWithType(3).obs; //默认为当前时间 结束时间
|
||||
|
||||
var loopEffectiveDate = DateTool().getNowDateWithType(7).obs; //生效时间
|
||||
var loopFailureDate = DateTool().getNowDateWithType(7).obs; //失效时间
|
||||
var loopStartHours = DateTime.now().hour.obs;
|
||||
var loopEndHours = DateTime.now().hour.obs;
|
||||
var loopModeStr = '周末'.obs; //循环模式
|
||||
RxString loopEffectiveDate = DateTool().getNowDateWithType(7).obs; //生效时间
|
||||
RxString loopFailureDate = DateTool().getNowDateWithType(7).obs; //失效时间
|
||||
RxInt loopStartHours = DateTime.now().hour.obs;
|
||||
RxInt loopEndHours = DateTime.now().hour.obs;
|
||||
RxString loopModeStr = '周末'.obs; //循环模式
|
||||
|
||||
var customBeginTime = DateTool().getNowDateWithType(2).obs; //默认为当前时间 开始时间
|
||||
var customEndTime = DateTool().getNowDateWithType(2).obs; //默认为当前时间 结束时间
|
||||
RxString customBeginTime = DateTool().getNowDateWithType(2).obs; //默认为当前时间 开始时间
|
||||
RxString customEndTime = DateTool().getNowDateWithType(2).obs; //默认为当前时间 结束时间
|
||||
|
||||
final widgetType = 0.obs;
|
||||
final sendSucceedType = 0.obs;
|
||||
final keyInfo = LockListInfoItemEntity().obs;
|
||||
final RxInt widgetType = 0.obs;
|
||||
final RxInt sendSucceedType = 0.obs;
|
||||
final Rx<LockListInfoItemEntity> keyInfo = LockListInfoItemEntity().obs;
|
||||
|
||||
var ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示
|
||||
var sureBtnState = 0.obs; // 0普通状态(可用) 1连接中(不可用)
|
||||
RxBool ifCurrentScreen = true.obs; // 是否是当前界面,用于判断是否需要针对当前界面进行展示
|
||||
RxInt sureBtnState = 0.obs; // 0普通状态(可用) 1连接中(不可用)
|
||||
|
||||
var pwdNumber = 0.obs; // 密码编号
|
||||
RxInt pwdNumber = 0.obs; // 密码编号
|
||||
late TabController tabController;
|
||||
|
||||
PasswordKeyPerpetualState() {
|
||||
Map map = Get.arguments;
|
||||
if (map["keyInfo"] != null) {
|
||||
keyInfo.value = map["keyInfo"];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -222,7 +222,7 @@ class _ExpireFacePageState extends State<ExpireFacePage> {
|
||||
);
|
||||
} else {
|
||||
return Container(
|
||||
padding: EdgeInsets.only(left: 5.w, right: 5.w),
|
||||
padding: EdgeInsets.only(left: 5.w, right: 5.w, bottom: 2.h),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.red,
|
||||
borderRadius: BorderRadius.circular(2.0),
|
||||
|
||||
@ -4,6 +4,7 @@ import 'dart:async';
|
||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||
import 'package:star_lock/blue/io_tool/io_tool.dart';
|
||||
import 'package:star_lock/blue/io_type.dart';
|
||||
import 'package:star_lock/login/login/entity/LoginEntity.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
import 'package:star_lock/tools/dateTool.dart';
|
||||
|
||||
@ -24,7 +25,7 @@ class ExpireFingerprintLogic extends BaseGetXController {
|
||||
// 获取解析后的数据
|
||||
late StreamSubscription<Reply> _replySubscription;
|
||||
void _initReplySubscription() {
|
||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) {
|
||||
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((Reply reply) {
|
||||
// 添加指纹开始(此处用作删除指纹)
|
||||
if((reply is SenderAddFingerprintWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) {
|
||||
_replyAddFingerprintBegin(reply);
|
||||
@ -34,7 +35,7 @@ class ExpireFingerprintLogic extends BaseGetXController {
|
||||
|
||||
// 添加指纹开始
|
||||
Future<void> _replyAddFingerprintBegin(Reply reply) async {
|
||||
int status = reply.data[2];
|
||||
final int status = reply.data[2];
|
||||
|
||||
switch(status){
|
||||
case 0x00:
|
||||
@ -46,17 +47,17 @@ class ExpireFingerprintLogic extends BaseGetXController {
|
||||
break;
|
||||
case 0x06:
|
||||
//无权限
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||
final List<String>? publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||
final List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||
|
||||
var token = await Storage.getStringList(saveBlueToken);
|
||||
List<int> getTokenList = changeStringListToIntList(token!);
|
||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
||||
final List<int> getTokenList = changeStringListToIntList(token!);
|
||||
|
||||
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
|
||||
keyID:state.deletExpireFingerprintItemEntity.fingerprintId.toString(),
|
||||
@ -100,14 +101,14 @@ class ExpireFingerprintLogic extends BaseGetXController {
|
||||
// var publicKey = await Storage.getStringList(saveBluePublicKey);
|
||||
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
|
||||
|
||||
var signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
|
||||
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
|
||||
|
||||
var privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
|
||||
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
|
||||
|
||||
var token = await Storage.getStringList(saveBlueToken);
|
||||
List<int> getTokenList = changeStringListToIntList(token!);
|
||||
final List<String>? token = await Storage.getStringList(saveBlueToken);
|
||||
final List<int> getTokenList = changeStringListToIntList(token!);
|
||||
|
||||
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
|
||||
keyID:state.deletExpireFingerprintItemEntity.fingerprintId.toString(),
|
||||
@ -154,7 +155,7 @@ class ExpireFingerprintLogic extends BaseGetXController {
|
||||
|
||||
// 删除指纹
|
||||
void deletFingerprintsData() async{
|
||||
var entity = await ApiRepository.to.deletFingerprintsData(
|
||||
final LoginEntity entity = await ApiRepository.to.deletFingerprintsData(
|
||||
fingerprintId: state.deletExpireFingerprintItemEntity.fingerprintId.toString(),
|
||||
lockId: state.deletExpireFingerprintItemEntity.lockId.toString(),
|
||||
type: "0",
|
||||
@ -172,7 +173,7 @@ class ExpireFingerprintLogic extends BaseGetXController {
|
||||
|
||||
//请求指纹即将到期列表
|
||||
Future<ExpireFingerprintEntity> expirFingerprintListRequest() async {
|
||||
ExpireFingerprintEntity entity = await ApiRepository.to.expireFingerprintList(pageNo.toString(), pageSize.toString());
|
||||
final ExpireFingerprintEntity entity = await ApiRepository.to.expireFingerprintList(pageNo.toString(), pageSize.toString());
|
||||
if(entity.errorCode!.codeIsSuccessful){
|
||||
if (pageNo == 1) {
|
||||
state.dataList.value = entity.data!.list!;
|
||||
|
||||
@ -226,7 +226,7 @@ class _ExpireFingerprintPageState extends State<ExpireFingerprintPage> {
|
||||
);
|
||||
} else {
|
||||
return Container(
|
||||
padding: EdgeInsets.only(left: 5.w, right: 5.w),
|
||||
padding: EdgeInsets.only(left: 5.w, right: 5.w, bottom: 2.h),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.red,
|
||||
borderRadius: BorderRadius.circular(2.0),
|
||||
|
||||
@ -39,7 +39,7 @@ class _ExpireLockManageTabbarState extends State<ExpireLockManageTabbar> with Si
|
||||
_tabController = TabController(
|
||||
vsync: this,
|
||||
length: _itemTabs.length,
|
||||
initialIndex: 1);
|
||||
initialIndex: 0);
|
||||
_tabController.addListener(() {
|
||||
if (_tabController.animation!.value == _tabController.index) {
|
||||
FocusScope.of(context).requestFocus(FocusNode());
|
||||
|
||||
@ -117,20 +117,20 @@ class _ExpirePasswordPageState extends State<ExpirePasswordPage> {
|
||||
// getHttpData();
|
||||
// }
|
||||
// } else {
|
||||
// var backData = await Get.toNamed(
|
||||
// Routers.passwordKeyDetailChangeDatePage,
|
||||
// arguments: {
|
||||
// 'itemData': itemData,
|
||||
var backData = await Get.toNamed(
|
||||
Routers.passwordKeyDetailChangeDatePage,
|
||||
arguments: {
|
||||
'itemData': itemData,
|
||||
|
||||
// });
|
||||
// if (backData != null) {
|
||||
// itemData.startDate =
|
||||
// int.parse(backData["beginTimeTimestamp"]) * 1000;
|
||||
// itemData.endDate = int.parse(backData["endTimeTimestamp"]) * 1000;
|
||||
// // 改了日期之后,永久只能改限时的
|
||||
// itemData.keyboardPwdType = 3;
|
||||
// setState(() {});
|
||||
// }
|
||||
});
|
||||
if (backData != null) {
|
||||
itemData.startDate =
|
||||
int.parse(backData["beginTimeTimestamp"]) * 1000;
|
||||
itemData.endDate = int.parse(backData["endTimeTimestamp"]) * 1000;
|
||||
// 改了日期之后,永久只能改限时的
|
||||
itemData.keyboardPwdType = 3;
|
||||
setState(() {});
|
||||
}
|
||||
// }
|
||||
},
|
||||
child: Container(
|
||||
@ -219,7 +219,7 @@ class _ExpirePasswordPageState extends State<ExpirePasswordPage> {
|
||||
Visibility(
|
||||
visible: itemData.keyboardPwdStatus! == 2 ? true : false,
|
||||
child: Container(
|
||||
padding: EdgeInsets.only(left: 5.w, right: 5.w),
|
||||
padding: EdgeInsets.only(left: 5.w, right: 5.w, bottom: 2.h),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.red,
|
||||
borderRadius: BorderRadius.circular(2.0),
|
||||
|
||||
@ -6,21 +6,21 @@ import 'pickers/time_picker/model/pduration.dart';
|
||||
class DateTool {
|
||||
/// 获取当前年月日时分秒
|
||||
String getNowDateWithType(int type) {
|
||||
var dateStr = '';
|
||||
String dateStr = '';
|
||||
// 获取当前时间对象
|
||||
DateTime now = DateTime.now();
|
||||
final DateTime now = DateTime.now();
|
||||
//获取当前时间的年
|
||||
int year = now.year;
|
||||
final int year = now.year;
|
||||
//获取当前时间的月
|
||||
int month = now.month;
|
||||
final int month = now.month;
|
||||
//获取当前时间的日
|
||||
int day = now.day;
|
||||
final int day = now.day;
|
||||
//获取当前时间的时
|
||||
int hour = now.hour;
|
||||
final int hour = now.hour;
|
||||
//获取当前时间的分
|
||||
int minute = now.minute;
|
||||
final int minute = now.minute;
|
||||
//获取当前时间的秒
|
||||
int millisecond = now.millisecond;
|
||||
final int millisecond = now.millisecond;
|
||||
|
||||
switch (type) {
|
||||
case 1:
|
||||
@ -76,13 +76,13 @@ class DateTool {
|
||||
/// 根据传入的PDuration及时间类型获取时间字符串
|
||||
/// type 1: 年月日时分(2023-01-01 12:00) 2: 年月日(2023-01-01) 3: 时分(12:00)
|
||||
String getYMDHNDateString(PDuration p, int type) {
|
||||
var year = p.year == 0 ? DateTime.now().year : p.year;
|
||||
var month = p.month == 0 ? DateTime.now().month : p.month;
|
||||
var day = p.day == 0 ? DateTime.now().day : p.day;
|
||||
var hour = p.hour == 0 ? DateTime.now().hour : p.hour;
|
||||
var minute = p.minute;
|
||||
final int? year = p.year == 0 ? DateTime.now().year : p.year;
|
||||
final int? month = p.month == 0 ? DateTime.now().month : p.month;
|
||||
final int? day = p.day == 0 ? DateTime.now().day : p.day;
|
||||
final int? hour = p.hour;
|
||||
final int? minute = p.minute;
|
||||
|
||||
var dateStr = '';
|
||||
String dateStr = '';
|
||||
switch (type) {
|
||||
case 1:
|
||||
// 年月日时分(2023-01-01 12:48)
|
||||
@ -121,16 +121,16 @@ class DateTool {
|
||||
int dateToTimestamp(String dateStr, int type) {
|
||||
int timestamp = 0;
|
||||
if (type == 0) {
|
||||
List<String> timeParts = dateStr.split(":");
|
||||
final List<String> timeParts = dateStr.split(':');
|
||||
if (timeParts.length < 2) {
|
||||
return 0;
|
||||
}
|
||||
DateTime now = DateTime.now();
|
||||
DateTime dateTime = DateTime(now.year, now.month, now.day,
|
||||
final DateTime now = DateTime.now();
|
||||
final DateTime dateTime = DateTime(now.year, now.month, now.day,
|
||||
int.parse(timeParts[0]), int.parse(timeParts[1]));
|
||||
timestamp = dateTime.millisecondsSinceEpoch;
|
||||
} else {
|
||||
DateTime dateTime = DateTime.parse(dateStr);
|
||||
final DateTime dateTime = DateTime.parse(dateStr);
|
||||
timestamp = dateTime.millisecondsSinceEpoch;
|
||||
}
|
||||
return timestamp;
|
||||
@ -139,7 +139,7 @@ class DateTool {
|
||||
/// 日期转化为时间戳
|
||||
/// type 0: 12:00 1: 其他
|
||||
DateTime? dateToDateTime(String dateStr, int type) {
|
||||
int timestamp = dateToTimestamp(dateStr, type);
|
||||
final int timestamp = dateToTimestamp(dateStr, type);
|
||||
if (timestamp == 0) {
|
||||
return null;
|
||||
} else {
|
||||
@ -154,9 +154,9 @@ class DateTool {
|
||||
if (timestamp.length == 10) {
|
||||
time = time * 1000;
|
||||
}
|
||||
DateTime nowDate = DateTime.fromMillisecondsSinceEpoch(time);
|
||||
String appointmentDate =
|
||||
formatDate(nowDate, [yyyy, '-', mm, '-', dd, ' ', HH, ':', nn]);
|
||||
final DateTime nowDate = DateTime.fromMillisecondsSinceEpoch(time);
|
||||
final String appointmentDate =
|
||||
formatDate(nowDate, <String>[yyyy, '-', mm, '-', dd, ' ', HH, ':', nn]);
|
||||
return appointmentDate;
|
||||
}
|
||||
|
||||
@ -166,33 +166,33 @@ class DateTool {
|
||||
if (time.toString().length == 10) {
|
||||
time = time * 1000;
|
||||
}
|
||||
DateTime nowDate = DateTime.fromMillisecondsSinceEpoch(time);
|
||||
String appointmentDate =
|
||||
formatDate(nowDate, [yyyy, '-', mm, '-', dd, ' ', HH, ':', nn]);
|
||||
final DateTime nowDate = DateTime.fromMillisecondsSinceEpoch(time);
|
||||
final String appointmentDate =
|
||||
formatDate(nowDate, <String>[yyyy, '-', mm, '-', dd, ' ', HH, ':', nn]);
|
||||
return appointmentDate;
|
||||
}
|
||||
|
||||
/// 将时间戳传化为年月日 (年-月-日)
|
||||
String dateToYMDString(String timestamp) {
|
||||
int time = int.parse(timestamp);
|
||||
DateTime nowDate = DateTime.fromMillisecondsSinceEpoch(time);
|
||||
String appointmentDate = formatDate(nowDate, [yyyy, '-', mm, '-', dd]);
|
||||
final int time = int.parse(timestamp);
|
||||
final DateTime nowDate = DateTime.fromMillisecondsSinceEpoch(time);
|
||||
final String appointmentDate = formatDate(nowDate, <String>[yyyy, '-', mm, '-', dd]);
|
||||
return appointmentDate;
|
||||
}
|
||||
|
||||
/// 将时间戳传化为年月日 (时:分)
|
||||
String dateToHNString(String timestamp) {
|
||||
int time = int.parse(timestamp);
|
||||
DateTime nowDate = DateTime.fromMillisecondsSinceEpoch(time);
|
||||
String appointmentDate = formatDate(nowDate, [HH, ':', nn]);
|
||||
final int time = int.parse(timestamp);
|
||||
final DateTime nowDate = DateTime.fromMillisecondsSinceEpoch(time);
|
||||
final String appointmentDate = formatDate(nowDate, <String>[HH, ':', nn]);
|
||||
return appointmentDate;
|
||||
}
|
||||
|
||||
/// 获取是否超过现在的时间
|
||||
bool compareTimeIsOvertime(int endTiem) {
|
||||
DateTime dateTime =
|
||||
final DateTime dateTime =
|
||||
DateTime.fromMillisecondsSinceEpoch(endTiem); // 将时间戳转换为 DateTime
|
||||
DateTime now = DateTime.now(); // 获取当前时间
|
||||
final DateTime now = DateTime.now(); // 获取当前时间
|
||||
if (now.isAfter(dateTime)) {
|
||||
// 过期
|
||||
return true;
|
||||
@ -203,25 +203,25 @@ class DateTool {
|
||||
|
||||
/// 获取两个距离当前时间相差几天 1705132260000
|
||||
int compareTimeGetDaysFromNow(int endTiem) {
|
||||
DateTime dateTime =
|
||||
final DateTime dateTime =
|
||||
DateTime.fromMillisecondsSinceEpoch(endTiem); // 将时间戳转换为 DateTime
|
||||
DateTime now = DateTime.now(); // 获取当前时间
|
||||
Duration difference = dateTime.difference(now); // 计算两个日期之间的差异
|
||||
int days = difference.inDays; // 获取差异的天数
|
||||
final DateTime now = DateTime.now(); // 获取当前时间
|
||||
final Duration difference = dateTime.difference(now); // 计算两个日期之间的差异
|
||||
final int days = difference.inDays; // 获取差异的天数
|
||||
return days;
|
||||
}
|
||||
|
||||
// 根据循环的循环周期转化为对应的整型(Bit0 -- 6 置位分别代表周日 -- 周六)
|
||||
int accordingTheCycleIntoTheCorrespondingNumber(List weekDay) {
|
||||
var weekStr = "00000000";
|
||||
String weekStr = '00000000';
|
||||
for (var day in weekDay) {
|
||||
int index = day % 7; // 将周日的索引转换为 0
|
||||
final int index = day % 7; // 将周日的索引转换为 0
|
||||
weekStr =
|
||||
'${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}';
|
||||
}
|
||||
// 倒序 weekStr
|
||||
weekStr = weekStr.split('').reversed.join('');
|
||||
int weekRound = int.parse(weekStr, radix: 2);
|
||||
final int weekRound = int.parse(weekStr, radix: 2);
|
||||
return weekRound;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user