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 属性可检查当前流的模式。
相关推荐
微:xsooop2 小时前
iOS 上架4.3a 审核4.3a 被拒4.3a 【灾难来袭】
flutter·unity·ios·uniapp
程序员老刘2 小时前
假如Flutter用Rust,你也写不出更快的App
flutter·rust·dart
灰灰勇闯IT3 小时前
flutter环境配置中遇到的问题
flutter
renxhui3 小时前
Dart 速通攻略(面向 Android 工程师)
android·flutter·dart
勇气要爆发7 小时前
【第五阶段—高级特性和架构】第七章:CustomPainter—绘图大师
flutter
用户7502734994777 小时前
我用百度文心快码开发了一款积木工坊:用AI让每个孩子都成为小小建筑师
flutter
名字被你们想完了8 小时前
Flutter 实现一个容器内部元素可平移、缩放和旋转等功能(一)
flutter
灰灰勇闯IT8 小时前
Flutter×VS Code:跨端开发的高效协作指南(2025最新配置)
笔记·flutter·harmonyos
●VON9 小时前
Flutter vs React Native vs 原生开发:有何不同?
学习·flutter·react native·react.js·openharmony
白茶三许9 小时前
【OpenHarmony】深入理解 Flutter 异步编程:从基础到实战
flutter·开源·openharmony·gitcode