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 属性可检查当前流的模式。
相关推荐
AI_零食4 分钟前
开源鸿蒙跨平台Flutter开发:手账记事模板库应用
学习·flutter·华为·开源·harmonyos·鸿蒙
提子拌饭1339 分钟前
开源鸿蒙跨平台Flutter开发:家庭影像传承系统
flutter·华为·开源·harmonyos·鸿蒙
李李李勃谦16 分钟前
Flutter 框架跨平台鸿蒙开发 - 手工作品展示
flutter·华为·harmonyos
左手厨刀右手茼蒿18 分钟前
Flutter 三方库 klutter 的鸿蒙化适配指南 - 掌握 Kotlin Multiplatform (KMP) 互操作技术、助力鸿蒙应用构建极致复用且高性能的跨端业务逻辑共享体系
flutter·harmonyos·鸿蒙·openharmony
世人万千丶19 分钟前
开源鸿蒙跨平台Flutter开发:古诗词学习应用
学习·flutter·华为·开源·harmonyos·鸿蒙
独特的螺狮粉32 分钟前
开源鸿蒙跨平台Flutter开发:室内探险游戏应用
开发语言·flutter·游戏·华为·开源·harmonyos·鸿蒙
九狼1 小时前
中型Flutter 项目 Riverpod 2.x 迁移 3.0 避坑实录
flutter
独特的螺狮粉1 小时前
开源鸿蒙跨平台Flutter开发:喝水时间提醒应用
开发语言·flutter·华为·信息可视化·开源·harmonyos·鸿蒙
空中海1 小时前
1.1 Flutter 简介与架构原理
flutter·dart
独特的螺狮粉1 小时前
开源鸿蒙跨平台Flutter开发:手机清理小助手应用
开发语言·flutter·游戏·智能手机·开源·harmonyos·鸿蒙