Flutter 颤振阵型多阵型同一小部件
我对颤振和集团模式比较陌生,所以我仍然试着把我的脑袋放在所有事情上 假设我有一个测验应用程序,其中有一个名为Flutter 颤振阵型多阵型同一小部件,flutter,dart,bloc,Flutter,Dart,Bloc,我对颤振和集团模式比较陌生,所以我仍然试着把我的脑袋放在所有事情上 假设我有一个测验应用程序,其中有一个名为QuestionBloc的组,它使用存储库从文件中获取问题。 QuestionBloc上的事件 FetchQuestion 关于QuestionBloc QuestionEmpty 问题加载 QuestionLoaded包含问题对象 QuestionError 然后我有另一个名为QuestionValidatorBloc的小组,负责验证问题的答案。答案输入到文本字段中,并有一个提交
QuestionBloc
的组,它使用存储库从文件中获取问题。
QuestionBloc上的事件
FetchQuestion
关于QuestionBloc
QuestionEmpty
问题加载
QuestionLoaded
包含问题对象
QuestionError
然后我有另一个名为QuestionValidatorBloc
的小组,负责验证问题的答案。答案输入到文本字段中,并有一个提交按钮来触发验证。
QuestionValidatorBloc上的事件
ValidateQuestion
在QuestionValidatorBloc
ValidateInitial
ValidateInProgress
验证成功
ValidateError
这相当直截了当。但是,现在我需要将QuestionBloc
和QuestionValidatorBloc
合并到同一个小部件中,因为其中一个负责获取和显示问题,另一个负责处理验证操作。如何实现这一点?我假设您正在使用flatter\u bloc
库。让QuestionBloc
使用StreamSubscription
收听QuestionValidatorBloc
class QuestionBloc extends Bloc<QuestionEvent, QuestionState> {
QuestionValidatorBloc questionValidatorBloc;
StreamSubscription subscription;
MainPageBloc({@required this.questionValidatorBloc}) {
subscription= questionValidatorBloc.state.listen((state) {
if (state is ValidateSuccess) {
dispatch(YourEvent());
} else if(state is ValidateError{
dispatch(AnotherEvent());
}
});
}
...
class QuestionBloc扩展了Bloc{
问号确认器组问号确认器组;
流媒体订阅;
MainPageBloc({@required this.questionValidatorBloc}){
订阅=questionValidatorBloc.state.listen((状态){
如果(状态为ValidateSuccess){
调度(yourvevent());
}else if(状态为ValidateError{
分派(另一事件());
}
});
}
...
现在,您只需将QuestionValidatorBloc
传递给QuestionBloc
构造函数。如果您只使用一个BloC和两个或多个主题会怎么样?您使用的是同一个小部件。因此,根据需要,最好只使用一个BloC和streams构建器。在两个BloC中拆分两个不同的工作在两个BloC中是积极的。我看到很多人在一个页面的e区,但我认为他们没有看到更复杂的用例。在这种情况下,验证和api调用是完全不同的工作,我不知道为什么使用一个更好。如果我需要另一个区,在这个区内呢?我说的是在区内使用2+区。我可能会有2个订阅,但是我该如何嵌套它呢?在另一个状态侦听器中嵌套状态侦听器是一种糟糕的方法:/I'm stuck如果我需要另一个组,在这个组中该怎么办?我说的是在这个组中使用2+组。我可能有2个订阅,但我该如何嵌套状态侦听器呢?在另一个状态侦听器中嵌套状态侦听器是一种糟糕的方法:/I'mstuck@fkvestak你有吗搞定了吗?@Spectarion不,我不再使用bloc了,你应该试试mobx