Added gateway screen and bloc

This commit is contained in:
Abdullah Alassaf
2024-06-25 02:21:35 +03:00
parent bc3cd66096
commit f98ebdb2ba
13 changed files with 296 additions and 47 deletions
+2 -2
View File
@@ -87,8 +87,8 @@ class DevicesCubit extends Cubit<DevicesState> {
return const CurtainListView();
// case DeviceType.ThreeGang:
// return const ThreeGangSwitchesView();
case DeviceType.Gateway:
return const GateWayView();
// case DeviceType.Gateway:
// return const GateWayView();
default:
return null;
}
@@ -0,0 +1,23 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/devices/bloc/gateway_bloc/gateway_event.dart';
import 'package:syncrow_app/features/devices/bloc/gateway_bloc/gateway_state.dart';
import 'package:syncrow_app/features/devices/model/device_model.dart';
import 'package:syncrow_app/services/api/devices_api.dart';
class GatewayBloc extends Bloc<GatewayEvent, GatewayState> {
GatewayBloc() : super(GatewayInitialState()) {
on<GatewayInitial>(_fetchDevices);
}
void _fetchDevices(GatewayInitial event, Emitter<GatewayState> emit) async {
emit(GatewayLoadingState());
try {
List<DeviceModel> devicesList = await DevicesAPI.getDevicesByGatewayId(event.gatewayId);
emit(UpdateGatewayState(list: devicesList));
} catch (e) {
emit(ErrorState(message: e.toString()));
return;
}
}
}
@@ -0,0 +1,20 @@
import 'package:equatable/equatable.dart';
abstract class GatewayEvent extends Equatable {
const GatewayEvent();
@override
List<Object> get props => [];
}
class GatewayInitial extends GatewayEvent {
final String gatewayId;
const GatewayInitial({required this.gatewayId});
@override
List<Object> get props => [gatewayId];
}
class GatewayLoading extends GatewayEvent {}
class GatewayUpdateState extends GatewayEvent {}
@@ -0,0 +1,29 @@
import 'package:equatable/equatable.dart';
import 'package:syncrow_app/features/devices/model/device_model.dart';
abstract class GatewayState extends Equatable {
const GatewayState();
@override
List<Object> get props => [];
}
class GatewayInitialState extends GatewayState {}
class GatewayLoadingState extends GatewayState {}
class UpdateGatewayState extends GatewayState {
final List<DeviceModel> list;
const UpdateGatewayState({required this.list});
@override
List<Object> get props => [list];
}
class ErrorState extends GatewayState {
final String message;
const ErrorState({required this.message});
@override
List<Object> get props => [message];
}