Dart 产生来自另一个流监听器的流事件

2024-03-19

我有一个函数可以生成stream的具体事件。现在我有一个来自存储服务的流,它有自己的事件。寻找一种方法在发生变化时产生我的事件storage stream.

这段代码片段并不能解决问题。

Stream<BlocState> mapEventToState(
    BlocEvent event,
  ) async* {
  if (event is UploadData) {
    yield UploadDataProgress(progress: 0.0);
    final Storage storage = Storage();
    final Stream<StorageEvent> upload = storage.upload(event.data);

    upload.listen((StorageEvent storageEvent) async* {
      print('***** Listener: ${storageEvent.type} - ${storageEvent.progress}');

      if (storageEvent.type == StorageEventType.error) {
        yield UploadDataError(errorMessage: storageEvent.error);
      }

      if (storageEvent.type == StorageEventType.success) {
        yield UploadDataSuccess();
      }

      if (storageEvent.type == StorageEventType.progress) {
        yield UploadDataProgress(progress: storageEvent.progress);
      }
    });
  }
}

输出: 调试打印可以工作,但事件不会发送到侦听器。

***** Listener: StorageEventType.progress - 0.01924033836457124
***** Listener: StorageEventType.progress - 0.044581091468101464
***** Listener: StorageEventType.progress - 0.6986233206170177
***** Listener: StorageEventType.progress - 1.0

