问题标签 [rxdart]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1312 浏览

dart - 如何使用 Bloc 在 Flutter 中管理条件渲染而不会出现“布尔表达式不得为空”错误?

我只是在尝试颤动,我似乎无法根据 Bloc 中的 BehaviourStream 有条件地渲染组件。

我希望最初显示“_buildPage()”小部件(这是一种身份验证形式),然后当 _isLoading 为真但(_loginSucceded 为假)时,我希望显示微调器。最后,当 _loginSucceded 为 true 且 _isLoading 为 false 时,我希望重定向用户。

实际行为是一旦提交表单,加载程序就会按预期显示。一旦从服务器成功接收到响应,则再次呈现身份验证。

我认为我的逻辑很好,但似乎当我在 Bloc 构造函数中设置流的值时,其他东西会导致应用程序重新呈现,从而导致流中的值为空。

有没有办法确保在构造函数在初始化时运行后流始终具有基值?

还是有更好的方法来管理这种情况?我才刚刚开始从 JS 背景开始研究 Flutter,所以我很可能会遗漏一些东西。

集团代码:

小部件代码:

主要.dart

日志

0 投票
1 回答
8970 浏览

dart - 如何使用 RxDart BehaviorSubject 更新颤振小部件?

我是颤振和飞镖的新手,所以我创建了简单的计数器颤振应用程序,在文章中进行了解释。

但是当主题添加值时流不更新小部件时。有人可以帮我找到问题。

我的主要小部件类

和计数器小部件

这是我的集体课

有人可以帮我找到问题。

谢谢。

0 投票
1 回答
5920 浏览

flutter - 嵌套的 StreamBuilder 是好的模式吗?

我正在使用 Bloc Pattern 和 Streams 从 HackerNews API 获取文章。

我正在加载所有文章并在流构建器的帮助下在 UI 中呈现,这很好用。

现在我用新的加载 StreamBuilder 包装了获取 Stream builder 的文章。现在,当加载流构建器为 true(意味着它正在加载)时,它会显示一个循环进度指示器,否则,它会显示子级(使用 Stream Builder 包装的文章列表)。

这工作正常。但是让我烦恼的是,我将 Stream builder 包装在一个流构建器中。我知道我可以得到 rxdart 的帮助,但我只是不确定如何。

我尝试在 snapshot.hasData 的帮助下添加加载器,但没有成功,所以我决定创建另一个流和主题,它采用布尔值并告诉 UI 是否正在加载。

代码在块中获取数据:

用户界面:

编辑

我已经尝试过了,但这不起作用:

0 投票
0 回答
622 浏览

flutter - Rxdart CombineLatest 与可选字段相结合

我需要帮助,如何combinelatest在 Rxdart Flutter 中使用我有一个可选字段来组合,例如:在我的表单中我有 4 个小部件,我的表单中的小部件是:

  • 文本字段1
  • 复选框
  • 文本字段2
  • 升起按钮

两个textfields然后checkbox使用BehaviourSubject,然后RaiseButton使用combineLatest[通常使用CombinElatest3作为这种方法],但是在我的情况下,有某些条件,当检查复选框时显示了TextField2,并且复选框未经检查,TextField2被隐藏/销毁。所以在我的情况下 textfield2 是可选的,当 textfield2 存在时,然后包含在检查中combinelatest,如果该字段不存在则不检查combineLatest

0 投票
0 回答
59 浏览

validation - RxDart 检查至少 1 个字段已填写

我想问是否可以检查至少 1 个字段并启用我使用RxDart禁用的按钮?所以问题是这样的,我有 4TextField和 1 RaisedButton,所以当 UI 首次运行时RaisedButton被禁用,然后在其中一个TextField被填充后,然后RaisedButton启用点击,我该如何解决这种问题

0 投票
1 回答
2458 浏览

flutter - LayoutBuilder中StreamBuilder时Flutter无限循环

所以我正在制作一个带有LayoutBuilder的页面,如此所述

在 LayoutBuilder 中,我放置了一个带有TextField 的StreamBuilder ,该TextField由 bloc 类SignupFormBlo c 提供支持。流是一个BehaviorSubject

当有人在输入中输入内容时,它会触发 onChanged 函数,该函数是我的流的接收器。所以我在流中添加值,然后我在StreamTransformer中传递值以验证值,然后我让 StreamBuilder 再次构建 TextField 并显示错误消息(如果值无效)。

这是问题的开始。

当我单击 TextField 并输入一些内容时,它会启动一个无限循环,如下所示:

  • StreamBuilder 看到流中的新值
  • StreamBuilder 尝试重建 TextField
  • 一些如何触发 LayoutBuilder 构建器功能
  • LayoutBuilder 构建器函数再次构建 StreamBuilder
  • StreamBuilder 在流中找到一个值(因为 BehaviorSubject)
  • 一切都从第一个被无休止的循环中重新开始

提示:如果我将 BehaviorSubject 更改为 PublishSubject 一切正常

提示 2:如果我完全删除 StreamBuilder 并只保留一个空白的 TextField,您可以在每个条目中看到 LayoutBuilder 构建器函数运行。这是正常行为吗?

0 投票
1 回答
144 浏览

flutter - 尝试在 StreamBuilder 中访问 BLoC 数据时出现不同类型的错误

我正在尝试Bloc在 Flutter 上实现,我刚刚了解了这个功能,但我得到了错误:

错误:

引发了另一个异常:“Future”类型不是“Stream”类型的子类型

我的服务器返回这个结构,我想用blocand得到它rxDart,例如:

我实现的Repository类:

LoginBlock班级

单击查看实现的按钮:

parseResponse方法:

0 投票
1 回答
566 浏览

flutter - 用 Bloc 实现简单的 rxDart 没有得到结果

从我的网络服务器上的这个链接作为

http://instamaker.ir/api/v1/getPersons

我正在尝试avatar从该结果中获取结果并打印,不幸的是我的实现与rxDart并且Bloc没有从该响应中得到结果,并且我没有收到任何错误

服务器响应这个简化的结果:

main.dart文件:(单击按钮从服务器获取结果)

LoginBlock班级:

Repository班级:

我的模型:

BaseUrl班级:

然后InstagramApiProviders上课:

0 投票
1 回答
1474 浏览

dart - 在颤动中使用块和下拉菜单

嗨,我是 Flutter 的新手,并且一直在通过 Flutter 的 udacity 课程构建他们的单位转换器应用程序以尝试了解该框架。我试图使用 bloc 构建应用程序,但在我的下拉菜单中遇到了问题。每次我更改下拉菜单中的项目时,它都会在关注文本输入字段时重置回默认值。它看起来像我在关注文本字段时重建的小部件树。默认单位是重置,因为在我的 bloc 构造函数中,我有一个设置默认单位的方法。我不知道在哪里移动我的默认单位方法,以免它发生冲突。只有在设置了不同的类别并且首次构建时,我应该在我的集团中设置默认单位。

我尝试使用 _currentCatController.stream.distinct 方法仅在传递不同数据时更新流,但这似乎也不起作用。我试图将默认单位方法包装在各种条件语句中,但这些条件语句并没有给我想要的结果。

你可以在这里找到所有的源代码https://github.com/Renzo-Olivares/Units_Flutter

0 投票
1 回答
2035 浏览

flutter - Flutter - 底部导航栏不显示当前选项卡视图

我正在学习颤振。我想用底部导航栏制作应用程序。我已经建立了带有 5 个选项卡的底部导航栏。其中之一是配置文件选项卡。我的情况是当我点击个人资料选项卡时,我的应用程序将检查用户是否已登录。如果用户没有登录,我的应用程序将使用和从 LoginPage 重定向到 LoginPage ,如果登录成功并且如果登录失败或用户点击应用程序栏上的后退按钮Navigator.push(),它将重定向回值。truefalse

之后在 ProfilePage 中,它检查 true 将显示配置文件,false 将重定向到上一页。

我正在使用 rxdart 和 BehaviourSubject 来更改索引页面。我成功更改了标签索引和标签正文。但我的应用程序不显示当前正文(点击配置文件选项卡之前的上一个选项卡)

主要.dart

导航标签.dart

ProfilePage.dart

登录页面.dart