From 13ae978908f1cdecdccbc63c4f57c3695edf3be7 Mon Sep 17 00:00:00 2001 From: mohammad Date: Sat, 24 Aug 2024 09:26:37 +0300 Subject: [PATCH] check if row in the table checked --- lib/pages/common/custom_table.dart | 8 +++++++- .../bloc/visitor_password_event.dart | 5 ++++- .../visitor_password/view/add_device_dialog.dart | 15 +++++++++++++-- .../view/visitor_password_dialog.dart | 2 +- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/lib/pages/common/custom_table.dart b/lib/pages/common/custom_table.dart index a691b673..76e3b663 100644 --- a/lib/pages/common/custom_table.dart +++ b/lib/pages/common/custom_table.dart @@ -13,6 +13,7 @@ class DynamicTable extends StatefulWidget { final bool isEmpty; final void Function(bool?)? selectAll; final void Function(int, bool?)? onRowCheckboxChanged; + final List? initialSelectedIds; const DynamicTable({ super.key, @@ -25,6 +26,7 @@ class DynamicTable extends StatefulWidget { this.cellDecoration, this.selectAll, this.onRowCheckboxChanged, + this.initialSelectedIds, }); @override @@ -38,7 +40,11 @@ class _DynamicTableState extends State { @override void initState() { super.initState(); - _selected = List.filled(widget.data.length, false); + _selected = List.generate(widget.data.length, (index) { + return widget.initialSelectedIds != null && + widget.initialSelectedIds!.contains(widget.data[index][1]); + }); + _selectAll = _selected.every((element) => element == true); } void _toggleSelectAll(bool? value) { diff --git a/lib/pages/visitor_password/bloc/visitor_password_event.dart b/lib/pages/visitor_password/bloc/visitor_password_event.dart index 05ad73d1..b0151757 100644 --- a/lib/pages/visitor_password/bloc/visitor_password_event.dart +++ b/lib/pages/visitor_password/bloc/visitor_password_event.dart @@ -51,7 +51,10 @@ class ToggleDaySelectionEvent extends VisitorPasswordEvent { class ToggleRepeatEvent extends VisitorPasswordEvent {} class GeneratePasswordEvent extends VisitorPasswordEvent {} -class FetchDevice extends VisitorPasswordEvent {} +class FetchDevice extends VisitorPasswordEvent { + final List? list; + const FetchDevice({this.list}); +} //online password class OnlineOneTimePasswordEvent extends VisitorPasswordEvent { diff --git a/lib/pages/visitor_password/view/add_device_dialog.dart b/lib/pages/visitor_password/view/add_device_dialog.dart index eccdfd78..73098976 100644 --- a/lib/pages/visitor_password/view/add_device_dialog.dart +++ b/lib/pages/visitor_password/view/add_device_dialog.dart @@ -13,15 +13,25 @@ import 'package:syncrow_web/utils/constants/const.dart'; import 'package:syncrow_web/utils/style.dart'; class AddDeviceDialog extends StatelessWidget { - const AddDeviceDialog({super.key}); + final List? selectedDeviceIds; + const AddDeviceDialog({super.key,this.selectedDeviceIds }); @override Widget build(BuildContext context) { Size size = MediaQuery.of(context).size; return BlocProvider( - create: (context) => VisitorPasswordBloc()..add(FetchDevice()), + create: (context) => VisitorPasswordBloc()..add(FetchDevice(list: selectedDeviceIds)), child: BlocBuilder( builder: (BuildContext context, VisitorPasswordState state) { final visitorBloc = BlocProvider.of(context); + if (state is TableLoaded) { + print('ooooooooooo${selectedDeviceIds}'); + for (var device in selectedDeviceIds!) { + if (selectedDeviceIds!.contains(device)) { + visitorBloc.add(SelectDeviceEvent(device)); + } + } + } + return AlertDialog( backgroundColor: Colors.white, title: Text('Add Accessible Device', @@ -143,6 +153,7 @@ class AddDeviceDialog extends StatelessWidget { flex: 3, child: state is TableLoaded ? DynamicTable( + initialSelectedIds:selectedDeviceIds , cellDecoration: containerDecoration, isEmpty:visitorBloc.data.isEmpty, selectAll: (p0) { diff --git a/lib/pages/visitor_password/view/visitor_password_dialog.dart b/lib/pages/visitor_password/view/visitor_password_dialog.dart index 0aa63638..8206d42c 100644 --- a/lib/pages/visitor_password/view/visitor_password_dialog.dart +++ b/lib/pages/visitor_password/view/visitor_password_dialog.dart @@ -318,7 +318,7 @@ class VisitorPasswordDialog extends StatelessWidget { context: context, barrierDismissible: false, builder: (BuildContext context) { - return const AddDeviceDialog(); + return AddDeviceDialog(selectedDeviceIds: visitorBloc.selectedDevices,); }, ).then((listDevice) { if(listDevice!=null){