在BLoC之间共享数据的干净方法

时间:2018-09-21 17:43:17

标签: dart flutter

想象一下以下伪集团:

class BlocA {
  BlocA() {
     //some initialization
   }
   Stream a;
   Stream b;
   Stream c;
   }


class BlocB {
  BlocB() {
    //some initialization
  }
  Stream d; //dependant on a piece of data that resides in BlocA
}

将信息从一个集团传递到另一个集团的最干净方法是什么,如何处理这种依赖性?

1 个答案:

答案 0 :(得分:2)

您可以将BlocA作为参数注入BlocB。

class BlocA {
  Stream a;
}

class BlocB {
  final BlocA _a;

  BlocB(this._a);
}

或者,您可以仅传递所需的流,而不传递整个块。但是,只有在流的数量非常有限的情况下才能这样做。

然后,您可以自由地映射/通过管道传输来自A的流,以将另一流公开给B。

class BlocB {
  Stream b;

  BlocB(BlocA blocA) {
    b = blocA.a.map((a) => 42).asBroadcastStream();
  }
}