dash
Dash library is responsible to offer a service locator pattern that cares about provide and dispose blocs.
A library that cares about provide and dispose blocs
English project snapshot. Visit GitHub for the latest content.
Dash is a simple but efficient library that helps provide BloCs without headaches.
IMPORTANT: Dart2 is required to use this package.
dash to your pubspec.yaml under the dependencies section:dependencies:
dash: ^latest_version
build_runner and dash_generator to your pubspec.yaml under the dev_dependencies section:dev_dependencies:
build_runner: ^2.0.3
dash_generator: ^latest_version
1 - Create a provider class that will gather BlocProvider annotation:
IMPORTANT: Do not forget to add: part 'provider.g.dart';.
import 'package:dash/dash.dart';
part 'provider.g.dart';
@BlocProvider.register(MySampleBloc)
@BlocProvider.register(MyOtherBloc)
abstract class Provider {}
2 - Extend BLoCs from Bloc. It will allow you to override dispose method.
IMPORTANT: All blocs must have an instance() function that returns the instance of the bloc as below.
class MySampleBloc extends Bloc {
@override
dispose() {
//close all streams
}
static Bloc instance() => MySampleBloc();
}
class MyOtherBloc extends Bloc {
@override
dispose() {
//close all streams
}
static Bloc instance() => MyOtherBloc();
}
3 - Run build_runner, it will generate the provider.g.dart class that you added as part on your provider class.
On project directory run in terminal:
pub run build_runner build
For flutter:
flutter packages pub run build_runner build
Note: If you encounter a conflict error, please add the --delete-conflicting-outputs argument to your command:
flutter packages pub run build_runner build --delete-conflicting-outputs
4 - Finally you can get your BLoC instance from anywhere, for example:
@override
Widget build(BuildContext context) {
final _bloc = $Provider.of<MyOtherBloc>();
return Container();
}
@override
void dispose() {
$Provider.dispose<MyOtherBloc>();
super.dispose();
}
Please see the Changelog page to know what's recently changed.
Start with your use case, compare repository activity, and check the original project before adopting it.
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