问题标签 [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.
testing - Flutter:如何模拟 Bloc
我想嘲笑我的集团以测试我的观点。
例如,这是我的 Bloc:
这是观点:
现在,这是我的测试:
如您所见,我只是想测试一下,当用户在搜索中写一些东西并且他正在寻找的对象存在时,应该显示一张卡片。
firebase - 在加载 Firebase 快照时使用 Flutter 中的 Bloc 流式等待和阻止其他事件
我正在使用 Flutter、Firebase Firestore 和 bloc 模式编写应用程序。
当应用程序打开时,我想从 firestore 数据库中加载一些书籍,为此我定义了以下 bloc 代码:
当应用程序启动时,我使用以下代码加载书籍集合:
当书籍加载时我会收到通知,但如果我发送另一个类似这样的事件:
该事件永远不会被处理,因为EditorBloc
它仍在等待方法中的其他快照_loadBooks
。
我应该怎么做才能调度其他事件?
谢谢!
flutter - Flutter Bloc Design - 通知页面有关更改
对此有最佳做法吗?(我使用这个 Todo 示例,因为它更容易在这里解释我的问题)
- TodoOverviewPage(显示所有待办事项)
- TodoAddPage(添加待办事项的页面)
每个页面都有自己的 Bloc。
脚步:
- 从 TodoOverviewPage 我将 wuth pushNamed 导航到 TodoAddPage。
- 在 TodoAddPage 我添加了几个 Todos。
- 使用导航返回按钮返回 TodoOverviewPage
问题:我应该如何通知 TodoOverviewPage 有新的 Todos?
我不确定这是否是正确的方法。解决方案:
- 覆盖 TodoAddPage 中的后退按钮。添加“刷新=真”属性。
- 将 Bloc 从 TodoOverviewPage 添加到 TodoAddPage。并将状态设置为 TodoOverviewPage 将在构建后重新加载待办事项。
感谢您的阅读。
编辑1:
- 添加我的临时解决方案,直到我找到更让我满意的东西。
dart - Flutter:我应该每页使用 BloC 类(UI/View)吗?
作为一名 Android 开发人员,我正在研究和开发一个颤振应用程序。
我不熟悉颤振、飞镖和 BloC 架构模式。无论如何,我正在将 BloC 模式应用到我的颤振应用程序中。
因为我学习了清洁架构,所以我也想应用清洁架构。第一次,我根据特性分离了 BloC 类。
我的玩具应用是 Todo 应用。
所以我有一个非常简单的功能,我将 BloC 定义为:
- 创建待办事项 > CreateTodoBloc
- 更新待办事项 > UpdateTodoBloc
- 获取待办事项 > GetTodosBloc
- 删除待办事项 > DeleteTodoBloc
在我的主页 UI/视图中,显示了待办事项列表,并且可以在用户完成待办事项时更新。
在这种情况下,主 UI/View 应该有两个 BloC:GetTodosBloc 和 UpdateTodoBloc
这可以显示待办事项列表,当用户点击待办事项的按钮时,待办事项被更新并保存到本地数据库中。
但问题是待办事项列表没有改变!我的主页 ui/view 根据待办事项的完整状态显示不同的待办事项列表。
看起来我的概念是错误的......为了解决这个问题,我认为我应该根据 UI/View 使用 BloC。
那么 Home UI/View 将只有一个块对象:“HomeBloc”。
并且“HomeBloc”可能会显示用户界面并更新待办事项。
所以...
我想听听其他开发人员的意见,并知道是否有另一种最佳做法。
dart - Flutter:当我修改一个项目时,我的列表视图没有更新
我正在使用 BloC 架构模式开发一个“待办事项”颤振应用程序。
我的“主页”ui 显示待办事项列表,用户可以单击项目的按钮将状态从“待办事项”更改为“完成”。
当一个项目完成时,它应该以不同于其他未完成的待办事项的另一种颜色显示。
但是当我单击“完成”按钮时,列表视图不会更新。
下面是我的用户界面代码:
这是我的 BloC 课程:
dart - 调用 StreamController.sink.add 时 StreamBuilder 没有反应
我的 Flutter 应用程序中有一个屏幕专门用于编辑对象列表。当您按下编辑按钮时,会弹出一个模式,允许您编辑对象值。当您关闭模型时,列表会通过 BLoC 刷新。但是,当调用刷新列表的方法时,什么也没有发生。
我知道数据已正确存储在数据库中,因为如果我转到上一个屏幕然后返回到编辑屏幕,数据就会更新。谁能帮我弄清楚为什么StreamBuilder
不重建?
flutter - Flutter_bloc 从没有 UI 事件的 firestore 获取更新的数据
我正在使用颤振从少数设备交换 Firestore 数据。
如果我使用 StreamBuilder 一切正常,但我不喜欢将业务逻辑与 UI 混合。我更喜欢使用 BLOC 作为使用 flutter_bloc 插件的模式。
但是 flutter_bloc 以这种方式工作:
脚步:
事件 ------------------------> 新数据但没有新的 UI 事件
异步请求
异步响应
状态(mapEventToState)-------> ¿如何获得新状态?
至于我没有“UI 事件”,因为 Firestore 数据正在从另一台设备更新,我无法更新状态。
我可以在 bloc 构造函数上使用类似的东西:
但我认为这不是正确的方法。
¿ 有什么建议吗?
非常感谢。
J.巴勃罗。
flutter - Flutter:将数据传递给状态
我正在尝试将数据传递到启动 API 调用的块中,但出现错误:
“只能在初始化程序中访问静态成员”
这可能吗?我的方法完全错误吗?
我也尝试将其切换postid
为静态,但不确定如何实际访问postid
该状态。
代码:
我需要访问postid的状态:
建造:
flutter - 如何在上下文之间共享集团
在使用showDialog()
. 但是,如果我尝试像往常一样获取 bloc,通过从上下文中获取它_thisBlocInstance = BlocProvider.of<ThisBlocType>(context)
,我会收到一个错误,表明在此上下文中没有提供 bloc。
我认为这是因为showDialog()
builder 方法为对话框中的小部件分配了一个新的上下文,这些小部件不知道我要查找的 Bloc,它在用户登录后立即实例化:
角落里有一个按钮,显示一个对话框:
在 EventDialog 中,我尝试再次找到带有上下文的块:
这失败了,并出现错误“在 null 上调用了 getter bloc”,或者,没有该类型的 bloc 附加到此上下文。
在使用 showDialog() 或导航到新的上下文之后,是否有某种方法可以仅从上下文中访问该块?
这是块提供者类:
dart - 为什么子小部件 StreamBuilders 没有收到错误?
我正在为 RxDart 苦苦挣扎(也许只是直接进行 Rx 编程)。我目前有一个有状态的小部件,它在它的didChangeDependencies()
. 该调用发出并通过 http 请求获取数据并将其添加到流中。我正在使用BehaviorSubject
,这很好用。我有使用 StreamBuilders 的子小部件,它们获取数据没有问题。我的问题在于处理错误。如果我的 http 请求失败,我会使用流水化流,addError('whatever error')
但我的子小部件的 StreamBuilder 没有收到该错误。它什么也得不到。
所以我有几个问题。
- 这是预期的吗?
- 不应该在 StreamBuilder 中进行错误处理吗?理想情况下,如果出现问题,我想在 UI 中显示一些东西,所以不知道该怎么做。
- 我可以让我的孩子小部件有状态并使用
stream.listen
. 我确实收到了那里的错误,但是拥有它和 StreamBuilder 似乎有点过头了。 - 我在这里遗漏了一些关于流和错误处理的基本知识吗?
这是我的集团:
简化的父小部件:
带有 StreamBuilder 的简化子小部件: