问题标签 [bloc]

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 投票
3 回答
858 浏览

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

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

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

以下是我的集团代码

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

以下是完整示例的链接

https://github.com/pritsawa/sqflite_example

0 投票
2 回答
1265 浏览

dart - 用于隐藏和取消隐藏小部件的 Bloc 模式

我正在尝试从互联网上获取一些数据并将其显示在一个列表中。

以下是我的bloc代码

以下是我隐藏统一小部件的主要代码

buildList方法bodyScaffold

假设用户在打开应用程序时有互联网,然后我能够看到circularprogressindicator,然后数据列表可见,但假设在开始时打开应用程序并且用户没有互联网,然后我显示无网络可用文本和按钮重试,现在如果用户已连接到互联网,然后单击按钮重试,我会在几秒钟后直接看到数据列表,而不是circularprogressindicator。我无法理解为什么NoInternetviews没有隐藏并且progressindicator正在显示在显示数据列表之前单击重试按钮。

我的流在调用重试按钮时没有得到更新。StreamBuilderinside有什么警告StreamBuilder吗?

我尝试更改StreamBuilder@ivenxu 在答案中提到的顺序,但它仍然不起作用。以下是附加代码的链接 https://drive.google.com/file/d/15Z8jXw1OpwTB1CxDS8sHz8jKyHhLwJp7/view?usp=sharing https://drive.google.com/open?id=1gIXV20S1o5jYRnno_NADabuIj4w163fF

0 投票
1 回答
1738 浏览

dart - 错误“类型'未来' 不是 'StreamTransformer 类型的子类型, 列表>'"

我在我的 BLOC 中收到错误“类型‘Future’不是‘StreamTransformer,List>’类型的子类型”。

这是我的应用程序的结构:一个 BLOC(即,reports_bloc)。一个Repository(即repository)。一个 API Provider(即 api_provider)。

详细地说,API Provider 文件在线获取数据。Repository 文件准备好来自 API Provider 的数据(实际上,我也在使用 DB,这也是我选择使用 Repository 文件的原因)。BLOC 旨在从 Repository 获取数据并相应地将其添加到 Stream 和 Sink。我相信问题出在 BLOC 中(关于添加到 Stream 和“下沉”数据,我可能在这里弄错了)。

代码在这里:

预期的结果是能够从存储库添加数据并接收它。

0 投票
1 回答
3080 浏览

dart - 如何过滤 rxdart 中的 obseravble 列表

我正在尝试在 rxdart 中实现 bloc 模式。我正在尝试构建 app 类型的 todo 应用程序。我实现了显示列表中的所有项目,但我想要的不是在不同部分显示已完成和未完成的项目。但是,我无法根据完成的 rxdart 过滤项目。

我想要的是获得完成的 shoppingItems 。ShoppingItem 类有一个布尔属性 completed 。我想在此基础上对其进行过滤。

任何帮助将不胜感激

0 投票
1 回答
124 浏览

dart - 强制堆栈重新创建自定义小部件

我有两个自定义小部件的堆栈,它们都是定位的:

  1. 简介卡
  2. ProfileCardDummy

ProfileCard:这个自定义的 Stateful Widget 是第一个堆栈的小部件,堆栈在顶部。这个小部件是 Dismissible 的。

ProfileCardDummy:这个自定义的无状态小部件是堆栈的背景小部件。

所以ProfileCard小部件是堆栈顶部的一个,其他背景堆栈是ProfileCardDummy

我的代码是这样的:

所有的魔法都发生在ProfileCard中,我使用 BloC 模式获取卡片的内容(主要是按钮)。

我在 ProfileCard 状态的构造函数上调度 bloc 事件。就像是:

问题是,当我运行代码时,第一个 ProfileCard 正确显示了它的按钮。现在,当我关闭它时,会显示第二个 ProfileCard,但带有第一个 ProfileCard(我关闭的那个)的按钮。

经过数小时的调试,我注意到ProfileCard ( _ProfileCardState() ) 的构造函数仅在第一张卡上被调用。其他卡片继承了第一类的按钮。

在 Stack 的文档中,它说:

我的 ProfileCard 将键作为参数(因为它扩展了 StatefulWidget),但我没有传递任何键。传递密钥会解决这个问题吗?如何传递唯一密钥?:P

是否有一种方法可以强制重新创建小部件以强制再次调用构造函数,从而正确获取按钮?

0 投票
1 回答
4509 浏览

flutter - 如何使一个集团全球可访问

我正在努力将块模式放入我的 Flutter 应用程序中。我正在使用这个库让它对我来说更简单一点:https ://felangel.github.io/bloc/#/

我有一个主要问题。我怎样才能让我的 Bloc 可以在全球范围内访问,而不会一次又一次地传递下去?

这是我的代码:

主要飞镖:

备注页:

正如您所看到的,我在小部件代码中也有显示对话框代码,我很想将其导出,但到目前为止,如果显示对话框代码不在 Bloc 生成器中,则它无法访问 _dbNoteBloc。

谢谢你的每一个帮助。

PS:如果有人需要这里的 Bloc 代码,它是:

0 投票
1 回答
3119 浏览

dart - 正在重新创建 Flutter BLoC

我正在发现 Flutter 和 bloc 模式,为了练习我正在制作一个关于比萨的应用程序。

我正在使用 aBlocProvider来访问块。它来自generic_bloc_provider包。它是使用 aInheritedWidget与 a 结合的基本实现StatelessWidget

我有一个包含两个可编辑文本字段的页面,用于显示我想要创建的披萨的名称和价格。它由一个集团支持。

这是代码:

AddPizzaPage.dart :

ListPage.dart:

添加PizzaBloc.dart:

我的问题是我将正在构建的 Pizza 存储在块内,但小部件被重建,因此块被重建并且我失去了状态。

完整代码可在gitlab上找到

我不知道如何使用 bloc 为 addPizza 表单提供动力。

0 投票
1 回答
3350 浏览

dart - 购物车的 Bloc 柜台

我正在尝试使用 bloc 模式构建一个购物车,因为这是我在 Flutter 中的第一个应用程序以及使用 bloc。我的问题是,每次用户将产品添加到购物车时,我都试图获取 int 流。但似乎我使用的接收器和流错误,但我不知道确切的位置

项目计数器块

柜台

此外,我还有另一个用于将商品添加到购物车的集团。

0 投票
2 回答
785 浏览

dart - Stream 可以一次听一次还是一般听一次?

我有这个 StreamController:

StreamController<Workout> _selectedWorkoutSubject = new StreamController()

我在这样的 StreamBuilder 中听它:

当我离开当前页面并返回它时,我得到了例外:Bad state: Stream has already been listened to.我知道我一次只能一次,但这不是我正在做的吗?当我离开页面时,StreamBuilder 应该收集垃圾,释放流,以便其他东西可以收听它。

或者一个 Stream 一般只能听一次(一次不是一次)?我知道我能做到

但我试图理解为什么它不像我最初那样工作。

0 投票
1 回答
563 浏览

flutter - Flutter Back 导航和 Bloc 数据

我有这个流程

发生的情况是从 screen1 转到详细 screen2(带有数据集 A),然后在此屏幕内有一个按钮,它将再次调用 screen2 和另一组数据(数据集 B)

所以当我想回去时,这里的数据仍然显示数据 B

我期望的是

这与 BloC BehaviorSubject 模式有关吗?我尝试了 PublishSubject,但结果也一样。