如何使用事件流相关操作

2024-09-07 04:52
文章标签 使用 操作 事件 相关

本文主要是介绍如何使用事件流相关操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 概念介绍
  • 2. 使用方法
    • StreamController
    • StreamBuilder
  • 3. 示例代码

我们在上一章回中介绍了管理Stream事件流相关的内容,本章回中将介绍如何使用Stream事件流输入输出数据 。闲话休提,言归正传,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在上一章回中看到了Stream中的事件流可以自带数据,事件被监听到后可以从监听方法的onData属性中获取到事件流中的数据,有没有其它的方法可以在事件流中
输入输出数据?有。本章回中将介绍如何通过Stream事件流输入输出数据。

2. 使用方法

有两种方法可以通过Stream事件流输入输出数据,一种是使用StreamController对象,另外一种是使用StreamBuilder组件。接下来我们分别介绍它们。

StreamController

  1. 创建StreamController类型的对象,并且初始化该对象;
  2. 使用StreamController对象的add()方法向事件流中添加数据;
  3. 监听StreamController对象中的stream事件流,在onData方法中获取数据;
  4. 关闭StreamController对象中的数据流;
    总结:该方法通过StreamController对象的add()方法向事件流中添加数据,然后在监听方法中通过onData属性输出数据。

StreamBuilder

使用StreamBuilder组件也可以通过Stream事件流输入输出数据:该组件通过提供一个stream类型的属性用来接收stream事件流,然后创建一个用来接收数据的组
件,它会自动监听stream中的数据,并且更新组件中的数据,这点非常适用。这是该组件的完整工作过程,下面介绍该组件中相关的属性:

  • stream属性:用来接收stream事件流,并且自动监听该事件流中的事件;
  • builder属性:主要用来创建一个接收数据的组件,它是方法类型,可以从方法中的第二个参数获取数据;
  • initialData属性:主要用来控制接收数据组件中数据的初始值;
    总结:该方法通过stream属性输入数据,然后把数据输出到builder属性生成的组件上,如果输入数据有变化,它会自动更新组件上输出的数据。

3. 示例代码

//使用streamController在stream中输入输入数据,先初始化它
_streamController = StreamController<String>();//向stream中添加数据,这里的事件是简单的字符串当作数据使用,复杂点的可以做成方法返回string
_streamController.add("event one1");
_streamController.add("event one2");
_streamController.add("event one3");
//添加封装的方法到事件流中
_streamController.add(_eventFunc());//监听事件流并且获取事件流中的数据,
_streamController.stream.listen(_onData,onError: _onError,onDone: _onDone,
);//使用StreamBuilder获取数据
StreamBuilder(initialData: "default",stream: _streamController.stream,builder: (context,dataSource){return Text('${dataSource.data}');},
),

关于上面的代码需要做一些补充说明:使用StreamController对象的add()方法向事件流中添加数据时要保证被添加的数据类型与StreamController类中泛型的
类型一致,比如上面代码中二者的类型都是String.代码中listen()方法中的三个参数没有详细列出来,它们和上一章回中同名的方法相同;使用StreamBuilder组
件的builder属性生成的组件可以是任意的组件,代码中简单起见使用Text组件。StreamBuilder组件可以自动更新组件中输出的数据,这点非常的实用。
我们在这里就不演示程序的运行结果了,建议大家自己动手去实践,此外,这里只列出了核心的代码,完整的代码可以参考github上ex034文件。

看官们,关于"使用Stream事件流输入输出数据"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

这篇关于如何使用事件流相关操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144115

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的