【发布时间】:2021-07-17 18:56:29
【问题描述】:
我正在尝试创建一个依赖于其他两个集团的集团。例如,我有Bloc C,它依赖于Bloc A 和Bloc B。我正在尝试使用flutter_bloc 执行以下操作以实现它:
class BlocC
extends Bloc< BlocCEvent, BlocCState> {
final BlocA blocA;
final BlocC blocB;
StreamSubscription blocASubscription;
StreamSubscription blocBSubscription;
BlocC({
@required this.blocA,
@required this.blocB,
}) : super((blocA.state is blocALoaded &&
blocB.state is blocBLoaded)
? BlocCLoaded(
blocA: (blocA.state as blocALoaded).arrayFromBlocA,
blocB:
(blocB.state as blocBLoaded).arrayFromBlocB,
)
: BlocCLoading()) {
blocASubscription = blocA.stream.listen((state) {
if (state is blocALoaded) {
add(BlocAUpdated((blocA.state as blocALoaded).arrayFromBlocA));
}
});
blocBSubscription = blocB.stream.listen((state) {
if (state is BlocBLoaded) {
add(BlocBUpdated((blocB.state as BlocBLoaded).arrayFromBlocB));
}
});
}
...
@override
Future<void> close() {
blocASubscription.cancel();
BlocBSubscription.cancel();
return super.close();
}
}
问题是我收到以下错误:Bad state: Stream has already been listened to。我在下一个post 中找到了有关该错误的信息。
我了解错误正在发生,因为流一次只能听一个 bloc,而不能听多个 bloc。就我而言,当我尝试收听blocB 时,流已经在收听blocA。但是,我不确定如何解决此问题。
我将非常感谢任何帮助。
【问题讨论】:
标签: flutter flutter-bloc