1,新增部分人脸实体类
2,新增锁详情部分滑动(未完成)
This commit is contained in:
parent
60614a53b1
commit
aab5c82670
138
star_lock/lib/main/lockDetail/face/faceList/faceList_entity.dart
Normal file
138
star_lock/lib/main/lockDetail/face/faceList/faceList_entity.dart
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
class FaceListDataEntity {
|
||||||
|
int? errorCode;
|
||||||
|
String? description;
|
||||||
|
String? errorMsg;
|
||||||
|
Data? data;
|
||||||
|
|
||||||
|
FaceListDataEntity(
|
||||||
|
{this.errorCode, this.description, this.errorMsg, this.data});
|
||||||
|
|
||||||
|
FaceListDataEntity.fromJson(Map<String, dynamic> json) {
|
||||||
|
errorCode = json['errorCode'];
|
||||||
|
description = json['description'];
|
||||||
|
errorMsg = json['errorMsg'];
|
||||||
|
data = json['data'] != null ? Data.fromJson(json['data']) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = <String, dynamic>{};
|
||||||
|
data['errorCode'] = errorCode;
|
||||||
|
data['description'] = description;
|
||||||
|
data['errorMsg'] = errorMsg;
|
||||||
|
if (this.data != null) {
|
||||||
|
data['data'] = this.data!.toJson();
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Data {
|
||||||
|
List<FaceItemData>? list;
|
||||||
|
int? pageNo;
|
||||||
|
int? pageSize;
|
||||||
|
int? pages;
|
||||||
|
int? total;
|
||||||
|
|
||||||
|
Data({this.list, this.pageNo, this.pageSize, this.pages, this.total});
|
||||||
|
|
||||||
|
Data.fromJson(Map<String, dynamic> json) {
|
||||||
|
if (json['list'] != null) {
|
||||||
|
list = <FaceItemData>[];
|
||||||
|
json['list'].forEach((v) {
|
||||||
|
list!.add(FaceItemData.fromJson(v));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
pageNo = json['pageNo'];
|
||||||
|
pageSize = json['pageSize'];
|
||||||
|
pages = json['pages'];
|
||||||
|
total = json['total'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = <String, dynamic>{};
|
||||||
|
if (list != null) {
|
||||||
|
data['list'] = list!.map((v) => v.toJson()).toList();
|
||||||
|
}
|
||||||
|
data['pageNo'] = pageNo;
|
||||||
|
data['pageSize'] = pageSize;
|
||||||
|
data['pages'] = pages;
|
||||||
|
data['total'] = total;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class FaceItemData {
|
||||||
|
int? lockId;
|
||||||
|
int? faceId;
|
||||||
|
String? faceName;
|
||||||
|
String? faceNumber;
|
||||||
|
int? startDate;
|
||||||
|
int? endDate;
|
||||||
|
int? status;
|
||||||
|
int? addType;
|
||||||
|
int? faceType;
|
||||||
|
List? cyclicConfig;
|
||||||
|
String? featureData;
|
||||||
|
int? createDate;
|
||||||
|
String? senderUsername;
|
||||||
|
String? validTimeStr;
|
||||||
|
|
||||||
|
FaceItemData(
|
||||||
|
{this.lockId,
|
||||||
|
this.faceId,
|
||||||
|
this.faceName,
|
||||||
|
this.faceNumber,
|
||||||
|
this.startDate,
|
||||||
|
this.endDate,
|
||||||
|
this.status,
|
||||||
|
this.addType,
|
||||||
|
this.faceType,
|
||||||
|
this.cyclicConfig,
|
||||||
|
this.featureData,
|
||||||
|
this.createDate,
|
||||||
|
this.senderUsername,
|
||||||
|
this.validTimeStr});
|
||||||
|
|
||||||
|
FaceItemData.fromJson(Map<String, dynamic> json) {
|
||||||
|
lockId = json['lockId'];
|
||||||
|
faceId = json['faceId'];
|
||||||
|
faceName = json['faceName'];
|
||||||
|
faceNumber = json['faceNumber'];
|
||||||
|
startDate = json['startDate'];
|
||||||
|
endDate = json['endDate'];
|
||||||
|
status = json['status'];
|
||||||
|
addType = json['addType'];
|
||||||
|
faceType = json['faceType'];
|
||||||
|
if (json['cyclicConfig'] != null) {
|
||||||
|
cyclicConfig = [];
|
||||||
|
json['cyclicConfig'].forEach((v) {
|
||||||
|
cyclicConfig!.add(v);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
featureData = json['featureData'];
|
||||||
|
createDate = json['createDate'];
|
||||||
|
senderUsername = json['senderUsername'];
|
||||||
|
validTimeStr = json['validTimeStr'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = <String, dynamic>{};
|
||||||
|
data['lockId'] = lockId;
|
||||||
|
data['faceId'] = faceId;
|
||||||
|
data['faceName'] = faceName;
|
||||||
|
data['faceNumber'] = faceNumber;
|
||||||
|
data['startDate'] = startDate;
|
||||||
|
data['endDate'] = endDate;
|
||||||
|
data['status'] = status;
|
||||||
|
data['addType'] = addType;
|
||||||
|
data['faceType'] = faceType;
|
||||||
|
if (cyclicConfig != null) {
|
||||||
|
data['cyclicConfig'] = cyclicConfig!.map((v) => v.toJson()).toList();
|
||||||
|
}
|
||||||
|
data['featureData'] = featureData;
|
||||||
|
data['createDate'] = createDate;
|
||||||
|
data['senderUsername'] = senderUsername;
|
||||||
|
data['validTimeStr'] = validTimeStr;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -19,7 +19,9 @@ class LockDetailPage extends StatefulWidget {
|
|||||||
final LockListInfoItemEntity lockListInfoItemEntity;
|
final LockListInfoItemEntity lockListInfoItemEntity;
|
||||||
|
|
||||||
const LockDetailPage(
|
const LockDetailPage(
|
||||||
{Key? key, required this.isOnlyOneData, required this.lockListInfoItemEntity})
|
{Key? key,
|
||||||
|
required this.isOnlyOneData,
|
||||||
|
required this.lockListInfoItemEntity})
|
||||||
: super(key: key);
|
: super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -50,7 +52,8 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
state.isOpenPassageMode.value = state.keyInfos.value.passageMode!;
|
state.isOpenPassageMode.value = state.keyInfos.value.passageMode!;
|
||||||
state.lockAlias.value = state.keyInfos.value.lockAlias!;
|
state.lockAlias.value = state.keyInfos.value.lockAlias!;
|
||||||
|
|
||||||
BlueManage().connectDeviceName = state.keyInfos.value.bluetooth!.bluetoothDeviceName!;
|
BlueManage().connectDeviceName =
|
||||||
|
state.keyInfos.value.bluetooth!.bluetoothDeviceName!;
|
||||||
|
|
||||||
List<int> publicKeyData =
|
List<int> publicKeyData =
|
||||||
state.keyInfos.value.bluetooth!.publicKey!.cast<int>();
|
state.keyInfos.value.bluetooth!.publicKey!.cast<int>();
|
||||||
@ -64,7 +67,8 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
Storage.setStringList(saveBluePrivateKey, savePrivateKeyList);
|
Storage.setStringList(saveBluePrivateKey, savePrivateKeyList);
|
||||||
|
|
||||||
// signKey
|
// signKey
|
||||||
List<int> signKeyData = state.keyInfos.value.bluetooth!.signKey!.cast<int>();
|
List<int> signKeyData =
|
||||||
|
state.keyInfos.value.bluetooth!.signKey!.cast<int>();
|
||||||
var saveSignKeyList = changeIntListToStringList(signKeyData);
|
var saveSignKeyList = changeIntListToStringList(signKeyData);
|
||||||
Storage.setStringList(saveBlueSignKey, saveSignKeyList);
|
Storage.setStringList(saveBlueSignKey, saveSignKeyList);
|
||||||
|
|
||||||
@ -77,37 +81,75 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return ListView(
|
return CustomScrollView(
|
||||||
children: [
|
slivers: [
|
||||||
Stack(children: [
|
SliverFillRemaining(
|
||||||
Container(
|
child: Stack(
|
||||||
width: 1.sw,
|
children: [
|
||||||
height: 1.sh - ScreenUtil().statusBarHeight * 2,
|
Container(
|
||||||
color: Colors.white,
|
width: 1.sw,
|
||||||
child: Column(
|
height: 1.sh - ScreenUtil().statusBarHeight * 2,
|
||||||
children: [
|
color: Colors.white,
|
||||||
topWidget(),
|
child: Column(
|
||||||
Expanded(child: Obx(() => bottomWidget())),
|
children: [
|
||||||
],
|
topWidget(),
|
||||||
),
|
// partSectionWidget(),
|
||||||
),
|
Expanded(child: bottomWidget())
|
||||||
Obx(() => Visibility(
|
],
|
||||||
visible: state.iSClosedUnlockSuccessfulPopup.value,
|
|
||||||
// visible: true,
|
|
||||||
child: GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
state.iSClosedUnlockSuccessfulPopup.value = false;
|
|
||||||
},
|
|
||||||
child: Container(
|
|
||||||
width: 1.sw,
|
|
||||||
height: 1.sh - ScreenUtil().statusBarHeight * 2,
|
|
||||||
color: Colors.black.withOpacity(0.3),
|
|
||||||
child: _unlockSuccessWidget()),
|
|
||||||
),
|
),
|
||||||
))
|
),
|
||||||
]),
|
Obx(() => Visibility(
|
||||||
|
visible: state.iSClosedUnlockSuccessfulPopup.value,
|
||||||
|
child: GestureDetector(
|
||||||
|
onTap: () {
|
||||||
|
state.iSClosedUnlockSuccessfulPopup.value = false;
|
||||||
|
},
|
||||||
|
child: Container(
|
||||||
|
width: 1.sw,
|
||||||
|
height: 1.sh - ScreenUtil().statusBarHeight * 2,
|
||||||
|
color: Colors.black.withOpacity(0.3),
|
||||||
|
child: _unlockSuccessWidget(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
))
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// return ListView(
|
||||||
|
// children: [
|
||||||
|
// Stack(children: [
|
||||||
|
// Container(
|
||||||
|
// width: 1.sw,
|
||||||
|
// height: 1.sh - ScreenUtil().statusBarHeight * 2,
|
||||||
|
// color: Colors.white,
|
||||||
|
// child: Column(
|
||||||
|
// children: [
|
||||||
|
// topWidget(),
|
||||||
|
// Expanded(child: partSectionWidget()),
|
||||||
|
// // Expanded(child: Obx(() => bottomWidget())),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// Obx(() => Visibility(
|
||||||
|
// visible: state.iSClosedUnlockSuccessfulPopup.value,
|
||||||
|
// // visible: true,
|
||||||
|
// child: GestureDetector(
|
||||||
|
// onTap: () {
|
||||||
|
// state.iSClosedUnlockSuccessfulPopup.value = false;
|
||||||
|
// },
|
||||||
|
// child: Container(
|
||||||
|
// width: 1.sw,
|
||||||
|
// height: 1.sh - ScreenUtil().statusBarHeight * 2,
|
||||||
|
// color: Colors.black.withOpacity(0.3),
|
||||||
|
// child: _unlockSuccessWidget()),
|
||||||
|
// ),
|
||||||
|
// ))
|
||||||
|
// ]),
|
||||||
|
// ],
|
||||||
|
// );
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget topWidget() {
|
Widget topWidget() {
|
||||||
@ -121,11 +163,15 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
SizedBox(
|
SizedBox(
|
||||||
width: 1.sw - 120.w * 2,
|
width: 1.sw - 120.w * 2,
|
||||||
child: Obx(() => Center(
|
child: Obx(() => Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
state.lockAlias.value,
|
state.lockAlias.value,
|
||||||
style: TextStyle(fontSize: 22.sp, fontWeight: FontWeight.w400, color: state.isOpenPassageMode.value == 1 ? AppColors.openPassageModeColor : AppColors.darkGrayTextColor),
|
style: TextStyle(
|
||||||
)))
|
fontSize: 22.sp,
|
||||||
),
|
fontWeight: FontWeight.w400,
|
||||||
|
color: state.isOpenPassageMode.value == 1
|
||||||
|
? AppColors.openPassageModeColor
|
||||||
|
: AppColors.darkGrayTextColor),
|
||||||
|
)))),
|
||||||
Positioned(
|
Positioned(
|
||||||
child: Obx(() => Row(
|
child: Obx(() => Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.end,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
@ -157,7 +203,9 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
children: [
|
children: [
|
||||||
Image.asset(
|
Image.asset(
|
||||||
// state.connectState.value == 0 ? 'images/main/icon_main_openLockBtn_grey.png' : 'images/main/icon_main_openLockBtn_center.png',
|
// state.connectState.value == 0 ? 'images/main/icon_main_openLockBtn_grey.png' : 'images/main/icon_main_openLockBtn_center.png',
|
||||||
state.isOpenPassageMode.value == 1 ? 'images/main/icon_main_normallyOpenMode_center.png' : 'images/main/icon_main_openLockBtn_center.png',
|
state.isOpenPassageMode.value == 1
|
||||||
|
? 'images/main/icon_main_normallyOpenMode_center.png'
|
||||||
|
: 'images/main/icon_main_openLockBtn_center.png',
|
||||||
width: 330.w,
|
width: 330.w,
|
||||||
height: 330.w,
|
height: 330.w,
|
||||||
),
|
),
|
||||||
@ -166,7 +214,9 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
: Positioned(
|
: Positioned(
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
// 'images/main/icon_main_openLockBtn_circle.png',
|
// 'images/main/icon_main_openLockBtn_circle.png',
|
||||||
state.isOpenPassageMode.value == 1 ? 'images/main/icon_main_normallyOpenMode_circle.png' : 'images/main/icon_main_openLockBtn_circle.png',
|
state.isOpenPassageMode.value == 1
|
||||||
|
? 'images/main/icon_main_normallyOpenMode_circle.png'
|
||||||
|
: 'images/main/icon_main_openLockBtn_circle.png',
|
||||||
width: 330.w,
|
width: 330.w,
|
||||||
height: 330.w,
|
height: 330.w,
|
||||||
)),
|
)),
|
||||||
@ -206,12 +256,15 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Obx(() => Text(
|
Obx(() => Text(
|
||||||
state.isOpenPassageMode.value == 1 ? "常开模式启动!长按闭锁" : TranslationLoader.lanKeys!.clickUnlockAndHoldDownClose!.tr,
|
state.isOpenPassageMode.value == 1
|
||||||
style: TextStyle(
|
? "常开模式启动!长按闭锁"
|
||||||
fontSize: 22.sp,
|
: TranslationLoader
|
||||||
color: AppColors.btnDisableColor,
|
.lanKeys!.clickUnlockAndHoldDownClose!.tr,
|
||||||
fontWeight: FontWeight.w500),
|
style: TextStyle(
|
||||||
)),
|
fontSize: 22.sp,
|
||||||
|
color: AppColors.btnDisableColor,
|
||||||
|
fontWeight: FontWeight.w500),
|
||||||
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
@ -230,13 +283,17 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
Text(
|
Text(
|
||||||
state.keyInfos.value.isLockOwner == 1
|
state.keyInfos.value.isLockOwner == 1
|
||||||
? TranslationLoader.lanKeys!.superAdmin!.tr
|
? TranslationLoader.lanKeys!.superAdmin!.tr
|
||||||
: (state.keyInfos.value.keyRight == 1 ? TranslationLoader.lanKeys!.authorizedAdmin!.tr : TranslationLoader.lanKeys!.normalUser!.tr),
|
: (state.keyInfos.value.keyRight == 1
|
||||||
|
? TranslationLoader.lanKeys!.authorizedAdmin!.tr
|
||||||
|
: TranslationLoader.lanKeys!.normalUser!.tr),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 20.sp, color: AppColors.darkGrayTextColor),
|
fontSize: 20.sp, color: AppColors.darkGrayTextColor),
|
||||||
),
|
),
|
||||||
SizedBox(width: 80.w),
|
SizedBox(width: 80.w),
|
||||||
Image.asset(
|
Image.asset(
|
||||||
state.keyInfos.value.remoteEnable == 1 ? 'images/main/icon_main_remoteUnlocking.png' : 'images/main/icon_main_remoteUnlocking_grey.png',
|
state.keyInfos.value.remoteEnable == 1
|
||||||
|
? 'images/main/icon_main_remoteUnlocking.png'
|
||||||
|
: 'images/main/icon_main_remoteUnlocking_grey.png',
|
||||||
width: 24.w,
|
width: 24.w,
|
||||||
height: 20.w,
|
height: 20.w,
|
||||||
// color: state.keyInfos.value.remoteEnable == 1
|
// color: state.keyInfos.value.remoteEnable == 1
|
||||||
@ -248,8 +305,9 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
TranslationLoader.lanKeys!.gatewayDevice!.tr,
|
TranslationLoader.lanKeys!.gatewayDevice!.tr,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 20.sp,
|
fontSize: 20.sp,
|
||||||
color: state.keyInfos.value.remoteEnable == 1 ? AppColors.mainColor : AppColors.btnDisableColor
|
color: state.keyInfos.value.remoteEnable == 1
|
||||||
),
|
? AppColors.mainColor
|
||||||
|
: AppColors.btnDisableColor),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -276,7 +334,9 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
turns: state.animationController,
|
turns: state.animationController,
|
||||||
//将要执行动画的子view
|
//将要执行动画的子view
|
||||||
child: Image.asset(
|
child: Image.asset(
|
||||||
state.isOpenPassageMode.value == 1 ? 'images/main/icon_main_normallyOpenMode_circle.png' : 'images/main/icon_main_openLockBtn_circle.png',
|
state.isOpenPassageMode.value == 1
|
||||||
|
? 'images/main/icon_main_normallyOpenMode_circle.png'
|
||||||
|
: 'images/main/icon_main_openLockBtn_circle.png',
|
||||||
width: 330.w,
|
width: 330.w,
|
||||||
height: 330.w,
|
height: 330.w,
|
||||||
),
|
),
|
||||||
@ -298,6 +358,74 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//横向滑动区域
|
||||||
|
Widget partSectionWidget() {
|
||||||
|
return SliverToBoxAdapter(
|
||||||
|
child: SizedBox(
|
||||||
|
height: 400.0, // Adjust the height as needed
|
||||||
|
width: ScreenUtil().screenWidth,
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
scrollDirection: Axis.horizontal,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.all(10.0),
|
||||||
|
color: Colors.red,
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text('GridView 1'),
|
||||||
|
SizedBox(height: 10.0),
|
||||||
|
Container(
|
||||||
|
height: 200.0,
|
||||||
|
width: 200.0,
|
||||||
|
child: GridView.count(
|
||||||
|
crossAxisCount: 2,
|
||||||
|
children: List.generate(6, (index) {
|
||||||
|
return Center(
|
||||||
|
child: Text(
|
||||||
|
'Item ${index + 6}',
|
||||||
|
style: TextStyle(fontSize: 20.0),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
margin: EdgeInsets.all(10.0),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text('GridView 2'),
|
||||||
|
SizedBox(height: 10.0),
|
||||||
|
Container(
|
||||||
|
height: 200.0,
|
||||||
|
width: 200.0,
|
||||||
|
child: GridView.count(
|
||||||
|
crossAxisCount: 2,
|
||||||
|
children: List.generate(6, (index) {
|
||||||
|
return Center(
|
||||||
|
child: Text(
|
||||||
|
'Item ${index + 6}',
|
||||||
|
style: TextStyle(fontSize: 20.0),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// 根据权限显示不同的底部按钮
|
// 根据权限显示不同的底部按钮
|
||||||
List<Widget> getBottomWidget() {
|
List<Widget> getBottomWidget() {
|
||||||
if (state.keyInfos.value.isLockOwner == 1 ||
|
if (state.keyInfos.value.isLockOwner == 1 ||
|
||||||
@ -313,12 +441,16 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
List<Widget> getNormalWidget() {
|
List<Widget> getNormalWidget() {
|
||||||
var showWidgetArr = [
|
var showWidgetArr = [
|
||||||
// 操作记录
|
// 操作记录
|
||||||
bottomItem('images/main/icon_main_operatingRecord.png', TranslationLoader.lanKeys!.operatingRecord!.tr, () {
|
bottomItem('images/main/icon_main_operatingRecord.png',
|
||||||
Get.toNamed(Routers.lockOperatingRecordPage, arguments: {"keyInfo": state.keyInfos.value});
|
TranslationLoader.lanKeys!.operatingRecord!.tr, () {
|
||||||
|
Get.toNamed(Routers.lockOperatingRecordPage,
|
||||||
|
arguments: {"keyInfo": state.keyInfos.value});
|
||||||
}),
|
}),
|
||||||
|
|
||||||
// 设置
|
// 设置
|
||||||
bottomItem('images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr, () {
|
bottomItem(
|
||||||
|
'images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr,
|
||||||
|
() {
|
||||||
Get.toNamed(Routers.lockSetPage, arguments: {
|
Get.toNamed(Routers.lockSetPage, arguments: {
|
||||||
"lockId": state.keyInfos.value.lockId,
|
"lockId": state.keyInfos.value.lockId,
|
||||||
"isOnlyOneData": widget.isOnlyOneData,
|
"isOnlyOneData": widget.isOnlyOneData,
|
||||||
@ -356,7 +488,8 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
|
|
||||||
// ic卡
|
// ic卡
|
||||||
if (state.keyInfos.value.lockFeature!.icCard == 1) {
|
if (state.keyInfos.value.lockFeature!.icCard == 1) {
|
||||||
showWidgetArr.add(bottomItem('images/main/icon_main_icCard.png', TranslationLoader.lanKeys!.card!.tr, () {
|
showWidgetArr.add(bottomItem('images/main/icon_main_icCard.png',
|
||||||
|
TranslationLoader.lanKeys!.card!.tr, () {
|
||||||
// logic.showToast("普通用户第一次需要在锁旁边操作哦。", something: () {
|
// logic.showToast("普通用户第一次需要在锁旁边操作哦。", something: () {
|
||||||
// logic.showEasyLoading();
|
// logic.showEasyLoading();
|
||||||
// });
|
// });
|
||||||
@ -594,7 +727,7 @@ class _LockDetailPageState extends State<LockDetailPage>
|
|||||||
// print("LockDetailPage===dispose");
|
// print("LockDetailPage===dispose");
|
||||||
AppRouteObserver().routeObserver.unsubscribe(this);
|
AppRouteObserver().routeObserver.unsubscribe(this);
|
||||||
state.closedUnlockSuccessfulTimer?.cancel();
|
state.closedUnlockSuccessfulTimer?.cancel();
|
||||||
if(state.animationController != null){
|
if (state.animationController != null) {
|
||||||
state.animationController.reset();
|
state.animationController.reset();
|
||||||
state.animationController.forward();
|
state.animationController.forward();
|
||||||
state.animationController.dispose();
|
state.animationController.dispose();
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
abstract class Api {
|
abstract class Api {
|
||||||
static String baseAddress = "https://pre.lock.star-lock.cn"; //预发布环境
|
// static String baseAddress = "https://pre.lock.star-lock.cn"; //预发布环境
|
||||||
// static String baseAddress = "https://dev.lock.star-lock.cn"; //联调环境
|
static String baseAddress = "https://dev.lock.star-lock.cn"; //联调环境
|
||||||
// static String baseAddress = "http://192.168.1.15:8022"; //谢总本地
|
// static String baseAddress = "http://192.168.1.15:8022"; //谢总本地
|
||||||
// static String baseAddress = "https://ge.lock.star-lock.cn"; //葛工开发环境地址
|
// static String baseAddress = "https://ge.lock.star-lock.cn"; //葛工开发环境地址
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user