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