问题标签 [stream-builder]

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 回答
819 浏览

flutter - Flutter:StreamBuilder 的行为类似于 StatelessWidget

我是编程的初学者,并尝试在 Flutter 中编写应用程序。我将数据从 algolia 加载到 StreamBuilder(通过将 algolia 库与 as.Stream() 结合使用 - 否则它不起作用)。该代码运行良好,但它不会自动刷新数据 - 我必须在应用程序中加载新屏幕或热重新加载,然后数据更新。看起来 StatefulWidget 的行为类似于 StatelessWidget。你有什么想法 - 也许在某处包含 setState (我认为 StreamBuilder 不需要)?谢谢你的帮助 ;-)。

0 投票
1 回答
9169 浏览

dart - 如何在颤振中基于同一个流控制器获取多个流?

我有一个 Bloc 类,它需要基于同一个流控制器的三个流。

这是一个有状态的待办事项列表。我想在与检索其他状态的流不同的流中检索具有活动状态的待办事项。

我有一个方法负责过滤并根据过滤器值返回一个流。这是方法:

稍后在小部件中使用,如下所示:

快照到目前为止是空的。我如何过滤我的原始流并根据应用于该流的过滤器返回不同的流?

0 投票
3 回答
858 浏览

dart - Bloc 模式不会在屏幕上显示新添加的用户到 sqflite

我正在使用sqflite数据库来保存用户列表。我有用户列表屏幕,它显示用户列表,它有一个 fab 按钮,单击 fab 按钮,用户被重定向到下一个屏幕,他可以在其中将新用户添加到数据库。新用户已正确插入数据库,但当用户按下后退按钮并返回用户列表屏幕时,新添加的用户在屏幕上不可见。我必须关闭应用程序并重新打开它,然后新添加的用户会在屏幕上可见。

我正在使用bloc模式,以下是我显示用户列表的代码

以下是我的集团代码

正如雷米发布的回答说我应该尝试BehaviorSubject并且ReplaySubject我尝试过但它没有帮助。正如评论中指出的那样,我也打电话给 fetchUser();里面insertUser()

以下是完整示例的链接

https://github.com/pritsawa/sqflite_example

0 投票
1 回答
2003 浏览

api - 为什么 StreamBuilder 中没有刷新数据?

我正在 Flutter 中制作电影列表应用程序,当我打开应用程序时,我正在显示观看次数最多的电影列表。当我单击一个按钮时,我会获取新数据并将其添加到接收器,然后将其发送到 StreamBuilder 并且应该用新数据刷新屏幕。
但这不会发生。我无法理解为什么!

这是我的存储库代码:

这是我的块代码:

更新

这是我的 StreamBuilder 代码:

这是触发获取新数据并将其添加到接收器的按钮:

此按钮获取收视率最高的电影并添加到同一个接收器。现在 StreamBuilder 应该按照我的想法获取新数据。

问题出在哪里??

0 投票
0 回答
576 浏览

firebase-realtime-database - Firebaseanimatedlist:如何为后续列表项(聊天)仅显示一次用户名/日期?

我在实时聊天中通过 FirebaseAnimatedList + Firebase 实时数据库接收数据。这是与许多用户的群聊。考虑类似这样的代码,其中 Firebaseanimatedlist 自动侦听然后显示的新项目。

目前,每个列表项都有一个头像、作者、文本(我还添加了日期时间)。

