Flutter事件生成与管理插件eventified_generator的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

Flutter事件生成与管理插件eventified_generator的使用

Eventified

将方法调用转换为事件流。

开始使用

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

dependencies:
  eventified:

dev_dependencies:
  build_runner:
  eventified_generator: 

使用方法

1. 声明方法

首先声明一个类,该类定义一组公开的方法,并带有参数。使用 @eventified 注解标注该类。

在文件顶部添加 part 'example.g.dart'; 声明。

方法的返回类型必须是 void

import 'package:eventified/eventified.dart';

part 'example.g.dart';

@eventified
abstract class Example {
  void hello({
    required bool world,
    String? name,
  });

  void world(String name);
}

2. 生成事件类和流实现

运行构建工具命令来生成事件类和流实现:

dart run build_runner build

如果你使用的是 Flutter,可以运行以下命令:

flutter pub run build_runner build

3. 使用实现

/// 创建 `Streamed` 生成实现的实例。
final streamed = StreamedExample();

/// 监听从 `stream` 中发出的事件。
streamed.stream.listen((event) {
  print(event);
});

/// 调用方法以触发相应的事件。
streamed
  ..hello(world: false, name: 'Jeff')
  ..world('john');

/// 上面的调用会在控制台打印:
///
/// HelloExampleEvent(
///   world : false,
///   name : Jeff,
/// )
/// WorldExampleEvent(
///   name : john,
/// )

/// 关闭底层的流。
streamed.dispose();

高级用法

通过注解可以自定义生成的类和行为。

自定义事件名称

你可以设置一个基础事件名称和特定的事件名称。

[@Eventified](/user/Eventified)(baseEvent: 'MyEvent')
abstract class ExampleCustomEventNames {
  [@Event](/user/Event)(name: 'HelloEvent')
  void hello({
    required bool world,
    String? name,
  });

  [@Event](/user/Event)(name: 'WorldEvent')
  void world(String name);
}

添加元数据

你可以生成一个 $metadata 属性,允许在运行时反射事件及其参数。这可能对序列化特别有用。

[@Eventified](/user/Eventified)(metadata: true)
abstract class Example {
  void hello({
    required bool world,
    String? name,
  });

  void world(String name);
}

元数据键也可以独立地使用 [@Event](/user/Event)@EventArgument 注解进行自定义。

[@Eventified](/user/Eventified)(metadata: true)
abstract class Example {
  [@Event](/user/Event)(metadata: 'Hello')
  void hello({
    required bool world,
    @EventArgument(metadata: 'Name') String? name,
  });

  void world(String name);
}

更多关于Flutter事件生成与管理插件eventified_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter事件生成与管理插件eventified_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


eventified_generator 是一个用于 Flutter 的代码生成插件,旨在帮助开发者更轻松地管理和生成事件(Event)相关的代码。通过使用该插件,开发者可以减少手动编写重复代码的工作量,提高开发效率。

以下是如何使用 eventified_generator 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 eventified_generatorbuild_runner 依赖:

dependencies:
  flutter:
    sdk: flutter
  eventified: ^0.1.0  # 请使用最新版本

dev_dependencies:
  build_runner: ^2.1.0
  eventified_generator: ^0.1.0  # 请使用最新版本

2. 定义事件类

接下来,定义一个事件类并使用 @Eventified() 注解标记它。例如:

import 'package:eventified/eventified.dart';

@Eventified()
class UserEvent {
  final String userId;
  final String action;

  UserEvent(this.userId, this.action);
}

3. 生成代码

运行 build_runner 来生成相关代码:

flutter pub run build_runner build

执行该命令后,eventified_generator 会自动生成一个与 UserEvent 相关的类,通常命名为 UserEventManager 或类似的名称。这个类包含了事件的管理逻辑,例如事件的触发、监听等。

4. 使用生成的代码

生成代码后,你可以在项目中使用它来管理事件。例如:

void main() {
  final eventManager = UserEventManager();

  // 监听事件
  eventManager.listen((event) {
    print('User event: ${event.userId}, ${event.action}');
  });

  // 触发事件
  eventManager.trigger(UserEvent('123', 'login'));
}

5. 自定义生成代码

你可以通过 @Eventified() 注解的参数来定制生成的代码。例如,你可以指定生成的事件管理器的名称、是否生成某些方法等。

@Eventified(managerName: 'CustomUserEventManager')
class UserEvent {
  final String userId;
  final String action;

  UserEvent(this.userId, this.action);
}

6. 清理生成的文件(可选)

如果你想要删除生成的文件,可以运行以下命令:

flutter pub run build_runner clean
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!