BlocProvider.value 如何与添加的事件一起使用

Posted

技术标签:

【中文标题】BlocProvider.value 如何与添加的事件一起使用【英文标题】:How does BlocProvider.value works with added Event 【发布时间】:2021-07-31 20:27:34 【问题描述】:

如果将一个事件添加到 BlocProvider.value 中正在传递的块中会发生什么?

会在我进入页面之前还是之后添加事件?

Blocprovider.value 是避免在 initState() 方法中向 bloc 添加事件的理想方法吗? 我正在尝试避免 initstate,因为我正在收听来自 firebase 的数据流(此事件只需调用一次)。

【问题讨论】:

每次构建都会调用 BlocProvider.value 中的 add-method。这不是最佳方式。此添加事件将在当前构建之后添加。 处理此问题的最佳和最佳方法是什么? @Mäddin 我可能会在 didChangeDependencies 中进行此初始化。但我不知道这是否是最佳做法。 【参考方案1】:

我找到了解决方法, 使用上述方法将使 LoadProductFromStream 事件在进入/打开 StreamproductPage() 之前就被调用。

为了避免这种情况,可以改用简单有效的方法

    创建包装小部件 创建正文(显示结果的主要小部件) 下面附上一张图片来说明这一点

包装小部件是创建/初始化块的地方 以及 LoadProductFromStream() 事件将添加到 bloc 的位置

总结

这样我们只在到达 StreamproductPage

时将 LoadFromStream() 事件添加到 bloc

外卖

BlocProvider(create:(context)=> xyzBloc()) //可以自动关闭bloc

同时 BlocProvider.value() // 不会自动关闭 bloc (我会被纠正)

【讨论】:

以上是关于BlocProvider.value 如何与添加的事件一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Bloc:在创建的上下文中没有我的 bloc 的祖先,而我很好地为其提供了 BlocProvider.value

我如何转移集团供应商

如何添加与多个精灵的碰撞

如何通过与模型比较将特定的缺失字段添加到 json 对象

我如何 git 只添加与模式匹配的行?

c# 中如何在GroupBox控件中动态添加与移除控件