mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 15:17:31 +00:00
Created AirQualityDistributionBloc
.
This commit is contained in:
@ -0,0 +1,54 @@
|
|||||||
|
import 'package:bloc/bloc.dart';
|
||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:syncrow_web/pages/analytics/models/air_quality_data_model.dart';
|
||||||
|
import 'package:syncrow_web/pages/analytics/params/get_air_quality_distribution_param.dart';
|
||||||
|
import 'package:syncrow_web/pages/analytics/services/air_quality_distribution/air_quality_distribution_service.dart';
|
||||||
|
|
||||||
|
part 'air_quality_distribution_event.dart';
|
||||||
|
part 'air_quality_distribution_state.dart';
|
||||||
|
|
||||||
|
class AirQualityDistributionBloc
|
||||||
|
extends Bloc<AirQualityDistributionEvent, AirQualityDistributionState> {
|
||||||
|
final AirQualityDistributionService _service;
|
||||||
|
|
||||||
|
AirQualityDistributionBloc(
|
||||||
|
this._service,
|
||||||
|
) : super(const AirQualityDistributionState()) {
|
||||||
|
on<LoadAirQualityDistribution>(_onLoadAirQualityDistribution);
|
||||||
|
on<ClearAirQualityDistribution>(_onClearAirQualityDistribution);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _onLoadAirQualityDistribution(
|
||||||
|
LoadAirQualityDistribution event,
|
||||||
|
Emitter<AirQualityDistributionState> emit,
|
||||||
|
) async {
|
||||||
|
try {
|
||||||
|
emit(
|
||||||
|
const AirQualityDistributionState(
|
||||||
|
status: AirQualityDistributionStatus.loading,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
final result = await _service.getAirQualityDistribution(event.param);
|
||||||
|
emit(
|
||||||
|
AirQualityDistributionState(
|
||||||
|
status: AirQualityDistributionStatus.success,
|
||||||
|
chartData: result,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
emit(
|
||||||
|
AirQualityDistributionState(
|
||||||
|
status: AirQualityDistributionStatus.failure,
|
||||||
|
errorMessage: e.toString(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _onClearAirQualityDistribution(
|
||||||
|
ClearAirQualityDistribution event,
|
||||||
|
Emitter<AirQualityDistributionState> emit,
|
||||||
|
) async {
|
||||||
|
emit(const AirQualityDistributionState());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
part of 'air_quality_distribution_bloc.dart';
|
||||||
|
|
||||||
|
sealed class AirQualityDistributionEvent extends Equatable {
|
||||||
|
const AirQualityDistributionEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
final class LoadAirQualityDistribution extends AirQualityDistributionEvent {
|
||||||
|
final GetAirQualityDistributionParam param;
|
||||||
|
|
||||||
|
const LoadAirQualityDistribution(this.param);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [param];
|
||||||
|
}
|
||||||
|
|
||||||
|
final class ClearAirQualityDistribution extends AirQualityDistributionEvent {
|
||||||
|
const ClearAirQualityDistribution();
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
part of 'air_quality_distribution_bloc.dart';
|
||||||
|
|
||||||
|
enum AirQualityDistributionStatus {
|
||||||
|
initial,
|
||||||
|
loading,
|
||||||
|
success,
|
||||||
|
failure,
|
||||||
|
}
|
||||||
|
|
||||||
|
class AirQualityDistributionState extends Equatable {
|
||||||
|
final AirQualityDistributionStatus status;
|
||||||
|
final List<AirQualityDataModel> chartData;
|
||||||
|
final String? errorMessage;
|
||||||
|
|
||||||
|
const AirQualityDistributionState({
|
||||||
|
this.status = AirQualityDistributionStatus.initial,
|
||||||
|
this.chartData = const [],
|
||||||
|
this.errorMessage,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object?> get props => [status, chartData, errorMessage];
|
||||||
|
}
|
Reference in New Issue
Block a user