1,新增监视界面连接十秒超时后动画暂停 并可再次点击连接

2,修复1000885--1000904共19个关于密码点击类型未更新造成的问题
This commit is contained in:
Daisy 2024-01-05 14:48:13 +08:00
parent 8f519adede
commit dcf9502f48
6 changed files with 57 additions and 27 deletions

View File

@ -39,6 +39,11 @@ class _RealTimePicturePageState extends State<RealTimePicturePage>
} }
}); });
// 10
Future.delayed(const Duration(seconds: 10), () {
state.animationController.stop();
});
logic.udpMonitorAction(); logic.udpMonitorAction();
} }
@ -307,7 +312,7 @@ class _RealTimePicturePageState extends State<RealTimePicturePage>
), ),
), ),
onTap: () { onTap: () {
print('点击重新连接'); state.animationController.forward();
}, },
), ),
); );

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/tools/eventBusEventManage.dart';
import '../../../../app_settings/app_colors.dart'; import '../../../../app_settings/app_colors.dart';
import '../../../../tools/CustomUnderlineTabIndicator.dart'; import '../../../../tools/CustomUnderlineTabIndicator.dart';
@ -13,9 +14,7 @@ class PasswordKeyManageTabbarPage extends StatefulWidget {
final LockListInfoItemEntity keyInfo; final LockListInfoItemEntity keyInfo;
PasswordKeyManageTabbarPage( PasswordKeyManageTabbarPage(
{Key? key, {Key? key, required this.initialIndex, required this.keyInfo})
required this.initialIndex,
required this.keyInfo})
: super(key: key); : super(key: key);
@override @override
State<PasswordKeyManageTabbarPage> createState() => State<PasswordKeyManageTabbarPage> createState() =>
@ -44,6 +43,16 @@ class _PasswordKeyManageTabbarPageState
vsync: this, vsync: this,
length: _itemTabs.length, length: _itemTabs.length,
initialIndex: widget.initialIndex); initialIndex: widget.initialIndex);
_tabController.addListener(handleTabIndex);
}
int handleTabIndex() {
//
int currentIndex = _tabController.index;
// item
print("User clicked on item at index $currentIndex");
eventBus.fire(GetPasswordTypeUpdateIndex(currentIndex));
return currentIndex;
} }
@override @override
@ -102,7 +111,7 @@ class _PasswordKeyManageTabbarPageState
controller: _tabController, controller: _tabController,
children: _itemTabs children: _itemTabs
.map((ItemView item) => PasswordKeyPerpetualPage( .map((ItemView item) => PasswordKeyPerpetualPage(
type: item.type, type: _tabController.index.toString(),
getKeyInfo: widget.keyInfo, getKeyInfo: widget.keyInfo,
)) ))
.toList(), .toList(),

View File

