颤振-rxdart-多次读取流
我有一个简单的应用程序,其中有两个标签,我正试图向你的集团模式移动数据 流程1: 1.App starts bloc是使用种子值创建的 2.为页面运行Build方法并显示数据 3.用户切换到另一个选项卡 4.用户切换回,在这种情况下,由于蒸汽已被读取一次,因此不会显示任何数据 一种选择是重新订阅以再次发送种子值 流程2: 1.App starts bloc是使用种子值创建的 2.为页面运行Build方法并显示数据 3.用户更改过滤器-加载哪些流数据 3.用户切换到另一个选项卡 4.用户切换回,在这种情况下,由于蒸汽已被读取一次,因此不会显示任何数据 在这种情况下,我希望过滤器保持在原位,而不希望使用种子值 集团颤振-rxdart-多次读取流,dart,flutter,rxdart,bloc,Dart,Flutter,Rxdart,Bloc,我有一个简单的应用程序,其中有两个标签,我正试图向你的集团模式移动数据 流程1: 1.App starts bloc是使用种子值创建的 2.为页面运行Build方法并显示数据 3.用户切换到另一个选项卡 4.用户切换回,在这种情况下,由于蒸汽已被读取一次,因此不会显示任何数据 一种选择是重新订阅以再次发送种子值 流程2: 1.App starts bloc是使用种子值创建的 2.为页面运行Build方法并显示数据 3.用户更改过滤器-加载哪些流数据 3.用户切换到另一个选项卡 4.用户切换回,在
当我使用行为主题时,这本不应该是一个问题,经过调查,我发现在某些情况下,集团再次被创建,这导致了问题 我怎么找到的 向bloc构造函数添加了日志 向bloc provider添加了日志-也记录了调用者 结果 当我取消showSearch时,它触发了父对象的构建方法,该父对象重新创建了bloc 解决方案 将提供程序移动到上面的一个级别,所以即使多次调用build方法也不会导致问题 这仍然没有解决它,因为我使用了pushReplacement,pushReplacement导致上下文创建了一个新的bloc。 最后将提供者移动到顶部,因此我的material应用程序是提供者的子应用程序。由于navigator是材料的一部分,因此即使在使用pushReplacement时也解决了该问题
class DemoBloc {
final DemoApi demoApi;
Stream<String> _results = Stream.empty();
Stream<String> get results => _results;
BehaviorSubject<String> _tabName =
BehaviorSubject<String>.seeded('abc');
// BehaviorSubject<String> _tabName =
// BehaviorSubject<String>();
Sink<String> get tabName => _tabName;
DemoBloc(this.demoApi) {
print('initialized');
_results = _tabName
.asyncMap((tab) => tab)
.asBroadcastStream();
}
void dispose() {
_tabName.close();
}
}