我有一个简单的应用程序,它有 2 个选项卡,我正在尝试使用 bloc 模式来移动数据。
流程 1: 1. 使用种子值创建应用程序启动块 2. 为页面运行构建方法并显示数据 3. 用户切换到另一个选项卡 4. 用户切换回来,在这种情况下没有数据显示,因为 steam 有已经被读过一次。
一种选择是重新订阅以再次发送种子值。
流程 2: 1. 使用种子值创建应用程序启动块 2. 为页面运行构建方法并显示数据 3. 用户更改过滤器 - 加载流数据的触发 3. 用户切换到另一个选项卡 4.用户切换回来,在这种情况下没有数据显示,因为蒸汽已经被读取过一次。
在这种情况下,我希望过滤器保持原位并且不想使用种子值
集团
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();
}
}