问题标签 [flutter-streambuilder]

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 投票
4 回答
41998 浏览

flutter - Flutter StreamBuilder 与 FutureBuilder

StreamBuilder和之间的主要区别是什么FutureBuilder

  • 使用什么以及何时使用?

  • 他们打算执行什么任务?

  • 他们每个人如何监听动态列表中的变化?

0 投票
1 回答
48 浏览

firebase - Flutter/Firebase:如何减少对推送/弹出调用的 StreamBuilder 调用?

我有一个带有底部导航栏的屏幕:

我在所有屏幕上都有 streamBuilder。当我改变屏幕时,我的流构建器被一次又一次地调用。我猜使用firebase可能真的很贵。这是其中一个屏幕的代码,有人可以告诉我如何在页面之间切换后避免不必要的调用吗?

0 投票
1 回答
603 浏览

firebase - Flutter:StreamBuilder流未更新

当从 Firebase 获取数据并将其存储到本地 SQLite 数据库时,我的 StreamBuilder 在更改流后没有刷新,并且流也没有更新;

这是我的代码,用于监听来自 Firebase 的数据更改,然后将这些新聊天写入本地

这里是从本地 SQLite 数据库中获取数据的代码:

发送新消息时的预期时间线将是:

用户发送了一条消息 --> 触发 Firebase 中的更改 --> 触发 LOCAL SQLite 添加新数据 --> 因为我们的 SQLite 添加了新的聊天,所以我们的 ChatScreen 应该刷新并且还有一个新的调试消息:'MySqlite:聊天流变化!' 由于 ChatScreen 正在侦听 SQLite 数据库流,因此应该在控制台中再次打印出来。

但实际结果是:

用户发送了一条消息——>成功触发了 Firebase 中的更改——>但我没有看到正在刷新的屏幕,也没有在控制台中看到新的调试消息......

我已经为这个问题苦苦挣扎了好几天,我不知道为什么结果不是我想要的,如果我让 ChatScreen 直接听 Firebase,它就可以了!*

更新:

我刚刚发现如果我重建ChatScreen(弹出屏幕,然后再次打开它),或者在发送新消息时设置状态,我可以看到新消息,证明消息发送后确实进入了SQLite数据库,但它只是没有触发 StreamBuilder。因此 Fetching Stream 可能有问题。

回答:

我刚刚发现 SQLite.query 函数不能作为 Stream 获取,我认为我可以使用“asStream”方法,但这没有做任何事情,这是 SQLite 包尚未实现的缺失功能,所以我添加了作为原始 SQLite 包的包装器的sqlbrite 包,它具有一些附加功能,例如将数据作为流查询。^_^

0 投票
0 回答
142 浏览

flutter - Webscoket 通道关闭后未连接 - Flutter

我正在创建一个 Web 套接字流广播,可以在 Flutter 应用程序中跨多个页面访问。代码如下

在其他页面上,我正在访问此频道并使用

使用上面的代码,我曾经使用 streamBuilder 将所有其他小部件与上面创建的通用蒸汽连接起来。这里的问题是在尝试注销并重新登录时,我使用上面的 connect() 方法来初始化通道流。这样做时出现如下错误

I/flutter (15477):连接请求已发送 I/flutter (15477):错误!无法连接 WS connectWs 错误状态:关闭 I/flutter(15477)后无法添加事件:已发送连接请求 E/flutter(15477):[错误:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:错误状态:关闭 E/flutter (15477) 后无法添加事件:#0 _StreamController.add (dart:async/stream_controller.dart:623:24)

有什么地方出错了吗?

0 投票
1 回答
731 浏览

firebase - Flutter & Firebase:如何检查某个项目是否存在于 Firebase 文档中的数组中

img_firebase

我正在尝试 waitUser(array) 检查存在值我该怎么做?

// 如果waitUser 数组字段存在2 return text("this text") else return text("other text")

0 投票
0 回答
38 浏览

firebase - 基于 Firebase 数据 Flutter 的存在导航到屏幕

在我的 Flutter 应用程序中,我设想根据关联的 Firebase 实时数据库中的表是否已创建来路由已登录的用户。一旦有人打开应用程序,就会调用此小部件。我的第一次尝试涉及使用 StreamBuilder。在我的“authentication.dart”文件中,我有:

这样做似乎带来的许多问题之一是,如果我路由到 DietScreen,并进行更改以导致快照包含数据(在我的情况下,选择饮食计划),我不认为 StreamBuilder实际上已经被处理掉了,所以一旦我做出改变,用户就会自动被路由到 FitnessAppHomeScreen。路由完成后有什么方法可以关闭 StreamBuilder 吗?或者,我应该通过 StreamBuilder 以外的其他东西进行路由吗?我只是在实际检查 Firebase 实时数据库快照中有数据的情况时遇到了麻烦(StreamBuilder 为我提供了一种在小部件中检查它的方法)。

0 投票
1 回答
148 浏览

flutter - 如何在 FirebaseStorage 中使用 StreamBuilder 来通知我的应用我的 Firebase 存储发生变化?在颤振中

这是我的挑战:

我正在使用https://firebase.flutter.dev/docs/storage/usage/ 中的以下示例将图像从我的手机图库上传到我的 FireBaseStorage(它为我提供了String filepath-variable)。

实际上,一切正常。我上传到存储的图像显示在应用程序内的 GridView 中...

但是,如果我通过 FireBase 网站手动将图像上传到我的存储,我的 gridView(显示存储中的图片)不会自动更新。

但是如果我换了屏幕再回来,就会显示手动上传的图片。

看起来我需要像 StreamBuilder 这样的东西,只要我的存储发生变化,我的应用就会收到通知。

有没有人有一个想法如何实现这个或任何其他想法来解决我的问题?

谢谢

0 投票
0 回答
45 浏览

firebase - StreamProvider 未更新

我正在处理诸如对话之类的聊天页面。而且我可以从firebase获取数据流。当我第一次打开页面时,所有数据都来了,但如果新数据添加到firebase,我的ui不会更新。而且当我返回并再次单击以转到对话页面时,新数据即将到来。

我的视图模型功能

我的提供商路线

和 ui

0 投票
1 回答
215 浏览

flutter - Just Audio Flutter Plugin - 如何将 Duration 从 Stream listener 转换为 Integer?

我正在使用 Flutter 的插件来播放从我的应用程序中Just-Audio获取的 mp3 文件。streambuilder返回函数所需文件的streambuilder持续时间 setClip

而不是“10”,“结束”点应该是文件的持续时间减去 500 毫秒。所以我的initState;中有这个流监听器。

但我需要将获取的持续时间转换为整数才能起飞 500 毫秒。不幸的是,int newevent = event.inMilliseconds;抛出以下错误;

我试过这个;

接着;

但是后来我在下面得到了这个红线错误milliseconds: newevent

那么如何从我的流监听器中获取我的持续时间作为整数,以便我可以将它用作中的端点player.setClip

0 投票
0 回答
20 浏览

flutter - 在 Flutter 中如何在 Drawer 中显示 StreamBuilder 的结果

我的 Widget 正文中有一个 StreamBuilder

我的应用程序栏中有一个抽屉,我想在其中显示contactNoToDisp和emailIDToDisp,它们将在asyc调用后作为snapshot.data.data.contactNo和snapshot.data.data.emailID到达

抽屉代码如下:

我不确定在future/asyc返回后如何更新两个类变量contactNoToDisp和emailIDToDisp,以便在抽屉中显示相同的变量