flutter StreamSubscription 订阅者 stream
当您使用[Stream.listen]收听[Stream]时
则返回[StreamSubscription]对象
List<StreamSubscription?> subscriptions = [];
@overridevoid initState() {super.initState();//subscriptions列表添加两个StreamSubscription。Stream.listen返回StreamSubscription对象subscriptions..add(ZegoUIKit().getAudioVideoListStream().listen(//onStreamListUpdated相当于(event){onStreamListUpdated(event)},接收到数据时触发回调onStreamListUpdated,onDone: () {//streamController.sink.close(); //只有手动调用close方法发送一个done事件,onDone才会被回调print('测试视频控件1-------------getAudioVideoListStream-onDone');},onError: (e) {//有错误时会回调print('测试视频控件1-------------getAudioVideoListStream-onError${e}');}))..add(ZegoUIKit().getScreenSharingListStream().listen(onStreamListUpdated, onDone: () {print('测试视频控件1-------------getScreenSharingListStream-onDone');},onError: (e) {print('测试视频控件1-------------getScreenSharingListStream-onError${e}');}));}
//流会执行且返回List<ZegoUIKitUser>数据Stream<List<ZegoUIKitUser>> getAudioVideoListStream() {return ZegoUIKitCore.shared.coreData.audioVideoListStreamCtrl.stream.map((users) => users.map((e) => e.toZegoUikitUser()).toList());}
//监听数据:获取到流返回的数据后执行下面代码,如果没返回数据就不会执行这里void onStreamListUpdated(List<ZegoUIKitUser> streamUsers) {print('测试视频控件1---streamUsers${streamUsers}');fullScreenUserNotifier.value = ZegoUIKit().getScreenSharingList().isEmpty? null: ZegoUIKit().getScreenSharingList().first;setState(() {updateUserList(ZegoUIKit().getAudioVideoList() + ZegoUIKit().getScreenSharingList(),);});
Flutter异步编程-Stream
Future和stream的区别(Future返回一个异步的结果。stream返回多个结果,持续监听)
Future 表示一个不会立即完成的计算过程。与普通函数直接返回结果不同的是异步函数返回一个将会包含结果的 Future。该 Future 会在结果准备好时通知调用者。Stream 是一系列异步事件的序列。其类似于一个异步的 Iterable(可迭代的),不同的是当你向 Iterable 获取下一个事件时它会立即给你,但是 Stream 则不会立即给你而是在它准备好时
可以使用一个餐厅吃饭场景来理解Future和Stream的区别:
Future就好比你去一家餐厅吃饭,在前台点好你想吃的菜后,付完钱后服务员会给你一个等待的号码牌(相当于先拿到一个Future),后厨就开始根据你下的订单开始做菜,等到你的菜好了后,就可以通过号码牌拿到指定的菜了(返回的数据或异常信息)。 Stream就好比去一家餐厅吃饭,在前台点好A,B,C,D4种你想吃的菜后(订阅数据流过程),然后你就去桌子等着,至于菜什么时候好,你也不知道所以就一直等着(类似于一直监听listen着),后厨就开始根据你下的订单开始做菜, 等着你的第一盘A种菜好了后,服务员就会主动传送A到你的桌子上(基于一种类似订阅-推送机制),没有特殊意外,服务员推送菜的顺序应该也是A,B,C,D。
stream返回数据,监听数据
//Stream实现
void main() async {
Stream stream = Stream.periodic(Duration(seconds: 1), (int value) {
return value + 1;//stream每秒都加1
});
await stream.forEach((element) => print(‘stream value is: $element’));//通过steam可以获得结果
}
相关文章:
flutter StreamSubscription 订阅者 stream
当您使用[Stream.listen]收听[Stream]时 则返回[StreamSubscription]对象 List<StreamSubscription?> subscriptions []; overridevoid initState() {super.initState();//subscriptions列表添加两个StreamSubscription。Stream.listen返回StreamSubscription对象subs…...
安全性算法
目录 一、安全性算法 二、基础术语 三、对称加密与非对称加密 四、数字签名 五、 哈希算法 六、哈希算法碰撞与溢出处理 一、安全性算法 安全性算法的必要性: 安全性算法的必要性是因为在现代数字化社会中,我们经常需要传输、存储和处理敏感的数据…...
解决ASP.NET Core的中间件无法读取Response.Body的问题
概要 本文主要介绍如何在ASP.NET Core的中间件中,读取Response.Body的方法,以便于我们实现更多的定制化开发。本文介绍的方法适用于.Net 3.1 和 .Net 6。 代码和实现 现象解释 首先我们尝试在自定义中间件中直接读取Response.Body,代码如…...
DownloadingImages 下载缓存图片,显示图片文字列表
1. 用到的技术点: 1) Codable : 可编/解码 JSON 数据 2) background threads : 后台线程 3) weak self : 弱引用 4) Combine : 取消器/组合操作 5) Publishers and Subscribers : 发布者与订阅者 6) FileManager : 文件管理器 7) NSCache : 缓存 2. 网址: 2.1 测试接口网址: …...
【应用层协议】HTTPS的加密流程
目录 一、认识HTTPS 二、密文 1、对称加密 2、非对称加密 三、HTTPS加密流程 1、建立连接 2、证书验证 3、密钥协商 4、数据传输 5、关闭连接 总结 在数字化时代,互联网已经成为我们生活和工作中不可或缺的一部分。然而,随着数据的不断增加&a…...
最新AI创作系统/AI绘画系统/ChatGPT系统+H5源码+微信公众号版+支持Prompt应用
一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图…...
Z410 2023款无人机,专为零基础开发者打造的入门级开源无人机
为什么开发Z410升级款-Easydrone无人机 新手开发者通常在本科阶段加入人工智能行业,对无人机二次开发往往一知半解,面临着C、Python、ROS和mavlink等一系列入门知识,学习起来非常困难,学习的过程中也面临许多挫折。为了帮助零基础…...
elementui修改message消息提示颜色
/* el弹出框样式 */ .el-message {top: 80px !important;border: 0; }.el-message * {color: var(--white) !important;font-weight: 600; }.el-message--success {background: var(--themeBackground); }.el-message--warning {background: var(--gradientBG); }.el-message--…...
Linux和Hadoop的学习
目录 1. Linux的常用快捷键2. Hadoop集群部署问题汇总 1. Linux的常用快捷键 复制:CtrlshiftC 粘贴:CtrlshiftV TAB:补全命令 编写输入:i 退出编写:esc 保存并退出:shift: 2. Hadoop集群部署问…...
通达信指标预警信号,自动发送给微信好友1.0
1.功能介绍:十一节假日期间写了一个,可将股票指标预警信号,自动发送给微信好友/微信群(即电脑端的消息,通过模拟微信操作可在手机上显示)。本工具按通达信写的,如果大智慧,同花顺也能…...
浅谈CDN内容分发与全局负载均衡
CDN简介 CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,…...
【框架风格】解释器模式
1、描述 解释器框架风格(Interpreter Framework Style)是一种软件架构风格,其核心思想是构建一个解释器(Interpreter)来解释并执行特定领域或问题领域的语言或规则。以下是解释器框架风格的一些特点: 1. 领…...
c++视觉图像线性混合
图像线性混合 使用 cv::addWeighted() 函数对两幅图像进行线性混合。alpha 和 beta 是两幅图像的权重,它们之和应该等于1。gamma 是一个可选的增益,这里设置为0。 你可以通过调整 alpha 的值来改变混合比例。如果 alpha0.5,则两幅图像等权重…...
Doris 2.0.1 DockerFile版 升级实战
1、Doris 2.0.1 DockerFile 的制作 参考 Doris 2.0.1 Dockerfile制作-CSDN博客 2、之前的Doris 集群通过 Docker容器进行的部署,需提前准备好Doris2.0.1的镜像包 参考: 集群升级 - Apache Doris Doris 升级请遵守不要跨两个及以上关键节点版本升级的…...
kotlin aes 加密解密
文章目录 1. key填充2. 加密3. 解密 1. key填充 aes算法对key的字节数有要求 所以对输入的key要做填充处理 fun fillKey(key: String): ByteArray {val random SecureRandom.getInstance("SHA1PRNG")random.setSeed(key.toByteArray())val generator KeyGenerato…...
sqlite3的lib和头文件在哪下载 2023/9/19 上午10:46:43
2023/9/19 上午10:46:43 sqlite3的lib和头文件在哪下载 2023/9/19 上午10:46:54 你可以从SQLite官方网站下载SQLite的lib和头文件。请按照以下步骤进行操作: 打开SQLite官方网站:https://www.sqlite.org/index.html 在页面上方的菜单中选择 “Download”(下载)。 在下载…...
磁通量概述
磁通量指的是设在磁感应强度为B的匀强磁场中,有一个面积为S且与磁场方向垂直的平面,磁感应强度B与面积S的乘积,叫做穿过这个平面的磁通量,简称磁通(Magnetic Flux)。标量,符号“Φ”。在一般情况…...
MySql 终端常用指令
一、开发背景 利用数据库实现数据的增删改查 二、开发环境 Window10 mysql-8.0.33-win64 三、实现步骤 1、管理员模式打开终端 2、登录数据库(停止 开启 登录) 具体指令参考 MySql 安装篇 …...
【React-hooks篇幅】自定义hooks
首先得了解自定义 Hooks 跟普通函数区别在于哪里? Hooks 只应该在 React 函数组件内调用,而不应该在普通函数调用。Hooks 能够调用诸如 useState、useEffect、useContext等,普通函数则不能。由此可以通过内置的Hooks等来获得Firber的访问方式…...
面试算法21:删除倒数第k个节点
题目 如果给定一个链表,请问如何删除链表中的倒数第k个节点?假设链表中节点的总数为n,那么1≤k≤n。要求只能遍历链表一次。 例如,输入图4.1(a)中的链表,删除倒数第2个节点之后的链表如图4.1&a…...
攻克移动端打包难题:Ebiten全新Java包名验证机制深度解析
攻克移动端打包难题:Ebiten全新Java包名验证机制深度解析 【免费下载链接】ebiten Ebitengine - A dead simple 2D game engine for Go 项目地址: https://gitcode.com/GitHub_Trending/eb/ebiten Ebiten作为一款简单高效的2D游戏引擎,凭借其Go语…...
URLImage核心功能解析:本地缓存、异步加载与错误处理全攻略
URLImage核心功能解析:本地缓存、异步加载与错误处理全攻略 【免费下载链接】url-image AsyncImage before iOS 15. Lightweight, pure SwiftUI Image view, that displays an image downloaded from URL, with auxiliary views and local cache. 项目地址: https…...
如何使用oTranscribe快速转录音频?初学者的完整入门指南
如何使用oTranscribe快速转录音频?初学者的完整入门指南 【免费下载链接】oTranscribe A free & open tool for transcribing audio interviews 项目地址: https://gitcode.com/gh_mirrors/ot/oTranscribe oTranscribe是一款免费开源的音频转录工具&…...
掌握aspnetboilerplate领域服务设计:轻松封装与复用业务逻辑的终极指南
掌握aspnetboilerplate领域服务设计:轻松封装与复用业务逻辑的终极指南 【免费下载链接】aspnetboilerplate aspnetboilerplate: 是一个开源的 ASP.NET Core 应用程序框架,提供了各种开箱即用的功能和模块,方便开发者构建可扩展和可维护的 We…...
Qwen3-ASR-1.7B实操手册:批量识别任务队列管理与进度监控技巧
Qwen3-ASR-1.7B实操手册:批量识别任务队列管理与进度监控技巧 你是不是也遇到过这样的场景?手头有几十个、甚至上百个音频文件需要转成文字,一个个上传、等待、下载结果,不仅效率低下,还容易出错。传统的语音识别工具…...
如何在VirtualBox中安装银河麒麟桌面操作系统V10
版本列表 当前版本:0.1.0 作者:沈传越 技术验证:沈传越 版式设计:沈传越 所属机构:明德融创工作室(Minter Fusion Studio, MFS) 完成时间:2026-2-27 发布时间:202…...
事件触发控制代码及其对应参考文献
事件触发控制代码对应参考文献 1.2023IEEE TRANS 顶刊基于事件触发的深度强化学习自动驾驶决策(CCF-A) 2.多智能体分布式系统的事件触发控制 3.基于观测器的非理想线性多智能体事件触发的跟踪一致性 4.非线性不确定扰动多智能体系统固定时间事件触发一致…...
雪女-斗罗大陆-造相Z-Turbo开发环境搭建:IntelliJ IDEA中Java调用全流程
雪女-斗罗大陆-造相Z-Turbo开发环境搭建:IntelliJ IDEA中Java调用全流程 最近在星图GPU平台上部署了“雪女-斗罗大陆-造相Z-Turbo”这个模型,效果确实惊艳。但光在网页上点点按钮总觉得不过瘾,作为一名Java开发者,我更习惯把能力…...
yz-bijini-cosplay一文详解:LoRA无感切换在Cosplay风格AB测试中的提效价值
yz-bijini-cosplay一文详解:LoRA无感切换在Cosplay风格AB测试中的提效价值 1. 为什么Cosplay创作者需要“LoRA无感切换”? 你有没有试过这样的情景: 刚调好一个提示词,生成了三张图,觉得人物发色偏暗,想换…...
ChatGLM3-6B模型解释性研究:理解大模型的决策过程
ChatGLM3-6B模型解释性研究:理解大模型的决策过程 1. 引言 当我们使用ChatGLM3-6B这样的强大语言模型时,经常会惊叹于它流畅的回答和准确的推理能力。但你是否好奇过,这个拥有60亿参数的"黑盒子"究竟是如何做出决策的?…...
