当前位置: 首页 > news >正文

flutter Stream 有哪两种订阅模式。

Flutter 中的 Stream 有两种订阅模式:

单订阅模式 (Single Subscription)​

  • 只能有一个订阅者(listen 只能调用一次),后续调用会抛出异常。
  • 数据仅在订阅后开始传递,适用于点对点通信场景(如文件读取流)。
  • 默认创建的 StreamController 是单订阅模式:
StreamController<String> controller = StreamController(); // 单订阅

广播模式 (Broadcast)​

  • 允许多个订阅者同时监听,数据会实时分发给所有订阅者。
  • 适用于发布-订阅场景(如全局事件总线)。
  • 通过 StreamController.broadcast() 或转换方法创建:
StreamController<String> controller = StreamController.broadcast(); // 广播
// 或转换现有流
Stream broadcastStream = singleStream.asBroadcastStream();

关键区别​:

  • 单订阅​:数据缓存到订阅时传递,类似“点对点”。
  • 广播​:数据实时广播,类似“群发消息”。

注意事项​:

  • 广播流需手动管理资源(如 cancel() 和 close()),避免内存泄漏。
  • 使用 isBroadcast 属性可检查当前流的模式。

相关文章:

  • 工作常用的git命令
  • Node.js中的洋葱模型
  • C++中的volatile有什么用?
  • PostgreSQL 恢复信息函数
  • flea-cache使用之Redis哨兵模式接入
  • ETL 数据集成平台与数据仓库的关系及 ETL 工具推荐
  • EDR与XDR如何选择适合您的网络安全解决方案
  • 爬虫请求频率应控制在多少合适?
  • 鸿蒙 核心与非核心装饰器
  • Node.js事件循环中的FIFO原则
  • [FA1C4] 博客链接
  • SQL语句,索引,视图,存储过程以及触发器
  • DeepSeek、B(不是百度)AT、科大讯飞靠什么坐上中国Ai牌桌?
  • 【C++】深入理解 unordered 容器、布隆过滤器与分布式一致性哈希
  • 激光打印机常见打印故障简单处理意见
  • 导出导入Excel文件(详解-基于EasyExcel)
  • Git基本操作命令
  • Java—— 双列集合 Map
  • 第一章:HTML基石·现实的骨架
  • 基于单应性矩阵变换的图像拼接融合
  • 专访|日本驻华大使金杉宪治:对美、对华外交必须在保持平衡的基础上稳步推进
  • 金科股份重整方案通过,正式进入重整计划执行环节
  • 上海“量子城市”先导应用场景落地曹杨社区,提供哪些服务?
  • 招商蛇口:今年前4个月销售额约498.34亿元
  • 图集|俄罗斯举行纪念苏联伟大卫国战争胜利80周年阅兵式
  • 洞天寻隐·学林纪丨玉洞桃源:仇英青绿山水画中的洞天与身体