bloc_stream 1.0.1 bloc_stream: ^1.0.1 copied to clipboard
A simple package that helps you to implement the BLoC pattern in your applications.
A simple package that helps you to implement the BLoC pattern in your applications.
The BlocStream
class is just a Stream
with a couple extra methods added to reduce
boilerplate. You can subclass it and add your own methods, to implement your business
logic.
Internally it uses a BehaviourSubject
from the rxdart package to provide data
to the stream. The add
and addError
methods are exposed so you can push
state to the stream from your methods.
Here is an example BLoC that provides a list of events:
import 'package:bloc_stream/bloc_stream.dart';
import 'package:equatable/equatable.dart';
import 'package:example/event_repository.dart';
// State
// We use the Equatable package so we can easily implement the == operator for
// our state.
abstract class EventsState extends Equatable {
@override
List<Object> get props => [];
}
class NoEvents extends EventsState {}
class EventsLoaded extends EventsState {
EventsLoaded(events);
final List<Event> events;
@override
List<Object> get props => events;
}
// Bloc
class EventsBloc extends BlocStream<EventsState> {
EventBloc(this.repository);
final EventRepository repository;
@override
int get initialValue => NoEvents();
Future<void> fetch() async {
try {
final events = await repository.list();
add(EventsLoaded(events));
} catch (err) {
addError(err);
}
}
}
Usage with Flutter #
Use this package in combination with Provider and StreamBuilder.
You could also use a StreamProvider from the Provider package.