修改群发电子钥匙问题

This commit is contained in:
魏少阳 2024-06-15 18:09:20 +08:00
parent 6bfa8cdb08
commit 7d93f2fbc4
6 changed files with 119 additions and 49 deletions

View File

@ -185,20 +185,21 @@ class _VolumeAuthorizationLockPageState
? TranslationLoader.lanKeys!.pleaseSelect!.tr ? TranslationLoader.lanKeys!.pleaseSelect!.tr
: state.lockIdList.length.toString(), : state.lockIdList.length.toString(),
isHaveDirection: true, isHaveDirection: true,
action: () { action: () async {
Navigator.pushNamed(context, Routers.massSendLockGroupListPage, final result = await Get.toNamed(Routers.massSendLockGroupListPage,
arguments: <String, String>{'keyLimits': '1'}) arguments: <String, Object>{
.then((Object? value) { 'keyLimits': '1',
//ID列表 'lockIdList': state.lockIdList.value
if (value is Map<String, dynamic> && });
value['selectLockIdList'] is List) { if (result != null && result.isNotEmpty) {
state.lockIdList.clear(); final List selectLockIdList = result['selectLockIdList'];
value['selectLockIdList'].forEach((element) { state.lockIdList.value.clear();
state.lockIdList.add(element); // state.lockIdList.addAll(state.lockIdList.value);
selectLockIdList.forEach((element) {
state.lockIdList.value.add(element);
}); });
setState(() {}); setState(() {});
} }
});
}), }),
Container(height: 10.h), Container(height: 10.h),
CommonItem( CommonItem(

View File

@ -55,11 +55,11 @@ class GroupListItem {
int? groupType; // 0 1 int? groupType; // 0 1
String? keyGroupName; String? keyGroupName;
List<LockListItem>? lockList; List<LockListItem>? lockList;
bool _isChecked = false; bool isChecked = false;
bool get isChecked => _isChecked ?? false; // bool get isChecked => _isChecked ?? false;
bool isVip = false; bool isVip = false;
set isChecked(bool value) => _isChecked = value; // set isChecked(bool value) => _isChecked = value;
GroupListItem( GroupListItem(
{this.lockNum, {this.lockNum,

View File

@ -1,3 +1,4 @@
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_state.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_state.dart';
import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/network/api_repository.dart';
@ -14,6 +15,39 @@ class MassSendLockGroupListLogic extends BaseGetXController {
if (entity.errorCode!.codeIsSuccessful) { if (entity.errorCode!.codeIsSuccessful) {
if (entity.data != null) { if (entity.data != null) {
state.lockGroupList.value = entity.data!.groupList!; state.lockGroupList.value = entity.data!.groupList!;
// selectLockIdList不为空state.lockGroupList.value里面的每个item的isSelected为true
if (state.selectLockIdList.isNotEmpty) {
for (int i = 0; i < state.lockGroupList.length; i++) {
final GroupListItem groupItem = state.lockGroupList[i];
for (int j = 0; j < groupItem.lockList!.length; j++) {
final LockListItem lockItem = groupItem.lockList![j];
if (state.selectLockIdList.contains(lockItem.lockId)) {
lockItem.isChecked = true;
}else{
lockItem.isChecked = false;
}
}
}
}
// state.lockGroupList里面的每个item的isSelected为true则state.lockGroupList的isSelected为true
for (int i = 0; i < state.lockGroupList.length; i++) {
final GroupListItem groupItem = state.lockGroupList[i];
if (groupItem.lockList != null && groupItem.lockList!.isNotEmpty) {
bool isAllChecked = true;
for (int j = 0; j < groupItem.lockList!.length; j++) {
final LockListItem lockItem = groupItem.lockList![j];
// AppLog.log('111lockItem.lockId:${lockItem.lockId} lockItem.isChecked:${lockItem.isChecked}');
if (!lockItem.isChecked) {
isAllChecked = false;
break;
}
}
groupItem.isChecked = isAllChecked;
}
}
state.lockGroupList.refresh(); state.lockGroupList.refresh();
} }
} }

View File

@ -1,3 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@ -11,6 +12,8 @@ import 'package:star_lock/tools/showCupertinoAlertView.dart';
import 'package:star_lock/tools/submitBtn.dart'; import 'package:star_lock/tools/submitBtn.dart';
import 'package:star_lock/translations/trans_lib.dart'; import 'package:star_lock/translations/trans_lib.dart';
import '../../../../../app_settings/app_settings.dart';
class MassSendLockGroupListPage extends StatefulWidget { class MassSendLockGroupListPage extends StatefulWidget {
const MassSendLockGroupListPage({Key? key}) : super(key: key); const MassSendLockGroupListPage({Key? key}) : super(key: key);
@ -21,10 +24,8 @@ class MassSendLockGroupListPage extends StatefulWidget {
} }
class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> { class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
final MassSendLockGroupListLogic logic = final MassSendLockGroupListLogic logic = Get.put(MassSendLockGroupListLogic());
Get.put(MassSendLockGroupListLogic()); final MassSendLockGroupListState state = Get.find<MassSendLockGroupListLogic>().state;
final MassSendLockGroupListState state =
Get.find<MassSendLockGroupListLogic>().state;
@override @override
void initState() { void initState() {
@ -54,9 +55,9 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
body: Column( body: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: <Widget>[
Obx(() => Visibility( Obx(() => Visibility(
visible: state.isVip.value ? false : true, visible: !state.isVip.value,
child: ShowCupertinoAlertView() child: ShowCupertinoAlertView()
.topTipsAdvancedFeatures('开通高级功能后才可以对锁进行管理'.tr))), .topTipsAdvancedFeatures('开通高级功能后才可以对锁进行管理'.tr))),
SizedBox( SizedBox(
@ -76,14 +77,13 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
child: Obx( child: Obx(
() => _buildListView(context, state.lockGroupList.value))), () => _buildListView(context, state.lockGroupList.value))),
Obx(() => Visibility( Obx(() => Visibility(
visible: state.isVip.value ? true : false, visible: state.isVip.value,
child: SubmitBtn( child: SubmitBtn(
btnName: '确定'.tr, btnName: '确定'.tr,
onClick: () { onClick: () {
final Map<String, dynamic> resultMap = {}; Map<String, dynamic> resultMap = {};
resultMap['selectLockIdList'] = resultMap['selectLockIdList'] = state.selectLockIdList.value;
state.selectLockIdList.value; Get.back(result: resultMap);
Navigator.pop(context, resultMap);
}, },
), ),
)), )),
@ -102,7 +102,7 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
return _buildLockExpandedList(context, index, itemData); return _buildLockExpandedList(context, index, itemData);
}, },
shrinkWrap: true, shrinkWrap: true,
separatorBuilder: (BuildContext context, index) { separatorBuilder: (BuildContext context, int index) {
return const Divider( return const Divider(
height: 1, height: 1,
color: AppColors.greyLineColor, color: AppColors.greyLineColor,
@ -112,20 +112,20 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
// //
Widget _buildLockExpandedList(context, index, GroupListItem itemData) { Widget _buildLockExpandedList(context, index, GroupListItem itemData) {
List lockItemList = itemData.lockList ?? []; final List lockItemList = itemData.lockList ?? [];
itemData.isVip = state.isVip.value; itemData.isVip = state.isVip.value;
return ExpandedListTile( return ExpandedListTile(
onTap: () { onTap: () {
// //
if (itemData.isChecked) { if (itemData.isChecked) {
var selectList = itemData.lockList; final List<LockListItem>? selectList = itemData.lockList;
for (LockListItem lockListItem in selectList!) { for (final LockListItem lockListItem in selectList!) {
lockListItem.isChecked = true; lockListItem.isChecked = true;
state.selectLockIdList.value.add(lockListItem.lockId); state.selectLockIdList.value.add(lockListItem.lockId??0);
} }
} else { } else {
var selectList = itemData.lockList; final List<LockListItem>? selectList = itemData.lockList;
for (LockListItem lockListItem in selectList!) { for (final LockListItem lockListItem in selectList!) {
lockListItem.isChecked = false; lockListItem.isChecked = false;
state.selectLockIdList.value.remove(lockListItem.lockId); state.selectLockIdList.value.remove(lockListItem.lockId);
} }
@ -133,17 +133,30 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
setState(() {}); setState(() {});
}, },
isShowBtn: true, isShowBtn: true,
isCheck: itemData.isChecked,
typeImgList: const [], typeImgList: const [],
groupItem: itemData, groupItem: itemData,
child: massSendLockGroupCell(index, child: massSendLockGroupCell(index,
currentIndex: index, currentIndex: index,
lockListByGroup: lockItemList, lockListByGroup: lockItemList,
isVip: state.isVip.value, isVip: state.isVip.value,
isShowBtn: true, selectLockAction: (selectIndex, selectLockId) { isShowBtn: true, selectLockAction: (int selectIndex, String selectLockId) {
LockListItem lockItem = lockItemList[selectIndex]; final LockListItem lockItem = lockItemList[selectIndex];
lockItem.isChecked = !lockItem.isChecked; lockItem.isChecked = !lockItem.isChecked;
if (lockItem.isChecked) { if (lockItem.isChecked) {
state.selectLockIdList.value.add(lockItem.lockId); state.selectLockIdList.value.add(lockItem.lockId??0);
// lockItemList里面的所有数据都选中的话 itemData.isChecked设置选中
bool isAllChecked = true;
for (final LockListItem lockListItem in lockItemList) {
if (!lockListItem.isChecked) {
isAllChecked = false;
break;
}
}
itemData.isChecked = isAllChecked;
}else{
state.selectLockIdList.value.remove(lockItem.lockId);
itemData.isChecked = false;
} }
setState(() {}); setState(() {});
}), }),

View File

@ -1,15 +1,20 @@
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_settings.dart';
class MassSendLockGroupListState { class MassSendLockGroupListState {// 1() 2
var lockGroupList = [].obs;
var selectLockIdList = [].obs;
var isVip = false.obs;
var keyLimits = '';// 1() 2
MassSendLockGroupListState(){ MassSendLockGroupListState(){
Map map = Get.arguments; final Map map = Get.arguments;
if(map["keyLimits"] != null){ if(map['keyLimits'] != null){
keyLimits = map['keyLimits']; keyLimits = map['keyLimits'];
} }
if(map['lockIdList'] != null){
var list = map['lockIdList'];
selectLockIdList.value.addAll(list);
} }
}
RxList lockGroupList = [].obs;
RxList<int> selectLockIdList = <int>[].obs;
RxBool isVip = false.obs;
String keyLimits = '';
} }

View File

@ -3,13 +3,18 @@ import 'dart:core';
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:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/app_settings/app_colors.dart';
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart';
class ExpandedListTile extends StatefulWidget { class ExpandedListTile extends StatefulWidget {
const ExpandedListTile( const ExpandedListTile(
{required this.isShowBtn, required this.groupItem, required this.typeImgList, Key? key, {required this.isShowBtn,
required this.groupItem,
required this.typeImgList,
this.isCheck = false,
this.child, this.child,
this.onTap}) this.onTap,
Key? key})
: super(key: key); : super(key: key);
final Widget? child; final Widget? child;
@ -17,7 +22,7 @@ class ExpandedListTile extends StatefulWidget {
final Function()? onTap; final Function()? onTap;
final GroupListItem groupItem; final GroupListItem groupItem;
final bool isShowBtn; final bool isShowBtn;
final bool isCheck;
@override @override
_ExpandedListTileState createState() => _ExpandedListTileState(); _ExpandedListTileState createState() => _ExpandedListTileState();
} }
@ -27,6 +32,18 @@ class _ExpandedListTileState extends State<ExpandedListTile> {
final Duration _animationDuration = const Duration(milliseconds: 200); final Duration _animationDuration = const Duration(milliseconds: 200);
bool _isCheck = false; bool _isCheck = false;
@override
void initState() {
super.initState();
_isCheck = widget.isCheck; // Initialize _isCheck with the value from the widget
}
@override
void didUpdateWidget(ExpandedListTile oldWidget) {
super.didUpdateWidget(oldWidget);
_isCheck = widget.isCheck; // Initialize _isCheck with the value from the widget
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Column( return Column(