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

Flutter---Stream

概念:Stream 是一个异步数据序列,可以连续地发出多个值(而不是像 Future 只返回一个值)。

创建Stream的方式:在实际开发中,StreamController 是最常用、最实用的创建流的方式。

 最基本的 StreamController 使用

import 'dart:async';void main() {// 1. 创建 StreamControllerfinal controller = StreamController<int>();// 2. 获取流并进行监听controller.stream.listen((data) {print('收到数据: $data');},onError: (error) {print('出错: $error');},onDone: () {print('流结束了');},);// 3. 往流里添加数据controller.add(1);    // 输出: 收到数据: 1controller.add(2);    // 输出: 收到数据: 2controller.add(3);    // 输出: 收到数据: 3// 4. 添加错误// controller.addError('这是一个错误');// 5. 关闭流controller.close();   // 输出: 流结束了
}

StreamController 的核心概念

StreamController = 水管的总阀门↓
controller.stream = 水管的出口↓
.listen() = 在水管出口接个水桶接水↓
controller.add() = 从阀门往里倒水↓
controller.close() = 关闭总阀门

使用StreamController创建单订阅流 / 多订阅流

void streamTypes() {// 1. 单订阅流 (默认) - 只能有一个监听器final singleStream = StreamController<int>();singleStream.stream.listen((data) => print('监听器1: $data'));// singleStream.stream.listen((data) => print('监听器2: $data')); // 错误!// 2. 广播流 - 可以有多个监听器final broadcastStream = StreamController<int>.broadcast();broadcastStream.stream.listen((data) => print('广播监听器1: $data'));broadcastStream.stream.listen((data) => print('广播监听器2: $data')); // 可以!// 添加数据singleStream.add(1);broadcastStream.add(1);singleStream.close();broadcastStream.close();
}

关键点

创建:StreamController<T> controller = StreamController<T>();监听:controller.stream.listen((数据) { ... });发送数据:controller.add(数据);发送错误:controller.addError(错误);关闭:controller.close();广播流:StreamController<T>.broadcast()(多个监听器)

http://www.dtcms.com/a/601068.html

相关文章:

  • 佛山企业网站建设机构南明区住房和城乡建设局网站上
  • 仓颉三方库开发实战:Simple HTTP Server 实现详解
  • 做360网站官网还是百度济南有做五合一网站公司
  • 详细解读视频生成模型Wan2.1代码
  • Cortex-M3-STM32F1 开发:(二十二)HAL 库开发 ➤ STM32 中断逻辑优先级计算
  • THC63LVD1027D一款10位双链路LVDS信号中继器芯片,支持WUXGA分辨率视频数据传输THC63LVD1027支持30位数据通道方案
  • 考研规划手册
  • MongoDB中 client_connection和database和collection之间的关系
  • 建筑网站建设赏析外贸公司用什么建网站
  • [智能体设计模式] 第4章:反思(Reflection)
  • 系统架构设计师与考研408在IT基础设施能力考核上的全面对比研究
  • 饮用水品牌营销型网站手机网站主页
  • 亿网中国网站管理系统绍兴网站网站建设
  • 基于web宿舍管理系统的设计与实现
  • 利用idea创建springboot多模块项目
  • C++仿muduo库高并发服务器项目:Poller模块
  • QT C++ QWebEngine与Web JS之间通信
  • 华为防火墙web配置SSL-在外人员访问内网资源
  • 本地部署事务管理软件 JIRA 并实现外网访问(Windows 版本)
  • 18、Linux常用命令-磁盘分区相关命令
  • nvm与node.js的安装指南
  • python+django/flask+vue的书城图书阅读器系统,亮点含目录章节pycharm
  • 外贸cms什么意思seo海外推广
  • C++网络开发---CURL与CURLcode数据类型
  • 【Python数据分析】数据分析与可视化
  • MyBatis概述
  • Hadoop集群搭建(下):centos 7为例(已将将安装所需压缩包统一放在了/opt/software目录下)
  • 美创网站建设优势开县网站制作
  • 北京市网站建设网站怎么盈利的
  • 2.6、安全大脑:AI驱动的安全编排与自动化响应实战