1、添加重置密码前校验接口能否调用成功功能

2、修改卡胁迫问题
This commit is contained in:
魏少阳 2024-05-29 14:31:38 +08:00
parent ad29462882
commit c0ff6200fc
19 changed files with 601 additions and 656 deletions

View File

@ -1,6 +1,7 @@
import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/login/login/entity/LoginEntity.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import '../../../../appRouters.dart';
@ -12,31 +13,31 @@ class AddCardTypeLogic extends BaseGetXController{
AddCardTypeState state = AddCardTypeState();
//
void addCardData() async {
var carType = 0; // :1;23:4
var startDate = "";
var endDate = "";
var startTime = "";
var endTime = "";
if (state.selectType.value == "0") {
Future<void> addCardData() async {
int carType = 0; // :1;23:4
String startDate = '';
String endDate = '';
String startTime = '';
String endTime = '';
if (state.selectType.value == '0') {
carType = 1;
startDate = "0";
endDate = "0";
startTime = "0";
endTime = "0";
} else if (state.selectType.value == "1") {
startDate = '0';
endDate = '0';
startTime = '0';
endTime = '0';
} else if (state.selectType.value == '1') {
carType = 2;
startDate = DateTool().dateToTimestamp(state.timeLimitBeginTime.value, 1).toString();
endDate = DateTool().dateToTimestamp(state.timeLimitEndTime.value, 1).toString();
startTime = "0";
endTime = "0";
startTime = '0';
endTime = '0';
if (startDate.isEmpty) {
showToast("请选择开始时间".tr);
showToast('请选择开始时间'.tr);
return;
}
if (endDate.isEmpty) {
showToast("请选择结束时间".tr);
showToast('请选择结束时间'.tr);
return;
}
@ -46,14 +47,14 @@ class AddCardTypeLogic extends BaseGetXController{
// }
if (int.parse(startDate) >= int.parse(endDate)) {
showToast("失效时间要大于生效时间".tr);
showToast('失效时间要大于生效时间'.tr);
return;
}
// AppLog.log("state.timeLimitBeginTime.value:${state.timeLimitBeginTime.value} startDate:$startDate");
// AppLog.log("state.timeLimitEndTime.value:${state.timeLimitEndTime.value} endDate:$endDate");
} else if (state.selectType.value == "2") {
} else if (state.selectType.value == '2') {
if (state.cycleBeginTime.value.isEmpty) {
showToast("请选择有效期".tr);
showToast('请选择有效期'.tr);
return;
}
startDate = DateTool().dateToTimestamp(state.cycleBeginTime.value, 1).toString();
@ -63,28 +64,27 @@ class AddCardTypeLogic extends BaseGetXController{
carType = 4;
}
// var isCoerced = state.isStressFingerprint.value == false ? "1" : "2"; // 1: 2:
Get.toNamed(Routers.addICCardPage, arguments: {
"lockId": state.lockId.value,
"endDate": endDate,
"addType": "1",
"cardName": state.nameController.text,
"cardNumber": "123456",
"cardType": carType.toString(),
"isCoerced": state.isStressFingerprint.value == false ? "1" : "2",
"startDate": startDate,
"weekDay": state.weekdaysList.value,
"fromType": state.fromType.value,
"isAdministrator": state.isAdministrator.value == false ? "1" : "2", // 1: 2:
"effectiveTime": startTime,
"failureTime": endTime,
"selectType": state.selectType.value,
Get.toNamed(Routers.addICCardPage, arguments: <String, Object>{
'lockId': state.lockId.value,
'endDate': endDate,
'addType': '1',
'cardName': state.nameController.text,
'cardNumber': '123456',
'cardType': carType.toString(),
'isCoerced': state.isStressFingerprint.value == false ? '2' : '1',
'startDate': startDate,
'weekDay': state.weekdaysList.value,
'fromType': state.fromType.value,
'isAdministrator': state.isAdministrator.value == false ? '1' : '2', // 1: 2:
'effectiveTime': startTime,
'failureTime': endTime,
'selectType': state.selectType.value,
});
}
//
void checkCardNameDuplicated(String cardName) async{
var entity = await ApiRepository.to.checkCardNameDuplicatedData(
Future<void> checkCardNameDuplicated(String cardName) async{
final LoginEntity entity = await ApiRepository.to.checkCardNameDuplicatedData(
lockId: state.lockId.value.toString(),
cardName: cardName,
);

View File

@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/card/addCardType/addCardType_state.dart';
import 'package:star_lock/tools/commonDataManage.dart';
import 'package:star_lock/tools/pickers/pickers.dart';
import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart';
@ -28,12 +29,11 @@ class AddCardPage extends StatefulWidget {
class _AddCardPageState extends State<AddCardPage>
with SingleTickerProviderStateMixin {
final logic = Get.put(AddCardTypeLogic());
final state = Get.find<AddCardTypeLogic>().state;
final AddCardTypeLogic logic = Get.put(AddCardTypeLogic());
final AddCardTypeState state = Get.find<AddCardTypeLogic>().state;
@override
void initState() {
// TODO: implement initState
super.initState();
state.tabController = TabController(
@ -63,7 +63,7 @@ class _AddCardPageState extends State<AddCardPage>
haveBack: true,
backgroundColor: AppColors.mainColor),
body: Column(
children: [
children: <Widget>[
_tabBar(),
_pageWidget(),
],
@ -78,7 +78,7 @@ class _AddCardPageState extends State<AddCardPage>
//
return SingleChildScrollView(
child: Column(
children: [
children: <Widget>[
perpetualKeyWidget(
TranslationLoader.lanKeys!.name!.tr,
TranslationLoader.lanKeys!.pleaseEnter!.tr,
@ -93,7 +93,7 @@ class _AddCardPageState extends State<AddCardPage>
//
return SingleChildScrollView(
child: Column(
children: [
children: <Widget>[
perpetualKeyWidget(
TranslationLoader.lanKeys!.name!.tr,
TranslationLoader.lanKeys!.pleaseEnter!.tr,
@ -110,7 +110,7 @@ class _AddCardPageState extends State<AddCardPage>
//
return SingleChildScrollView(
child: Column(
children: [
children: <Widget>[
perpetualKeyWidget(
TranslationLoader.lanKeys!.name!.tr,
TranslationLoader.lanKeys!.pleaseEnter!.tr,
@ -131,10 +131,10 @@ class _AddCardPageState extends State<AddCardPage>
Widget perpetualKeyWidget(
String titleStr, String rightTitle, TextEditingController controller) {
return Column(
children: [
children: <Widget>[
CommonItem(
leftTitel: titleStr,
rightTitle: "",
rightTitle: '',
isHaveRightWidget: true,
rightWidget: getTFWidget(rightTitle)),
Container(height: 10.h),
@ -145,17 +145,17 @@ class _AddCardPageState extends State<AddCardPage>
//
Widget keyTimeLimitWidget() {
return Column(
children: [
children: <Widget>[
Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.effectiveTime!.tr,
rightTitle: state.timeLimitBeginTime.value,
isHaveLine: true,
isHaveDirection: true,
action: () async {
PDuration selectDate = PDuration.parse(
final PDuration selectDate = PDuration.parse(
DateTime.parse(state.timeLimitBeginTime.value));
Pickers.showDatePicker(context,
selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (p) {
selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) {
state.timeLimitBeginTime.value =
DateTool().getYMDHNDateString(p, 1);
});
@ -165,10 +165,10 @@ class _AddCardPageState extends State<AddCardPage>
rightTitle: state.timeLimitEndTime.value,
isHaveDirection: true,
action: () {
PDuration selectDate =
final PDuration selectDate =
PDuration.parse(DateTime.tryParse(state.timeLimitEndTime.value));
Pickers.showDatePicker(context,
selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (p) {
selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) {
state.timeLimitEndTime.value =
DateTool().getYMDHNDateString(p, 1);
});
@ -181,16 +181,16 @@ class _AddCardPageState extends State<AddCardPage>
//
Widget keyCyclicDate() {
return Column(
children: [
children: <Widget>[
Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.periodValidity!.tr,
rightTitle:
"${state.cycleBeginTime.value}\n${state.cycleEndTime.value}",
'${state.cycleBeginTime.value}\n${state.cycleEndTime.value}',
isHaveDirection: true,
isHaveLine: true,
action: () async {
var result =
await Get.toNamed(Routers.seletKeyCyclicDatePage, arguments: {
final result =
await Get.toNamed(Routers.seletKeyCyclicDatePage, arguments: <String, Object>{
'validityValue': state.weekdaysList.value,
'starDate': state.cycleBeginTime.value,
'endDate': state.cycleEndTime.value,
@ -206,15 +206,15 @@ class _AddCardPageState extends State<AddCardPage>
}
})),
Obx(() => Visibility(
visible: state.weekdaysList.isNotEmpty ? true : false,
visible: state.weekdaysList.isNotEmpty,
child: CommonItem(
leftTitel: "有效日".tr,
rightTitle: state.weekdaysList.value.join(",").toString(),
leftTitel: '有效日'.tr,
rightTitle: state.weekdaysList.value.join(',').toString(),
isHaveDirection: true,
isHaveLine: true,
action: () async {
var result = await Get.toNamed(Routers.seletKeyCyclicDatePage,
arguments: {
final result = await Get.toNamed(Routers.seletKeyCyclicDatePage,
arguments: <String, Object>{
'validityValue': state.weekdaysList.value,
'starDate': state.cycleBeginTime.value,
'endDate': state.cycleEndTime.value,
@ -232,13 +232,13 @@ class _AddCardPageState extends State<AddCardPage>
Obx(() => Visibility(
visible: state.effectiveDateTime.value.isNotEmpty,
child: CommonItem(
leftTitel: "有效时间".tr,
leftTitel: '有效时间'.tr,
rightTitle:
"${state.effectiveDateTime.value}-${state.failureDateTime.value}",
'${state.effectiveDateTime.value}-${state.failureDateTime.value}',
isHaveDirection: true,
action: () async {
var result = await Get.toNamed(Routers.seletKeyCyclicDatePage,
arguments: {
final result = await Get.toNamed(Routers.seletKeyCyclicDatePage,
arguments: <String, Object>{
'validityValue': state.weekdaysList.value,
'starDate': state.cycleBeginTime.value,
'endDate': state.cycleEndTime.value,
@ -259,14 +259,12 @@ class _AddCardPageState extends State<AddCardPage>
Widget keyBottomWidget() {
return Column(
children: [
children: <Widget>[
Obx(() => Visibility(
visible: CommonDataManage().currentKeyInfo.isLockOwner == 1
? true
: false,
visible: CommonDataManage().currentKeyInfo.isLockOwner == 1,
child: CommonItem(
leftTitel: "是否为管理员".tr,
rightTitle: "",
leftTitel: '是否为管理员'.tr,
rightTitle: '',
isTipsImg: false,
isHaveRightWidget: true,
rightWidget:
@ -274,7 +272,7 @@ class _AddCardPageState extends State<AddCardPage>
SizedBox(height: 10.h),
Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.stressCard!.tr,
rightTitle: "",
rightTitle: '',
isTipsImg: false,
isHaveRightWidget: true,
rightWidget: SizedBox(
@ -291,17 +289,17 @@ class _AddCardPageState extends State<AddCardPage>
SubmitBtn(
btnName: TranslationLoader.lanKeys!.next!.tr,
onClick: () async {
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) {
if (state.nameController.text.isEmpty) {
logic.showToast("请输入姓名".tr);
logic.showToast('请输入姓名'.tr);
return;
}
logic.checkCardNameDuplicated(state.nameController.text);
} else {
// Get.toNamed(Routers.selectLockTypePage);
logic.showToast("演示模式".tr);
logic.showToast('演示模式'.tr);
}
}),
],
@ -318,7 +316,7 @@ class _AddCardPageState extends State<AddCardPage>
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
children: <Widget>[
Expanded(
child: TextField(
//
@ -368,7 +366,7 @@ class _AddCardPageState extends State<AddCardPage>
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: state.isStressFingerprint.value,
onChanged: (value) {
onChanged: (bool value) {
state.isStressFingerprint.value = value;
},
);
@ -381,34 +379,34 @@ class _AddCardPageState extends State<AddCardPage>
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: state.isAdministrator.value,
onChanged: (value) {
onChanged: (bool value) {
state.isAdministrator.value = value;
},
);
}
final List<ItemView> _itemTabs = <ItemView>[
ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, selectType: "0"),
ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, selectType: "1"),
ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, selectType: '0'),
ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, selectType: '1'),
ItemView(
title: TranslationLoader.lanKeys!.circulation!.tr, selectType: "2"),
title: TranslationLoader.lanKeys!.circulation!.tr, selectType: '2'),
];
final List<ItemView> _fromCheckInTypeItemTabs = <ItemView>[
ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, selectType: "0"),
ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, selectType: "1"),
ItemView(title: TranslationLoader.lanKeys!.permanent!.tr, selectType: '0'),
ItemView(title: TranslationLoader.lanKeys!.timeLimit!.tr, selectType: '1'),
];
TabBar _tabBar() {
return TabBar(
controller: state.tabController,
onTap: (index) {
onTap: (int index) {
FocusScope.of(context).requestFocus(FocusNode());
},
tabs: state.fromType.value == 1
? _itemTabs.map((ItemView item) => _tab(item)).toList()
? _itemTabs.map(_tab).toList()
: _fromCheckInTypeItemTabs
.map((ItemView item) => _tab(item))
.map(_tab)
.toList(),
isScrollable: true,
indicatorColor: Colors.red,
@ -443,10 +441,10 @@ class _AddCardPageState extends State<AddCardPage>
controller: state.tabController,
children: state.fromType.value == 1
? _itemTabs
.map((ItemView item) => Obx(() => indexChangeWidget()))
.map((ItemView item) => Obx(indexChangeWidget))
.toList()
: _fromCheckInTypeItemTabs
.map((ItemView item) => Obx(() => indexChangeWidget()))
.map((ItemView item) => Obx(indexChangeWidget))
.toList(),
),
);

View File

@ -5,31 +5,31 @@ import 'package:get/get.dart';
import '../../../../tools/dateTool.dart';
class AddCardTypeState{
AddCardTypeState() {
Map map = Get.arguments;
lockId.value = map['lockId'];
fromType.value = map['fromType'];
// 1 2
if(fromType.value == 2){
fromTypeTwoStaffName.value = map['fromTypeTwoStaffName']; //
}
}
final lockId = 0.obs;
final selectType = "0".obs;// 0 1 2
final fromType = 1.obs; // // 1 2
final isStressFingerprint = false.obs;
final isAdministrator = false.obs;//
final RxInt lockId = 0.obs;
final RxString selectType = '0'.obs;// 0 1 2
final RxInt fromType = 1.obs; // // 1 2
final RxBool isStressFingerprint = false.obs;
final RxBool isAdministrator = false.obs;//
var timeLimitBeginTime = DateTool().dateToYMDHNString(DateTime.now().millisecondsSinceEpoch.toString()).obs;//
var timeLimitEndTime = DateTool().dateToYMDHNString(DateTime.now().millisecondsSinceEpoch.toString()).obs;//
var cycleBeginTime = "".obs;//
var cycleEndTime = "".obs;//
var effectiveDateTime = "".obs;//
var failureDateTime = "".obs;//
var weekdaysList = [].obs;
var fromTypeTwoStaffName = "".obs; //
RxString timeLimitBeginTime = DateTool().dateToYMDHNString(DateTime.now().millisecondsSinceEpoch.toString()).obs;//
RxString timeLimitEndTime = DateTool().dateToYMDHNString(DateTime.now().millisecondsSinceEpoch.toString()).obs;//
RxString cycleBeginTime = ''.obs;//
RxString cycleEndTime = ''.obs;//
RxString effectiveDateTime = ''.obs;//
RxString failureDateTime = ''.obs;//
RxList weekdaysList = [].obs;
RxString fromTypeTwoStaffName = ''.obs; //
final TextEditingController nameController = TextEditingController();
late TabController tabController;
AddCardTypeState() {
Map map = Get.arguments;
lockId.value = map["lockId"];
fromType.value = map["fromType"];
// 1 2
if(fromType.value == 2){
fromTypeTwoStaffName.value = map["fromTypeTwoStaffName"]; //
}
}
}

View File

@ -77,7 +77,7 @@ class AddICCardLogic extends BaseGetXController{
useCountLimit:0xffff,
operate:0, // 0: 1 2: 3
isAdmin:state.isAdministrator.value == '2' ? 1 : 0,
isForce:state.isCoerced.value == '2' ? 1 : 0, //
isForce:state.isCoerced.value == '1' ? 1 : 0, //
isRound:state.selectType.value == '2' ? 1: 0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
startDate: int.parse(state.startDate.value)~/1000,
@ -151,8 +151,6 @@ class AddICCardLogic extends BaseGetXController{
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected){
cancelBlueConnetctToastTimer();
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
@ -170,7 +168,7 @@ class AddICCardLogic extends BaseGetXController{
useCountLimit:0xffff,
operate:0, // 0: 1 2: 3
isAdmin:state.isAdministrator.value == '2' ? 1 : 0,
isForce:state.isCoerced.value == '2' ? 1 : 0, //
isForce:state.isCoerced.value == '1' ? 1 : 0, //
isRound:state.selectType.value == '2' ? 1: 0, //
weekRound:DateTool().accordingTheCycleIntoTheCorrespondingNumber(state.weekDay.value), //
startDate: int.parse(state.startDate.value)~/1000,

View File

@ -3,6 +3,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/card/addICCard/addICCard_state.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../tools/appRouteObserver.dart';
@ -18,8 +19,8 @@ class AddICCardPage extends StatefulWidget {
}
class _AddICCardPageState extends State<AddICCardPage> with RouteAware {
final logic = Get.put(AddICCardLogic());
final state = Get.find<AddICCardLogic>().state;
final AddICCardLogic logic = Get.put(AddICCardLogic());
final AddICCardState state = Get.find<AddICCardLogic>().state;
@override
Widget build(BuildContext context) {
@ -31,7 +32,7 @@ class _AddICCardPageState extends State<AddICCardPage> with RouteAware {
backgroundColor: AppColors.mainColor,
),
body: ListView(
children: [
children: <Widget>[
SizedBox(height: 200.h),
Center(
child: Image.asset(
@ -60,8 +61,8 @@ class _AddICCardPageState extends State<AddICCardPage> with RouteAware {
child: Center(
child: Obx(() => Text(
state.ifConnectScuess.value
? "已连接到锁,请将卡靠近锁的读卡区".tr
: "尝试连接设备...".tr,
? '已连接到锁,请将卡靠近锁的读卡区'.tr
: '尝试连接设备...'.tr,
style: TextStyle(color: Colors.white, fontSize: 24.sp)))),
),
],
@ -71,7 +72,6 @@ class _AddICCardPageState extends State<AddICCardPage> with RouteAware {
@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
///
@ -80,7 +80,6 @@ class _AddICCardPageState extends State<AddICCardPage> with RouteAware {
@override
void dispose() {
// TODO: implement dispose
///
AppRouteObserver().routeObserver.unsubscribe(this);
super.dispose();

View File

@ -3,48 +3,48 @@ import 'package:get/get.dart';
import '../../../../tools/commonDataManage.dart';
class AddICCardState{
var ifConnectScuess = false.obs;
var ifCurrentScreen = true.obs; // ,
var ifAddState = false.obs;//
var addFingerprintProcessNumber = 0.obs;
final lockId = 0.obs;
final endDate = "".obs;
final addType = "".obs;
final cardName = "".obs;
final cardNumber = "".obs;
final cardType = "".obs;
final isCoerced = "".obs;
final isAdministrator = "".obs;
final startDate = "".obs;
final weekDay = [].obs;
final fromType = 0.obs;
final effectiveDateTime = "".obs; //
final failureDateTime = "".obs; //
final selectType = "0".obs; // 0 1 2
class AddICCardState{ // 0 1 2
AddICCardState() {
Map map = Get.arguments;
lockId.value = map["lockId"];
addType.value = map["addType"];
cardName.value = map["cardName"];
cardNumber.value = map["cardNumber"];
cardType.value = map["cardType"];
isCoerced.value = map["isCoerced"];
isAdministrator.value = map["isAdministrator"];
startDate.value = map["startDate"];
weekDay.value = map["weekDay"];
fromType.value = map["fromType"];
effectiveDateTime.value = map["effectiveTime"];
failureDateTime.value = map["failureTime"];
selectType.value = map["selectType"];
lockId.value = map['lockId'];
addType.value = map['addType'];
cardName.value = map['cardName'];
cardNumber.value = map['cardNumber'];
cardType.value = map['cardType'];
isCoerced.value = map['isCoerced'];
isAdministrator.value = map['isAdministrator'];
startDate.value = map['startDate'];
weekDay.value = map['weekDay'];
fromType.value = map['fromType'];
effectiveDateTime.value = map['effectiveTime'];
failureDateTime.value = map['failureTime'];
selectType.value = map['selectType'];
//
if (selectType.value == '2') {
endDate.value =
"${int.parse(map["endDate"]) + CommonDataManage().dayLatestTime}";
} else {
endDate.value = map["endDate"];
endDate.value = map['endDate'];
}
}
RxBool ifConnectScuess = false.obs;
RxBool ifCurrentScreen = true.obs; // ,
RxBool ifAddState = false.obs;//
RxInt addFingerprintProcessNumber = 0.obs;
final RxInt lockId = 0.obs;
final RxString endDate = ''.obs;
final RxString addType = ''.obs;
final RxString cardName = ''.obs;
final RxString cardNumber = ''.obs;
final RxString cardType = ''.obs;
final RxString isCoerced = ''.obs;
final RxString isAdministrator = ''.obs;
final RxString startDate = ''.obs;
final RxList weekDay = [].obs;
final RxInt fromType = 0.obs;
final RxString effectiveDateTime = ''.obs; //
final RxString failureDateTime = ''.obs; //
final RxString selectType = '0'.obs;
}

View File

@ -4,6 +4,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 'package:star_lock/tools/eventBusEventManage.dart';
@ -24,7 +25,7 @@ class CardDetailLogic 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);
@ -34,7 +35,7 @@ class CardDetailLogic extends BaseGetXController{
// ()
Future<void> _replyAddICCardBegin(Reply reply) async {
int status = reply.data[2];
final int status = reply.data[2];
switch(status){
case 0x00:
@ -49,17 +50,14 @@ class CardDetailLogic 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);
IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
@ -103,14 +101,14 @@ class CardDetailLogic 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.keyId.value.toString(),
@ -144,39 +142,39 @@ class CardDetailLogic extends BaseGetXController{
}
// iC卡
void editICCardData() async{
var entity = await ApiRepository.to.editICCardData(
Future<void> editICCardData() async{
final LoginEntity entity = await ApiRepository.to.editICCardData(
cardId: state.keyId.value.toString(),
lockId: state.fingerprintItemData.value.lockId.toString(),
weekDay: state.weekDay.value,
startDate: state.startDate.value,
endDate: state.endDate.value,
isCoerced: state.isStressCard.value ? "2" : "1",
isCoerced: state.isStressCard.value ? '1' : '2',
cardName: state.changeNameController.text,
changeType: "1",
changeType: '1',
startTime: int.parse(state.starTime.value),
endTime: int.parse(state.endTime.value),
cardType:state.keyType.value,
cardRight: state.isAdministrator.value ? 1 : 0,
);
if(entity.errorCode!.codeIsSuccessful){
showToast("修改成功".tr, something: (){
showToast('修改成功'.tr, something: (){
eventBus.fire(OtherTypeRefreshListEvent());
});
}
}
// IC卡
void deletICCardData() async{
var entity = await ApiRepository.to.deletIcCardData(
Future<void> deletICCardData() async{
final LoginEntity entity = await ApiRepository.to.deletIcCardData(
cardId: state.fingerprintItemData.value.cardId.toString(),
lockId: state.fingerprintItemData.value.lockId.toString(),
type: "0",
deleteType:"1"
type: '0',
deleteType:'1'
);
if(entity.errorCode!.codeIsSuccessful){
showToast("删除成功".tr, something: (){
Get.back(result: "addScuess");
showToast('删除成功'.tr, something: (){
Get.back(result: 'addScuess');
});
}
}
@ -184,33 +182,24 @@ class CardDetailLogic extends BaseGetXController{
String getKeyTypeShowDateTime(){
String useDateStr = '';
if(state.keyType.value == 1){
useDateStr = "永久".tr;
useDateStr = '永久'.tr;
}else if(state.keyType.value == 2){
useDateStr = "${DateTool().dateToYMDHNString(state.startDate.value)}\n${DateTool().dateToYMDHNString(state.endDate.value)}";
useDateStr = '${DateTool().dateToYMDHNString(state.startDate.value)}\n${DateTool().dateToYMDHNString(state.endDate.value)}';
} else if(state.keyType.value == 4){
useDateStr = "${DateTool().dateToYMDString(state.startDate.value)}\n${DateTool().dateToYMDString(state.endDate.value)}";
useDateStr = '${DateTool().dateToYMDString(state.startDate.value)}\n${DateTool().dateToYMDString(state.endDate.value)}';
}
return useDateStr;
}
@override
void onReady() {
// TODO: implement onReady
super.onReady();
_initReplySubscription();
}
@override
void onInit() {
// TODO: implement onInit
super.onInit();
}
@override
void onClose() {
// TODO: implement onClose
super.onClose();
_replySubscription.cancel();

View File

@ -1,16 +1,16 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/card/cardDetail/cardDetail_state.dart';
import '../../../../appRouters.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../blue/blue_manage.dart';
import '../../../../tools/appRouteObserver.dart';
import '../../../../tools/commonItem.dart';
import '../../../../tools/dateTool.dart';
import '../../../../tools/showTFView.dart';
import '../../../../tools/showTipView.dart';
import '../../../../tools/submitBtn.dart';
import '../../../../tools/titleAppBar.dart';
@ -25,20 +25,20 @@ class CardDetailPage extends StatefulWidget {
}
class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
final logic = Get.put(CardDetailLogic());
final state = Get.find<CardDetailLogic>().state;
final CardDetailLogic logic = Get.put(CardDetailLogic());
final CardDetailState state = Get.find<CardDetailLogic>().state;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
barTitle: "卡详情".tr,
barTitle: '卡详情'.tr,
haveBack: true,
backgroundColor: AppColors.mainColor,
),
body: ListView(
children: [
children: <Widget>[
Obx(() => CommonItem(
leftTitel:
"${TranslationLoader.lanKeys!.card!.tr}${TranslationLoader.lanKeys!.number!.tr}",
@ -54,9 +54,9 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
ShowTipView().showTFViewAlertDialog(
state.changeNameController,
"${TranslationLoader.lanKeys!.amend!.tr}${TranslationLoader.lanKeys!.name!.tr}",
"", () {
'', () {
if (state.changeNameController.text.isEmpty) {
logic.showToast("请输入姓名".tr);
logic.showToast('请输入姓名'.tr);
return;
}
Get.back();
@ -79,30 +79,30 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
action: () async {
if(state.keyType.value == 2 || state.keyType.value == 1){
//
var data = await Get.toNamed(Routers.otherTypeKeyChangeDatePage, arguments: {
"pushType": 0,
"fingerprintItemData": state.fingerprintItemData.value,
var data = await Get.toNamed(Routers.otherTypeKeyChangeDatePage, arguments: <String, Object>{
'pushType': 0,
'fingerprintItemData': state.fingerprintItemData.value,
});
if(data != null) {
setState(() {
state.startDate.value = data["beginTimeTimestamp"];
state.endDate.value = data["endTimeTimestamp"];
state.startDate.value = data['beginTimeTimestamp'];
state.endDate.value = data['endTimeTimestamp'];
state.keyType.value = 2;
});
}
}else if(state.keyType.value == 4){
//
var data = await Get.toNamed(Routers.otherTypeKeyChangeValidityDatePage, arguments: {
"pushType": 0,
"fingerprintItemData": state.fingerprintItemData.value,
var data = await Get.toNamed(Routers.otherTypeKeyChangeValidityDatePage, arguments: <String, Object>{
'pushType': 0,
'fingerprintItemData': state.fingerprintItemData.value,
});
if(data != null) {
setState(() {
state.startDate.value = data["starDate"];
state.endDate.value = data["endDate"];
state.starTime.value = data["starTime"];
state.endTime.value = data["endTime"];
state.weekDay.value = data["weekDay"];
state.startDate.value = data['starDate'];
state.endDate.value = data['endDate'];
state.starTime.value = data['starTime'];
state.endTime.value = data['endTime'];
state.weekDay.value = data['weekDay'];
});
}
@ -116,38 +116,38 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
isHaveDirection: true,
isHaveLine: true,
action: () async {
var data = await Get.toNamed(Routers.otherTypeKeyChangeValidityDatePage, arguments: {
"pushType": 0,
"fingerprintItemData": state.fingerprintItemData.value,
var data = await Get.toNamed(Routers.otherTypeKeyChangeValidityDatePage, arguments: <String, Object>{
'pushType': 0,
'fingerprintItemData': state.fingerprintItemData.value,
});
if(data != null) {
setState(() {
state.startDate.value = data["starDate"];
state.endDate.value = data["endDate"];
state.starTime.value = data["starTime"];
state.endTime.value = data["endTime"];
state.weekDay.value = data["weekDay"];
state.startDate.value = data['starDate'];
state.endDate.value = data['endDate'];
state.starTime.value = data['starTime'];
state.endTime.value = data['endTime'];
state.weekDay.value = data['weekDay'];
});
}
})))),
Obx(() => Visibility(
visible: state.keyType.value == 4 ? true : false,
child: Obx(() => CommonItem(
leftTitel: "有效时间".tr,
rightTitle: "${DateTool().dateToHNString(state.starTime.value)}-${DateTool().dateToHNString(state.endTime.value)}",
leftTitel: '有效时间'.tr,
rightTitle: '${DateTool().dateToHNString(state.starTime.value)}-${DateTool().dateToHNString(state.endTime.value)}',
isHaveDirection: true,
action: () async {
var data = await Get.toNamed(Routers.otherTypeKeyChangeValidityDatePage, arguments: {
"pushType": 0,
"fingerprintItemData": state.fingerprintItemData.value,
var data = await Get.toNamed(Routers.otherTypeKeyChangeValidityDatePage, arguments: <String, Object>{
'pushType': 0,
'fingerprintItemData': state.fingerprintItemData.value,
});
if(data != null) {
setState(() {
state.startDate.value = data["starDate"];
state.endDate.value = data["endDate"];
state.starTime.value = data["starTime"];
state.endTime.value = data["endTime"];
state.weekDay.value = data["validityValue"];
state.startDate.value = data['starDate'];
state.endDate.value = data['endDate'];
state.starTime.value = data['starTime'];
state.endTime.value = data['endTime'];
state.weekDay.value = data['validityValue'];
});
}
})))),
@ -165,15 +165,15 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
SizedBox(height: 10.h),
Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.stressCard!.tr,
rightTitle: "",
rightTitle: '',
isTipsImg: false,
isHaveLine: true,
isHaveRightWidget: true,
rightWidget: SizedBox(
width: 60.w, height: 50.h, child: _isStressFingerprint()))),
Obx(() => CommonItem(
leftTitel: "是否为管理员".tr,
rightTitle: "",
leftTitel: '是否为管理员'.tr,
rightTitle: '',
isTipsImg: false,
isHaveRightWidget: true,
rightWidget:
@ -181,10 +181,10 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
Container(height: 10.h),
CommonItem(
leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr,
rightTitle: "",
rightTitle: '',
isHaveDirection: true,
action: () {
Get.toNamed(Routers.lockOperatingRecordPage, arguments: {
Get.toNamed(Routers.lockOperatingRecordPage, arguments: <String, Object?>{
'type': 2,
'id': state.fingerprintItemData.value.cardId.toString(),
'recordName': state.fingerprintItemData.value.cardName
@ -200,7 +200,7 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
margin: EdgeInsets.only(left: 30.w, right: 30.w, top: 30.w, bottom: 30.w),
padding: EdgeInsets.only(top: 25.w, bottom: 25.w),
onClick: () {
ShowTipView().showIosTipWithContentDialog("确定要删除吗?".tr, () async {
ShowTipView().showIosTipWithContentDialog('确定要删除吗?'.tr, () async {
state.isDeletCard.value = true;
logic.senderAddICCard();
});
@ -217,7 +217,7 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: state.isStressCard.value,
onChanged: (value) {
onChanged: (bool value) {
setState(() {
state.isStressCard.value = value;
state.isDeletCard.value = false;
@ -234,7 +234,7 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: state.isAdministrator.value,
onChanged: (value) {
onChanged: (bool value) {
// state.isAdministrator.value = value;
// state.isDeletCard.value = false;
// logic.senderAddICCard();
@ -244,16 +244,13 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
///
AppRouteObserver().routeObserver.subscribe(this, ModalRoute.of(context)!);
}
@override
void dispose() {
// TODO: implement dispose
///
AppRouteObserver().routeObserver.unsubscribe(this);
super.dispose();
@ -271,7 +268,9 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
void didPop() {
super.didPop();
logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) EasyLoading.dismiss(animation: true);
if (EasyLoading.isShow) {
EasyLoading.dismiss(animation: true);
}
state.ifCurrentScreen.value = false;
state.sureBtnState.value = 0;
}
@ -288,7 +287,9 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
void didPushNext() {
super.didPushNext();
logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) EasyLoading.dismiss(animation: true);
if (EasyLoading.isShow) {
EasyLoading.dismiss(animation: true);
}
state.ifCurrentScreen.value = false;
state.sureBtnState.value = 0;
}

View File

@ -4,32 +4,10 @@ import 'package:get/get.dart';
import '../../fingerprint/fingerprintList/fingerprintListData_entity.dart';
class CardDetailState {
final fingerprintItemData = FingerprintItemData().obs;
final TextEditingController changeNameController = TextEditingController();
var ifCurrentScreen = true.obs; // ,
var sureBtnState = 0.obs; // 0() 1()
var isDeletCard = true.obs; //
var isStressCard = false.obs; //
var isAdministrator = false.obs; //
final typeNumber = "".obs; //
final typeName = "".obs; //
var startDate = "".obs; //
var endDate = "".obs; //
var starTime = "".obs; //
var endTime = "".obs; //
final keyType = 0.obs; // :1;23:4
var weekDay = [].obs; //
var adder = "".obs; //
var addTime = 0.obs; //
var keyId = 0.obs; // id
CardDetailState() {
Map map = Get.arguments;
if ((map["fingerprintItemData"] != null)) {
fingerprintItemData.value = map["fingerprintItemData"];
if (map['fingerprintItemData'] != null) {
fingerprintItemData.value = map['fingerprintItemData'];
keyId.value = fingerprintItemData.value.cardId!;
typeNumber.value = fingerprintItemData.value.cardNumber!;
typeName.value = fingerprintItemData.value.cardName!;
@ -41,11 +19,30 @@ class CardDetailState {
keyType.value = fingerprintItemData.value.cardType!;
adder.value = fingerprintItemData.value.senderUsername!;
addTime.value = fingerprintItemData.value.createDate!;
isStressCard.value =
fingerprintItemData.value.isCoerced! == 2 ? true : false;
isStressCard.value = fingerprintItemData.value.isCoerced! == 1;
weekDay.value = fingerprintItemData.value.weekDay!;
isAdministrator.value =
fingerprintItemData.value.cardRight! == 1 ? true : false;
isAdministrator.value = fingerprintItemData.value.cardRight! == 1;
}
}
final Rx<FingerprintItemData> fingerprintItemData = FingerprintItemData().obs;
final TextEditingController changeNameController = TextEditingController();
RxBool ifCurrentScreen = true.obs; // ,
RxInt sureBtnState = 0.obs; // 0() 1()
RxBool isDeletCard = true.obs; //
RxBool isStressCard = false.obs; //
RxBool isAdministrator = false.obs; //
final RxString typeNumber = ''.obs; //
final RxString typeName = ''.obs; //
RxString startDate = ''.obs; //
RxString endDate = ''.obs; //
RxString starTime = ''.obs; //
RxString endTime = ''.obs; //
final RxInt keyType = 0.obs; // :1;23:4
RxList weekDay = [].obs; //
RxString adder = ''.obs; //
RxInt addTime = 0.obs; //
RxInt keyId = 0.obs; // id
}

View File

@ -4,6 +4,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 'package:star_lock/tools/dateTool.dart';
import '../../../../blue/blue_manage.dart';
@ -26,26 +27,18 @@ class CardListLogic 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 SenderAddICCardWithTimeCycleCoercionReply) && (state.ifCurrentScreen.value == true)) {
_replyAddICCardBegin(reply);
}
// if(reply is SenderCheckingCardStatusReply) {
// _replyReferEventRecordNumber(reply);
// }
//
// if(reply is SenderCheckingUserInfoCountReply){
// _replyCheckingUserInfoCount(reply);
// }
});
}
// ()
Future<void> _replyAddICCardBegin(Reply reply) async {
int status = reply.data[2];
final int status = reply.data[2];
switch(status){
case 0x00:
@ -55,17 +48,14 @@ class CardListLogic 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);
IoSenderManage.senderAddCardWithTimeCycleCoercionCommand(
@ -80,8 +70,8 @@ class CardListLogic extends BaseGetXController {
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:"0",
endTime:"0",
startTime:'0',
endTime:'0',
needAuthor:1,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
@ -95,135 +85,6 @@ class CardListLogic extends BaseGetXController {
}
}
// //
// Future<void> _replyReferEventRecordNumber(Reply reply) async {
// int status = reply.data[2];
// switch(status){
// case 0x00:
// //
// // _getLockStatus();
// break;
// case 0x06:
// //
// break;
// default:
// //
// break;
// }
// }
//
// // ()
// Future<void> _replyCheckingUserInfoCount(Reply reply) async {
// int status = reply.data[2];
//
// //
// int userNum = reply.data[5];
//
// //
// int fingerNum = reply.data[6];
//
// //
// int pwdNum = reply.data[7];
//
// //
// int cardNum = reply.data[8];
//
// //
// int logsNum = reply.data[9];
//
// //
// int verNo = reply.data[10];
//
// //
// int maxAdminFingerNum = reply.data[11];
//
// //
// int maxUserFingerNum = reply.data[12];
//
// //
// int maxAdminPassNum = reply.data[13];
//
// //
// int maxUserPassNum = reply.data[14];
//
// //
// int maxAdminCardNum = reply.data[15];
//
// //
// int maxUserCardNum = reply.data[16];
//
// //
// var serialNo = reply.data.sublist(17, 21);
//
// switch(status){
// case 0x00:
// //
// // _getLockStatus();
// break;
// case 0x06:
// //
// break;
// default:
// //
// break;
// }
// }
// //
// Future<void> senderCheckingCardStatus() async {
// BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState state) async {
// if (state == BluetoothConnectionState.connected) {
// var privateKey = await Storage.getStringList(saveBluePrivateKey);
// List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
//
// var token = await Storage.getStringList(saveBlueToken);
// List<int> getTokenList = changeStringListToIntList(token!);
//
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> getPublicKeyList = changeStringListToIntList(publicKey!);
//
// IoSenderManage.senderCheckingCardStatusCommand(
// keyID:BlueManage().connectDeviceName,
// userID:await Storage.getUid(),
// role:0xff,
// cardCount:20,
// cardNo:1,
// token:getTokenList,
// needAuthor:1,
// publicKey:getPublicKeyList,
// privateKey:getPrivateKeyList,
// );
// }
// });
// }
//
// // ()
// Future<void> senderCheckingUserInfoCount() async {
// BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState state) async {
// if (state == BluetoothConnectionState.connected) {
// var privateKey = await Storage.getStringList(saveBluePrivateKey);
// List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
//
// var token = await Storage.getStringList(saveBlueToken);
// List<int> getTokenList = changeStringListToIntList(token!);
//
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> getPublicKeyList = changeStringListToIntList(publicKey!);
//
// IoSenderManage.senderCheckingUserInfoCountCommand(
// keyID:BlueManage().connectDeviceName,
// userID:await Storage.getUid(),
// role:0xff,
// nowTime:DateTime.now().millisecondsSinceEpoch~/1000,
// token:getTokenList,
// needAuthor:1,
// publicKey:getPublicKeyList,
// privateKey:getPrivateKeyList,
// );
// }
// });
// }
//
Future<void> senderAddICCard() async {
showEasyLoading();
@ -232,17 +93,14 @@ class CardListLogic extends BaseGetXController {
});
BlueManage().blueSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected){
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
final List<String>? signKey = await Storage.getStringList(saveBlueSignKey);
final List<int> signKeyDataList = changeStringListToIntList(signKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
final List<String>? privateKey = await Storage.getStringList(saveBluePrivateKey);
final List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var privateKey = await Storage.getStringList(saveBluePrivateKey);
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.deletKeyID,
@ -256,8 +114,8 @@ class CardListLogic extends BaseGetXController {
weekRound:0, //
startDate: 0x11223344,
endDate: 0x11223344,
startTime:"0",
endTime:"0",
startTime:'0',
endTime:'0',
needAuthor:1,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
@ -276,7 +134,7 @@ class CardListLogic extends BaseGetXController {
// IC卡列表
Future<FingerprintListDataEntity> getICCardListData() async{
FingerprintListDataEntity entity = await ApiRepository.to.getICCardListData(
final FingerprintListDataEntity entity = await ApiRepository.to.getICCardListData(
lockId: state.lockId.value.toString(),
pageNo: pageNo.toString(),
pageSize: pageSize,
@ -297,27 +155,27 @@ class CardListLogic extends BaseGetXController {
}
// IC卡
void deletICCardData() async{
var cardId = "";
var type = "1";
Future<void> deletICCardData() async{
String cardId = '';
String type = '1';
if(state.isDeletAll == false){
cardId = state.deletKeyID;
type = "0";
type = '0';
}
var entity = await ApiRepository.to.deletIcCardData(
final LoginEntity entity = await ApiRepository.to.deletIcCardData(
cardId: cardId,
lockId: state.lockId.value.toString(),
type: type,
deleteType:"1"
deleteType:'1'
);
if(entity.errorCode!.codeIsSuccessful){
if(state.isDeletAll == false){
showToast("删除成功".tr, something: (){
showToast('删除成功'.tr, something: (){
pageNo = 1;
getICCardListData();
});
}else{
showToast("重置成功".tr, something: (){
showToast('重置成功'.tr, something: (){
pageNo = 1;
getICCardListData();
});
@ -328,44 +186,43 @@ class CardListLogic extends BaseGetXController {
//
late StreamSubscription _teamEvent;
void _initRefreshAction() {
_teamEvent = eventBus.on<OtherTypeRefreshListEvent>().listen((event) {
_teamEvent = eventBus.on<OtherTypeRefreshListEvent>().listen((OtherTypeRefreshListEvent event) {
pageNo = 1;
getICCardListData();
});
}
String getKeyType(FingerprintItemData fingerprintItemData){
var keyTypeStr = "";//
String keyTypeStr = '';//
if(fingerprintItemData.cardStatus == 1){
if(fingerprintItemData.startDate! > DateTime.now().millisecondsSinceEpoch){
keyTypeStr = "未生效".tr;
keyTypeStr = '未生效'.tr;
}
}else if(fingerprintItemData.cardStatus == 2){
keyTypeStr = "已失效".tr;
keyTypeStr = '已失效'.tr;
}
return keyTypeStr;
}
String getKeyDateType(FingerprintItemData fingerprintItemData){
var keyDateTypeStr = "";// :1;23:4
String keyDateTypeStr = '';// :1;23:4
if(fingerprintItemData.cardType! == 1){
keyDateTypeStr = "${DateTool().dateToYMDHNString(fingerprintItemData.createDate.toString())} 永久";
keyDateTypeStr = '${DateTool().dateToYMDHNString(fingerprintItemData.createDate.toString())} 永久';
}else if(fingerprintItemData.cardType! == 2){
keyDateTypeStr = "${DateTool().dateToYMDHNString(fingerprintItemData.startDate.toString())} - ${DateTool().dateToYMDHNString(fingerprintItemData.endDate.toString())} 限时";
keyDateTypeStr = '${DateTool().dateToYMDHNString(fingerprintItemData.startDate.toString())} - ${DateTool().dateToYMDHNString(fingerprintItemData.endDate.toString())} 限时';
}else if(fingerprintItemData.cardType! == 4){
keyDateTypeStr = "${DateTool().dateToYMDString(fingerprintItemData.startDate.toString())}-${DateTool().dateToYMDString(fingerprintItemData.endDate.toString())} 循环";
keyDateTypeStr = '${DateTool().dateToYMDString(fingerprintItemData.startDate.toString())}-${DateTool().dateToYMDString(fingerprintItemData.endDate.toString())} 循环';
}
return keyDateTypeStr;
}
@override
Future<void> onReady() async {
// TODO: implement onReady
super.onReady();
//
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if(isDemoMode == false){
_initReplySubscription();
@ -375,16 +232,14 @@ class CardListLogic extends BaseGetXController {
@override
Future<void> onInit() async {
// TODO: implement onInit
super.onInit();
}
@override
Future<void> onClose() async {
// TODO: implement onClose
super.onClose();
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if(isDemoMode == false) {
_replySubscription.cancel();
_teamEvent.cancel();

View File

@ -4,10 +4,10 @@ import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/card/cardList/cardList_state.dart';
import '../../../../appRouters.dart';
import '../../../../app_settings/app_colors.dart';
import '../../../../blue/blue_manage.dart';
import '../../../../tools/EasyRefreshTool.dart';
import '../../../../tools/appRouteObserver.dart';
import '../../../../tools/keySearchWidget.dart';
@ -28,14 +28,16 @@ class CardListPage extends StatefulWidget {
}
class _CardListPageState extends State<CardListPage> with RouteAware {
final logic = Get.put(CardListLogic());
final state = Get.find<CardListLogic>().state;
final CardListLogic logic = Get.put(CardListLogic());
final CardListState state = Get.find<CardListLogic>().state;
Future<void> getHttpData() async {
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) {
logic.getICCardListData().then((FingerprintListDataEntity value){
if(mounted) setState(() {});
if(mounted) {
setState(() {});
}
});
}
}
@ -56,24 +58,24 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
barTitle: TranslationLoader.lanKeys!.card!.tr,
haveBack: true,
backgroundColor: AppColors.mainColor,
actionsList: [
actionsList: <Widget>[
TextButton(
child: Text(
TranslationLoader.lanKeys!.reset!.tr,
style: TextStyle(color: Colors.white, fontSize: 24.sp),
),
onPressed: () async {
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) {
ShowTipView().showIosTipWithContentDialog("重置后,该锁的卡都将被删除哦,确认要重置吗?".tr, () async {
ShowTipView().showIosTipWithContentDialog('重置后,该锁的卡都将被删除哦,确认要重置吗?'.tr, () async {
state.isDeletAll = true;
state.deletKeyID = "0";
state.deletKeyID = '0';
state.deletCardNo = 0;
logic.senderAddICCard();
});
// showDeletAlertDialog(context);
} else {
logic.showToast("演示模式".tr);
logic.showToast('演示模式'.tr);
}
},
),
@ -88,7 +90,7 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
getHttpData();
},
child: Column(
children: [
children: <Widget>[
KeySearchWidget(
editingController: state.searchController,
onSubmittedAction: () {
@ -101,9 +103,9 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
AddBottomWhiteBtn(
btnName: '${TranslationLoader.lanKeys!.add!.tr}${TranslationLoader.lanKeys!.card!.tr}',
onClick: () async {
var data = await Get.toNamed(Routers.addCardPage, arguments: {
"lockId": state.lockId.value,
"fromType": 1 // 1 2
final data = await Get.toNamed(Routers.addCardPage, arguments: <String, int>{
'lockId': state.lockId.value,
'fromType': 1 // 1 2
});
if (data != null) {
logic.pageNo = 1;
@ -125,17 +127,17 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
? SlidableAutoCloseBehavior(
child: ListView.separated(
itemCount: state.fingerprintItemListData.value.length,
itemBuilder: (c, index) {
FingerprintItemData fingerprintItemData = state.fingerprintItemListData.value[index];
itemBuilder: (BuildContext c, int index) {
final FingerprintItemData fingerprintItemData = state.fingerprintItemListData.value[index];
return Slidable(
key:ValueKey(fingerprintItemData.fingerprintId),
endActionPane: ActionPane(
extentRatio: 0.2,
motion: const ScrollMotion(),
children: [
children: <Widget>[
SlidableAction(
onPressed: (BuildContext context){
ShowTipView().showIosTipWithContentDialog("确定要删除吗?".tr, () async {
ShowTipView().showIosTipWithContentDialog('确定要删除吗?'.tr, () async {
state.isDeletAll = false;
state.deletKeyID = fingerprintItemData.cardId.toString();
state.deletCardNo = int.parse(fingerprintItemData.cardNumber!);
@ -154,9 +156,9 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
fingerprintItemData.cardName!,
logic.getKeyType(fingerprintItemData),
logic.getKeyDateType(fingerprintItemData), () async {
var data = await Get.toNamed(
Routers.cardDetailPage, arguments: {
"fingerprintItemData": fingerprintItemData,
final data = await Get.toNamed(
Routers.cardDetailPage, arguments: <String, FingerprintItemData>{
'fingerprintItemData': fingerprintItemData,
});
if (data != null) {
logic.pageNo = 1;
@ -183,21 +185,21 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
// margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w),
color: Colors.white,
child: Row(
children: [
children: <Widget>[
SizedBox(width: 30.w),
Image.asset(lockTypeIcon, width: 60.w, height: 60.w),
SizedBox(width: 20.w),
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
children: <Widget>[
Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
children: <Widget>[
SizedBox(
width: 1.sw - 110.w - 100.w,
child: Row(
children: [
children: <Widget>[
Flexible(
child: Text(
lockTypeTitle,
@ -218,7 +220,7 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
SizedBox(height: 5.h),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
children: <Widget>[
Flexible(
child: Text(showTime,
maxLines: 1,
@ -240,65 +242,8 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
);
}
// void showIosTipViewDialog(FingerprintItemData fingerprintItemData) {
// showDialog(
// context: Get.context!,
// builder: (BuildContext context) {
// return ShowIosTipView(
// title: "提示",
// tipTitle: "确定要删除吗?",
// sureClick: () async {
// Get.back();
// state.isDeletCardData = true;
// state.isDeletAll = false;
// state.deletUserID = (await Storage.getUid())!;
// state.deletKeyID = fingerprintItemData.cardId.toString();
// state.deletCardNo = int.parse(fingerprintItemData.cardNumber!);
// logic.senderAddICCard();
// },
// cancelClick: () {
// Get.back();
// },
// );
// },
// );
// }
// void showDeletAlertDialog(BuildContext context) {
// showCupertinoDialog(
// context: context,
// builder: (context) {
// return CupertinoAlertDialog(
// title: const Text("提示"),
// content: const Text('重置后,该锁的卡都将被删除哦,确认要重置吗?'),
// actions: [
// CupertinoDialogAction(
// child: Text(TranslationLoader.lanKeys!.cancel!.tr),
// onPressed: () {
// Navigator.pop(context);
// },
// ),
// CupertinoDialogAction(
// child: Text(TranslationLoader.lanKeys!.sure!.tr),
// onPressed: () {
// Navigator.pop(context);
// state.isDeletCardData = true;
// state.isDeletAll = true;
// state.deletKeyID = "1";
// state.deletUserID = "DeleteAll!@#";
// state.deletCardNo = 255;
// logic.senderAddICCard();
// },
// ),
// ],
// );
// },
// );
// }
@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
///
@ -307,7 +252,6 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
@override
void dispose() {
// TODO: implement dispose
///
AppRouteObserver().routeObserver.unsubscribe(this);
super.dispose();
@ -325,7 +269,9 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
void didPop() {
super.didPop();
logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) EasyLoading.dismiss(animation: true);
if (EasyLoading.isShow) {
EasyLoading.dismiss(animation: true);
}
state.ifCurrentScreen.value = false;
}
@ -341,7 +287,9 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
void didPushNext() {
super.didPushNext();
logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) EasyLoading.dismiss(animation: true);
if (EasyLoading.isShow) {
EasyLoading.dismiss(animation: true);
}
state.ifCurrentScreen.value = false;
}
}

View File

@ -4,21 +4,20 @@ import 'package:get/get.dart';
import '../../fingerprint/fingerprintList/fingerprintListData_entity.dart';
class CardListState {
final lockId = 0.obs;
//
var isDeletAll = false;
var deletKeyID = "0";
var deletCardNo = 0;
final fingerprintItemListData = <FingerprintItemData>[].obs;
// var fingerprintDeletItem = FingerprintItemData();
final TextEditingController searchController = TextEditingController();
var ifCurrentScreen = true.obs; // ,
CardListState() {
Map map = Get.arguments;
lockId.value = map["lockId"];
lockId.value = map['lockId'];
}
final RxInt lockId = 0.obs;
//
bool isDeletAll = false;
String deletKeyID = '0';
int deletCardNo = 0;
final RxList<FingerprintItemData> fingerprintItemListData = <FingerprintItemData>[].obs;
final TextEditingController searchController = TextEditingController();
RxBool ifCurrentScreen = true.obs;// ,
}

View File

@ -14,6 +14,7 @@ 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';
import '../../../../mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart';
import '../../../../tools/eventBusEventManage.dart';
import '../../../../tools/storage.dart';
import '../passwordKey_perpetual/passwordKeyEntity.dart';
@ -24,16 +25,13 @@ class PasswordKeyListLogic 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 SenderCustomPasswordsReply) &&
(state.ifCurrentScreen.value == true)) {
if ((reply is SenderCustomPasswordsReply) && (state.ifCurrentScreen.value == true)) {
_replyAddPassword(reply);
}
if ((reply is SenderResetPasswordsReply) &&
(state.ifCurrentScreen.value == true)) {
if ((reply is SenderResetPasswordsReply) && (state.ifCurrentScreen.value == true)) {
_replyResetPassword(reply);
}
});
@ -41,7 +39,7 @@ class PasswordKeyListLogic extends BaseGetXController {
// ()
Future<void> _replyAddPassword(Reply reply) async {
int status = reply.data[2];
final int status = reply.data[2];
switch (status) {
case 0x00:
@ -51,18 +49,18 @@ class PasswordKeyListLogic 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(
keyID: "0",
keyID: '0',
userID: (await Storage.getUid())!,
pwdNo: state.itemData.isCustom == 1 ? state.pwdNo : 0,
pwd: state.pwd, //state.deletPWD,
@ -86,7 +84,7 @@ class PasswordKeyListLogic extends BaseGetXController {
//
Future<void> _replyResetPassword(Reply reply) async {
int status = reply.data[2];
final int status = reply.data[2];
switch (status) {
case 0x00:
//
@ -97,18 +95,18 @@ class PasswordKeyListLogic 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.senderResetPasswordsCommand(
keyID: "0",
keyID: '0',
userID: (await Storage.getUid())!,
needAuthor: 1,
isBeforeAddUser: false,
@ -133,17 +131,17 @@ class PasswordKeyListLogic 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: "0",
keyID: '0',
userID: (await Storage.getUid())!,
pwdNo: state.itemData.isCustom == 1 ? state.pwdNo : 0,
pwd: state.pwd, //state.deletPWD,
@ -184,17 +182,17 @@ class PasswordKeyListLogic 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.senderResetPasswordsCommand(
keyID: "0",
keyID: '0',
userID: (await Storage.getUid())!,
needAuthor: 1,
isBeforeAddUser: false,
@ -274,11 +272,11 @@ class PasswordKeyListLogic extends BaseGetXController {
//
Future<void> resetPasswordKeyListRequest() async {
PasswordKeyListEntity entity = await ApiRepository.to.keyboardPwdReset(
final PasswordKeyListEntity entity = await ApiRepository.to.keyboardPwdReset(
lockId: state.keyInfo.value.lockId.toString(),
passwordKey: state.encrpyKey);
if (entity.errorCode!.codeIsSuccessful) {
showToast("重置成功".tr, something: () {
showToast('重置成功'.tr, something: () {
pageNo = 1;
mockNetworkDataRequest(isRefresh: true);
});
@ -287,30 +285,38 @@ class PasswordKeyListLogic 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.lockId!.toString(),
keyboardPwdId: state.itemData.keyboardPwdId!.toString(),
deleteType: 1);
if (entity.errorCode!.codeIsSuccessful) {
showToast("删除成功".tr, something: () {
showToast('删除成功'.tr, something: () {
pageNo = 1;
mockNetworkDataRequest(isRefresh: true);
});
}
}
//
Future<void> getUserInfoRequest() async {
final MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo();
if (entity.errorCode!.codeIsSuccessful) {
senderResetPasswords();
}
}
//使
String getUseDateStr(PasswordKeyListItem indexEntity) {
int? getPwdType = indexEntity.keyboardPwdType;
final int? getPwdType = indexEntity.keyboardPwdType;
String useDateStr = '';
DateTime sendDateStr =
final DateTime sendDateStr =
DateTime.fromMillisecondsSinceEpoch(indexEntity.sendDate!);
DateTime startDateStr =
final DateTime startDateStr =
DateTime.fromMillisecondsSinceEpoch(indexEntity.startDate!);
DateTime endDateStr =
final DateTime endDateStr =
DateTime.fromMillisecondsSinceEpoch(indexEntity.endDate!);
int starHour = indexEntity.hoursStart!;
int endHour = indexEntity.hoursEnd!;
final int starHour = indexEntity.hoursStart!;
final int endHour = indexEntity.hoursEnd!;
// AppLog.log('indexEntity.keyboardPwdName:${indexEntity.keyboardPwdName} indexEntity.keyboardPwdStatus:${indexEntity.keyboardPwdStatus} indexEntity.startDate!${indexEntity.startDate!} indexEntity.endDate!${indexEntity.endDate!} starHour:$starHour endHour:$endHour');
switch (getPwdType) {
@ -385,7 +391,7 @@ class PasswordKeyListLogic extends BaseGetXController {
void _getPasswordListRefreshUIAction() {
// eventBus
_getPasswordListRefreshUIEvent =
eventBus.on<GetPasswordListRefreshUI>().listen((event) {
eventBus.on<GetPasswordListRefreshUI>().listen((GetPasswordListRefreshUI event) {
mockNetworkDataRequest(isRefresh: true);
});
}

View File

@ -1,9 +1,12 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart';
import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_logic.dart';
import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_state.dart';
import 'package:star_lock/main/lockMian/entity/lockListInfo_entity.dart';
import 'package:star_lock/tools/noData.dart';
import 'package:star_lock/tools/storage.dart';
import '../../../../appRouters.dart';
@ -25,11 +28,11 @@ class PasswordKeyListPage extends StatefulWidget {
class _PasswordKeyListPageState extends State<PasswordKeyListPage>
with RouteAware {
final logic = Get.put(PasswordKeyListLogic());
final state = Get.find<PasswordKeyListLogic>().state;
final PasswordKeyListLogic logic = Get.put(PasswordKeyListLogic());
final PasswordKeyListState state = Get.find<PasswordKeyListLogic>().state;
Future<void> getHttpData({required bool isRefresh}) async {
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) {
logic
.mockNetworkDataRequest(isRefresh: isRefresh)
@ -54,25 +57,22 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
barTitle: TranslationLoader.lanKeys!.password!.tr,
haveBack: true,
backgroundColor: AppColors.mainColor,
actionsList: [
actionsList: <Widget>[
TextButton(
child: Text(
TranslationLoader.lanKeys!.reset!.tr,
style: TextStyle(color: Colors.white, fontSize: 24.sp),
),
onPressed: () async {
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
final bool? isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) {
if (state.itemDataList.isEmpty) {
logic.showToast("暂无密码,无需重置".tr);
logic.showToast('暂无密码,无需重置'.tr);
return;
}
ShowTipView().showIosTipWithContentDialog('该锁的密码都将被删除'.tr,
() {
logic.senderResetPasswords();
});
ShowTipView().showIosTipWithContentDialog('该锁的密码都将被删除'.tr, logic.getUserInfoRequest);
} else {
logic.showToast("演示模式".tr);
logic.showToast('演示模式'.tr);
}
},
),
@ -86,7 +86,7 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
getHttpData(isRefresh: false);
},
child: Column(
children: [
children: <Widget>[
// _searchWidget(),
KeySearchWidget(
editingController: state.searchController,
@ -106,8 +106,8 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
onClick: () {
Navigator.pushNamed(
context, Routers.passwordKeyPerpetualPage,
arguments: {"keyInfo": state.keyInfo.value})
.then((val) {
arguments: <String, LockListInfoItemEntity>{'keyInfo': state.keyInfo.value})
.then((Object? val) {
if (val != null) {
getHttpData(isRefresh: true);
}
@ -132,10 +132,10 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
: SlidableAutoCloseBehavior(
child: ListView.separated(
itemCount: state.itemDataList.value.length,
itemBuilder: (c, index) {
PasswordKeyListItem passwordKeyListItem =
itemBuilder: (BuildContext c, int index) {
final PasswordKeyListItem passwordKeyListItem =
state.itemDataList.value[index];
String useDateStr =
final String useDateStr =
logic.getUseDateStr(passwordKeyListItem); // 使
return Slidable(
@ -143,11 +143,10 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
endActionPane: ActionPane(
extentRatio: 0.2,
motion: const ScrollMotion(),
children: [
children: <Widget>[
SlidableAction(
onPressed: (BuildContext context) {
ShowTipView().showIosTipWithContentDialog(
"确定要删除吗?".tr, () async {
ShowTipView().showIosTipWithContentDialog('确定要删除吗?'.tr, () async {
state.itemData = passwordKeyListItem;
state.pwdNo = passwordKeyListItem.pwdUserNo!;
state.pwd = passwordKeyListItem.keyboardPwd!;
@ -163,9 +162,8 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
),
child: _electronicKeyItem(index, 'images/icon_password.png',
passwordKeyListItem.keyboardPwdName!, useDateStr, () {
Navigator.pushNamed(context, Routers.passwordKeyDetailPage,
arguments: {"itemData": passwordKeyListItem})
.then((val) {
Navigator.pushNamed(context, Routers.passwordKeyDetailPage, arguments: <String, PasswordKeyListItem>{'itemData': passwordKeyListItem})
.then((Object? val) {
if (val != null) {
getHttpData(isRefresh: true);
}
@ -183,9 +181,8 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
));
}
Widget _electronicKeyItem(int itemIndex, String lockTypeIcon,
String lockTypeTitle, String useDateStr, Function()? action) {
PasswordKeyListItem passwordKeyListItem = state.itemDataList[itemIndex];
Widget _electronicKeyItem(int itemIndex, String lockTypeIcon, String lockTypeTitle, String useDateStr, Function()? action) {
final PasswordKeyListItem passwordKeyListItem = state.itemDataList[itemIndex];
return GestureDetector(
onTap: action,
@ -194,7 +191,7 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
// margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 20.w),
color: Colors.white,
child: Row(
children: [
children: <Widget>[
SizedBox(width: 30.w),
Image.asset(
lockTypeIcon,
@ -207,14 +204,14 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
children: <Widget>[
Row(
children: [
children: <Widget>[
SizedBox(
width: passwordKeyListItem.keyboardPwdStatus == 2
? 1.sw - 110.w - 100.w
: 1.sw - 110.w - 50.w,
child: Row(children: [
child: Row(children: <Widget>[
Flexible(
child: Text(lockTypeTitle,
maxLines: 1,
@ -226,20 +223,18 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
]),
),
SizedBox(width: 10.w),
passwordKeyListItem.keyboardPwdStatus == 2
? Text(
if (passwordKeyListItem.keyboardPwdStatus == 2) Text(
'已过期'.tr,
style:
TextStyle(color: Colors.red, fontSize: 20.sp),
)
: Container(),
) else Container(),
// SizedBox(width: 15.w)
],
),
SizedBox(height: 5.h),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
children: <Widget>[
Flexible(
child: Text(
useDateStr,
@ -265,7 +260,6 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies
super.didChangeDependencies();
///
@ -274,7 +268,6 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage>
@override
void dispose() {
// TODO: implement dispose
///
AppRouteObserver().routeObserver.unsubscribe(this);
super.dispose();

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:get/get.dart';
@ -9,6 +10,7 @@ import 'package:star_lock/tools/EasyRefreshTool.dart';
import 'package:star_lock/tools/noData.dart';
import '../../../../../appRouters.dart';
import '../../../../../tools/appRouteObserver.dart';
import '../../../../../tools/showTipView.dart';
import 'expireCard_entity.dart';
import 'expireCard_logic.dart';
@ -20,7 +22,7 @@ class ExpireCardPage extends StatefulWidget {
State<ExpireCardPage> createState() => _ExpireCardPageState();
}
class _ExpireCardPageState extends State<ExpireCardPage> {
class _ExpireCardPageState extends State<ExpireCardPage> with RouteAware {
final ExpireCardLogic logic = Get.put(ExpireCardLogic());
final ExpireCardState state = Get.find<ExpireCardLogic>().state;
@ -227,4 +229,57 @@ class _ExpireCardPageState extends State<ExpireCardPage> {
// }
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
///
AppRouteObserver().routeObserver.subscribe(this, ModalRoute.of(context)!);
}
@override
void dispose() {
///
AppRouteObserver().routeObserver.unsubscribe(this);
super.dispose();
}
///
@override
void didPush() {
super.didPush();
state.ifCurrentScreen.value = true;
}
///
@override
void didPop() {
super.didPop();
logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) {
EasyLoading.dismiss(animation: true);
}
state.ifCurrentScreen.value = false;
state.sureBtnState.value = 0;
}
///
@override
void didPopNext() {
super.didPopNext();
state.ifCurrentScreen.value = true;
}
///
@override
void didPushNext() {
super.didPushNext();
logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) {
EasyLoading.dismiss(animation: true);
}
state.ifCurrentScreen.value = false;
state.sureBtnState.value = 0;
}
}

View File

@ -35,7 +35,6 @@ class ExpireFingerprintLogic extends BaseGetXController {
//
Future<void> _replyAddFingerprintBegin(Reply reply) async {
final int status = reply.data[2];
switch(status){
case 0x00:
//
@ -72,7 +71,7 @@ class ExpireFingerprintLogic extends BaseGetXController {
privateKey:getPrivateKeyList,
token: getTokenList,
isAdmin: 0,
operate: 0,
operate: 2,
isBeforeAddUser: true
);
break;
@ -108,7 +107,7 @@ class ExpireFingerprintLogic extends BaseGetXController {
keyID:state.deletExpireFingerprintItemEntity.fingerprintId.toString(),
userID:await Storage.getUid(),
fingerNo:int.parse(state.deletExpireFingerprintItemEntity.fingerprintNumber!),
useCountLimit:0xff,
useCountLimit:0xffff,
isForce:0, //
isRound:0, //
weekRound:0, //
@ -121,7 +120,7 @@ class ExpireFingerprintLogic extends BaseGetXController {
privateKey:getPrivateKeyList,
token: getTokenList,
isAdmin: 0,
operate: 0,
operate: 2,
isBeforeAddUser: true
);
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) {

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:get/get.dart';
@ -9,6 +10,7 @@ import 'package:star_lock/tools/showTipView.dart';
import '../../../../../appRouters.dart';
import '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/EasyRefreshTool.dart';
import '../../../../../tools/appRouteObserver.dart';
import 'expireFingerprint_entity.dart';
import 'expireFingerprint_logic.dart';
@ -19,7 +21,7 @@ class ExpireFingerprintPage extends StatefulWidget {
State<ExpireFingerprintPage> createState() => _ExpireFingerprintPageState();
}
class _ExpireFingerprintPageState extends State<ExpireFingerprintPage> {
class _ExpireFingerprintPageState extends State<ExpireFingerprintPage> with RouteAware {
final ExpireFingerprintLogic logic = Get.put(ExpireFingerprintLogic());
final ExpireFingerprintState state = Get.find<ExpireFingerprintLogic>().state;
@ -214,4 +216,57 @@ class _ExpireFingerprintPageState extends State<ExpireFingerprintPage> {
}
// }
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
///
AppRouteObserver().routeObserver.subscribe(this, ModalRoute.of(context)!);
}
@override
void dispose() {
///
AppRouteObserver().routeObserver.unsubscribe(this);
super.dispose();
}
///
@override
void didPush() {
super.didPush();
state.ifCurrentScreen.value = true;
}
///
@override
void didPop() {
super.didPop();
logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) {
EasyLoading.dismiss(animation: true);
}
state.ifCurrentScreen.value = false;
state.sureBtnState.value = 0;
}
///
@override
void didPopNext() {
super.didPopNext();
state.ifCurrentScreen.value = true;
}
///
@override
void didPushNext() {
super.didPushNext();
logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) {
EasyLoading.dismiss(animation: true);
}
state.ifCurrentScreen.value = false;
state.sureBtnState.value = 0;
}
}

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:get/get.dart';
@ -9,6 +10,7 @@ import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expirePassw
import 'package:star_lock/tools/EasyRefreshTool.dart';
import 'package:star_lock/tools/noData.dart';
import '../../../../../tools/appRouteObserver.dart';
import '../../../../../tools/showTipView.dart';
import 'expirePassword_entity.dart';
import 'expirePassword_logic.dart';
@ -20,7 +22,7 @@ class ExpirePasswordPage extends StatefulWidget {
State<ExpirePasswordPage> createState() => _ExpirePasswordPageState();
}
class _ExpirePasswordPageState extends State<ExpirePasswordPage> {
class _ExpirePasswordPageState extends State<ExpirePasswordPage> with RouteAware {
final ExpirePasswordLogic logic = Get.put(ExpirePasswordLogic());
final ExpirePasswordState state = Get.find<ExpirePasswordLogic>().state;
@ -237,4 +239,57 @@ class _ExpirePasswordPageState extends State<ExpirePasswordPage> {
],
);
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
///
AppRouteObserver().routeObserver.subscribe(this, ModalRoute.of(context)!);
}
@override
void dispose() {
///
AppRouteObserver().routeObserver.unsubscribe(this);
super.dispose();
}
///
@override
void didPush() {
super.didPush();
state.ifCurrentScreen.value = true;
}
///
@override
void didPop() {
super.didPop();
logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) {
EasyLoading.dismiss(animation: true);
}
state.ifCurrentScreen.value = false;
state.sureBtnState.value = 0;
}
///
@override
void didPopNext() {
super.didPopNext();
state.ifCurrentScreen.value = true;
}
///
@override
void didPushNext() {
super.didPushNext();
logic.cancelBlueConnetctToastTimer();
if (EasyLoading.isShow) {
EasyLoading.dismiss(animation: true);
}
state.ifCurrentScreen.value = false;
state.sureBtnState.value = 0;
}
}

View File

@ -15,10 +15,10 @@ class ShowTipView {
void showSureAlertDialog(String contentStr) {
showCupertinoDialog(
context: Get.context!,
builder: (context) {
builder: (BuildContext context) {
return CupertinoAlertDialog(
content: Text(contentStr),
actions: [
actions: <Widget>[
CupertinoDialogAction(
child: Text(TranslationLoader.lanKeys!.sure!.tr),
onPressed: () {
@ -44,12 +44,12 @@ class ShowTipView {
// height: 100.h,
child: ShowDeleteAdministratorIsHaveAllDataWidget(
contentStr: contentStr,
blockIsHaveAllDataCallback: (a) {
blockIsHaveAllDataCallback: (bool a) {
selet = a;
},
),
),
actions: [
actions: <Widget>[
CupertinoDialogAction(
child: Text(TranslationLoader.lanKeys!.cancel!.tr),
onPressed: () {
@ -73,15 +73,13 @@ class ShowTipView {
void showIosTipWithContentDialog(String contentStr, Function sureClick) {
showCupertinoDialog(
context: Get.context!,
builder: (context) {
builder: (BuildContext context) {
return CupertinoAlertDialog(
content: Text(contentStr),
actions: [
actions: <Widget>[
CupertinoDialogAction(
child: Text(TranslationLoader.lanKeys!.cancel!.tr),
onPressed: () {
Get.back();
},
onPressed: Get.back,
),
CupertinoDialogAction(
child: Text(TranslationLoader.lanKeys!.sure!.tr),