flutter Stream 有哪两种订阅模式。

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

单订阅模式 (Single Subscription)​

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

广播模式 (Broadcast)​

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

关键区别​:

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

注意事项​:

  • 广播流需手动管理资源(如 cancel()close()),避免内存泄漏。
  • 使用 isBroadcast 属性可检查当前流的模式。
相关推荐
小雨下雨的雨1 小时前
Flutter 框架跨平台鸿蒙开发 —— GridView 控件之多维网格美学
flutter·华为·交互·harmonyos·鸿蒙系统
cn_mengbei1 小时前
Flutter for OpenHarmony 实战:ElevatedButton 悬浮按钮详解
flutter
不爱吃糖的程序媛1 小时前
OpenHarmony跨端生态适配全指南|Flutter/RN/三方库/C/C++/仓颉 鸿蒙化最佳实践
c语言·c++·flutter
小雨下雨的雨1 小时前
Flutter跨平台开发实战: 鸿蒙与循环交互艺术:无限循环的 Banner 引擎
flutter·ui·华为·交互·harmonyos·鸿蒙系统
奋斗的小青年!!2 小时前
Flutter与鸿蒙深度融合:打造物理引擎驱动的3D卡片交互体验
flutter·3d·harmonyos·鸿蒙
恋猫de小郭2 小时前
Google DeepMind :RAG 已死,无限上下文是伪命题?RLM 如何用“代码思维”终结 AI 的记忆焦虑
前端·flutter·ai编程
行者963 小时前
用Flutter打造适配OpenHarmony的打卡组件:实践与优化
flutter·harmonyos·鸿蒙
cn_mengbei3 小时前
Flutter for OpenHarmony 实战:DropdownButton 下拉选择按钮详解
flutter
cn_mengbei3 小时前
Flutter for OpenHarmony 实战:Checkbox 复选框详解
flutter