我想实现两件事(类似于例如 WhatsApp): 1. 仅在聊天中将日期显示为“标题/祝酒词”一次,以显示该日期的消息和每条消息中的时间(例如 2 月 8 日:消息 1(时间) ,消息2(时间),...2月9日消息1(时间),消息2(时间),... 2.我希望当有同一作者的后续消息时,作者和他的头像只有在第一条消息上方显示一次,这些消息的边距更小。WhatsApp 使用这两种功能。

ChatMessage 看起来像这样

0 投票
1 回答
2449 浏览

dart - Flutter 流在另一个页面上添加数据

我是 Flutter 的初学者,刚刚创建了我的第一个基本应用程序。它使用列表视图作为首页,并使用 FloatinActionButton 导航到另一个页面。该页面上有一个表单,它将一个对象返回到第一页。

在看了很多视频和教程之后,我不明白,为什么我的首页的列表视图没有更新。一旦我最小化应用程序或导航到另一个页面并返回,列表视图会更新,但不会在我提交表单后立即更新。

我正在使用 BloC 模式(刚刚修改了教程中的复制+粘贴)和 StreamBuilder。

这是我的 main.dart

我的表格(new_cart_form_data.dart

我的集团

0 投票
0 回答
121 浏览

firebase - 使用 FutureBuilder 时异步加载两个依赖流

FutureBuilder在一个非常复杂的工作表中,我正在使用Listview.builder它帮助我列出我周围的所有组(使用 Algolia 搜索),如下所示:

现在,我还想包括totalUsers每个组。问题:它们保存在 Firestore (groups/groupId/totalUsers) 中。现在对于 Firestore,当我需要请求时totalUsers,我必须交出每一个groupId(来自 Algolia 的异步,并且简单地在FutureBuilderas中可用document.data['groupId'])。所以我尝试totalUsers从 ListTile 内调用FutureBuilder,使用getTotalUsers(document.data['groupId']),

...但由于它是异步的,它只是给了我“未来的实例”。现在,包含 totalUsers 并从小部件树中“等待”它的最简单方法是什么?我想我无法在 initstate 中加载它,因为我首先必须从“aroundme”组中交出特定的用户 ID。

0 投票
2 回答
3939 浏览

dart - StreamBuilder 限制

StreamBuilder每当它获得新事件时都会重建。这会导致例如导航 ( Navigator.push) 出现问题,因为如果在导航时接收到新事件,则此触发器会重建。因为在小部件树仍在构建时尝试导航,这将抛出错误

无法根据需要阻止重建以避免此问题。

建议的解决方法基本上是从缓存中获取流。另外: 这里这里

但这意味着如果还想从列表中的卡片提供导航,则不能让 StreamBuilder 构建列表不断更新。例如在卡片中onPressed()见这里

所以刷新数据必须使用pull来刷新……</p>

有人有更好的解决方案吗?或者 Flutter 团队是否正在努力解决这个限制,例如,如果用户点击卡片,则允许阻止重建?

更新:

TL;DR 是拉刷新唯一的方式来更新数据,因为 StreamBuilder 中的流必须被缓存以防止它在每次收到新事件时重建?

更新 2:

我尝试实现缓存数据,但我的代码不起作用:

...

更新 3:

我尝试使用StreamController但无法正确实施:

…</p>

更新 4:

使用建议_localStreamController给出错误:

在 null 上调用了 getter 'stream'。

在 null 上调用了方法“add”。

0 投票
1 回答
101 浏览

asynchronous - Flutter - 我在这里需要一个 FutureBuilder 吗?

在这个例子中,我试图了解我是否需要使用 FutureBuilder,以便让我的 onTap 方法可以使用布尔“selected”的值。

由于我的 Streambuilder 可能需要一些时间来构建,我想知道 this.selected = !this.selected 是否可以正常工作。

我问的原因是我偶尔必须点击两次才能触发 disAllowTouchSounds() 方法。理想情况下,我想避免这种情况。

0 投票
1 回答
5855 浏览

flutter - 页面重新加载后 Flutter StreamBuilder 无法正常工作

我的应用程序中有一个带有 TextField 表单验证器的注册页面,带有一个按钮。如果未满足业务规则,文本字段将显示表单验证错误消息,并且一旦满足所有条件,“下一步”按钮将可点击。这目前在我的应用程序中运行良好,但我发现一旦我离开页面并返回它,验证错误消息将停止显示,并且按钮也停止工作。查看我的 IDE(android studio)中的控制台日志,我得到的唯一相关错误消息是

我不确定这意味着什么,重新加载页面后流是否关闭并且不会重新打开?如果没有,有没有办法可以解决这个问题,或者我缺少什么? 这就是我正在经历的

流生成器代码:

流:

整个屏幕代码:

集团代码: