flutter 父子组件 event_bus

 

EventBus概述

// EventBus 是一个用于Dart的事件总线。它可以用来帮助应用组件之间进行解耦合的通信。
// 更多详情和使用方法可以访问官方文档:
https://pub.dev/packages/event_bus

创建eventBus.dart文件

// 导入event_bus包
import 'package:event_bus/event_bus.dart';

// 初始化EventBus实例
EventBus eventBus = EventBus();

// 创建一个LoggedInEvent事件类,用于标识用户登录事件并传递用户数据
class LoggedInEvent {
  var user;
  LoggedInEvent(this.user);
}

在父组件中发送事件

// 使用RaisedButton组件,当按下时,通过eventBus发送LoggedInEvent事件给子组件
RaisedButton(
  child: Text('向子组件发送'),
  onPressed: () {
    eventBus.fire(LoggedInEvent('你好啊LoggedInEvent'));
  },
),
ChildPage(),

在子组件中监听事件

// 在子组件中声明一个用于取消监听的变量
var cancleLoggedInEvent;

// 在组件的初始化方法中设置监听
@override
initState() {
  super.initState();
  
  // 使用eventBus的on方法监听特定类型的事件
  cancleLoggedInEvent = eventBus.on<LoggedInEvent>().listen((event) {
    // 当收到事件时,输出用户数据并调用change()方法
    print(event.user);
    change();
  });
}

// 组件销毁时取消事件监听,避免内存泄漏
dispose(){
  super.dispose();
  cancleLoggedInEvent.cancel(); // 注意: 这里的方法应为cancel,而不是cancle
}

// 可以使用以下方法监听特定事件或所有事件
// eventBus.on<LoggedInEvent>().listen((event) {});
// eventBus.on().listen((event) {});

posted on 2020-03-02 14:40  完美前端  阅读(490)  评论(0)    收藏  举报

导航