demo_hive/lib/bloc/reminder_bloc.dart

83 lines
2.6 KiB
Dart

import 'dart:developer';
import 'package:bloc/bloc.dart';
import 'package:demo_hive/bloc/reminder_event.dart';
import 'package:demo_hive/bloc/reminder_state.dart';
import 'package:demo_hive/domain/entity/reminder.dart';
import 'package:demo_hive/domain/use_case/reminders_use_case.dart';
import 'package:flutter/cupertino.dart';
class ReminderBloc extends Bloc<ReminderEvent, ReminderState> {
final RemindersUseCase remindersUseCase;
ReminderBloc({@required this.remindersUseCase});
List<ReminderEntity> reminders = [];
@override
Stream<ReminderState> mapEventToState(ReminderEvent event) async* {
if (event is InitialEvent) {
yield* _mapInitialEventToState();
}
if (event is AddTitleEvent) {
yield* _mapAddTitleEventToState(event);
}
if (event is GetValueTitleEvent) {
yield* _mapGetValueTitleEventToState(event);
}
if (event is RemoveEvent) {
yield* _mapRemoveEventToState();
}
if (event is RemoveReminderEvent) {
yield* _mapRemoveReminderEventState();
}
if (event is RemoveTitle) {
yield* _mapRemoveTitleEventToState(event);
}
}
Stream<ReminderState> _mapInitialEventToState() async* {
yield state.update(isLoading: true);
reminders = await remindersUseCase.getFull();
yield state.update(list: reminders, isLoading: false);
}
Stream<ReminderState> _mapAddTitleEventToState(AddTitleEvent event) async* {
yield state.update(isLoading: true);
ReminderEntity reminderEntity = ReminderEntity(title: event.title);
reminders.add(reminderEntity);
await remindersUseCase.addNote(reminderEntity);
log('AddTitleEvent: ${reminderEntity.title}');
yield state.update(list: reminders, isLoading: false);
}
Stream<ReminderState> _mapGetValueTitleEventToState(
GetValueTitleEvent event) async* {
yield state.update(isLoading: true);
yield state.update(isEmpty: event.title.isEmpty, isLoading: false);
}
Stream<ReminderState> _mapRemoveEventToState() async* {
yield state.update(isLoading: true);
yield state.update(isEmpty: true, isLoading: false);
}
Stream<ReminderState> _mapRemoveReminderEventState() async* {
yield state.update(isLoading: true);
yield state.update(isEmpty: true, isLoading: false);
}
Stream<ReminderState> _mapRemoveTitleEventToState(RemoveTitle event) async* {
// yield LoadingState();
// //removeNotes(event.index);
// yield state.update(list: listReminder);
}
@override
// TODO: implement initialState
ReminderState get initialState => ReminderState(
isEmpty: true,
list: [],
);
}