diff --git a/lib/pages/routiens/bloc/effective_period/effect_period_bloc.dart b/lib/pages/routiens/bloc/effective_period/effect_period_bloc.dart index f4db836b..7f4ca22e 100644 --- a/lib/pages/routiens/bloc/effective_period/effect_period_bloc.dart +++ b/lib/pages/routiens/bloc/effective_period/effect_period_bloc.dart @@ -16,6 +16,7 @@ class EffectPeriodBloc extends Bloc { }; EffectPeriodBloc() : super(EffectPeriodState.initial()) { + on(_initialEvent); on(_onSetPeriod); on(_onToggleDay); on(_onSetCustomTime); @@ -24,6 +25,15 @@ class EffectPeriodBloc extends Bloc { on(_setAllDays); } + void _initialEvent(InitialEffectPeriodEvent event, Emitter emit) { + add(SetCustomTime(event.effectiveTime.start, event.effectiveTime.end)); + emit(state.copyWith( + selectedDaysBinary: event.effectiveTime.loops, + customStartTime: event.effectiveTime.start, + customEndTime: event.effectiveTime.end, + )); + } + void _onSetPeriod(SetPeriod event, Emitter emit) { String startTime = ''; String endTime = ''; diff --git a/lib/pages/routiens/bloc/effective_period/effect_period_event.dart b/lib/pages/routiens/bloc/effective_period/effect_period_event.dart index e1a86915..20f686d6 100644 --- a/lib/pages/routiens/bloc/effective_period/effect_period_event.dart +++ b/lib/pages/routiens/bloc/effective_period/effect_period_event.dart @@ -1,4 +1,5 @@ import 'package:equatable/equatable.dart'; +import 'package:syncrow_web/pages/routiens/models/create_scene_and_autoamtion/create_automation_model.dart'; import 'package:syncrow_web/utils/constants/app_enum.dart'; abstract class EffectPeriodEvent extends Equatable { @@ -8,6 +9,15 @@ abstract class EffectPeriodEvent extends Equatable { List get props => []; } +class InitialEffectPeriodEvent extends EffectPeriodEvent { + final EffectiveTime effectiveTime; + + const InitialEffectPeriodEvent(this.effectiveTime); + + @override + List get props => [effectiveTime]; +} + class SetPeriod extends EffectPeriodEvent { final EnumEffectivePeriodOptions period; diff --git a/lib/pages/routiens/widgets/routine_dialogs/setting_dialog.dart b/lib/pages/routiens/widgets/routine_dialogs/setting_dialog.dart index 33e8ebab..aa4a407b 100644 --- a/lib/pages/routiens/widgets/routine_dialogs/setting_dialog.dart +++ b/lib/pages/routiens/widgets/routine_dialogs/setting_dialog.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_web/pages/routiens/bloc/effective_period/effect_period_bloc.dart'; +import 'package:syncrow_web/pages/routiens/bloc/effective_period/effect_period_event.dart'; import 'package:syncrow_web/pages/routiens/bloc/effective_period/effect_period_state.dart'; import 'package:syncrow_web/pages/routiens/bloc/routine_bloc/routine_bloc.dart'; import 'package:syncrow_web/pages/routiens/bloc/setting_bloc/setting_bloc.dart'; @@ -23,11 +24,18 @@ class SettingHelper { context: context, builder: (BuildContext context) { final isAutomation = context.read().state.isAutomation; + final effectiveTime = context.read().state.effectiveTime; + return MultiBlocProvider( providers: [ - BlocProvider( - create: (_) => EffectPeriodBloc(), - ), + if (effectiveTime != null) + BlocProvider( + create: (_) => EffectPeriodBloc()..add(InitialEffectPeriodEvent(effectiveTime)), + ), + if (effectiveTime == null) + BlocProvider( + create: (_) => EffectPeriodBloc(), + ), BlocProvider( create: (_) => SettingBloc()..add(InitialEvent(selectedIcon: iconId ?? ''))), ], diff --git a/lib/pages/routiens/widgets/routine_search_and_buttons.dart b/lib/pages/routiens/widgets/routine_search_and_buttons.dart index f458d17e..c094b506 100644 --- a/lib/pages/routiens/widgets/routine_search_and_buttons.dart +++ b/lib/pages/routiens/widgets/routine_search_and_buttons.dart @@ -136,7 +136,8 @@ class _RoutineSearchAndButtonsState extends State { final result = await SettingHelper .showSettingDialog( context: context, - iconId: state.selectedIcon, + iconId: + state.selectedIcon ?? '', ); if (result != null) { context.read().add( @@ -277,9 +278,8 @@ class _RoutineSearchAndButtonsState extends State { ? () async { final result = await SettingHelper.showSettingDialog( - context: context, - iconId: state.selectedIcon, - ); + context: context, + iconId: state.selectedIcon ?? ''); if (result != null) { context .read()