import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; import 'package:syncrow_app/features/devices/model/device_control_model.dart'; import 'package:syncrow_app/features/scene/model/scene_static_function.dart'; part 'create_scene_event.dart'; part 'create_scene_state.dart'; class CreateSceneBloc extends Bloc { CreateSceneBloc() : super(CreateSceneInitial()) { on((event, emit) => null as FutureOr); on(_onAddSceneTask); on(_selectedValue); on(_removeTaskById); } List tasksList = []; String selectedValue = ''; FutureOr _onAddSceneTask( AddTaskEvent event, Emitter emit) { tasksList.add( SceneStaticFunction( operationName: event.operation, deviceName: event.deviceName, icon: event.icon, code: event.deviceControlModel.code ?? '', deviceId: event.deviceId, operationalValues: [ SceneOperationalValue( value: event.deviceControlModel.value, icon: '', ), ], ), ); emit(AddSceneTask(tasksList: tasksList)); } FutureOr _selectedValue( SelectedValueEvent event, Emitter emit) { selectedValue = event.value; emit(SelectedTaskValueState(value: event.value)); } FutureOr _removeTaskById( RemoveTaskEvent event, Emitter emit) { emit(CreateSceneLoading()); for (var element in tasksList) { if (element.uniqueCustomId == event.taskId) { tasksList.remove(element); emit(AddSceneTask(tasksList: tasksList)); break; } } } }