83 lines
2.6 KiB
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: [],
|
|
);
|
|
}
|