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 属性可检查当前流的模式。
相关推荐
梧桐ty9 小时前
解耦之道:鸿蒙+Flutter混合工程的微内核架构与模块化实战
flutter·华为·harmonyos
名字被你们想完了11 小时前
Flutter 实现一个容器内部元素可平移、缩放和旋转等功能(六)
flutter
Melrose12 小时前
Flutter - 使用Jaspr来构建SEO友好网站
前端·flutter
梧桐ty14 小时前
鸿蒙+Flutter混合工程化:构建、依赖管理与持续集成实战
flutter·华为·harmonyos
名字被你们想完了14 小时前
Flutter 实现一个容器内部元素可平移、缩放和旋转等功能(五)
flutter
无知的前端16 小时前
Flutter常见问题以及解决方案
前端·flutter·dart
无知的前端16 小时前
一文精通-Mixin特性
flutter·面试·dart
_大学牲16 小时前
Flutter 勇闯2D像素游戏之路(四):与哥布林战斗的滑步魔法师
flutter·游戏·游戏开发
ujainu小17 小时前
Flutter 视频播放全攻略:video_player 2.10.1 插件全平台集成与实战
flutter·音视频
搬砖的kk18 小时前
Flutter UUID 鸿蒙平台适配实践 - 全版本测试与验证
flutter·华为·harmonyos