mirror of
https://github.com/SyncrowIOT/web.git
synced 2026-10-25 20:27:56 +00:00
Added scene setting
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:syncrow_web/pages/routiens/bloc/setting_bloc/setting_event.dart';
|
||||
import 'package:syncrow_web/pages/routiens/bloc/setting_bloc/setting_state.dart';
|
||||
import 'package:syncrow_web/pages/routiens/models/icon_model.dart';
|
||||
import 'package:syncrow_web/services/routines_api.dart';
|
||||
|
||||
class SettingBloc extends Bloc<SettingEvent, SettingState> {
|
||||
bool isExpanded = false;
|
||||
String selectedIcon = '';
|
||||
List<IconModel> iconModelList = [];
|
||||
|
||||
SettingBloc() : super(const InitialState()) {
|
||||
on<InitialEvent>(_initialSetting);
|
||||
on<FetchIcons>(_fetchIcons);
|
||||
on<SelectIcon>(_selectIcon);
|
||||
}
|
||||
|
||||
void _initialSetting(InitialEvent event, Emitter<SettingState> emit) async {
|
||||
try {
|
||||
emit(const LoadingState());
|
||||
selectedIcon = event.selectedIcon;
|
||||
emit(TabToRunSettingLoaded(
|
||||
showInDevice: true, selectedIcon: event.selectedIcon, iconList: iconModelList));
|
||||
} catch (e) {
|
||||
emit(const FailedState(error: 'Something went wrong'));
|
||||
}
|
||||
}
|
||||
|
||||
void _fetchIcons(FetchIcons event, Emitter<SettingState> emit) async {
|
||||
try {
|
||||
isExpanded = event.expanded;
|
||||
emit(const LoadingState());
|
||||
if (isExpanded) {
|
||||
iconModelList = await SceneApi.getIcon();
|
||||
emit(TabToRunSettingLoaded(
|
||||
showInDevice: true, selectedIcon: selectedIcon, iconList: iconModelList));
|
||||
}
|
||||
} catch (e) {
|
||||
emit(const FailedState(error: 'Something went wrong'));
|
||||
}
|
||||
}
|
||||
|
||||
void _selectIcon(SelectIcon event, Emitter<SettingState> emit) async {
|
||||
try {
|
||||
emit(const LoadingState());
|
||||
selectedIcon = event.iconId;
|
||||
emit(TabToRunSettingLoaded(
|
||||
showInDevice: true, selectedIcon: event.iconId, iconList: iconModelList));
|
||||
} catch (e) {
|
||||
emit(const FailedState(error: 'Something went wrong'));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
abstract class SettingEvent extends Equatable {
|
||||
const SettingEvent();
|
||||
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
}
|
||||
|
||||
class InitialEvent extends SettingEvent {
|
||||
final String selectedIcon;
|
||||
const InitialEvent({required this.selectedIcon});
|
||||
|
||||
@override
|
||||
List<Object> get props => [selectedIcon];
|
||||
}
|
||||
|
||||
class FetchIcons extends SettingEvent {
|
||||
final bool expanded;
|
||||
const FetchIcons({required this.expanded});
|
||||
|
||||
@override
|
||||
List<Object> get props => [expanded];
|
||||
}
|
||||
|
||||
class SelectIcon extends SettingEvent {
|
||||
final String iconId;
|
||||
const SelectIcon({required this.iconId});
|
||||
|
||||
@override
|
||||
List<Object> get props => [iconId];
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:syncrow_web/pages/routiens/models/icon_model.dart';
|
||||
|
||||
abstract class SettingState extends Equatable {
|
||||
const SettingState();
|
||||
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
}
|
||||
|
||||
class LoadingState extends SettingState {
|
||||
const LoadingState();
|
||||
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
}
|
||||
|
||||
class InitialState extends SettingState {
|
||||
const InitialState();
|
||||
|
||||
@override
|
||||
List<Object> get props => [];
|
||||
}
|
||||
|
||||
class IconLoadedState extends SettingState {
|
||||
final List<String> status;
|
||||
|
||||
const IconLoadedState(this.status);
|
||||
|
||||
@override
|
||||
List<Object> get props => [status];
|
||||
}
|
||||
|
||||
class TabToRunSettingLoaded extends SettingState {
|
||||
final String selectedIcon;
|
||||
final List<IconModel> iconList;
|
||||
final bool showInDevice;
|
||||
|
||||
const TabToRunSettingLoaded({
|
||||
required this.selectedIcon,
|
||||
required this.iconList,
|
||||
required this.showInDevice,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object> get props => [selectedIcon, iconList, showInDevice];
|
||||
}
|
||||
|
||||
class FailedState extends SettingState {
|
||||
final String error;
|
||||
|
||||
const FailedState({required this.error});
|
||||
|
||||
@override
|
||||
List<Object> get props => [error];
|
||||
}
|
||||
Reference in New Issue
Block a user