修改群发电子钥匙问题

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

View File

@ -55,11 +55,11 @@ class GroupListItem {
int? groupType; // 0 1
String? keyGroupName;
List<LockListItem>? lockList;
bool _isChecked = false;
bool get isChecked => _isChecked ?? false;
bool isChecked = false;
// bool get isChecked => _isChecked ?? false;
bool isVip = false;
set isChecked(bool value) => _isChecked = value;
// set isChecked(bool value) => _isChecked = value;
GroupListItem(
{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/massSendLockGroupList_state.dart';
import 'package:star_lock/network/api_repository.dart';
@ -14,6 +15,39 @@ class MassSendLockGroupListLogic extends BaseGetXController {
if (entity.errorCode!.codeIsSuccessful) {
if (entity.data != null) {
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();
}
}

View File

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

View File

@ -1,15 +1,20 @@
import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_settings.dart';
class MassSendLockGroupListState {
var lockGroupList = [].obs;
var selectLockIdList = [].obs;
var isVip = false.obs;
var keyLimits = '';// 1() 2
class MassSendLockGroupListState {// 1() 2
MassSendLockGroupListState(){
Map map = Get.arguments;
if(map["keyLimits"] != null){
final Map map = Get.arguments;
if(map['keyLimits'] != null){
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_screenutil/flutter_screenutil.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';
class ExpandedListTile extends StatefulWidget {
const ExpandedListTile(
{required this.isShowBtn, required this.groupItem, required this.typeImgList, Key? key,
this.child,
this.onTap})
{required this.isShowBtn,
required this.groupItem,
required this.typeImgList,
this.isCheck = false,
this.child,
this.onTap,
Key? key})
: super(key: key);
final Widget? child;
@ -17,7 +22,7 @@ class ExpandedListTile extends StatefulWidget {
final Function()? onTap;
final GroupListItem groupItem;
final bool isShowBtn;
final bool isCheck;
@override
_ExpandedListTileState createState() => _ExpandedListTileState();
}
@ -27,6 +32,18 @@ class _ExpandedListTileState extends State<ExpandedListTile> {
final Duration _animationDuration = const Duration(milliseconds: 200);
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
Widget build(BuildContext context) {
return Column(