Event Bus Provider
A flutter provider that passes EventBus down to all the widgets.
NOTE: This package is an extension to zam_event_bus.
What’s inside the package
Includes the following core components.
Check out all the components in detail here
How to use
Step 1: Create an EventBus
final bus = EventBus(transformers);
EventBus is from zam_event_bus package.
Step 2: Provide the EventBus
final app = EventBusProvider(
bus: bus,
child: MaterialApp(
home: MyHomePage(title: 'Event Bus Demo'),
),
);
runApp(app);
Add EventBusProvider before MaterialApp so that it is made available to all the routes.
Step 3: Use context to dispatch events
FloatingActionButton( onPressed: () => context.dispatch(IncrementEvent()), tooltip: 'Increment', child: const Icon(Icons.add), ),
Step 4: Wrap your widget with View widget to listen to data
View<Counter>(
builder: (data) => Text(
data.value.toString(),
style: Theme.of(context).textTheme.headline4,
),
)
You can also use StreamBuilder to listen to data.
StreamBuilder<Counter>(
initialData: context.fetch<Counter>(),
stream: context.select<Counter>(),
builder: (context, snapshot) {
final counterText = snapshot.data!.value.toString();
return Text(
counterText,
style: Theme.of(context).textTheme.headline4,
);
},
)
Or you can create a widget extending DataWidget.
class CounterText extends DataWidget<Counter> {
@override
Widget buildUsingData(BuildContext context, Counter data) {
return Text(
'Inheritance: ${data.value.toString()}',
style: Theme.of(context).textTheme.headline4,
);
}
}
To learn more, move on to the example section or check out these dedicated examples in github.
Download Event Bus Provider source code on GitHub
Provides the list of the opensource Flutter apps collection with GitHub repository.

