items.bloc.dart 897 Bytes
import 'package:benckmark/_bloc_lib/_shared/entitity.dart';
import 'package:benckmark/_bloc_lib/_shared/item.entity.dart';

import 'items.events.dart';
import 'items.state.dart';

class ItemsBloc extends EntityBloc<EntityEvent, ItemsState> {
  @override
  ItemsState get initialState => ItemsState(sampleItems);

  @override
  Stream<ItemsState> mapEventToState(EntityEvent event) async* {
    if (event is AddItemEvent) {
      final List<Item> items = List.from(state.entities)..add(event.item);

      yield ItemsState(items);
    } else if (event is AddItemsEvent) {
      final List<Item> items = List.from(state.entities)..addAll(event.items);

      yield ItemsState(items);
    } else if (event is RemoveItemsEvent) {
      final List<Item> items = List.from(state.entities);

      items.removeWhere((item) => event.itemIds.contains(item.id));

      yield ItemsState(items);
    }
  }
}