entitity.dart
950 Bytes
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:meta/meta.dart';
import 'package:uuid/uuid.dart';
@immutable
class Entity extends Equatable {
final String id;
Entity([String id]) : this.id = id ?? Uuid().v4();
@override
List<Object> get props => [id];
}
@immutable
abstract class EntityEvent<E extends Entity> extends Equatable {}
@immutable
class EntityState<E extends Entity> extends Equatable {
final Map<String, E> dictionary;
final List<String> ids;
final List<E> entities;
EntityState([this.entities = const []])
: dictionary = Map.fromIterable(entities,
key: (entity) => entity.id, value: (entity) => entity),
ids = List.from(entities.map((entity) => entity.id));
@override
List<Object> get props => [dictionary, ids, entities];
}
abstract class EntityBloc<Event extends EntityEvent, State extends EntityState>
extends Bloc<Event, State> {}