@ -4,6 +4,7 @@ import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:star_lock/blue/io_type.dart'; import 'package:star_lock/blue/io_type.dart';
import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_state.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/network/api_repository.dart';
import 'package:star_lock/tools/eventBusEventManage.dart';
import 'package:star_lock/tools/toast.dart'; import 'package:star_lock/tools/toast.dart';
import '../../../../blue/blue_manage.dart'; import '../../../../blue/blue_manage.dart';
@ -18,6 +19,15 @@ import '../../../../tools/storage.dart';
class PasswordKeyPerpetualLogic extends BaseGetXController { class PasswordKeyPerpetualLogic extends BaseGetXController {
final PasswordKeyPerpetualState state = PasswordKeyPerpetualState(); final PasswordKeyPerpetualState state = PasswordKeyPerpetualState();
///
StreamSubscription? getPasswordTypeUpdateIndexEvent;
void getPasswordTypeUpdateIndexAction() {
getPasswordTypeUpdateIndexEvent =
eventBus.on<GetPasswordTypeUpdateIndex>().listen((event) {
state.widgetType.value = event.passwordType;
});
}
/** /**
1 6使 1 6使
2 24使 2 24使
@ -39,20 +49,20 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
String getFailureDateTime = '0'; String getFailureDateTime = '0';
String getEffectiveDateTime = '0'; String getEffectiveDateTime = '0';
String lockId = state.keyInfo.value.lockId.toString(); String lockId = state.keyInfo.value.lockId.toString();
int passwordType = int.parse(state.widgetType.value); print('得到的state.widgetType.value为${state.widgetType.value}');
String getKeyType = passwordType.toString(); String getKeyType = state.widgetType.value.toString();
if (passwordType == 0) { if (state.widgetType.value == 0) {
// //
getKeyType = '2'; getKeyType = '2';
} else if (passwordType == 1) { } else if (state.widgetType.value == 1) {
// //
getKeyType = '3'; getKeyType = '3';
} else if (passwordType == 2) { } else if (state.widgetType.value == 2) {
// //
getKeyType = '1'; getKeyType = '1';
} else if (passwordType == 3) { } else if (state.widgetType.value == 3) {
// //
} else if (passwordType == 4) { } else if (state.widgetType.value == 4) {
// //
if (state.loopModeStr.value == '周末') { if (state.loopModeStr.value == '周末') {
getKeyType = '5'; getKeyType = '5';
@ -75,15 +85,15 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
} else if (state.loopModeStr.value == '星期日') { } else if (state.loopModeStr.value == '星期日') {
getKeyType = '14'; getKeyType = '14';
} }
} else if (passwordType == 5) { } else if (state.widgetType.value == 5) {
// //
getKeyType = '4'; getKeyType = '4';
} }
print('得到的类型为getKeyType$getKeyType'); print('得到的类型为getKeyType$getKeyType');
if (state.widgetType.value != '0' && if (state.widgetType.value != 0 &&
state.widgetType.value != '2' && state.widgetType.value != 2 &&
state.widgetType.value != '5') { state.widgetType.value != 5) {
getFailureDateTime = getFailureDateTime =
state.failureDateTime.value.millisecondsSinceEpoch.toString(); state.failureDateTime.value.millisecondsSinceEpoch.toString();
getEffectiveDateTime = getEffectiveDateTime =
@ -223,7 +233,8 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
// //
Future<void> senderCustomPasswords() async { Future<void> senderCustomPasswords() async {
BlueManage().bludSendData(BlueManage().connectDeviceName, (DeviceConnectionState state) async { BlueManage().bludSendData(BlueManage().connectDeviceName,
(DeviceConnectionState state) async {
if (state == DeviceConnectionState.connected) { if (state == DeviceConnectionState.connected) {
var publicKey = await Storage.getStringList(saveBluePublicKey); var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!); List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
@ -257,6 +268,7 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
super.onReady(); super.onReady();
_initReplySubscription(); _initReplySubscription();
getPasswordTypeUpdateIndexAction();
} }
@override @override

View File

@ -5,6 +5,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyManage/passwordKeyManage_tabbar.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_logic.dart';
import 'package:star_lock/tools/pickers/pickers.dart'; import 'package:star_lock/tools/pickers/pickers.dart';
import 'package:star_lock/tools/pickers/style/default_style.dart'; import 'package:star_lock/tools/pickers/style/default_style.dart';
@ -54,8 +55,6 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
state.widgetType.value = widget.type;
return SingleChildScrollView( return SingleChildScrollView(
child: Obx(() => indexChangeWidget()), child: Obx(() => indexChangeWidget()),
); );
@ -65,7 +64,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
if (state.isSendSuccess.value == true) { if (state.isSendSuccess.value == true) {
return sendElectronicKeySucceed(); return sendElectronicKeySucceed();
} else { } else {
switch (int.parse(widget.type)) { switch (state.widgetType.value) {
case 0: case 0:
{ {
// //
@ -186,7 +185,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
action: () { action: () {
Pickers.showDatePicker(context, mode: DateMode.YMDH, Pickers.showDatePicker(context, mode: DateMode.YMDH,
onConfirm: (p) { onConfirm: (p) {
if (int.parse(widget.type) == 3) { if (state.widgetType.value == 3) {
// //
state.effectiveDateTime.value = DateTime.parse( state.effectiveDateTime.value = DateTime.parse(
'${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'); '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}');
@ -216,7 +215,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
action: () { action: () {
Pickers.showDatePicker(context, mode: DateMode.YMDH, Pickers.showDatePicker(context, mode: DateMode.YMDH,
onConfirm: (p) { onConfirm: (p) {
if (int.parse(widget.type) == 3) { if (state.widgetType.value == 3) {
// //
state.failureDateTime.value = DateTime.parse( state.failureDateTime.value = DateTime.parse(
'${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'); '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}');
@ -400,7 +399,6 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
onClick: () async { onClick: () async {
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) { if (isDemoMode == false) {
int getWidgetNumber = int.parse(widget.type);
DateTime startDateTime = DateTime( DateTime startDateTime = DateTime(
state.effectiveDateTime.value.year, state.effectiveDateTime.value.year,
state.effectiveDateTime.value.month, state.effectiveDateTime.value.month,
@ -413,7 +411,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
state.failureDateTime.value.hour); state.failureDateTime.value.hour);
// //
if (getWidgetNumber == 3) { if (state.widgetType.value == 3) {
logic.getStartDate(state.effectiveDateTime.value); logic.getStartDate(state.effectiveDateTime.value);
if (state.nameController.text.isEmpty) { if (state.nameController.text.isEmpty) {
Toast.show(msg: '请输入姓名'); Toast.show(msg: '请输入姓名');
@ -440,7 +438,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
} }
// //
if (getWidgetNumber == 1) { if (state.widgetType.value == 1) {
if (!startDateTime.isBefore(endDateTime) || if (!startDateTime.isBefore(endDateTime) ||
startDateTime.isAtSameMomentAs(endDateTime)) { startDateTime.isAtSameMomentAs(endDateTime)) {
Toast.show(msg: '失效时间需大于生效时间'); Toast.show(msg: '失效时间需大于生效时间');
@ -448,7 +446,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
} }
} }
// //
if (getWidgetNumber == 4) { if (state.widgetType.value == 4) {
if (!startDateTime.isBefore(endDateTime) || if (!startDateTime.isBefore(endDateTime) ||
startDateTime.isAtSameMomentAs(endDateTime)) { startDateTime.isAtSameMomentAs(endDateTime)) {
Toast.show(msg: '结束时间需大于当前时间'); Toast.show(msg: '结束时间需大于当前时间');

View File

@ -43,6 +43,6 @@ class PasswordKeyPerpetualState {
var loopEndHours = DateTime.now().hour.obs; var loopEndHours = DateTime.now().hour.obs;
var loopModeStr = '周末'.obs; // var loopModeStr = '周末'.obs; //
final widgetType = ''.obs; final widgetType = 0.obs;
final keyInfo = LockListInfoItemEntity().obs; final keyInfo = LockListInfoItemEntity().obs;
} }

View File

@ -67,3 +67,9 @@ class GetFirstFrameGoPush {
bool isFirstFrame; bool isFirstFrame;
GetFirstFrameGoPush(this.isFirstFrame); GetFirstFrameGoPush(this.isFirstFrame);
} }
/// typeIndex
class GetPasswordTypeUpdateIndex {
int passwordType;
GetPasswordTypeUpdateIndex(this.passwordType);
}