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

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 属性可检查当前流的模式。
http://www.xdnf.cn/news/6022.html

相关文章:

  • 从新手到高手:全面解析 AI 时代的「魔法咒语」——Prompt
  • Hue面试内容整理-后端框架
  • C++11异步编程 --- async
  • 多目应用:三目相机在汽车智能驾驶领域的应用与技术创新
  • Generative Diffusion Prior for Unified Image Restoration and Enhancement论文阅读
  • Kafka原理深度剖析
  • 【大模型LLM学习】MiniCPM的注意力机制学习
  • LVS+keepalived实战案例
  • 2025-05-13 表征学习
  • Datawhale 5月llm-universe 第1次笔记
  • 从Aurora 架构看数据库计算存储分离架构
  • ArcGIS、InVEST与RUSLE在水土流失模拟及分析中的实践技术
  • C# 高级编程:Expression表达式
  • 记录vsCode连接gitee并实现项目拉取和上传
  • 力扣Hot100(Java版本)
  • 如何学习VBA_3.3.3 VBA程序写好后,如何进行调试,直到程序运行
  • 力扣-543.二叉树的直径
  • 每周靶点分享:Nectin-4、CDH6及文献分享
  • 网络协议分析 实验四 ICMPv4与ICMPv6
  • 紫光同创FPGA实现AD7606数据采集转UDP网络传输,提供PDS工程源码和技术支持和QT上位机
  • 根据输入的数据渲染柱形图
  • 分布式异步强化学习框架训练32B大模型:INTELLECT-2
  • React Native 与 Expo
  • 迅龙3号基于兆讯MH22D3适配CST328多点触摸驱动开发笔记
  • 分别在windows和linux上使用curl,有啥区别?
  • INT202 Complexity of Algroithms 算法的复杂度 Pt.7 NP-Completeness NP完全性
  • JuiceFS v1.3-beta1:新增 Python SDK,特定场景性能 3 倍于 FUSE
  • XA协议和Tcc
  • Vue3+Vite单页面应用(SPA)改造为多页面应用(MPA)
  • 内存泄漏与OOM崩溃根治方案:JVM与原生内存池差异化排查手册