Added selected device state/event, and clear data event to AnalyticsDevicesBloc.

This commit is contained in:
Faris Armoush
2025-05-14 12:50:16 +03:00
parent 23b9cb5b78
commit 78d4e58996
3 changed files with 41 additions and 2 deletions

View File

@ -13,6 +13,8 @@ class AnalyticsDevicesBloc
this._analyticsDevicesService,
) : super(const AnalyticsDevicesState()) {
on<LoadAnalyticsDevicesEvent>(_onLoadAnalyticsDevices);
on<SelectAnalyticsDeviceEvent>(_onSelectAnalyticsDevice);
on<ClearAnalyticsDeviceEvent>(_onClearAnalyticsDevice);
}
final AnalyticsDevicesService _analyticsDevicesService;
@ -28,6 +30,7 @@ class AnalyticsDevicesBloc
AnalyticsDevicesState(
status: AnalyticsDevicesStatus.loaded,
devices: devices,
selectedDevice: devices.firstOrNull,
),
);
} catch (e) {
@ -37,6 +40,27 @@ class AnalyticsDevicesBloc
errorMessage: e.toString(),
),
);
}
}
}
void _onSelectAnalyticsDevice(
SelectAnalyticsDeviceEvent event,
Emitter<AnalyticsDevicesState> emit,
) {
emit(
AnalyticsDevicesState(
selectedDevice: event.device,
devices: state.devices,
errorMessage: state.errorMessage,
status: state.status,
),
);
}
void _onClearAnalyticsDevice(
ClearAnalyticsDeviceEvent event,
Emitter<AnalyticsDevicesState> emit,
) {
emit(const AnalyticsDevicesState());
}
}

View File

@ -15,3 +15,16 @@ final class LoadAnalyticsDevicesEvent extends AnalyticsDevicesEvent {
@override
List<Object> get props => [param];
}
final class SelectAnalyticsDeviceEvent extends AnalyticsDevicesEvent {
const SelectAnalyticsDeviceEvent(this.device);
final AnalyticsDevice device;
@override
List<Object> get props => [device];
}
final class ClearAnalyticsDeviceEvent extends AnalyticsDevicesEvent {
const ClearAnalyticsDeviceEvent();
}

View File

@ -7,12 +7,14 @@ final class AnalyticsDevicesState extends Equatable {
this.status = AnalyticsDevicesStatus.initial,
this.devices = const [],
this.errorMessage,
this.selectedDevice,
});
final AnalyticsDevicesStatus status;
final List<AnalyticsDevice> devices;
final AnalyticsDevice? selectedDevice;
final String? errorMessage;
@override
List<Object?> get props => [status, devices, errorMessage];
List<Object?> get props => [status, devices, errorMessage, selectedDevice];
}