事件总线提供者

一个 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 上的这些专用 示例

状态

Build

贡献者

许可证

BSD 3条款许可证

GitHub

https://github.com/zamstation/zam_event_bus_provider