Ten*_*nce 3 event-driven-design flutter clean-architecture bloc flutter-bloc
除了可追溯性(您也可以通过 Cubit 中的适当日志记录来实现)和高级事件转换(我想不出 Cubit 无法做到的任何“高级”事件转换,因为总有办法做到这一点)使用 Cubit。如果您使用干净的架构,域/数据层可以帮助进行复杂的数据操作)。
这些是我正在寻找的应该能够用 Bloc 完成的事情,因为这些事情实际上不能用 Cubit 完成。然而,这些似乎是不可能的(或者是吗?),因为在 Bloc 上添加事件需要您识别将添加事件的实际 Bloc。bloc.add(YourEvent())。
此外,事件共享有些争议,因为这可能会导致糟糕的架构/难以维护。
对于事件溯源,我无法在文档中找到这是否可能(返回到特定的过去状态?)。
我在这里错过了什么吗?
据我所知,当您具有不可变状态时,无论是块还是肘,都可以轻松地恢复到过去的状态。具有不可变状态允许您存储状态列表并在需要特定状态时进行恢复。
Bloc 与肘节相比没有任何优势,但目的不同。在肘中,你有动作=>响应(功能=>状态),而在块中,你有流。
什么肘不能做?
例如,使用 bloc (自 bloc 7.20 起)时,您可以同时处理两个事件,但不能在 cubit 上同时调用两个函数。
分享活动
您可以在不同的块之间共享事件实现,因为您必须指定块实现的事件。
class MyBlocA extends Bloc<MyEvents, StatesA>
class MyBlocB extends Bloc<MyEvents, StatesB>
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,您想要做的是在两个不同的块中处理单个事件,但您不能这样做,因为事件被发送到特定的块。所以需要两次调用:
blocA.add(EventA);
blocB.add(EventA);
Run Code Online (Sandbox Code Playgroud)
根据您的情况,您可能会监听 MyBlocB 内 MyBlocA 的状态。这样,每当 MyblocB 的事件出现时,操作将取决于 MyBlocA 的状态。
| 归档时间: |
|
| 查看次数: |
1448 次 |
| 最近记录: |