Your yields 从匿名函数中产生(StorageEvent storageEvent) async* {而不是来自mapEventToState.

只需更换listen()await for应该管用。

Stream<BlocState> mapEventToState(
    BlocEvent event,
  ) async* {
  if (event is UploadData) {
    yield UploadDataProgress(progress: 0.0);
    final Storage storage = Storage();
    final Stream<StorageEvent> upload = storage.upload(event.data);

    await for (StorageEvent storageEvent in upload) {
      print('***** Listener: ${storageEvent.type} - ${storageEvent.progress}');

      if (storageEvent.type == StorageEventType.error) {
        yield UploadDataError(errorMessage: storageEvent.error);
      }

      if (storageEvent.type == StorageEventType.success) {
        yield UploadDataSuccess();
      }

      if (storageEvent.type == StorageEventType.progress) {
        yield UploadDataProgress(progress: storageEvent.progress);
      }
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dart 产生来自另一个流监听器的流事件 的相关文章

  • 如果没有 Scaffold,Material App 样式将无法工作

    我正在尝试创建一个没有 Scaffold 元素的 Material design 应用程序 这是纯粹的默认应用程序 import package flutter material dart void main gt runApp MyApp
  • AngularDart 中的 somecomponent.template.dart 导入指向什么?

    我正在阅读 AngularDart路由教程 https webdev dartlang org angular guide router 1 libsrcroutesdart并发现了这个代码片段 import package angular
  • 在 Flutter 中更改深色模式的文本颜色(带有动态主题)?

    当我选择深色模式时 文本变成白色 但我想将所有文本设置为白色70或其他内容 包括按钮和常规文本 如何定义深色模式的默认文本颜色 我的主题数据现在是这样的 class MyApp extends StatelessWidget overrid
  • 颤动中的弯曲导航栏

    目前 我在 flutter 中有一个库https pub dev packages curved navigation bar https pub dev packages curved navigation bar并已经在我的项目中实现了
  • 具有多个滚动方向的颤动列表视图

    我有某种时间表 其中包含小时数和天数 Widget buildSchedule ScheduleLoaded state final List
  • 在 Flutter 中使用 Stream/Sink

    我正在尝试更换increment颤动应用程序代码 通过使用Streams http www dartlang cc docs tutorials streams 来自 Dart API 而不使用范围模型 https pub dartlang
  • 将图像小部件调整为父级高度但溢出宽度

    我想创建一个图像小部件 其大小适合其父级的高度 但随后根据显示图像的纵横比溢出父级的宽度 我试过了FittedBox和组合LayoutBuilder and SizedOverflowBox 但没有运气 到目前为止 我只能将图像的宽度和高度
  • 如何连接flutter到localhost mysql数据库

    我想将本地主机 mysql 数据库连接到 flutter 但我没有这样做 我尝试了 mysql1 与这些连接 ConnectionSettings host 10 0 2 2 port 3306 user root password roo
  • flutter 检测 url 并显示预览

    我正在尝试制作一个类似于 wats app 的链接预览功能 它有两个部分 从文本字段检测 URL 显示该 URL 的预览 第 2 部分有很多插件可以显示预览 但我一直坚持第 1 部分 即如何检测和解析用户在文本字段中输入的 URL 还有一个
  • 如何在 Dart 中传递常见参数?

    说吧 我有 callback orderBy foo reverse true localToThis callback orderBy foo reverse true 您可以在两个回调中看到 我传递了相同的参数 foo reverse
  • 如何在 Flutter 中开始加载主题

    我希望用户可以在我的应用程序中更改并保存主题颜色 但是 我不知道如何在应用程序开始运行时加载保存的主题颜色 比如我想在下面的评论处直接加载保存的主题颜色 我尝试了共享首选项 但是 SharedPreference 实例需要运行await 这
  • 如何在 Flutter 上创建复制到剪贴板事件?

    目前我想在用户设备上为 复制到剪贴板 创建事件 当用户单击 列表视图前导图标 内容复制 时 文本应存储在他的设备剪贴板上 请问有人可以帮助我吗 Widget buildListItem BuildContext context Docume
  • 将多个身份验证提供商链接到一个帐户

    我已经实现了 Facebook 和 Google 登录 但 FireBase 文档称 如果同一用户首先使用 Facebook 注册 然后尝试使用 Google 登录 使用相同的电子邮件 这将导致错误 所以我按照文档并尝试配置帐户关联 但我不
  • 如何在flutter中从设备存储读取CSV文件

    我想将数据从 flutter 中的 CSV 文件导入到 firebase 数据库中 因此 我使用文件选择器从设备中选择 CSV 文件 现在我如何从该文件中读取数据 首先从 dart 包导入 file picker 和 CSV 包 比定义方法
  • 如何设置 dart objectbox 并预填充本地数据库?

    我想用 Flutter 设置一个 ObjectBox 数据库 我想用值预先填充数据库文件 安装应用程序时 数据库文件将被复制并由应用程序使用 我希望能够继续提供架构迁移 是否可以 如何建立这种类型的架构 你有什么例子吗 SOLUTION 通
  • 添加对 json 数据的“Future”api 调用作为无限滚动 Flutter Gallery 示例项目

    尝试学习新的 flutter 框架 看起来非常有前途 完成所有在线演示后 我现在尝试将外部数据添加到 pesto 部分中的 flutter gallery 示例项目中 这些数据可以通过每 10 个项目调用一次新的 Future 数据来无限滚
  • 用于 Flutter 原生广告的 Objective-C 的 Swift 等效项

    我想为我的 Flutter 项目实现原生广告 它使用 Swift 而不是 Objective C https developers google com admob flutter native https developers googl
  • node.js - 将两个可读流写入同一个可写流

    我想知道如果您同时将两个不同的读取流传输到同一目的地 node js 会如何操作 例如 var a fs createReadStream a var b fs createReadStream b var c fs createWrite
  • 在java中将StreamWriter转换为OutputStream?

    我正在尝试使用 System setOut 将 System out 重定向到字符串 它需要一个 PrintStream 有什么方法可以将 StringWriter 转换为 Stream 以便我可以将其传递给 setOut 吗 你不能完全这
  • 颤动附近的连接

    当我尝试在设备上做广告或发现时 我收到此错误 但是前一天在环路上效果很好 PlatformException Failure 17 API Nearby CONNECTIONS API is not available on this de

随机推荐

  • 将 Excel 解析为 JSON

    我想知道是否可以将 excel 解析为 json 如果可能的话 Excel 的结构使其成为可能 有应用程序什么的吗 我有这个 JSON 结构http pastie org 2760828 http pastie org 2760828我必须
  • Swift 中的@dynamicCallable 是什么?

    来自苹果的文档 The dynamicCallable属性让你可以调用named types就像你打电话一样 使用简单语法糖的函数 主要用例是动态语言互操作性 你为什么要使用 dynamicCallable而不是直接方法 dynamicCa
  • Angular 7 - 向动态创建的组件添加拖放行为

    这是我在 SO 上提出的上一个问题的延续 在声明组件选择器时添加指令 Angular 7 https stackoverflow com questions 56072516 add directives to component sele
  • VBA-Loop 和一些工作表

    我是一个初学者 我想在我的 Excel 文件的所有工作表中进行循环 除了第一个工作表 然而 下面的代码仅适用于第二个 您能解释一下这段代码有什么问题吗 非常感谢 Sub MobileTCalculation MobileTCalculati
  • Ivy、Ant、Jenkins - 在 Jenkins 构建上使用 是个好主意吗?

    我们将使用 Ivy 和 Ant 并且让 Jenkins 来完成我们的构建 我原本以为让詹金斯做一个
  • 如何使用Nashorn引擎调用Java对象

    我想使用 Nashorn 控制台来替代 Rails c 例如 我想调用Java方法从远程系统导入数据并执行数据迁移 我发现这非常有趣 https www baeldung com java nashorn https www baeldun
  • 带或不带 MSYS 的 MinGW makefile(del 与 rm)

    我正在使用 MinGW 在 Windows 上编译一些东西 我打电话mingw32 make直接来自cmd exe一切 我需要的 都工作正常 但是我发现我需要能够从 MSYS 环境进行编译 并且我遇到了问题copy and del命令不被识
  • 触摸事件不适用于 Cordova 应用程序的 ios 版本

    我有一个非常简单的科尔多瓦应用程序 它是默认科尔多瓦 设备就绪 模板的扩展 它有一个按钮 附加了一个简单的单击事件 可以看到这里在 iOS 模拟器上运行 以下是我的项目的代码 索引 html
  • 使用记录编辑器/Jrecord 解压 COMP-3 数字

    我根据 cobol copybook 创建了布局 布局快照 我尝试加载数据并选择相同的布局 它给我的某些列提供了错误的结果 我尝试使用所有二进制数字类型 类阶边缘 DIV 无 EDG 办公室 无 EDG 注册区域无 EDG 城市 无 EDG
  • 使用“lapply”对数据框 (R) 中的所有列进行缩排序

    我正在尝试应用Winsorize 函数使用lapply来自library DescTools 包裹 我目前拥有的是 data col1 lt Winsorize data col1 这本质上用基于分位数的值替换了极值 替换了以下数据 gt
  • 在Python中解析日期字符串

    我如何重写以下子句 if u in date category title month 1 elif u in date category title month 2 elif u in date category title month
  • Firefox 和 Chrome 填充之间的区别

    Firefox 和 chrome 在 css 中渲染填充的方式有所不同 在 Chrome 中显示正确的内容在 Firefox 中进行了额外填充 有办法解决吗 button font family helvetica arial font s
  • ({"key": "value"} = {}) 语法在 JavaScript 函数中的含义是什么

    我正在学习 JavaScript 课程 特别是 MongoDB 大学 M220JS 课程 在其中一个任务中 我遇到了类内函数声明的语法 static async getMovies filters null page 0 moviesPer
  • Azure Functions 绑定重定向

    是否可以在 azure 函数文件夹结构中包含 web config 或 app config 文件以允许程序集绑定重定向 假设您正在使用最新的 2017 年 6 月 Visual Studio 2017 函数工具 我根据以下发布的代码片段得
  • 如何将整个表格视图捕获为图像,从中创建 .pdf 并通过电子邮件发送

    这是我第一次尝试在 iOS 中创建 pdf 文件 我有一个表格视图 它生成我想要在 pdf 文件中呈现的所有数据 这是我的代码 用于将整个表格捕获为图像 从图像生成 pdf 并通过电子邮件发送 IBAction save id sender
  • PRG 模式是否有一个在验证失败时不会重定向的名称?

    我的网站遵循重定向后获取模式 似乎有两种方法可以处理失败的验证 任何一个 使用验证消息渲染页面 临时存储验证消息 并重定向到显示消息的 GET 这两种实现都遵循 PRG 模式吗 是否有更具体的方法来描述这两种模式 我问这个问题主要是为了教育
  • 文件 ld-linux-x86-64.so.2 中未定义版本 GLIBC_PRIVATE

    如果有人可以给初学者一些有关 gcc 版本问题的帮助吗 我遇到了这个问题 version GLIBCXX 3 4 20 not found 我点击链接后 如何在 CentOS 7 2 上使用 yum 安装 gcc 5 3 https sta
  • 静态变量顺序[重复]

    这个问题在这里已经有答案了 我对 C 中静态变量声明的顺序有疑问 当我运行这段代码时 static class Program private static int v1 15 private static int v2 v1 static
  • 具有虚函数的类的大小

    我正在修改 C 概念 但我坚持使用非常简单的代码 include
  • Dart 产生来自另一个流监听器的流事件

    我有一个函数可以生成stream的具体事件 现在我有一个来自存储服务的流 它有自己的事件 寻找一种方法在发生变化时产生我的事件storage stream 这段代码片段并不能解决问题 Stream