Flutter事件总线插件event_bus_auto的使用

Flutter事件总线插件event_bus_auto的使用

EventBusAuto 是一个基于 build_runner 的工具,用于为 EventBus 自动生成注册和注销事件的方法。

安装

在你的 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  event_bus_auto: latest

dev_dependencies:
  build_runner: ^1.10.0
  event_bus_auto_codegen: latest

安装完成后,运行构建命令以生成必要的文件:

flutter packages pub run build_runner build

使用

首先,创建一个新的 Dart 文件(例如 main.dart),并导入所需的包:

import 'dart:async';

import 'package:event_bus/event_bus.dart';
import 'package:event_bus_auto/event.dart';
import 'package:event_bus_auto/event_auto.dart';

part 'main.g.dart';  // 这个文件是通过 build_runner 自动生成的

// 创建一个新的事件类
class NewOrderEvent {}

// 使用 [@EventAuto](/user/EventAuto)() 注解来标记事件处理逻辑
[@EventAuto](/user/EventAuto)()
class Logic with _$LogicEventAuto {
  // 使用 [@event](/user/event) 注解来标记事件处理器方法
  [@event](/user/event)
  void onNewOrderEvent(NewOrderEvent event) {
    print('new order event');  // 打印事件信息
  }
}

void main() {
  // 创建一个 EventBus 实例
  final eventBus = EventBus();

  // 设置 EventBus 实例
  EventAuto.eventBus = eventBus;

  // 创建 Logic 实例并注册事件处理器
  final logic = Logic();
  logic.registerEvents();

  // 触发一个 NewOrderEvent 事件
  eventBus.fire(NewOrderEvent());

  // 如果需要注销事件处理器,可以调用 unRegisterEvents 方法
  // logic.unRegisterEvents();
}

更多关于Flutter事件总线插件event_bus_auto的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter事件总线插件event_bus_auto的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


event_bus_auto 是一个基于 event_bus 的 Flutter 插件,它通过注解自动生成事件总线相关的代码,简化了事件总线的使用流程。使用 event_bus_auto 可以减少手动编写事件订阅和取消订阅的代码,提高了开发效率。

安装

首先,你需要在 pubspec.yaml 文件中添加 event_bus_auto 的依赖:

dependencies:
  event_bus_auto: ^1.0.0

dev_dependencies:
  build_runner: ^2.1.0

使用步骤

  1. 定义事件
    首先,定义一个事件类。事件类是一个普通的 Dart 类,通常会包含一些数据字段。

    class UserLoggedInEvent {
      final String username;
    
      UserLoggedInEvent(this.username);
    }
    
  2. 生成事件总线代码
    使用 [@EventBusSubscriber](/user/EventBusSubscriber) 注解来标记需要订阅事件的类,并运行 build_runner 生成事件总线代码。

    import 'package:event_bus_auto/event_bus_auto.dart';
    
    [@EventBusSubscriber](/user/EventBusSubscriber)()
    class MyWidget extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Container();
      }
    }
    

    运行 build_runner 生成代码:

    flutter pub run build_runner build
    

    这将生成一个 my_widget.event_bus.dart 文件,其中包含了事件订阅和取消订阅的代码。

  3. 发布事件
    你可以通过 EventBus 实例来发布事件。通常,EventBus 是一个全局单例。

    import 'package:event_bus/event_bus.dart';
    
    final EventBus eventBus = EventBus();
    
    void loginUser(String username) {
      eventBus.fire(UserLoggedInEvent(username));
    }
    
  4. 订阅事件
    在生成的代码中,MyWidget 类会自动订阅 UserLoggedInEvent 事件。你只需要实现 onEvent 方法来处理事件。

    [@EventBusSubscriber](/user/EventBusSubscriber)()
    class MyWidget extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Container();
      }
    
      void onEvent(UserLoggedInEvent event) {
        print('User logged in: ${event.username}');
      }
    }
回到顶部