事件总线提供者
一个 Flutter 提供者,它将 EventBus 传递给所有小部件。
注意:此包是 zam_event_bus 的扩展。
包内包含
包含以下核心组件。
在此处 查看所有组件的详细信息
如何使用
步骤 1:创建 EventBus
final bus = EventBus(transformers);
EventBus 来自 zam_event_bus 包。
步骤 2:提供 EventBus
final app = EventBusProvider(
bus: bus,
child: MaterialApp(
home: MyHomePage(title: 'Event Bus Demo'),
),
);
runApp(app);
在 MaterialApp 之前添加 EventBusProvider,以便所有路由都可以访问它。
步骤 3:使用 context 分发事件
FloatingActionButton(
onPressed: () => context.dispatch(IncrementEvent()),
tooltip: 'Increment',
child: const Icon(Icons.add),
),
步骤 4:用 View 小部件包装您的 widget 以监听数据
View<Counter>(
builder: (data) => Text(
data.value.toString(),
style: Theme.of(context).textTheme.headline4,
),
)
您还可以使用 StreamBuilder 来监听数据。
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,
);
},
)
或者您可以创建一个扩展 DataWidget 的 widget。
class CounterText extends DataWidget<Counter> {
@override
Widget buildUsingData(BuildContext context, Counter data) {
return Text(
'Inheritance: ${data.value.toString()}',
style: Theme.of(context).textTheme.headline4,
);
}
}
要了解更多信息,请转到 示例部分 或查看 GitHub 上的这些专用 示例。