Improved the search for device in device management

This commit is contained in:
Abdullah Alassaf
2024-09-05 16:39:42 +03:00
parent b94717bc70
commit 67ea7af595
2 changed files with 14 additions and 10 deletions

View File

@ -14,3 +14,11 @@ A few resources to get you started if this is your first Flutter project:
For help getting started with Flutter development, view the For help getting started with Flutter development, view the
[online documentation](https://docs.flutter.dev/), which offers tutorials, [online documentation](https://docs.flutter.dev/), which offers tutorials,
samples, guidance on mobile development, and a full API reference. samples, guidance on mobile development, and a full API reference.
## USEFUL COMMANDS
Run on chrome: flutter run -d chrome --dart-define=FLAVOR='ENV_NAME'
Build: flutter build web --release --dart-define=FLAVOR='ENV_NAME'

View File

@ -1,8 +1,7 @@
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/devices_model.dart';
import 'package:syncrow_web/services/devices_mang_api.dart'; import 'package:syncrow_web/services/devices_mang_api.dart';
part 'device_managment_event.dart'; part 'device_managment_event.dart';
part 'device_managment_state.dart'; part 'device_managment_state.dart';
@ -13,6 +12,7 @@ class DeviceManagementBloc extends Bloc<DeviceManagementEvent, DeviceManagementS
int _offlineCount = 0; int _offlineCount = 0;
int _lowBatteryCount = 0; int _lowBatteryCount = 0;
List<AllDevicesModel> _selectedDevices = []; List<AllDevicesModel> _selectedDevices = [];
List<AllDevicesModel> _filteredDevices = [];
String productName = ''; String productName = '';
DeviceManagementBloc() : super(DeviceManagementInitial()) { DeviceManagementBloc() : super(DeviceManagementInitial()) {
@ -29,6 +29,7 @@ class DeviceManagementBloc extends Bloc<DeviceManagementEvent, DeviceManagementS
final devices = await DevicesManagementApi().fetchDevices(); final devices = await DevicesManagementApi().fetchDevices();
_selectedDevices.clear(); _selectedDevices.clear();
_devices = devices; _devices = devices;
_filteredDevices = devices;
_calculateDeviceCounts(); _calculateDeviceCounts();
emit(DeviceManagementLoaded( emit(DeviceManagementLoaded(
devices: devices, devices: devices,
@ -45,7 +46,7 @@ class DeviceManagementBloc extends Bloc<DeviceManagementEvent, DeviceManagementS
void _onFilterDevices(FilterDevices event, Emitter<DeviceManagementState> emit) async { void _onFilterDevices(FilterDevices event, Emitter<DeviceManagementState> emit) async {
if (_devices.isNotEmpty) { if (_devices.isNotEmpty) {
final filteredDevices = _devices.where((device) { _filteredDevices = _devices.where((device) {
switch (event.filter) { switch (event.filter) {
case 'Online': case 'Online':
return device.online == true; return device.online == true;
@ -58,7 +59,7 @@ class DeviceManagementBloc extends Bloc<DeviceManagementEvent, DeviceManagementS
} }
}).toList(); }).toList();
emit(DeviceManagementFiltered( emit(DeviceManagementFiltered(
filteredDevices: filteredDevices, filteredDevices: _filteredDevices,
selectedIndex: _selectedIndex, selectedIndex: _selectedIndex,
onlineCount: _onlineCount, onlineCount: _onlineCount,
offlineCount: _offlineCount, offlineCount: _offlineCount,
@ -141,12 +142,7 @@ class DeviceManagementBloc extends Bloc<DeviceManagementEvent, DeviceManagementS
} }
productName = event.productName ?? ''; productName = event.productName ?? '';
List<AllDevicesModel> devicesToSearch = _filteredDevices;
List<AllDevicesModel> devicesToSearch = _devices;
if (state is DeviceManagementFiltered) {
devicesToSearch = (state as DeviceManagementFiltered).filteredDevices;
}
if (devicesToSearch.isNotEmpty) { if (devicesToSearch.isNotEmpty) {
_selectedDevices.clear(); _selectedDevices.clear();