热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

小视频源码,Flutter事件传递

小视频源码,Flutter事件传递实现的相关代码typedefvoidEventCallback(arg);classEventBus{EventBus._inte

小视频源码,Flutter 事件传递实现的相关代码

typedef void EventCallback(arg);class EventBus{EventBus._internal();static EventBus _singleton = new EventBus._internal();factory EventBus() => _singleton;var _eMap = new Map>();/// 添加订阅者void register(eventName, EventCallback f) {if (eventName == null || f == null) {return;}_eMap[eventName] ??= new List();_eMap[eventName].add(f);}/// 移除订阅者void unRegister(eventName, [EventCallback f]) {var list = _eMap[eventName];if (eventName == null || list == null) return;if (f == null) {_eMap[eventName] = null;} else {list.remove(f);}}/// 触发事件,事件触发后该事件所有订阅者会被调用void post(eventName, [arg]) {var list = _eMap[eventName];if (list == null) return;int len = list.length - 1;//反向遍历,防止订阅者在回调中移除自身带来的下标错位for (var i = len; i > -1; --i) {list[i](arg);}}
}

使用:
主页:

class EventBusMainPage extends StatefulWidget{@overrideState createState() {return _EventBusPageState();}
}class _EventBusPageState extends State{String textRes = "";@overridevoid initState() {}@overridevoid deactivate() {super.deactivate();EventBus().register("testEvent", (arg){setState(() {textRes = "${arg}";});});}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("EventBus事件接收页"),),body: Column(children: [Text("参数:${textRes}"),RaisedButton(onPressed: (){Navigator.pushNamed(context, "/EventBusNotifyPage");},child: Text("去传递页"),)],));}@overridevoid dispose() {super.dispose();EventBus().unRegister("testEvent");}
}

传递页:

class EventBusNotifyPage extends StatelessWidget{@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("通知"),),body: RaisedButton(onPressed: (){EventBus().post("testEvent", "我是参数");},child: Text("发送消息"),),);}
}

以上就是小视频源码,Flutter 事件传递实现的相关代码, 更多内容欢迎关注之后的文章


推荐阅读
author-avatar
huangzhu321
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有